summaryrefslogtreecommitdiffstats
path: root/kdirstat/kactivitytracker.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kdirstat/kactivitytracker.cpp')
-rw-r--r--kdirstat/kactivitytracker.cpp93
1 files changed, 93 insertions, 0 deletions
diff --git a/kdirstat/kactivitytracker.cpp b/kdirstat/kactivitytracker.cpp
new file mode 100644
index 0000000..a7a1826
--- /dev/null
+++ b/kdirstat/kactivitytracker.cpp
@@ -0,0 +1,93 @@
+
+/*
+ * File name: kactivitytracker.cpp
+ * Summary: Utility object to track user activity
+ * License: LGPL - See file COPYING.LIB for details.
+ * Author: Stefan Hundhammer <sh@suse.de>
+ *
+ * Updated: 2003-01-07
+ */
+
+
+#include <kapp.h>
+#include <kdebug.h>
+#include <kconfig.h>
+#include "kactivitytracker.h"
+
+
+KActivityTracker::KActivityTracker( QObject * parent,
+ const QString & id,
+ long initialThreshold )
+ : QObject( parent )
+{
+ _id = id;
+
+ KConfig * config = kapp->config();
+ config->setGroup( _id );
+ _sum = config->readNumEntry( "activityPoints", 0 );
+ _lastSignal = config->readNumEntry( "lastSignal" , 0 );
+ _threshold = config->readNumEntry( "threshold", initialThreshold );
+}
+
+
+KActivityTracker::~KActivityTracker()
+{
+ // NOP
+}
+
+
+void
+KActivityTracker::setThreshold( long threshold )
+{
+ _threshold = threshold;
+
+ KConfig * config = kapp->config();
+ config->setGroup( _id );
+ config->writeEntry( "threshold", _threshold );
+
+ checkThreshold();
+}
+
+
+void
+KActivityTracker::trackActivity( int points )
+{
+ _sum += points;
+
+ if ( _sum < 0 ) // handle long int overflow
+ _sum = 0;
+
+#if 0
+ kdDebug() << "Adding " << points << " activity points."
+ << " Total: " << _sum << " threshold: " << _threshold
+ << endl;
+#endif
+
+ KConfig * config = kapp->config();
+ config->setGroup( _id );
+ config->writeEntry( "activityPoints", _sum );
+
+ checkThreshold();
+}
+
+
+void
+KActivityTracker::checkThreshold()
+{
+ if ( _sum > _threshold && _lastSignal < _threshold )
+ {
+ // kdDebug() << "Activity threshold reached for " << _id << endl;
+
+ _lastSignal = _sum;
+ KConfig * config = kapp->config();
+ config->setGroup( _id );
+ config->writeEntry( "lastSignal", _lastSignal );
+
+ emit thresholdReached();
+ }
+}
+
+
+
+
+// EOF