implemented method to force 'EventModel' emit a signal
authorpavelpa <pavelpa@localhost>
Sun, 17 Jan 2010 19:31:04 +0000 (19:31 +0000)
committerpavelpa <pavelpa@localhost>
Sun, 17 Jan 2010 19:31:04 +0000 (19:31 +0000)
dataChanged() - so 'TreeView' know it has to redraw items
corresponding to chanded indices (range of indeces)

src/mvc/eventmodel.cpp
src/mvc/eventmodel.h
src/mvc/treeview.cpp

index 24e1b47..41fae85 100644 (file)
@@ -143,3 +143,8 @@ void EventModel::loadFavEvents(const QDate &aDate, int aConferenceId)
     createTimeGroups();
 }
 
+void EventModel::emitDataChangedSignal(const QModelIndex &aTopLeft, const QModelIndex &aBottomRight)
+{
+    emit(dataChanged(aTopLeft,aBottomRight));
+}
+
index b7fafdc..2a00177 100644 (file)
@@ -16,6 +16,10 @@ public:
     int rowCount ( const QModelIndex & parent = QModelIndex() ) const;
     void loadEvents(const QDate &aDate, int aConferenceId); // loads Events from the DB
     void loadFavEvents(const QDate &aDate, int aConferenceId); // loads Favourite events from the DB
+    
+    // a method to force 'EventModel' emit signal 'dataChanged()'
+    // a 'view', eg. 'TreeView' listens for this signal and redraws changed items(indexes)
+    void emitDataChangedSignal(const QModelIndex &aTopLeft, const QModelIndex &aBottomRight);
 
 private:
     struct Group
index e872d14..595bc21 100644 (file)
@@ -3,6 +3,7 @@
 #include "treeview.h"
 #include "delegate.h"
 #include "event.h"
+#include "eventmodel.h"
 
 #include <QDebug>
 
@@ -48,11 +49,8 @@ void TreeView::testForControlClicked(const QModelIndex &aIndex, const QPoint &aP
                 }
                 qDebug() << " FAVOURITE [" << qVariantValue<QString>(aIndex.data()) << "] -> " << event.isFavourite();
                 event.update("favourite");
-                // TODO: since the Favourite icon has changed, update TreeView accordingly
-                // not really working solution is the following
-                // maybe the call to MainWindow->update() fix the problem ???
-                QTreeView::update();
-                update();
+                // since the Favourite icon has changed, update TreeView accordingly
+                static_cast<EventModel*>(model())->emitDataChangedSignal(aIndex,aIndex);
             }
             break;
         case Delegate::AlarmControlOn: