summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemko Tronçon <git@el-tramo.be>2009-11-24 18:09:37 (GMT)
committerRemko Tronçon <git@el-tramo.be>2009-11-24 18:09:37 (GMT)
commitc7fb528f0d80f9d96a2d84444352386d5d4288dc (patch)
treebc52f4729e948c5021ab322e6ad739f315d41140 /SwifTools/Idle/ActualIdleDetector.cpp
parentea951bec1c4b84b739a9f435e0d17dbb99e4d724 (diff)
downloadswift-c7fb528f0d80f9d96a2d84444352386d5d4288dc.zip
swift-c7fb528f0d80f9d96a2d84444352386d5d4288dc.tar.bz2
Added SwifTools/Idle module.
Diffstat (limited to 'SwifTools/Idle/ActualIdleDetector.cpp')
-rw-r--r--SwifTools/Idle/ActualIdleDetector.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/SwifTools/Idle/ActualIdleDetector.cpp b/SwifTools/Idle/ActualIdleDetector.cpp
new file mode 100644
index 0000000..2e3f307
--- /dev/null
+++ b/SwifTools/Idle/ActualIdleDetector.cpp
@@ -0,0 +1,29 @@
+#include "SwifTools/Idle/ActualIdleDetector.h"
+
+#include <boost/bind.hpp>
+
+#include "SwifTools/Idle/IdleQuerier.h"
+#include "Swiften/Network/Timer.h"
+#include "Swiften/Network/TimerFactory.h"
+
+namespace Swift {
+
+ActualIdleDetector::ActualIdleDetector(IdleQuerier* querier, TimerFactory* timerFactory, int refreshRateSeconds) : querier(querier), isIdle(false) {
+ timer = timerFactory->createTimer(refreshRateSeconds*1000);
+ timer->onTick.connect(boost::bind(&ActualIdleDetector::handleTimerTick, this));
+ timer->start();
+}
+
+ActualIdleDetector::~ActualIdleDetector() {
+ timer->stop();
+}
+
+void ActualIdleDetector::handleTimerTick() {
+ bool idle = (querier->getIdleTimeSeconds() >= getIdleTimeSeconds());
+ if (idle != isIdle) {
+ isIdle = idle;
+ onIdleChanged(isIdle);
+ }
+}
+
+}