2 * Copyright (C) 2013 Daniel Vrátil <dvratil@redhat.com>
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License along
15 * with this program; if not, write to the Free Software Foundation, Inc.,
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20 #include "monitoritem.h"
21 #include "monitorsmodel.h"
22 #include "notificationsourceinterface.h"
23 #include "akonadiconsole_debug.h"
24 #include <AkonadiCore/servermanager.h>
26 #include <QStringList>
30 MonitorItem::MonitorItem(const QDBusObjectPath
&identifier_
, MonitorsModel
*model
):
32 identifier(identifier_
),
36 QString service
= QStringLiteral("org.freedesktop.Akonadi");
37 if (Akonadi::ServerManager::hasInstanceIdentifier()) {
38 service
+= QLatin1String(".") + Akonadi::ServerManager::instanceIdentifier();
41 mInterface
= new org::freedesktop::Akonadi::NotificationSource(
42 service
, identifier
.path(),
43 QDBusConnection::sessionBus(), this);
45 qCWarning(AKONADICONSOLE_LOG
) << "Failed to connect to org.freedesktop.Akonadi.NotificationSource of subscriber" << identifier_
.path();
49 if (mInterface
->lastError().isValid()) {
50 qCWarning(AKONADICONSOLE_LOG
) << mInterface
->lastError().message();
54 connect(mInterface
, &org::freedesktop::Akonadi::NotificationSource::monitoredCollectionsChanged
, this, &MonitorItem::monitoredCollectionsChanged
);
55 connect(mInterface
, &org::freedesktop::Akonadi::NotificationSource::monitoredItemsChanged
, this, &MonitorItem::monitoredItemsChanged
);
56 connect(mInterface
, &org::freedesktop::Akonadi::NotificationSource::monitoredResourcesChanged
, this, &MonitorItem::monitoredResourcesChanged
);
57 connect(mInterface
, &org::freedesktop::Akonadi::NotificationSource::monitoredMimeTypesChanged
, this, &MonitorItem::monitoredMimeTypesChanged
);
58 connect(mInterface
, &org::freedesktop::Akonadi::NotificationSource::isAllMonitoredChanged
, this, &MonitorItem::isAllMonitoredChanged
);
59 connect(mInterface
, &org::freedesktop::Akonadi::NotificationSource::ignoredSessionsChanged
, this, &MonitorItem::ignoredSessionsChanged
);
61 QTimer::singleShot(0, this, &MonitorItem::init
);
64 MonitorItem::~MonitorItem()
68 void MonitorItem::init()
70 isAllMonitoredChanged();
71 monitoredCollectionsChanged();
72 monitoredItemsChanged();
73 monitoredMimeTypesChanged();
74 monitoredResourcesChanged();
75 ignoredSessionsChanged();
78 void MonitorItem::isAllMonitoredChanged()
80 allMonitored
= mInterface
->isAllMonitored();
81 Q_EMIT
changed(MonitorsModel::IsAllMonitoredColumn
);
84 void MonitorItem::monitoredCollectionsChanged()
86 const QVector
<qint64
> list
= mInterface
->monitoredCollections();
87 monitoredCollections
.clear();
88 for (int i
= 0; i
< list
.size(); i
++) {
90 monitoredCollections
+= QLatin1String(", ");
92 monitoredCollections
+= QString::number(list
[i
]);
95 Q_EMIT
changed(MonitorsModel::MonitoredCollectionsColumn
);
98 void MonitorItem::monitoredItemsChanged()
100 const QVector
<qint64
> list
= mInterface
->monitoredItems();
101 monitoredItems
.clear();
102 for (int i
= 0; i
< list
.size(); i
++) {
104 monitoredItems
+= QLatin1String(", ");
106 monitoredItems
+= QString::number(list
[i
]);
109 Q_EMIT
changed(MonitorsModel::MonitoredItemsColumn
);
112 void MonitorItem::monitoredMimeTypesChanged()
114 const QStringList mimeTypes
= mInterface
->monitoredMimeTypes();
115 monitoredMimeTypes
= mimeTypes
.join(QStringLiteral(", "));
116 Q_EMIT
changed(MonitorsModel::MonitoredMimeTypesColumn
);
119 void MonitorItem::monitoredResourcesChanged()
121 const QVector
<QByteArray
> list
= mInterface
->monitoredResources();
122 monitoredResources
.clear();
123 for (int i
= 0; i
< list
.size(); i
++) {
125 monitoredResources
+= QStringLiteral(", ");
127 monitoredResources
+= QLatin1String(list
[i
]);
130 Q_EMIT
changed(MonitorsModel::MonitoredResourcesColumn
);
133 void MonitorItem::ignoredSessionsChanged()
135 const QVector
<QByteArray
> list
= mInterface
->ignoredSessions();
136 ignoredSessions
.clear();
137 for (int i
= 0; i
< list
.size(); i
++) {
139 ignoredSessions
+= QLatin1String(", ");
141 ignoredSessions
+= QLatin1String(list
[i
]);
144 Q_EMIT
changed(MonitorsModel::IgnoredSessionsColumn
);