updated alarm dialog
[toast/confclerk.git] / src / gui / mainwindow.cpp
index b13398637f5a38c625c41d95fc29b2bac2c4f7da..1c1becf921ac57687db39e799b6a7152e783a6d7 100644 (file)
@@ -6,6 +6,7 @@
 #include <sqlengine.h>
 #include <schedulexmlparser.h>
 
+#include <activity.h>
 #include <eventmodel.h>
 #include <delegate.h>
 
@@ -19,8 +20,8 @@
 
 const int confId = 1;
 
-MainWindow::MainWindow(QWidget *parent)
-    : QMainWindow(parent)
+MainWindow::MainWindow(int aEventId, QWidget *aParent)
+    : QMainWindow(aParent)
 {
     setupUi(this);
 
@@ -38,6 +39,9 @@ MainWindow::MainWindow(QWidget *parent)
     connect(mXmlParser, SIGNAL(progressStatus(int)), this, SLOT(showParsingProgress(int)));
     statusBar()->showMessage(tr("Ready"));
 
+    //update activity map
+    Activity::updateActivityMap();
+
     connect(dayNavigator, SIGNAL(dateChanged(const QDate &)), SLOT(updateDayView(const QDate &)));
     connect(activityDayNavigator, SIGNAL(dateChanged(const QDate &)), SLOT(updateActivitiesDayView(const QDate &)));
     connect(favouriteDayNavigator, SIGNAL(dateChanged(const QDate &)), SLOT(updateFavouritesDayView(const QDate &)));
@@ -66,15 +70,27 @@ MainWindow::MainWindow(QWidget *parent)
     actTreeView->setModel(new EventModel());
     actTreeView->setItemDelegate(new Delegate(actTreeView));
 
+    // DAY EVENTS View
+       searchTreeView->setHeaderHidden(true);
+       searchTreeView->setRootIsDecorated(false);
+       searchTreeView->setIndentation(0);
+       searchTreeView->setAnimated(true);
+       searchTreeView->setModel(new EventModel());
+       searchTreeView->setItemDelegate(new Delegate(searchTreeView));
+       searchTreeView->setVisible(false);
+       searchDayNavigator->setVisible(false);
     // event clicked
     connect(dayTreeView, SIGNAL(clicked(const QModelIndex &)), SLOT(itemClicked(const QModelIndex &)));
     connect(favTreeView, SIGNAL(clicked(const QModelIndex &)), SLOT(itemClicked(const QModelIndex &)));
     connect(actTreeView, SIGNAL(clicked(const QModelIndex &)), SLOT(itemClicked(const QModelIndex &)));
+    connect(searchTreeView, SIGNAL(clicked(const QModelIndex &)), SLOT(itemClicked(const QModelIndex &)));
     // request for map to be displayed
     connect(dayTreeView, SIGNAL(requestForMap(const QModelIndex &)), SLOT(displayMap(const QModelIndex &)));
     connect(favTreeView, SIGNAL(requestForMap(const QModelIndex &)), SLOT(displayMap(const QModelIndex &)));
     connect(actTreeView, SIGNAL(requestForMap(const QModelIndex &)), SLOT(displayMap(const QModelIndex &)));
-
+    connect(searchTreeView, SIGNAL(requestForMap(const QModelIndex &)), SLOT(displayMap(const QModelIndex &)));
+    // event search button clicked
+    connect(searchButton, SIGNAL(clicked()), SLOT(searchClicked()));
 
     // TESTING: load some 'fav' data
     if(Conference::getAll().count()) // no conference(s) in the DB
@@ -99,6 +115,18 @@ MainWindow::MainWindow(QWidget *parent)
 
     connect(tabWidget, SIGNAL(currentChanged(int)), this, SLOT(updateTab(int)));
 
+    // open dialog for given Event ID
+    // this is used in case Alarm Dialog request application to start
+    if(aEventId)
+    {
+        try
+        {
+            EventDialog dialog(aEventId,this);
+            dialog.exec();
+        }
+        catch(OrmNoObjectException*) {} // just start application
+        catch(...) {} // just start application
+    }
 }
 
 MainWindow::~MainWindow()
@@ -135,6 +163,8 @@ void MainWindow::importSchedule()
         dayNavigator->setDates(aStartDate, aEndDate);
         activityDayNavigator->setDates(aStartDate, aEndDate);
     }
+    //update activity map
+    Activity::updateActivityMap();
 }
 
 void MainWindow::showParsingProgress(int aStatus)
@@ -178,7 +208,7 @@ void MainWindow::updateTab(const int aIndex)
         break;
     case 2: //index 2 of tabWidget: activitiesTab
         {
-            static_cast<EventModel*>(actTreeView->model())->loadEventsByActivities(Conference::getById(confId).start(),confId);
+            static_cast<EventModel*>(actTreeView->model())->loadEventsByActivities(Conference::getById(confId).start(), confId);
             actTreeView->reset();
             activityDayNavigator->show();
         }
@@ -192,7 +222,7 @@ void MainWindow::updateTab(const int aIndex)
 
 void MainWindow::updateActivitiesDayView(const QDate &aDate)
 {
-    static_cast<EventModel*>(actTreeView->model())->loadEventsByActivities(aDate,confId);
+    static_cast<EventModel*>(actTreeView->model())->loadEventsByActivities(aDate, confId);
     actTreeView->reset();
     activityDayNavigator->show();
 }
@@ -210,7 +240,7 @@ void MainWindow::itemClicked(const QModelIndex &aIndex)
     if(!aIndex.parent().isValid()) // time-group
         return;
 
-    EventDialog dialog(aIndex,this);
+    EventDialog dialog(static_cast<Event*>(aIndex.internalPointer())->id(),this);
     dialog.exec();
 }
 
@@ -235,3 +265,18 @@ void MainWindow::displayMap(const QModelIndex &aIndex)
     window.exec();
 }
 
+void MainWindow::searchClicked()
+{
+    QList<QString> columns;
+
+    if( searchTitle->isChecked() )
+        columns.append( "title" );
+    if( searchAbstract->isChecked() )
+        columns.append( "abstract" );
+
+    if( mSqlEngine->searchEvent( confId, columns, searchEdit->text() ) > 0 ){
+        searchTreeView->setVisible(true);
+        searchDayNavigator->setVisible(true);
+    }
+}
+