'conflict' dialog now contains list of events in conflict with given eventId
authorpavelpa <pavelpa@localhost>
Wed, 27 Jan 2010 21:08:37 +0000 (21:08 +0000)
committerpavelpa <pavelpa@localhost>
Wed, 27 Jan 2010 21:08:37 +0000 (21:08 +0000)
src/gui/conflictdialogcontainer.cpp
src/gui/conflictdialogcontainer.h
src/gui/conflictsdialog.cpp
src/gui/conflictsdialog.h
src/gui/favtabcontainer.cpp
src/gui/tabcontainer.cpp
src/mvc/event.cpp
src/mvc/event.h
src/mvc/eventmodel.cpp
src/mvc/eventmodel.h

index b09eda7..b83bb8f 100644 (file)
@@ -8,19 +8,7 @@ ConflictDialogContainer::ConflictDialogContainer(QWidget *aParent)
 
 void ConflictDialogContainer::loadEvents( const QDate &aDate, const int aConferenceId )
 {
-    static_cast<EventModel*>(treeView->model())->loadEventsByRoom( aDate, aConferenceId );
-    //treeView->setAllExpanded(true);
-}
-
-void ConflictDialogContainer::updateTreeViewModel(int aEventId)
-{
-    // requires special handling
-    // we need to reload favourites, because some favourite could be deleted
-    //static_cast<EventModel*>(favTreeView->model())->updateModel(aEventId);
-    int confId = Conference::activeConference();
-    QDate startDate = Conference::getById(confId).start();
-    QDate endDate = Conference::getById(confId).end();
-    dayNavigator->setDates(startDate, endDate);
-    updateTreeView( Conference::getById(confId).start() );
+    static_cast<EventModel*>(treeView->model())->loadConflictEvents( mEventId, aConferenceId );
+    dayNavigator->hide();
 }
 
index 2f5c538..44b34b2 100644 (file)
@@ -11,11 +11,13 @@ public:
     ConflictDialogContainer(QWidget *aParent);
     virtual ~ConflictDialogContainer(){}
 
-public slots:
-    virtual void updateTreeViewModel(int aEventId);
+    void setEventId(int aEventId) { mEventId = aEventId; }
 
 protected:
     virtual void loadEvents( const QDate &aDate, const int aConferenceId );
+
+private:
+    int mEventId;
 };
 
 #endif /* CONFLICTDIALOGCONTAINER_H */
index 070dc9d..674375e 100644 (file)
@@ -1,12 +1,14 @@
 #include "conflictsdialog.h"
 
-ConflictsDialog::ConflictsDialog(QWidget *aParent)
+ConflictsDialog::ConflictsDialog(int aEventId, QWidget *aParent)
     : QDialog(aParent)
 {
     setupUi(this);
     connect(container, SIGNAL(eventHasChanged(int)), this, SIGNAL(eventHasChanged(int)));
     connect(container, SIGNAL(eventHasChanged(int)), container, SLOT(updateTreeViewModel(int)));
 
+    container->setEventId(aEventId);
+
     int confId = Conference::activeConference();
     QDate startDate = Conference::getById(confId).start();
     QDate endDate = Conference::getById(confId).end();
index 40114ab..cd28c7c 100644 (file)
@@ -8,7 +8,7 @@ class ConflictsDialog : public QDialog, Ui::ConflictsDialog
 {
     Q_OBJECT
 public:
-    ConflictsDialog(QWidget *aParent = NULL);
+    ConflictsDialog(int aEventId, QWidget *aParent = NULL);
     ~ConflictsDialog();
 signals:
     void eventHasChanged(int aEventId);
index 341dd9f..80bd6bb 100644 (file)
@@ -12,6 +12,8 @@ void FavTabContainer::loadEvents( const QDate &aDate, const int aConferenceId )
 
 void FavTabContainer::updateTreeViewModel(int aEventId)
 {
+    Q_UNUSED(aEventId);
+
     // requires special handling
     // we need to reload favourites, because some favourite could be deleted
     //static_cast<EventModel*>(favTreeView->model())->updateModel(aEventId);
index a733824..8f30a96 100644 (file)
@@ -33,7 +33,7 @@ TabContainer::TabContainer(QWidget *aParent)
 
     if(!Conference::getAll().count()) // no conference(s) in the DB
     {
-        dayNavigator->hide(); // hide DayNavigatorWidget
+        dayNavigator->hide();
     }
     else
     {
@@ -85,9 +85,7 @@ void TabContainer::displayMap(const QModelIndex &aIndex)
 
 void TabContainer::displayConflicts(const QModelIndex &aIndex)
 {
-    Q_UNUSED(aIndex);
-
-    ConflictsDialog dialog;
+    ConflictsDialog dialog(static_cast<Event*>(aIndex.internalPointer())->id(),this);
     connect(&dialog, SIGNAL(eventHasChanged(int)), this, SIGNAL(eventHasChanged(int)));
     dialog.exec();
     disconnect(&dialog, SIGNAL(eventHasChanged(int)), this, SIGNAL(eventHasChanged(int)));
index d587a36..ba7bbc4 100644 (file)
@@ -68,6 +68,16 @@ QList<Event> Event::nowEvents(int conferenceId, QString orderBy)
     return load(query);
 }
 
+QList<Event> Event::conflictEvents(int aEventId, int conferenceId)
+{
+    QSqlQuery query;
+    query.prepare( selectQuery() + QString("WHERE id IN ( SELECT conflict_event FROM event_conflict WHERE xid_event = :id AND xid_conference = :conf ) ORDER BY %1").arg("start"));
+    query.bindValue(":id", aEventId);
+    query.bindValue(":conf", conferenceId);
+
+    return load(query);
+}
+
 QList<Event> Event::getFavByDate(const QDate& date, int conferenceId)
 {
     QSqlQuery query;
index 822694d..8d55cef 100644 (file)
@@ -27,6 +27,7 @@ public:
     static QList<Event> nowEvents(int conferenceId, QString orderBy); // get events scheduled NOW
     static QList<Event> getByTrack(int id);
     static QList<Event> getByDateAndRoom(const QDate& date, int conferenceId);
+    static QList<Event> conflictEvents(int aEventId, int conferenceId);
 public:
     int id() const { return value("id").toInt(); }
     int conferenceId() const { return value("xid_conference").toInt(); }
index c64c758..23568a1 100644 (file)
@@ -274,6 +274,18 @@ void EventModel::loadNowEvents(int aConferenceId)
     createTimeGroups();
 }
 
+void EventModel::loadConflictEvents(int aEventId, int aConferenceId)
+{
+    clearModel();
+    // check for existence of the conference in the DB
+    if(Conference::getAll().count())
+    {
+        qDebug() << "Loading Conference Data: [" << Conference::getById(aConferenceId).title() << "] in conflict with " << aEventId;
+        mEvents = Event::conflictEvents(aEventId, aConferenceId);
+    }
+    createTimeGroups();
+}
+
 void EventModel::updateModel(int aEventId)
 {
     for(int i=0; i<mEvents.count(); i++)
index 67d1820..26d1bdf 100644 (file)
@@ -22,6 +22,7 @@ public:
     int loadSearchResultEvents(const QDate &aDate, int aConferenceId);
     void loadNowEvents(int aConferenceId); // loads Now events from the DB
     void loadEventsByRoom(const QDate &aDate, int aConferenceId);
+    void loadConflictEvents(int aEventId, int aConferenceId); // loads events in conflict
 
 private:
     struct Group