summaryrefslogtreecommitdiff
path: root/sowatchd/allscanner.cpp
diff options
context:
space:
mode:
authorJavier S. Pedro <maemo@javispedro.com>2012-04-26 01:36:20 +0200
committerJavier S. Pedro <maemo@javispedro.com>2012-04-26 01:36:20 +0200
commit93f3acd128d6b349efe14e97b12c2703ca4f81f3 (patch)
tree937f3de2307444f0c28d6d21f26f1580e789b074 /sowatchd/allscanner.cpp
parent1375a26b135547fdd8e07db62acf8116a8482560 (diff)
downloadsowatch-93f3acd128d6b349efe14e97b12c2703ca4f81f3.tar.gz
sowatch-93f3acd128d6b349efe14e97b12c2703ca4f81f3.zip
Moved the core framework to GConf & D-Bus
Diffstat (limited to 'sowatchd/allscanner.cpp')
-rw-r--r--sowatchd/allscanner.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/sowatchd/allscanner.cpp b/sowatchd/allscanner.cpp
new file mode 100644
index 0000000..a3e7d33
--- /dev/null
+++ b/sowatchd/allscanner.cpp
@@ -0,0 +1,40 @@
+#include "allscanner.h"
+
+using namespace sowatch;
+
+AllScanner::AllScanner(QObject *parent) :
+ WatchScanner(parent), _finishedCount(0)
+{
+ QList<WatchPluginInterface*> plugins = Registry::registry()->getWatchPlugins();
+ foreach (WatchPluginInterface* driver, plugins) {
+ WatchScanner* scanner = driver->getScanner(this);
+ if (scanner) {
+ _scanners += scanner;
+ connect(scanner, SIGNAL(finished()), this, SLOT(handleFinished()));
+ connect(scanner, SIGNAL(watchFound(QVariantMap)),
+ this, SIGNAL(watchFound(QVariantMap)));
+ }
+ }
+}
+
+void AllScanner::start()
+{
+ if (_scanners.empty()) {
+ emit finished();
+ } else {
+ foreach (WatchScanner* scanner, _scanners) {
+ scanner->start();
+ }
+ emit started();
+ }
+}
+
+void AllScanner::handleFinished()
+{
+ qDebug() << "one finished";
+ _finishedCount++;
+ if (_finishedCount >= _scanners.length()) {
+ qDebug() << "all finished";
+ emit finished();
+ }
+}