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

List:       kde-commits
Subject:    [plasmoid-eventlist] src: filter for collections instead of resources
From:       Gerd Fleischer <gerdfleischer () web ! de>
Date:       2012-08-31 17:18:29
Message-ID: 20120831171829.3B163A6094 () git ! kde ! org
[Download RAW message or body]

Git commit a195aa3934566ad3d3995c99e4bbc2e527b2c418 by Gerd Fleischer.
Committed on 31/08/2012 at 19:00.
Pushed by geflei into branch 'master'.

filter for collections instead of resources

this way one can select/disable calendars instead of the whole resource,
e.g. whith the google resource

M  +26   -38   src/eventapplet.cpp
M  +4    -4    src/eventapplet.h
M  +14   -14   src/eventfiltermodel.cpp
M  +2    -2    src/eventfiltermodel.h
M  +16   -5    src/eventmodel.cpp
M  +3    -1    src/eventmodel.h

http://commits.kde.org/plasmoid-eventlist/a195aa3934566ad3d3995c99e4bbc2e527b2c418

diff --git a/src/eventapplet.cpp b/src/eventapplet.cpp
index cef44ec..5ffe562 100644
--- a/src/eventapplet.cpp
+++ b/src/eventapplet.cpp
@@ -80,7 +80,7 @@ EventApplet::EventApplet(QObject *parent, const QVariantList &args) \
:  m_timer(0),
     m_agentManager(0),
     incidenceTypesDialog(0),
-    resourceDialog(0),
+    collectionDialog(0),
     categoriesDialog(0),
     m_openEventWatcher(0),
     m_addEventWatcher(0),
@@ -106,7 +106,7 @@ void EventApplet::init()
     KConfigGroup cg = config();
 
     disabledTypes = cg.readEntry("DisabledIncidenceTypes", QStringList());
-    disabledResources = cg.readEntry("DisabledResources", QStringList());
+    disabledCollections = cg.readEntry("DisabledCollections", QStringList());
     disabledCategories = cg.readEntry("DisabledCategories", QStringList());
 
     QString normalEventFormat = cg.readEntry("NormalEventFormat", \
QString("%{startDate} %{startTime} %{summary}")); @@ -193,7 +193,7 @@ void \
EventApplet::setupModel()  m_filterModel->setPeriod(m_period);
     m_filterModel->setShowFinishedTodos(m_showFinishedTodos);
     m_filterModel->setDisabledTypes(disabledTypes);
-    m_filterModel->setExcludedResources(disabledResources);
+    m_filterModel->setExcludedCollections(disabledCollections);
     m_filterModel->setDisabledCategories(disabledCategories);
     m_filterModel->setDynamicSortFilter(true);
     m_filterModel->setSourceModel(m_model);
@@ -511,47 +511,35 @@ void EventApplet::incidenceTypesDialogAccepted()
     m_view->expandAll();
 }
 
-void EventApplet::setShownResources()
+void EventApplet::setShownCollections()
 {
-    QMap<QString, QString> resourcesMap;
-    Akonadi::AgentInstance::List instList = m_agentManager->instances();
-    foreach (const Akonadi::AgentInstance &inst, instList) {
-        QStringList agentMimeTypes = inst.type().mimeTypes();
-        if (agentMimeTypes.contains(KCalCore::Event::eventMimeType()) ||
-            agentMimeTypes.contains(KCalCore::Todo::todoMimeType()) ||
-            agentMimeTypes.contains("text/calendar")) {
-            resourcesMap[inst.name()] = inst.identifier();
-        }
-    }
+    if (!collectionDialog) {
+        collectionDialog = new CheckBoxDialog(0, disabledCollections, \
m_model->usedCollections()); +        collectionDialog->setCaption(i18n("Select \
Collections")); +        collectionDialog->setButtons(KDialog::User1 | KDialog::User2 \
| KDialog::Ok | KDialog::Apply | KDialog::Cancel | KDialog::Reset); +        \
collectionDialog->setButtonText(KDialog::User1, i18n("Uncheck all")); +        \
collectionDialog->setButtonIcon(KDialog::User1, KIcon("edit-clear-list")); +        \
collectionDialog->setButtonText(KDialog::User2, i18n("Check all")); +        \
collectionDialog->setButtonIcon(KDialog::User2, KIcon("checkbox")); +        \
collectionDialog->setButtonsOrientation(Qt::Vertical);  
-    if (!resourceDialog) {
-        resourceDialog = new CheckBoxDialog(0, disabledResources, resourcesMap);
-        resourceDialog->setCaption(i18n("Select Resources"));
-        resourceDialog->setButtons(KDialog::User1 | KDialog::User2 | KDialog::Ok | \
                KDialog::Apply | KDialog::Cancel | KDialog::Reset);
-        resourceDialog->setButtonText(KDialog::User1, i18n("Uncheck all"));
-        resourceDialog->setButtonIcon(KDialog::User1, KIcon("edit-clear-list"));
-        resourceDialog->setButtonText(KDialog::User2, i18n("Check all"));
-        resourceDialog->setButtonIcon(KDialog::User2, KIcon("checkbox"));
-        resourceDialog->setButtonsOrientation(Qt::Vertical);
-
-        connect(resourceDialog, SIGNAL(applyClicked()), this, \
                SLOT(resourceDialogAccepted()));
-        connect(resourceDialog, SIGNAL(okClicked()), this, \
SLOT(resourceDialogAccepted())); +        connect(collectionDialog, \
SIGNAL(applyClicked()), this, SLOT(collectionDialogAccepted())); +        \
connect(collectionDialog, SIGNAL(okClicked()), this, \
SLOT(collectionDialogAccepted()));  } else {
-        resourceDialog->setupCheckBoxWidget(disabledResources, resourcesMap);
+        collectionDialog->setupCheckBoxWidget(disabledCollections, \
m_model->usedCollections());  }
 
-    resourceDialog->show();
+    collectionDialog->show();
 }
 
-void EventApplet::resourceDialogAccepted()
+void EventApplet::collectionDialogAccepted()
 {
-    disabledResources = resourceDialog->disabledProperties();
-
+    disabledCollections = collectionDialog->disabledProperties();
     KConfigGroup cg = config();
-    cg.writeEntry("DisabledResources", disabledResources);
+    cg.writeEntry("DisabledCollections", disabledCollections);
     emit configNeedsSaving();
 
-    m_filterModel->setExcludedResources(disabledResources);
+    m_filterModel->setExcludedCollections(disabledCollections);
     m_view->expandAll();
 }
 
@@ -672,10 +660,10 @@ QList<QAction *> EventApplet::contextualActions()
     connect(selectIncidenceTypes, SIGNAL(triggered()), this, \
SLOT(setIncidenceTypes()));  currentActions.append(selectIncidenceTypes);
 
-    QAction *selectResources = new QAction(i18n("Select shown resources"), this);
-    selectResources->setIcon(KIcon("view-calendar-tasks"));
-    connect(selectResources, SIGNAL(triggered()), this, SLOT(setShownResources()));
-    currentActions.append(selectResources);
+    QAction *selectCollections = new QAction(i18n("Select shown collections"), \
this); +    selectCollections->setIcon(KIcon("view-calendar-tasks"));
+    connect(selectCollections, SIGNAL(triggered()), this, \
SLOT(setShownCollections())); +    currentActions.append(selectCollections);
 
     QAction *selectCategories = new QAction(i18n("Select shown categories"), this);
     selectCategories->setIcon(KIcon("checkbox"));
diff --git a/src/eventapplet.h b/src/eventapplet.h
index dc72412..d54db8f 100644
--- a/src/eventapplet.h
+++ b/src/eventapplet.h
@@ -76,8 +76,8 @@ private slots:
     void timerExpired();
     void setIncidenceTypes();
     void incidenceTypesDialogAccepted();
-    void setShownResources();
-    void resourceDialogAccepted();
+    void setShownCollections();
+    void collectionDialogAccepted();
     void setShownCategories();
     void categoriesDialogAccepted();
     void setupModel();
@@ -125,8 +125,8 @@ private:
     QList<QColor> m_colors;
     QTimer *m_timer;
     Akonadi::AgentManager *m_agentManager;
-    QStringList disabledTypes, disabledResources, disabledCategories, \
                m_headerItemsList, m_categories;
-    CheckBoxDialog *incidenceTypesDialog, *resourceDialog, *categoriesDialog;
+    QStringList disabledTypes, disabledCollections, disabledCategories, \
m_headerItemsList, m_categories; +    CheckBoxDialog *incidenceTypesDialog, \
*collectionDialog, *categoriesDialog;  QDateTime lastCheckTime;
     bool m_showFinishedTodos, m_autoGroupHeader;
     QString m_uid, m_appletTitle;
diff --git a/src/eventfiltermodel.cpp b/src/eventfiltermodel.cpp
index d47922a..e4c4364 100644
--- a/src/eventfiltermodel.cpp
+++ b/src/eventfiltermodel.cpp
@@ -24,7 +24,7 @@
 EventFilterModel::EventFilterModel(QObject *parent) : QSortFilterProxyModel(parent)
 {
     m_period = 365;
-    m_excludedResources = QStringList();
+    m_excludedCollections = QStringList();
     m_disabledCategories = QStringList();
 }
 
@@ -51,10 +51,10 @@ void EventFilterModel::setDisabledTypes(QStringList types)
     invalidateFilter();
 }
 
-void EventFilterModel::setExcludedResources(QStringList resources)
+void EventFilterModel::setExcludedCollections(QStringList collections)
 {
-    m_excludedResources = resources;
-    m_excludedResources.sort();
+    m_excludedCollections = collections;
+    m_excludedCollections.sort();
     invalidateFilter();
 }
 
@@ -95,7 +95,7 @@ bool EventFilterModel::filterAcceptsRow( int sourceRow, const \
                QModelIndex &sourc
     const QModelIndex idx = sourceModel()->index( sourceRow, 0, sourceParent );
 
     const int itemType = idx.data(EventModel::ItemTypeRole).toInt();
-    const QString resourceRole = idx.data(EventModel::ResourceRole).toString();
+    const QString collectionRole = idx.data(EventModel::CollectionRole).toString();
 
     const QVariant d = idx.data(EventModel::SortRole);
     const QDate date= d.toDate();
@@ -106,8 +106,8 @@ bool EventFilterModel::filterAcceptsRow( int sourceRow, const \
QModelIndex &sourc  int rows = sourceModel()->rowCount(idx);
                 for (int row = 0; row < rows; ++ row) { // if the header would be \
                empty dont show it
                     QModelIndex childIdx = sourceModel()->index(row, 0, idx);
-                    const QString cr = \
                childIdx.data(EventModel::ResourceRole).toString();
-                    if (!m_excludedResources.contains(cr) && \
!isDisabledType(childIdx) && !isDisabledCategory(childIdx)) { +                    \
const QString cr = childIdx.data(EventModel::CollectionRole).toString(); +            \
if (!m_excludedCollections.contains(cr) && !isDisabledType(childIdx) && \
                !isDisabledCategory(childIdx)) {
                         const QMap<QString, QVariant> values = \
                childIdx.data(Qt::DisplayRole).toMap();
                         if (m_showFinishedTodos || values["completed"].toBool() == \
false)  return true;
@@ -115,7 +115,7 @@ bool EventFilterModel::filterAcceptsRow( int sourceRow, const \
QModelIndex &sourc  }
                 return false;
             } else {
-                if (!m_excludedResources.contains(resourceRole) && \
!isDisabledType(idx) && !isDisabledCategory(idx)) { +                if \
(!m_excludedCollections.contains(collectionRole) && !isDisabledType(idx) && \
                !isDisabledCategory(idx)) {
                     const QMap<QString, QVariant> values = \
                idx.data(Qt::DisplayRole).toMap();
                     if (m_showFinishedTodos || values["completed"].toBool() == \
false) {  return true;
@@ -131,8 +131,8 @@ bool EventFilterModel::filterAcceptsRow( int sourceRow, const \
QModelIndex &sourc  int rows = sourceModel()->rowCount(idx);
                     for (int row = 0; row < rows; ++row) {
                         QModelIndex childIdx = sourceModel()->index(row, 0, idx);
-                        const QString cr = \
                childIdx.data(EventModel::ResourceRole).toString();
-                        if (!m_excludedResources.contains(cr) && \
!isDisabledType(childIdx) && !isDisabledCategory(childIdx)) { +                       \
const QString cr = childIdx.data(EventModel::CollectionRole).toString(); +            \
if (!m_excludedCollections.contains(cr) && !isDisabledType(childIdx) && \
                !isDisabledCategory(childIdx)) {
                             const int childType = \
                childIdx.data(EventModel::ItemTypeRole).toInt();
                             const QMap<QString, QVariant> values = \
                childIdx.data(Qt::DisplayRole).toMap();
                             if (childType == EventModel::TodoItem) { // dont show \
old finished stuff @@ -147,7 +147,7 @@ bool EventFilterModel::filterAcceptsRow( int \
sourceRow, const QModelIndex &sourc  }
                 return false;
             } else {
-                if (m_excludedResources.contains(resourceRole) || \
isDisabledType(idx) || isDisabledCategory(idx)) { +                if \
(m_excludedCollections.contains(collectionRole) || isDisabledType(idx) || \
isDisabledCategory(idx)) {  return false;
                 }
                 
@@ -165,9 +165,9 @@ bool EventFilterModel::filterAcceptsRow( int sourceRow, const \
QModelIndex &sourc  int rows = sourceModel()->rowCount(idx);
                 for (int row = 0; row < rows; ++ row) {
                     QModelIndex childIdx = sourceModel()->index(row, 0, idx);
-                    const QString cr = \
childIdx.data(EventModel::ResourceRole).toString(); +                    const \
                QString cr = childIdx.data(EventModel::CollectionRole).toString();
                     const QDate cd = childIdx.data(EventModel::SortRole).toDate();
-                    if ((!m_excludedResources.contains(cr) && \
!isDisabledType(childIdx) && !isDisabledCategory(childIdx)) && cd <= \
QDate::currentDate().addDays(m_period)) { +                    if \
((!m_excludedCollections.contains(cr) && !isDisabledType(childIdx) && \
                !isDisabledCategory(childIdx)) && cd <= \
                QDate::currentDate().addDays(m_period)) {
                         const int childType = \
                childIdx.data(EventModel::ItemTypeRole).toInt();
                         const QMap<QString, QVariant> values = \
childIdx.data(Qt::DisplayRole).toMap();  if (childType != EventModel::TodoItem) {
@@ -178,7 +178,7 @@ bool EventFilterModel::filterAcceptsRow( int sourceRow, const \
QModelIndex &sourc  }
                 }
                 return false;
-            } else if (m_excludedResources.contains(resourceRole) || \
isDisabledType(idx) || isDisabledCategory(idx)) { +            } else if \
(m_excludedCollections.contains(collectionRole) || isDisabledType(idx) || \
isDisabledCategory(idx)) {  return false;
             } else if (itemType == EventModel::TodoItem) {
                 const QMap<QString, QVariant> values = \
                idx.data(Qt::DisplayRole).toMap();
diff --git a/src/eventfiltermodel.h b/src/eventfiltermodel.h
index 98ab0b2..c6a9588 100644
--- a/src/eventfiltermodel.h
+++ b/src/eventfiltermodel.h
@@ -32,7 +32,7 @@ public:
     void setPeriod(int period);
     void setShowFinishedTodos(bool showFinishedTodos);
     void setDisabledTypes(QStringList types);
-    void setExcludedResources(QStringList resources);
+    void setExcludedCollections(QStringList collections);
     void setDisabledCategories(QStringList categories);
     
 protected:
@@ -45,7 +45,7 @@ private:
 private:
     int m_period;
     bool m_showFinishedTodos;
-    QStringList m_disabledTypes, m_excludedResources, m_disabledCategories;
+    QStringList m_disabledTypes, m_excludedCollections, m_disabledCategories;
 };
 
 #endif
diff --git a/src/eventmodel.cpp b/src/eventmodel.cpp
index be5cc75..3a85ae1 100644
--- a/src/eventmodel.cpp
+++ b/src/eventmodel.cpp
@@ -157,7 +157,7 @@ void EventModel::initHeaderItem(QStandardItem *item, QString \
title, QString tool  item->setForeground(QBrush(textColor));
     item->setData(QVariant(date), SortRole);
     item->setData(QVariant(HeaderItem), ItemTypeRole);
-    item->setData(QVariant(QString()), ResourceRole);
+    item->setData(QVariant(QString()), CollectionRole);
     item->setData(QVariant(QString()), UIDRole);
     item->setData(QVariant("<qt><b>" + toolTip + "</b></qt>"), TooltipRole);
 }
@@ -166,6 +166,8 @@ void EventModel::resetModel()
 {
     clear();
     m_sectionItemsMap.clear();
+    m_collections.clear();
+    m_usedCollections.clear();
     parentItem = invisibleRootItem();
     delete m_monitor;
     m_monitor = 0;
@@ -349,7 +351,7 @@ void EventModel::addEventItem(const QMap<QString, QVariant> \
&values)  eventItem->setData(eventDtTime, SortRole);
             eventItem->setData(values["uid"], UIDRole);
             eventItem->setData(values["itemid"], ItemIDRole);
-            eventItem->setData(values["resource"], ResourceRole);
+            eventItem->setData(values["collectionId"], CollectionRole);
             eventItem->setData(values["tooltip"], TooltipRole);
 
             addItemRow(eventDtTime.toDate(), eventItem);
@@ -366,7 +368,7 @@ void EventModel::addEventItem(const QMap<QString, QVariant> \
&values)  eventItem->setData(values["startDate"], SortRole);
         eventItem->setData(values["uid"], EventModel::UIDRole);
         eventItem->setData(values["itemid"], ItemIDRole);
-        eventItem->setData(values["resource"], ResourceRole);
+        eventItem->setData(values["collectionId"], CollectionRole);
         eventItem->setData(values["tooltip"], TooltipRole);
         QDateTime itemDtTime = values["startDate"].toDateTime();
         if (itemDtTime > QDateTime::currentDateTime() && \
QDateTime::currentDateTime().secsTo(itemDtTime) < urgency * 60) { @@ -408,7 +410,7 @@ \
void EventModel::addTodoItem(const QMap <QString, QVariant> &values)  \
todoItem->setData(eventDtTime, SortRole);  todoItem->setData(values["uid"], \
EventModel::UIDRole);  todoItem->setData(values["itemid"], ItemIDRole);
-            todoItem->setData(values["resource"], ResourceRole);
+            todoItem->setData(values["collectionId"], CollectionRole);
             todoItem->setData(values["tooltip"], TooltipRole);
             if (values["completed"].toBool() == true) {
                 todoItem->setBackground(QBrush(finishedTodoBg));
@@ -431,7 +433,7 @@ void EventModel::addTodoItem(const QMap <QString, QVariant> \
&values)  todoItem->setData(values["dueDate"], SortRole);
         todoItem->setData(values["uid"], EventModel::UIDRole);
         todoItem->setData(values["itemid"], ItemIDRole);
-        todoItem->setData(values["resource"], ResourceRole);
+        todoItem->setData(values["collectionId"], CollectionRole);
         todoItem->setData(values["tooltip"], TooltipRole);
         if (values["completed"].toBool() == true) {
             todoItem->setBackground(QBrush(finishedTodoBg));
@@ -483,8 +485,10 @@ QMap<QString, QVariant> EventModel::eventDetails(const \
Akonadi::Item &item, KCal  {
     QMap <QString, QVariant> values;
     Akonadi::Collection itemCollection = \
m_collections.value(item.storageCollectionId()); +    \
m_usedCollections.insert(itemCollection.name(), \
QString::number(itemCollection.id()));  values["resource"] = \
itemCollection.resource();  values["resourceName"] = itemCollection.name();
+    values["collectionId"] = QString::number(itemCollection.id());
     values["uid"] = event->uid();
     values["itemid"] = item.id();
     values["remoteid"] = item.remoteId();
@@ -534,8 +538,10 @@ QMap<QString, QVariant> EventModel::todoDetails(const \
Akonadi::Item &item, KCalC  {
     QMap <QString, QVariant> values;
     Akonadi::Collection itemCollection = \
m_collections.value(item.storageCollectionId()); +    \
m_usedCollections.insert(itemCollection.name(), \
QString::number(itemCollection.id()));  values["resource"] = \
itemCollection.resource();  values["resourceName"] = itemCollection.name();
+    values["collectionId"] = QString::number(itemCollection.id());
     values["uid"] = todo->uid();
     values["itemid"] = item.id();
     values["remoteid"] = item.remoteId();
@@ -589,4 +595,9 @@ QMap<QString, QVariant> EventModel::todoDetails(const \
Akonadi::Item &item, KCalC  return values;
 }
 
+QMap<QString, QString> EventModel::usedCollections()
+{
+    return m_usedCollections;
+}
+
 #include "eventmodel.moc"
diff --git a/src/eventmodel.h b/src/eventmodel.h
index 1c560fc..fdbc97e 100644
--- a/src/eventmodel.h
+++ b/src/eventmodel.h
@@ -59,7 +59,7 @@ public:
         ItemTypeRole,
         TooltipRole,
         ItemIDRole,
-        ResourceRole
+        CollectionRole
     };
 
     enum ItemType {
@@ -81,6 +81,7 @@ public:
     void initMonitor();
     void resetModel();
     void settingsChanged(int urgencyTime, int birthdayTime, QList<QColor> \
itemColors, int count, bool autoGroupHeader); +    QMap<QString, QString> \
usedCollections();  
 private slots:
     void initialCollectionFetchFinished(KJob *);
@@ -104,6 +105,7 @@ private:
     QStandardItem *parentItem;
     QStringList m_headerPartsList;
     QMap<QDate, QStandardItem *> m_sectionItemsMap;
+    QMap<QString, QString> m_usedCollections;
     int urgency, birthdayUrgency, recurringCount;
     QColor urgentBg, passedFg, todoBg, finishedTodoBg;
     QHash<QString, QColor> m_categoryColors;


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

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