diff options
Diffstat (limited to 'kcpuload/kcpuload/statdock.h')
-rw-r--r-- | kcpuload/kcpuload/statdock.h | 160 |
1 files changed, 160 insertions, 0 deletions
diff --git a/kcpuload/kcpuload/statdock.h b/kcpuload/kcpuload/statdock.h new file mode 100644 index 0000000..a9eb256 --- /dev/null +++ b/kcpuload/kcpuload/statdock.h @@ -0,0 +1,160 @@ + +/*************************************************************************** + * * + * KCPULoad and KNetLoad are copyright (c) 1999-2000, Markus Gustavsson * + * (c) 2002, Ben Burton * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#ifndef __STATDOCK_H +#define __STATDOCK_H + +#include <qcolor.h> +#include <ksystemtray.h> + +class StatPopup; + +/** + * A system tray window that displays a recent history of readings. + * A single application might have many of these windows. + * + * Two simultaneous sets of readings are supported; these will be + * referred to as upper and lower readings. When diagram splitting is + * switched on, these readings will be displayed together on the diagram + * with the upper readings shown above the lower readings. When diagram + * splitting is switched off, only the upper readings will be displayed. + * + * The parent window of a StatDock must be a StatPopup, which provides + * all of the actions in this window's context menu. + */ +class StatDock : public KSystemTray { + Q_OBJECT + +public: + /** + * Fill style constants. + */ + static const int fillLines; + static const int fillBars; + static const int fillShaded; + + /** + * Colour constants. + */ + static const QColor colorGrid; + static const QColor colorGridInactive; + static const QColor colorLabel; + static const QColor colorLabelInactive; + static const QColor colorLower; + static const QColor colorLowerInactive; + static const QColor colorBlack; + +public: + /** + * Constructor and destructor. + * + * Note that the constructor will call parent->initDock(). + * + * Parameter whichDock must be 0 or 1 to specify whether this dock + * will become dock[0] or dock[1] in the given StatPopup parent. + * Parameter useLabel should contain the label that will be drawn on + * the diagram if labelling is enabled. + */ + StatDock(int whichDock, const QString& useLabel, StatPopup *parent, + const char *name = 0); + ~StatDock(); + + /** + * Setting display options. + */ + void setGrid(bool); + void setActive(bool); + void setSoft(bool); + void setSplit(bool); + void setLabelled(bool); + void setLabel(const QString&); + void setFill(int); + void setColor(const QColor&); + +public slots: + /** + * Clear the history of recent readings. + * All readings will be reset to zero and the diagram will be + * updated. + */ + void clearHistory(); + + /** + * Add the given pair of readings as the most recent in our list. + * The diagram will be updated accordingly. + * + * Each argument should be a percentage between 0 and 100. + * The sum of both arguments must not exceed 100. + * + * If diagram splitting is switched off, the given lower reading + * will be ignored completely and 0 will be used instead. + * + * @param upper the upper reading in this pair. + * @param lower the lower reading in this pair. + */ + void addPercentReading(int upper, int lower); + +private: + /** + * Repaint this system tray window with a fresh diagram. + */ + void paintEvent(QPaintEvent*); + +private: + /** + * Display options. + */ + bool grid; + /**< Should the grid be displayed behind the diagram? */ + bool active; + /**< Is this meter currently active? */ + bool soft; + /**< Are we artificially modifying the readings to produce a + soft curve? */ + bool split; + /**< Are we displaying both upper and lower readings? */ + bool labelled; + /**< Should this diagram be labelled? */ + QString label; + /**< The specific label to draw on this diagram. */ + int fill; + /**< Specifies which of the predefined fill styles to use. */ + QColor colorUpper; + /**< Colour for displaying the upper readings. */ + QColor colorUpperInactive; + /**< Colour for displaying the upper readings whilst the diagram + is inactive. */ + + /** + * Stored readings. + */ + int* bufUpper; + /**< Stores our list of recent upper readings. + This list begins at index (pos + 1) as the earliest reading + and cycles around to index (pos) as the latest reading. */ + int* bufLower; + /**< Stores our list of recent lower readings. + This list begins at index (pos + 1) as the earliest reading + and cycles around to index (pos) as the latest reading. */ + int pos; + /**< The index in our arrays of the most recent reading. */ + + + /** + * Temporaries. + */ + int i, j, tmpPos, oldUpper, oldLower; + /**< Temporary variables used during computations. */ +}; + +#endif |