[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [plasmoid-eventlist] src: try workaround doubled entries
From:       Gerd Fleischer <gerdfleischer () web ! de>
Date:       2013-10-02 9:12:36
Message-ID: E1VRIU0-0004gQ-Mz () scm ! kde ! org
[Download RAW message or body]

Git commit 959c75b3d0a9bd163d33a21fa9d64fa4951d5991 by Gerd Fleischer.
Committed on 02/10/2013 at 09:12.
Pushed by geflei into branch 'master'.

try workaround doubled entries

M  +14   -0    src/eventmodel.cpp
M  +3    -0    src/eventmodel.h

http://commits.kde.org/plasmoid-eventlist/959c75b3d0a9bd163d33a21fa9d64fa4951d5991

diff --git a/src/eventmodel.cpp b/src/eventmodel.cpp
index 4c6b281..fe19f30 100644
--- a/src/eventmodel.cpp
+++ b/src/eventmodel.cpp
@@ -104,15 +104,21 @@ void EventModel::initialItemFetchFinished(KJob *job)
         Akonadi::ItemFetchJob *iJob = qobject_cast<Akonadi::ItemFetchJob *>(job);
         Akonadi::Item::List items = iJob->items();
         foreach (const Akonadi::Item &item, items) {
+            if (itemURLs.contains(item.url())) {
+                removeItem(item);
+            }
+
             if (item.hasPayload <KCalCore::Event::Ptr>()) {
                 KCalCore::Event::Ptr event = item.payload <KCalCore::Event::Ptr>();
                 if (event) {
                     addEventItem(eventDetails(item, event));
+                    itemURLs.append(item.url());
                 } // if event
             } else if (item.hasPayload <KCalCore::Todo::Ptr>()) {
                 KCalCore::Todo::Ptr todo = item.payload<KCalCore::Todo::Ptr>();
                 if (todo) {
                     addTodoItem(todoDetails(item, todo));
+                    itemURLs.append(item.url());
                 }
             } // if hasPayload
         } // foreach
@@ -168,6 +174,7 @@ void EventModel::resetModel()
     m_sectionItemsMap.clear();
     m_collections.clear();
     m_usedCollections.clear();
+    itemURLs.clear();
     parentItem = invisibleRootItem();
     delete m_monitor;
     m_monitor = 0;
@@ -244,6 +251,7 @@ void EventModel::removeItem(const Akonadi::Item &item)
         if (r != -1 && !i->hasChildren()) {
             takeItem(r);
             removeRow(r);
+            itemURLs.removeAll(item.url());
             emit modelNeedsExpanding();
         }
     }
@@ -266,16 +274,22 @@ void EventModel::itemMoved(const Akonadi::Item &item, const Akonadi::Collection
 void EventModel::addItem(const Akonadi::Item &item, const Akonadi::Collection &collection)
 {
     Q_UNUSED(collection);
+    
+    if (itemURLs.contains(item.url())) {
+        removeItem(item);
+    }
 
     if (item.hasPayload<KCalCore::Event::Ptr>()) {
         KCalCore::Event::Ptr event = item.payload <KCalCore::Event::Ptr>();
         if (event) {
             addEventItem(eventDetails(item, event));
+            itemURLs.append(item.url());
         } // if event
     } else if (item.hasPayload <KCalCore::Todo::Ptr>()) {
         KCalCore::Todo::Ptr todo = item.payload<KCalCore::Todo::Ptr>();
         if (todo) {
             addTodoItem(todoDetails(item, todo));
+            itemURLs.append(item.url());
         }
     }
 }
diff --git a/src/eventmodel.h b/src/eventmodel.h
index fdbc97e..c2d7596 100644
--- a/src/eventmodel.h
+++ b/src/eventmodel.h
@@ -25,6 +25,8 @@
 #include <kcalcore/event.h>
 #include <kcalcore/todo.h>
 
+#include <KUrl>
+
 // qt headers
 #include <QStandardItemModel>
 #include <QColor>
@@ -110,6 +112,7 @@ private:
     QColor urgentBg, passedFg, todoBg, finishedTodoBg;
     QHash<QString, QColor> m_categoryColors;
     QHash<Akonadi::Entity::Id, Akonadi::Collection> m_collections;
+    KUrl::List itemURLs;
     Akonadi::Monitor *m_monitor;
     bool useAutoGroupHeader;
 
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic