diff options
author | Javier S. Pedro <maemo@javispedro.com> | 2011-09-17 03:03:23 +0200 |
---|---|---|
committer | Javier S. Pedro <maemo@javispedro.com> | 2011-09-17 03:03:23 +0200 |
commit | 3a755f46d9cf6e3650d40a960d0d0db8c1ad9fa1 (patch) | |
tree | f330f63caec08b6626c808b5ae70c64cab0246a6 /libsowatch/watchserver.cpp | |
parent | 0dca79a8c15b76ca53617c0ed3396ab6435f0152 (diff) | |
download | sowatch-3a755f46d9cf6e3650d40a960d0d0db8c1ad9fa1.tar.gz sowatch-3a755f46d9cf6e3650d40a960d0d0db8c1ad9fa1.zip |
preparing for library package
Diffstat (limited to 'libsowatch/watchserver.cpp')
-rw-r--r-- | libsowatch/watchserver.cpp | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/libsowatch/watchserver.cpp b/libsowatch/watchserver.cpp new file mode 100644 index 0000000..ad49995 --- /dev/null +++ b/libsowatch/watchserver.cpp @@ -0,0 +1,57 @@ +#include "watch.h" +#include "watchlet.h" +#include "watchserver.h" + +using namespace sowatch; + +WatchServer::WatchServer(Watch* watch, QObject* parent) : + QObject(parent), _watch(watch), _currentWatchlet(0) +{ + connect(_watch, SIGNAL(connected()), SLOT(watchConnected())); + connect(_watch, SIGNAL(disconnected()), SLOT(watchDisconnected())); +} + +Watch* WatchServer::watch() +{ + return _watch; +} + +void WatchServer::runWatchlet(const QString& id) +{ + if (_currentWatchlet) { + closeWatchlet(); + } + _currentWatchlet = watchlets[id]; + if (_watch->isConnected()) { + _currentWatchlet->activate(); + } +} + +void WatchServer::closeWatchlet() +{ + Q_ASSERT(_currentWatchlet != 0); + if (_watch->isConnected()) { + _currentWatchlet->deactivate(); + } + _currentWatchlet = 0; +} + +void WatchServer::registerWatchlet(Watchlet *watchlet) +{ + Q_ASSERT(watchlet->_server == this); + watchlets[watchlet->id()] = watchlet; +} + +void WatchServer::watchConnected() +{ + if (_currentWatchlet) { + _currentWatchlet->activate(); + } +} + +void WatchServer::watchDisconnected() +{ + if (_currentWatchlet) { + _currentWatchlet->deactivate(); + } +} |