From c7c6a2c596637fd4942c7fb80341ca2ef7b47808 Mon Sep 17 00:00:00 2001 From: "Javier S. Pedro" Date: Thu, 9 Aug 2012 16:38:56 +0200 Subject: moving scanner logic to ui, new icon --- libsowatch/allwatchscanner.cpp | 40 ++++++++++++++++++++++++++++++++++++++++ libsowatch/allwatchscanner.h | 29 +++++++++++++++++++++++++++++ libsowatch/libsowatch.pro | 2 ++ libsowatch/sowatch.h | 1 + 4 files changed, 72 insertions(+) create mode 100644 libsowatch/allwatchscanner.cpp create mode 100644 libsowatch/allwatchscanner.h (limited to 'libsowatch') diff --git a/libsowatch/allwatchscanner.cpp b/libsowatch/allwatchscanner.cpp new file mode 100644 index 0000000..8a49b86 --- /dev/null +++ b/libsowatch/allwatchscanner.cpp @@ -0,0 +1,40 @@ +#include "allwatchscanner.h" + +using namespace sowatch; + +AllWatchScanner::AllWatchScanner(QObject *parent) : + WatchScanner(parent), _finishedCount(0) +{ + QList 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 AllWatchScanner::start() +{ + if (_scanners.empty()) { + emit finished(); + } else { + foreach (WatchScanner* scanner, _scanners) { + scanner->start(); + } + emit started(); + } +} + +void AllWatchScanner::handleFinished() +{ + qDebug() << "one finished"; + _finishedCount++; + if (_finishedCount >= _scanners.length()) { + qDebug() << "all finished"; + emit finished(); + } +} diff --git a/libsowatch/allwatchscanner.h b/libsowatch/allwatchscanner.h new file mode 100644 index 0000000..ac0baae --- /dev/null +++ b/libsowatch/allwatchscanner.h @@ -0,0 +1,29 @@ +#ifndef SOWATCH_ALLWATCHSCANNER_H +#define SOWATCH_ALLWATCHSCANNER_H + +#include +#include + +#include + +namespace sowatch +{ + +class AllWatchScanner : public WatchScanner +{ + Q_OBJECT +public: + explicit AllWatchScanner(QObject *parent = 0); + void start(); + +private: + QList _scanners; + int _finishedCount; + +private slots: + void handleFinished(); +}; + +} + +#endif // SOWATCH_ALLWATCHSCANNER_H diff --git a/libsowatch/libsowatch.pro b/libsowatch/libsowatch.pro index 7a5b8eb..1057a87 100644 --- a/libsowatch/libsowatch.pro +++ b/libsowatch/libsowatch.pro @@ -32,6 +32,7 @@ SOURCES += \ watchletplugininterface.cpp \ registry.cpp \ watchscanner.cpp \ + allwatchscanner.cpp \ configkey.cpp \ gconfkey.cpp @@ -54,6 +55,7 @@ HEADERS += \ watchletplugininterface.h \ registry.h \ watchscanner.h \ + allwatchscanner.h \ configkey.h \ gconfkey.h diff --git a/libsowatch/sowatch.h b/libsowatch/sowatch.h index efc5ee8..921e69c 100644 --- a/libsowatch/sowatch.h +++ b/libsowatch/sowatch.h @@ -23,5 +23,6 @@ #include "watchletplugininterface.h" #include "registry.h" +#include "allwatchscanner.h" #endif // SOWATCH_H -- cgit v1.2.3