diff options
| author | Slávek Banko <slavek.banko@axis.cz> | 2013-07-27 16:34:45 +0200 | 
|---|---|---|
| committer | Slávek Banko <slavek.banko@axis.cz> | 2013-07-27 16:34:45 +0200 | 
| commit | d76ff81b7c1beffef0b84e570914c8f2d47834e6 (patch) | |
| tree | 284b80ce7c5456fbb041f7979ac2c0baeead8902 /src/statgraph.h | |
| download | tork-d76ff81b7c1beffef0b84e570914c8f2d47834e6.tar.gz tork-d76ff81b7c1beffef0b84e570914c8f2d47834e6.zip | |
Initial import of tork 0.33
Diffstat (limited to 'src/statgraph.h')
| -rw-r--r-- | src/statgraph.h | 229 | 
1 files changed, 229 insertions, 0 deletions
| diff --git a/src/statgraph.h b/src/statgraph.h new file mode 100644 index 0000000..40a9c26 --- /dev/null +++ b/src/statgraph.h @@ -0,0 +1,229 @@ +/*************************************************************************** + * $Id: statgraph.h,v 1.4 2008/07/31 19:56:26 hoganrobert Exp $ + *   Copyright (C) 2006 - 2008 Robert Hogan                                * + *   robert@roberthogan.net                                                * + *                                                                         * + *   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.                                   * + *                                                                         * + *   This program is distributed in the hope that it will be useful,       * + *   but WITHOUT ANY WARRANTY; without even the implied warranty of        * + *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         * + *   GNU General Public License for more details.                          * + *                                                                         * + *   You should have received a copy of the GNU General Public License     * + *   along with this program; if not, write to the                         * + *   Free Software Foundation, Inc.,                                       * + *   51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.              * + ***************************************************************************/ +/*************************************************************************** + *                                                                         * + *   KCPULoad and KNetLoad are copyright (c) 1999-2000, Markus Gustavsson  * + *                                       (c) 2002, Ben Burton              * + *                                       (c) 2004-2005, Diego Pettenò      * + *                                                                         * + *   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 STATGRAPH_H +#define STATGRAPH_H + +#include <qobject.h> +#include <qstring.h> +#include <qcolor.h> +#include <qlabel.h> + +/** + * @author Diego 'Flameeyes' Pettenò + *  + * @brief Abstraction of the dock's graph class for KNetLoad and KCPULoad. + * + * This classes abstracts the access to the graphs for KNetLoad and KCPULoad + * (and eventually other apps, too), making possible to use them without + * system trays and so on. + * + */ +class StatGraph : public QLabel { +Q_OBJECT +public: +//@{ +/** + * @name defaultcolors Default graphs' colors + * @brief These colors will be used as defaults color for graphs. + */ +	static const QColor defaultBgColor; +	static const QColor defaultReadingColor; +	static const QColor defaultLabelColor; +	static const QColor defaultGridColor; +	static const QColor invalidColor;	///< Color used to pass transparent colors +//@} +	 +	enum Style { Lines, Bars, Shades }; +protected: +	Style m_style;		///< Style of the graph +	QString m_label;	///< Label to show on the graph (QString::null to not show label) +	 +	QColor m_bgColor;	///< Background color for the graph @see defaultBgColor +	QColor m_readingColor;	///< Color for the readings graph +	QColor m_labelColor;	///< Color for the graph's label (if any) +	QColor m_gridColor;	///< Color for the graph's grid (if any) +	 +	ushort m_gridPace;	///< Pace at which a the grid is drawn. If 0, the grid is not drawn. +	ushort m_pace;		///< Horizontal pace for readings +	uint m_numReadings;	///< Maximum number of readings (label's width / graph's pace) +	uint m_currReading;	///< Current index in the readings arrays. +	uint *m_readings;	///< Array for readings. +	 +	Qt::ButtonState m_button;	///< Button clicked in pressed/released events +public: +	/** +	 * @brief Constructor for a StatGraph instance +	 * @param parent Label where to draw the graph +	 * @param pace X-distance between two reads. This will also influence the number +	 *        of readings which can be added (label's width / pace) +	 * @param gridPace Y-distance between two grid lines. If 0, the grid is not drawn. +	 * @param label Label to show on the graph (QString::null to not show label) +	 * @param bgColor Background color to apply to the graph +	 * @param name Name of the statgraph instance (passed to QObject) +	 * +	 * This constructor initialize the QObject parent class and the +	 * label which will be used to draw the graph on. +	 * Note: it will @b not change the background of the label, nor it will draw +	 * the label. +	 */ +	StatGraph(QWidget *parent, ushort pace = 1, ushort gridPace = 0, const QString &label = QString::null, const QColor &bgColor = defaultBgColor, const char *name = ""); +	 +	virtual ~StatGraph(); + +	/** +	 * @brief Sets the graph's style +	 */ +	void setStyle(Style style) +	{ m_style = style; } +	 +protected: +	virtual void resizeEvent(QResizeEvent*); +	virtual void paintEvent(QPaintEvent*); +	virtual void mousePressEvent(QMouseEvent *); +	virtual void mouseReleaseEvent(QMouseEvent *); +	 +	/** +	 * @brief Paints the grid on the graph +	 */ +	void paintGrid(QPainter &p); +	 +	/** +	 * @brief Paints the graph using Shades style +	 */ +	void paintShades(QPainter &p); +	 +	/** +	 * @brief Paints the graph using Bars style +	 */ +	void paintBars(QPainter &p); +	 +	/** +	 * @brief Paints the graph using Lines style +	 */ +	void paintLines(QPainter &p); +	 +	/** +	 * @brief Paints the label on the graph +	 */ +	void paintLabel(QPainter &p); +	 +	/** +	 * @brief Apply softening algorithm to readings +	 * +	 * This function is called to 'soften' the readings when addPercentReadings() is +	 * called with @c soft parameter true. +	 */ +	void softenReadings(uint &reading); +	 +public slots: +	/** +	 * @brief REquest a clear of the graph +	 * +	 * This functions resets the readings arrays and redraw completely the graph. +	 */ +	void clear(); +	 +	/** +	 * @brief Sets the label to show on the graph +	 * +	 * This function sets the string to show on the graph. +	 * To disable showLabel, simply pass QString::null as label to show. +	 */ +	inline void setLabel(const QString &label) +	{ +		m_label = label; +	} +	 +	/** +	 * @brief Sets the background color for the graph. +	 *  +	 * This function sets the background color for the graph instance +	 * To set the background to transparent, simply pass invalidColor value. +	 */ +	void setBgColor(const QColor &color); +	 +	/** +	 * @brief Sets the reading color for the graph. +	 *  +	 * This function sets the reading color for the graph instance. +	 * @note Passing invalidColor to this, made it move to the default color +	 *       as soon as a redraw is requested. +	 */ +	inline void setReadingColor(const QColor &color) +	{ m_readingColor = color; } + +	/** +	 * @brief Sets the label color for the graph. +	 *  +	 * This function sets the label color for the graph instance. +	 * @note Passing invalidColor to this, made it move to the default color +	 *       as soon as a redraw is requested. +	 */ +	inline void setLabelColor(const QColor &color) +	{ m_labelColor = color; } +	 +	/** +	 * @brief Sets the grid color for the graph. +	 *  +	 * This function sets the grid color for the graph instance. +	 * @note Passing invalidColor to this, made it move to the default color +	 *       as soon as a redraw is requested. +	 */ +	inline void setGridColor(const QColor &color) +	{ m_gridColor = color; } +	 +	/** +	 * @brief Sets the grid pace for the graph. +	 *  +	 * This function sets the grid pace for the graph instance. +	 * @note Pass 0 to disable grid painting. +	 */ +	inline void setGridPace(const ushort gridpace) +	{ m_gridPace = gridpace; } +	 +	/** +	* @brief Add the given reading as the most recent in our list. +	* @param reading The reading +	* @param soft If true, the reading will be aproximated to have a soft curve. +	* +	* The diagram will be updated accordingly. +	*/ +	void addPercentReading(uchar reading, bool soft); + +signals: +	void clickedLeft(); +	void clickedRight(); +}; + +#endif | 
