You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
185 lines
4.4 KiB
185 lines
4.4 KiB
15 years ago
|
/*
|
||
|
KSysGuard, the KDE System Guard
|
||
|
|
||
|
Copyright (c) 2001 Tobias Koenig <tokoe@kde.org>
|
||
|
|
||
|
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.
|
||
|
|
||
|
*/
|
||
|
|
||
|
#ifndef _SensorLogger_h
|
||
|
#define _SensorLogger_h
|
||
|
|
||
|
#include <qdom.h>
|
||
|
#include <qlabel.h>
|
||
|
#include <qlineedit.h>
|
||
|
#include <qlistview.h>
|
||
|
#include <qpopupmenu.h>
|
||
|
#include <qspinbox.h>
|
||
|
#include <qstring.h>
|
||
|
|
||
|
#include <SensorDisplay.h>
|
||
|
|
||
|
#include "SensorLoggerDlg.h"
|
||
|
|
||
|
#define NONE -1
|
||
|
|
||
|
class SensorLoggerSettings;
|
||
|
|
||
|
class SLListViewItem : public QListViewItem
|
||
|
{
|
||
|
public:
|
||
|
SLListViewItem(QListView *parent = 0);
|
||
|
|
||
|
void setTextColor(const QColor& color) { textColor = color; }
|
||
|
|
||
|
void paintCell(QPainter *p, const QColorGroup &cg, int column, int width, int alignment) {
|
||
|
QColorGroup cgroup(cg);
|
||
|
cgroup.setColor(QColorGroup::Text, textColor);
|
||
|
QListViewItem::paintCell(p, cgroup, column, width, alignment);
|
||
|
|
||
|
}
|
||
|
|
||
|
void paintFocus(QPainter *, const QColorGroup, const QRect) {}
|
||
|
|
||
|
private:
|
||
|
QColor textColor;
|
||
|
};
|
||
|
|
||
|
class LogSensor : public QObject, public KSGRD::SensorClient
|
||
|
{
|
||
|
Q_OBJECT
|
||
|
public:
|
||
|
LogSensor(QListView *parent);
|
||
|
~LogSensor(void);
|
||
|
|
||
|
void answerReceived(int id, const QString& answer);
|
||
|
|
||
|
void setHostName(const QString& name) { hostName = name; lvi->setText(3, name); }
|
||
|
void setSensorName(const QString& name) { sensorName = name; lvi->setText(2, name); }
|
||
|
void setFileName(const QString& name)
|
||
|
{
|
||
|
fileName = name;
|
||
|
lvi->setText(4, name);
|
||
|
}
|
||
|
void setUpperLimitActive(bool value) { upperLimitActive = value; }
|
||
|
void setLowerLimitActive(bool value) { lowerLimitActive = value; }
|
||
|
void setUpperLimit(double value) { upperLimit = value; }
|
||
|
void setLowerLimit(double value) { lowerLimit = value; }
|
||
|
|
||
|
void setTimerInterval(int interval) {
|
||
|
timerInterval = interval;
|
||
|
|
||
|
if (timerID != NONE)
|
||
|
{
|
||
|
timerOff();
|
||
|
timerOn();
|
||
|
}
|
||
|
|
||
|
lvi->setText(1, QString("%1").arg(interval));
|
||
|
}
|
||
|
|
||
|
QString getSensorName(void) { return sensorName; }
|
||
|
QString getHostName(void) { return hostName; }
|
||
|
QString getFileName(void) { return fileName; }
|
||
|
int getTimerInterval(void) { return timerInterval; }
|
||
|
bool getUpperLimitActive(void) { return upperLimitActive; }
|
||
|
bool getLowerLimitActive(void) { return lowerLimitActive; }
|
||
|
double getUpperLimit(void) { return upperLimit; }
|
||
|
double getLowerLimit(void) { return lowerLimit; }
|
||
|
QListViewItem* getListViewItem(void) { return lvi; }
|
||
|
|
||
|
public slots:
|
||
|
void timerOff()
|
||
|
{
|
||
|
killTimer(timerID);
|
||
|
timerID = NONE;
|
||
|
}
|
||
|
|
||
|
void timerOn()
|
||
|
{
|
||
|
timerID = startTimer(timerInterval * 1000);
|
||
|
}
|
||
|
|
||
|
bool isLogging() { return timerID != NONE; }
|
||
|
|
||
|
void startLogging(void);
|
||
|
void stopLogging(void);
|
||
|
|
||
|
protected:
|
||
|
virtual void timerEvent(QTimerEvent*);
|
||
|
|
||
|
private:
|
||
|
QListView* monitor;
|
||
|
SLListViewItem* lvi;
|
||
|
QPixmap pixmap_running;
|
||
|
QPixmap pixmap_waiting;
|
||
|
QString sensorName;
|
||
|
QString hostName;
|
||
|
QString fileName;
|
||
|
|
||
|
int timerInterval;
|
||
|
int timerID;
|
||
|
|
||
|
bool lowerLimitActive;
|
||
|
bool upperLimitActive;
|
||
|
|
||
|
double lowerLimit;
|
||
|
double upperLimit;
|
||
|
};
|
||
|
|
||
|
class SensorLogger : public KSGRD::SensorDisplay
|
||
|
{
|
||
|
Q_OBJECT
|
||
|
public:
|
||
|
SensorLogger(QWidget *parent = 0, const char *name = 0, const QString& title = 0);
|
||
|
~SensorLogger(void);
|
||
|
|
||
|
bool addSensor(const QString& hostName, const QString& sensorName, const QString& sensorType,
|
||
|
const QString& sensorDescr);
|
||
|
|
||
|
bool editSensor(LogSensor*);
|
||
|
|
||
|
void answerReceived(int id, const QString& answer);
|
||
|
void resizeEvent(QResizeEvent*);
|
||
|
|
||
|
bool restoreSettings(QDomElement& element);
|
||
|
bool saveSettings(QDomDocument& doc, QDomElement& element, bool save = true);
|
||
|
|
||
|
void configureSettings(void);
|
||
|
|
||
|
virtual bool hasSettingsDialog() const
|
||
|
{
|
||
|
return (true);
|
||
|
}
|
||
|
|
||
|
public slots:
|
||
|
void applySettings();
|
||
|
void applyStyle();
|
||
|
void RMBClicked(QListViewItem*, const QPoint&, int);
|
||
|
|
||
|
protected:
|
||
|
LogSensor* getLogSensor(QListViewItem*);
|
||
|
|
||
|
private:
|
||
|
QListView* monitor;
|
||
|
|
||
|
QPtrList<LogSensor> logSensors;
|
||
|
|
||
|
SensorLoggerDlg *sld;
|
||
|
SensorLoggerSettings *sls;
|
||
|
};
|
||
|
|
||
|
#endif // _SensorLogger_h
|