blob: 3cbfb64d9b69302c9d6940074be5e6fec2ca5464 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
#include <QtCore/QDebug>
#include <sowatch.h>
#include "daemon.h"
using namespace sowatch;
Daemon::Daemon(QObject *parent) :
QObject(parent),
_registry(Registry::registry())
{
initWatches();
}
void Daemon::initWatches()
{
QSettings settings;
int size = settings.beginReadArray("watches");
for (int i = 0; i < size; i++) {
settings.setArrayIndex(i);
QString driver = settings.value("driver").toString().toLower();
WatchPluginInterface *plugin = _registry->getWatchPlugin(driver);
if (plugin) {
Watch *watch = plugin->getWatch(driver, settings, this);
if (watch) {
initWatch(watch, settings);
} else {
qWarning() << "Driver" << driver << "refused to getWatch";
}
} else {
qWarning() << "Invalid driver" << driver;
}
}
settings.endArray();
qDebug() << "handling" << _servers.size() << "watches";
}
void Daemon::initWatch(Watch* watch, QSettings& settings)
{
int size;
// Create the server
WatchServer* server = new WatchServer(watch, this);
_servers.append(server);
// Configure the server
server->setNextWatchletButton(settings.value("nextWatchletButton").toString());
// Initialize providers
size = settings.beginReadArray("notifications");
for (int i = 0; i < size; i++) {
settings.setArrayIndex(i);
QString id = settings.value("provider").toString().toLower();
NotificationPluginInterface *plugin = _registry->getNotificationPlugin(id);
if (plugin) {
NotificationProvider *provider = plugin->getProvider(id, settings, server);
server->addProvider(provider);
} else {
qWarning() << "Unknown notification provider" << id;
}
}
settings.endArray();
// Initialize watchlets
size = settings.beginReadArray("watchlets");
for (int i = 0; i < size; i++) {
settings.setArrayIndex(i);
QString id = settings.value("id").toString().toLower();
WatchletPluginInterface *plugin = _registry->getWatchletPlugin(id);
if (plugin) {
plugin->getWatchlet(id, settings, server);
// Watchlets are associated to server via parent-child relationship.
} else {
qWarning() << "Unknown watchlet" << id;
}
}
settings.endArray();
}
|