diff options
author | Javier S. Pedro <maemo@javispedro.com> | 2012-04-26 01:36:20 +0200 |
---|---|---|
committer | Javier S. Pedro <maemo@javispedro.com> | 2012-04-26 01:36:20 +0200 |
commit | 93f3acd128d6b349efe14e97b12c2703ca4f81f3 (patch) | |
tree | 937f3de2307444f0c28d6d21f26f1580e789b074 /sowatchd/allscanner.cpp | |
parent | 1375a26b135547fdd8e07db62acf8116a8482560 (diff) | |
download | sowatch-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.cpp | 40 |
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(); + } +} |