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.
ksensors/src/lmsensordockpanel.cpp

147 lines
4.2 KiB

/***************************************************************************
lmsensordockpanel.cpp - description
-------------------
begin : Tue Sep 18 2001
copyright : (C) 2001 by Miguel Novas
email : michaell@teleline.es
***************************************************************************/
/***************************************************************************
* *
* 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. *
* *
***************************************************************************/
#include <ntqpixmap.h>
#include <kstddirs.h>
#include <tdelocale.h>
#include <tdeconfig.h>
#include <kiconloader.h>
#include "lmsensordockpanel.h"
LMSensorDockPanel::LMSensorDockPanel(Sensor *newSensor, const char *name) : KSystemTray( 0, name )
{
strValue = "";
if(newSensor) {
sensor= newSensor;
updateConfig();
connect( newSensor, TQ_SIGNAL(valueChanged(double)) , this, TQ_SLOT(setValue(double)) );
connect( newSensor, TQ_SIGNAL(configChanged()) , this, TQ_SLOT(updateConfig()) );
setPixmap(0);
} else {
sensor= 0;
setPixmap(BarIcon("ksensorsdocked"));
}
}
LMSensorDockPanel::~LMSensorDockPanel()
{
}
void LMSensorDockPanel::setValue(double value)
{
if(sensor) {
switch(sensor->getType()) {
case Sensor::lmTemp:
strValue.sprintf("%2.0f",value);
break;
case Sensor::lmFan:
strValue.sprintf("%1.1f",value/1000);
break;
case Sensor::lmVoltage:
strValue.sprintf("%2.1f",value);
break;
}
update();
}
}
void LMSensorDockPanel::updateConfig()
{
colorAlarm = readColorAlarm (name());
colorNormal= readColorNormal(name());
setValue(sensor->getValue());
}
void LMSensorDockPanel::paintEvent ( TQPaintEvent *e )
{
if(sensor) {
int w= width();
int h= height();
TQPainter painter(this);
TQColor color= sensor->getAlarm() ? colorAlarm : colorNormal;
TQColor colorShadow= color.dark(200);
painter.setPen(color);
painter.drawLine(2, 2 , w-2,2 );
painter.drawLine(2, h-3, w-2,h-3);
painter.setPen(colorShadow);
painter.drawLine(3, 3 , w-3,3 );
painter.drawLine(3, h-4, w-3,h-4);
if(sensor->getType()==Sensor::lmTemp) {
TQLcd::draw(&painter,4,6,w-6, h-12,strValue.latin1(),TQLcd::drawShadow,&color,&colorShadow);
} else {
TQLcd::draw(&painter,1,7,w-1, h-14,strValue.latin1(),TQLcd::drawNumber|TQLcd::alignCenter|TQLcd::drawShadow,&color,&colorShadow);
}
} else {
KSystemTray::paintEvent(e);
}
}
void LMSensorDockPanel::mousePressEvent ( TQMouseEvent *e )
{
emit mouseEvent(e);
}
void LMSensorDockPanel::mouseReleaseEvent ( TQMouseEvent *e )
{
emit mouseEvent(e);
}
//*****************************************************************+
void LMSensorDockPanel::writeColorAlarm(const char *name, const TQColor &color)
{
TDEGlobal::config()->setGroup(name);
TDEGlobal::config()->writeEntry("colorAlarm",color);
}
void LMSensorDockPanel::writeColorNormal(const char *name,const TQColor &color)
{
TDEGlobal::config()->setGroup(name);
TDEGlobal::config()->writeEntry("colorNormal",color);
}
TQColor LMSensorDockPanel::readColorAlarm(const char *name)
{
TDEGlobal::config()->setGroup(name);
return TDEGlobal::config()->readColorEntry("colorAlarm" , &red );
}
TQColor LMSensorDockPanel::readColorNormal(const char *name)
{
TDEGlobal::config()->setGroup(name);
return TDEGlobal::config()->readColorEntry("colorNormal", &darkGreen);
}
void LMSensorDockPanel::writeShowInDock(const char *name, bool fShow)
{
TDEGlobal::config()->setGroup(name);
TDEGlobal::config()->writeEntry("showInDock",fShow);
}
bool LMSensorDockPanel::readShowInDock(const char *name)
{
TDEGlobal::config()->setGroup(name);
return TDEGlobal::config()->readBoolEntry("showInDock", false);
}
#include "lmsensordockpanel.moc"