diff options
Diffstat (limited to 'ksysguard/gui/SensorDisplayLib/ListView.h')
-rw-r--r-- | ksysguard/gui/SensorDisplayLib/ListView.h | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/ksysguard/gui/SensorDisplayLib/ListView.h b/ksysguard/gui/SensorDisplayLib/ListView.h new file mode 100644 index 000000000..643df8747 --- /dev/null +++ b/ksysguard/gui/SensorDisplayLib/ListView.h @@ -0,0 +1,112 @@ +/* + KSysGuard, the KDE System Guard + + Copyright (c) 2001 Tobias Koenig <[email protected]> + + This program is free software; you can redistribute it and/or + modify it under the terms of version 2 of the GNU General Public + License as published by the Free Software Foundation. + + 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 Street, Fifth Floor, Boston, MA 02110-1301, USA. + + KSysGuard is currently maintained by Chris Schlaeger <[email protected]>. + Please do not commit any changes without consulting me first. Thanks! + +*/ + +#ifndef _ListView_h_ +#define _ListView_h_ + +#include <tqlistview.h> +#include <tqpainter.h> + +#include <SensorDisplay.h> + +typedef const char* (*KeyFunc)(const char*); + +class TQLabel; +class QBoxGroup; +class ListViewSettings; + +class PrivateListView : public TQListView +{ + Q_OBJECT +public: + enum ColumnType { Text, Int, Float, Time, DiskStat }; + + PrivateListView(TQWidget *parent = 0, const char *name = 0); + + void addColumn(const TQString& label, const TQString& type); + void removeColumns(void); + void update(const TQString& answer); + int columnType( uint pos ) const; + +private: + TQStringList mColumnTypes; +}; + +class PrivateListViewItem : public TQListViewItem +{ +public: + PrivateListViewItem(PrivateListView *parent = 0); + + void paintCell(TQPainter *p, const TQColorGroup &, int column, int width, int alignment) { + TQColorGroup cgroup = _parent->colorGroup(); + TQListViewItem::paintCell(p, cgroup, column, width, alignment); + p->setPen(cgroup.color(TQColorGroup::Link)); + p->drawLine(0, height() - 1, width - 1, height() - 1); + } + + void paintFocus(TQPainter *, const TQColorGroup, const TQRect) {} + + virtual int compare( TQListViewItem*, int column, bool ascending ) const; + +private: + TQWidget *_parent; +}; + +class ListView : public KSGRD::SensorDisplay +{ + Q_OBJECT +public: + ListView(TQWidget* parent = 0, const char* name = 0, + const TQString& = TQString::null, int min = 0, int max = 0); + ~ListView() {} + + bool addSensor(const TQString& hostName, const TQString& sensorName, const TQString& sensorType, const TQString& sensorDescr); + void answerReceived(int id, const TQString& answer); + void resizeEvent(TQResizeEvent*); + void updateList(); + + bool restoreSettings(TQDomElement& element); + bool saveSettings(TQDomDocument& doc, TQDomElement& element, bool save = true); + + virtual bool hasSettingsDialog() const + { + return (true); + } + + virtual void timerEvent(TQTimerEvent*) + { + updateList(); + } + + void configureSettings(); + +public slots: + void applySettings(); + void applyStyle(); + +private: + PrivateListView* monitor; + ListViewSettings* lvs; +}; + +#endif |