[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