/*************************************************************************** qbarmeter.cpp - description ------------------- begin : Mon Dec 3 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 "qbarmeter.h" TQBarMeter::TQBarMeter(TQWidget *parent, const char *name): TQWidget(parent,name) { count = 1; val[0] = 0; valMax = 100; color[0] = red; maxColor = green; useValMax= true; dir = dirUp; steps = 10; } TQBarMeter::~TQBarMeter() { } void TQBarMeter::setDirection(Direction newDir) { dir= newDir; update(); } void TQBarMeter::useValueMax(bool flag) { if(useValMax!=flag) { useValMax= flag; update(); } } void TQBarMeter::setValueMax(double newVal) { if(valMax!=newVal) { valMax= newVal; update(); } } void TQBarMeter::setValueMaxColor(const TQColor &newColor) { maxColor= newColor; update(); } void TQBarMeter::setValue(double newVal) { if(val[0]!=newVal) { val[0]= newVal; update(); } } void TQBarMeter::setValueColor(const TQColor &newColor) { color[0]= newColor; update(); } void TQBarMeter::setValue(int index, double newVal) { if(val[index]!=newVal) { val[index]= newVal; update(); } } void TQBarMeter::setValueColor(int index, const TQColor &newColor) { if(color[index]!=newColor) { color[index]= newColor; update(); } } void TQBarMeter::setValueCount(int newCount) { if(count!=newCount) { count= newCount; update(); } } void TQBarMeter::setSteps(int newSteps) { steps= newSteps; update(); } void TQBarMeter::paintEvent( TQPaintEvent *) { int x,y,lx,ly,sx,sy; switch(dir) { case dirUp : sx= 0; sy= - height() / steps; lx= width(); ly= - (sy * 3) / 4; x = 0; y = height() - ly; break; case dirDown : sx= 0; sy= height() / steps; lx= width(); ly= (sy * 3) / 4; x = 0; y = 0; break; case dirLeft : sx= - width() / steps; sy= 0; lx= - (sx * 3) / 4; ly= height(); x = width() - lx; y = 0; break; case dirRight: sx= width() / steps; sy= 0; lx= (sx * 3) / 4; ly= height(); x = 0; y = 0; break; default: return; } if(!useValMax) { maxColor= color[count-1]; valMax= 0; for(int i=0; i0 && val[i]>0) v++; csteps-= v; while(v-->0) { p.fillRect(x,y,lx,ly,color[i]); x+= sx; y+= sy; } } if(csteps>0) { do { p.fillRect(x,y,lx,ly,maxColor); x+= sx; y+= sy; } while(--csteps>0); } }