00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #include "bar.h"
00012 #include "karamba.h"
00013
00014 Bar::Bar(karamba* k, int x, int y, int w, int h) : Meter(k, x, y, w, h)
00015 {
00016 value = 0;
00017 minValue = 0;
00018 maxValue = 100;
00019 barValue = 0;
00020 vertical = false;
00021 }
00022
00023 Bar::~Bar()
00024 {
00025 }
00026
00027 bool Bar::setImage(TQString fileName)
00028 {
00029 TQFileInfo fileInfo(fileName);
00030 bool res = false;
00031
00032 if(m_karamba->theme().isThemeFile(fileName))
00033 {
00034 TQByteArray ba = m_karamba->theme().readThemeFile(fileName);
00035 res = pixmap.loadFromData(ba);
00036 }
00037 else
00038 {
00039 res = pixmap.load(fileName);
00040 }
00041 pixmapWidth = pixmap.width();
00042 pixmapHeight = pixmap.height();
00043
00044 if(getWidth()==0 || getHeight()==0)
00045 {
00046 setWidth(pixmapWidth);
00047 setHeight(pixmapHeight);
00048 }
00049 if(res)
00050 imagePath = fileName;
00051 return res;
00052 }
00053
00054 void Bar::setValue( long v )
00055 {
00056 if(v > maxValue)
00057 {
00058
00059 v = maxValue;
00060 }
00061
00062 if(v < minValue)
00063 {
00064
00065 v = minValue;
00066 }
00067
00068 barValue = v;
00069
00070 long diff = maxValue - minValue;
00071 if(diff != 0)
00072 {
00073 if(vertical)
00074 {
00075 value = long((v-minValue)*getHeight() / diff + 0.5);
00076 }
00077 else
00078 {
00079 value = long((v-minValue)*getWidth() / diff + 0.5);
00080 }
00081 }
00082 else
00083 {
00084 value = 0;
00085 }
00086 }
00087
00088 void Bar::setValue(TQString v)
00089 {
00090 setValue((long)(v.toDouble() + 0.5));
00091 }
00092
00093 void Bar::setMax(long m)
00094 {
00095 Meter::setMax(m);
00096 recalculateValue();
00097 }
00098
00099 void Bar::setMin(long m)
00100 {
00101 Meter::setMin(m);
00102 recalculateValue();
00103 }
00104
00105 void Bar::setVertical(bool b)
00106 {
00107 vertical = b;
00108 }
00109
00110 void Bar::mUpdate(TQPainter *p)
00111 {
00112 int x, y, width, height;
00113 x = getX();
00114 y = getY();
00115 width = getWidth();
00116 height = getHeight();
00117
00118 if(hidden == 0)
00119 {
00120 if(vertical)
00121 {
00122
00123 p->drawTiledPixmap(x, y+height-value, width, value, pixmap, 0,
00124 pixmapHeight-value);
00125 }
00126 else
00127 {
00128
00129 p->drawTiledPixmap(x, y, value, height, pixmap);
00130 }
00131 }
00132 }
00133
00134 #include "bar.moc"