Backport fix google translator
[kdepim.git] / akonadiconsole / monitoritem.cpp
blob1dc84072ccf82b402ecd82a4fb8f2019f9be1824
1 /*
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>
27 #include <QTimer>
28 #include <QVector>
30 MonitorItem::MonitorItem(const QDBusObjectPath &identifier_, MonitorsModel *model):
31 QObject(model),
32 identifier(identifier_),
33 allMonitored(false)
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);
44 if (!mInterface) {
45 qCWarning(AKONADICONSOLE_LOG) << "Failed to connect to org.freedesktop.Akonadi.NotificationSource of subscriber" << identifier_.path();
46 return;
49 if (mInterface->lastError().isValid()) {
50 qCWarning(AKONADICONSOLE_LOG) << mInterface->lastError().message();
51 return;
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++) {
89 if (i > 0) {
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++) {
103 if (i > 0) {
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++) {
124 if (i > 0) {
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++) {
138 if (i > 0) {
139 ignoredSessions += QLatin1String(", ");
141 ignoredSessions += QLatin1String(list[i]);
144 Q_EMIT changed(MonitorsModel::IgnoredSessionsColumn);