summaryrefslogtreecommitdiffstats
path: root/kdirstat/kactivitytracker.cpp
blob: 5b198f0435cadd57d58562a02db24cb7dfebcb04 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
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 <tdeconfig.h>
#include "kactivitytracker.h"


KActivityTracker::KActivityTracker( TQObject *		parent,
				    const TQString &	id,
				    long		initialThreshold )
    : TQObject( parent )
{
    _id		= id;
    
    TDEConfig * 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;
    
    TDEConfig * 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

    TDEConfig * 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;
	TDEConfig * config = kapp->config();
	config->setGroup( _id );
	config->writeEntry( "lastSignal", _lastSignal );
	
	emit thresholdReached();
    }
}

#include "kactivitytracker.moc"


// EOF