summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/applets/batteryapplet/batterystatus.cpp43
-rw-r--r--core/applets/batteryapplet/batterystatus.h2
2 files changed, 33 insertions, 12 deletions
diff --git a/core/applets/batteryapplet/batterystatus.cpp b/core/applets/batteryapplet/batterystatus.cpp
index 7d3bdd9..fdd963c 100644
--- a/core/applets/batteryapplet/batterystatus.cpp
+++ b/core/applets/batteryapplet/batterystatus.cpp
@@ -1,39 +1,50 @@
1 1
2#include "batterystatus.h" 2#include "batterystatus.h"
3 3
4#include <qpe/power.h> 4#include <qpe/power.h>
5 5
6#include <opie/odevice.h> 6#include <opie/odevice.h>
7 7
8#include <qpainter.h> 8#include <qpainter.h>
9#include <qpushbutton.h> 9#include <qpushbutton.h>
10#include <qdrawutil.h> 10#include <qdrawutil.h>
11#include <qfile.h> 11#include <qfile.h>
12#include <qlayout.h>
12#include <qtextstream.h> 13#include <qtextstream.h>
14#include <qapplication.h>
13#include <qmessagebox.h> 15#include <qmessagebox.h>
14 16
15using namespace Opie; 17using namespace Opie;
16 18
17BatteryStatus::BatteryStatus( const PowerStatus *p, QWidget *parent ) 19BatteryStatus::BatteryStatus( const PowerStatus *p, QWidget *parent )
18 : QWidget( parent, 0, WDestructiveClose), ps(p), bat2(false) { 20 : QWidget( parent, 0, WDestructiveClose), ps(p), bat2(false) {
19 setCaption( tr("Battery status") ); 21 setCaption( tr("Battery status") );
20 QPushButton *pb = new QPushButton( tr("Close"), this ); 22 QPushButton *pb = new QPushButton( tr("Close"), this );
21 pb->move( 70, 250 ); 23 QVBoxLayout *layout = new QVBoxLayout ( this );
22 pb->setMaximumHeight(20); 24
25 jackPercent = 0;
26
27 pb->setMaximumHeight(40);
28 pb->setMaximumWidth( 120 );
29
23 pb->show(); 30 pb->show();
31
32 layout->addStretch( 0 );
33 layout->addWidget( pb );
34
24 if ( ODevice::inst ( )-> series ( ) == Model_iPAQ ) { 35 if ( ODevice::inst ( )-> series ( ) == Model_iPAQ ) {
25 getProcApmStatusIpaq(); 36 getProcApmStatusIpaq();
26 } 37 }
27 connect( pb, SIGNAL( clicked() ), this, SLOT( close() ) ); 38 connect( pb, SIGNAL( clicked() ), this, SLOT( close() ) );
28 percent = ps->batteryPercentRemaining(); 39 percent = ps->batteryPercentRemaining();
29 show(); 40 show();
30} 41}
31 42
32BatteryStatus::~BatteryStatus() 43BatteryStatus::~BatteryStatus()
33{ 44{
34} 45}
35 46
36/* 47/*
37 * Make use of the advanced apm interface of the ipaq 48 * Make use of the advanced apm interface of the ipaq
38 */ 49 */
39bool BatteryStatus::getProcApmStatusIpaq() { 50bool BatteryStatus::getProcApmStatusIpaq() {
@@ -122,32 +133,36 @@ void BatteryStatus::drawSegment( QPainter *p, const QRect &r, const QColor &topg
122 v1 + ((v2-v1)*j)/(ng-1), QColor::Hsv ) ); 133 v1 + ((v2-v1)*j)/(ng-1), QColor::Hsv ) );
123 p->drawLine( r.x(), r.top()+hy-2-j, r.x()+r.width(), r.top()+hy-2-j ); 134 p->drawLine( r.x(), r.top()+hy-2-j, r.x()+r.width(), r.top()+hy-2-j );
124 } 135 }
125 for ( int j = 0; j < hh; j++ ) { 136 for ( int j = 0; j < hh; j++ ) {
126 p->setPen( highlight ); 137 p->setPen( highlight );
127 p->drawLine( r.x(), r.top()+hy-2+j, r.x()+r.width(), r.top()+hy-2+j ); 138 p->drawLine( r.x(), r.top()+hy-2+j, r.x()+r.width(), r.top()+hy-2+j );
128 } 139 }
129 for ( int j = 0; j < ng-hy-hh; j++ ) { 140 for ( int j = 0; j < ng-hy-hh; j++ ) {
130 p->setPen( QColor( h1 + ((h2-h1)*j)/(ng-1), s1 + ((s2-s1)*j)/(ng-1), 141 p->setPen( QColor( h1 + ((h2-h1)*j)/(ng-1), s1 + ((s2-s1)*j)/(ng-1),
131 v1 + ((v2-v1)*j)/(ng-1), QColor::Hsv ) ); 142 v1 + ((v2-v1)*j)/(ng-1), QColor::Hsv ) );
132 p->drawLine( r.x(), r.top()+hy+hh-2+j, r.x()+r.width(), r.top()+hy+hh-2+j ); 143 p->drawLine( r.x(), r.top()+hy+hh-2+j, r.x()+r.width(), r.top()+hy+hh-2+j );
133 } 144 }
134} 145}
135 146
136void BatteryStatus::paintEvent( QPaintEvent * ) { 147void BatteryStatus::paintEvent( QPaintEvent * ) {
137 148
149
150 int screenWidth = qApp->desktop()->width();
151 int screenHeight = qApp->desktop()->height();
152
138 QPainter p(this); 153 QPainter p(this);
139 QString text; 154 QString text;
140 if ( ps->batteryStatus() == PowerStatus::Charging ) { 155 if ( ps->batteryStatus() == PowerStatus::Charging ) {
141 if (bat2) { 156 if (bat2) {
142 text = tr("Charging both devices"); 157 text = tr("Charging both devices");
143 } else { 158 } else {
144 text = tr("Charging"); 159 text = tr("Charging");
145 } 160 }
146 } else if ( ps->batteryPercentAccurate() ) { 161 } else if ( ps->batteryPercentAccurate() ) {
147 text.sprintf( tr("Percentage battery remaining") + ": %i%%", percent ); 162 text.sprintf( tr("Percentage battery remaining") + ": %i%%", percent );
148 } else { 163 } else {
149 text = tr("Battery status: "); 164 text = tr("Battery status: ");
150 switch ( ps->batteryStatus() ) { 165 switch ( ps->batteryStatus() ) {
151 case PowerStatus::High: 166 case PowerStatus::High:
152 text += tr("Good"); 167 text += tr("Good");
153 break; 168 break;
@@ -185,52 +200,56 @@ void BatteryStatus::paintEvent( QPaintEvent * ) {
185 if ( ps->acStatus() == PowerStatus::Offline ) { 200 if ( ps->acStatus() == PowerStatus::Offline ) {
186 c = blue.light(120); 201 c = blue.light(120);
187 darkc = c.dark(280); 202 darkc = c.dark(280);
188 lightc = c.light(145); 203 lightc = c.light(145);
189 } else if ( ps->acStatus() == PowerStatus::Online ) { 204 } else if ( ps->acStatus() == PowerStatus::Online ) {
190 c = green.dark(130); 205 c = green.dark(130);
191 darkc = c.dark(200); 206 darkc = c.dark(200);
192 lightc = c.light(220); 207 lightc = c.light(220);
193 } else { 208 } else {
194 c = red; 209 c = red;
195 darkc = c.dark(280); 210 darkc = c.dark(280);
196 lightc = c.light(140); 211 lightc = c.light(140);
197 } 212 }
198 if ( percent < 0 ) 213 if ( percent < 0 )
199 return; 214 return;
200 215
201 int percent2 = percent * 2; 216 int rightEnd1 = screenWidth - 47;
217 int rightEnd2 = screenWidth - 35;
218 int percent2 = ( percent / 100 ) * rightEnd1 ;
202 p.setPen( black ); 219 p.setPen( black );
203 qDrawShadePanel( &p, 9, 30, 204, 39, colorGroup(), TRUE, 1, NULL); 220 qDrawShadePanel( &p, 9, 30, rightEnd1 , 39, colorGroup(), TRUE, 1, NULL);
204 qDrawShadePanel( &p, 212, 37, 12, 24, colorGroup(), TRUE, 1, NULL); 221 qDrawShadePanel( &p, rightEnd2, 37, 12, 24, colorGroup(), TRUE, 1, NULL);
205 drawSegment( &p, QRect( 10, 30, percent2, 40 ), lightc, darkc, lightc.light(115), 6 ); 222 drawSegment( &p, QRect( 10, 30, percent2, 40 ), lightc, darkc, lightc.light(115), 6 );
206 drawSegment( &p, QRect( 11 + percent2, 30, 200 - percent2, 40 ), white.light(80), black, white.light(90), 6 ); 223 drawSegment( &p, QRect( 11 + percent2, 30, rightEnd1 - percent2, 40 ), white.light(80), black, white.light(90), 6 );
207 drawSegment( &p, QRect( 212, 37, 10, 25 ), white.light(80), black, white.light(90), 2 ); 224 drawSegment( &p, QRect( rightEnd2, 37, 10, 25 ), white.light(80), black, white.light(90), 2 );
208 p.setPen( black); 225 p.setPen( black);
209 226
210 227
211 if ( ODevice::inst ( )-> series ( ) == Model_iPAQ ) { 228 if ( ODevice::inst ( )-> series ( ) == Model_iPAQ ) {
212 229
213 p.drawText(15, 50, tr ("Ipaq " + ipaqChem)); 230 p.drawText(15, 50, tr ("Ipaq " + ipaqChem));
214 231
215 QString jacketMsg; 232 QString jacketMsg;
216 if (bat2) { 233 if (bat2) {
217 p.setPen(black); 234 p.setPen(black);
218 p.drawText(10,220, tr("Percentage battery remaining: ") + perc2 + " " + jackStatus); 235 p.drawText(10,220, tr("Percentage battery remaining: ") + perc2 + " " + jackStatus);
219 p.drawText(10,240, tr("Battery time remaining: ") + sec2); 236 p.drawText(10,240, tr("Battery time remaining: ") + sec2);
220 jacketMsg = tr("Jacket " + jackChem); 237 jacketMsg = tr("Jacket " + jackChem);
221 } else { 238 } else {
222 jackPercent = 0; 239 jackPercent = 0;
223 jacketMsg = tr("No jacket with battery inserted"); 240 jacketMsg = tr("No jacket with battery inserted");
224 } 241 }
225 242
226 qDrawShadePanel( &p, 9, 160, 204, 39, colorGroup(), TRUE, 1, NULL); 243 int jackPerc = ( jackPercent / 100 ) * screenWidth - 47;
227 qDrawShadePanel( &p, 212, 167, 12, 24, colorGroup(), TRUE, 1, NULL); 244
228 drawSegment( &p, QRect( 10, 160, jackPercent*2, 40 ), lightc, darkc, lightc.light(115), 6 ); 245 qDrawShadePanel( &p, 9, 160, rightEnd1, 39, colorGroup(), TRUE, 1, NULL);
229 drawSegment( &p, QRect( 11 + jackPercent*2, 160, 200 - jackPercent*2, 40 ), white.light(80), black, white.light(90), 6 ); 246 qDrawShadePanel( &p, rightEnd2, 167, 12, 24, colorGroup(), TRUE, 1, NULL);
230 drawSegment( &p, QRect( 212, 167, 10, 25 ), white.light(80), black, white.light(90), 2 ); 247 drawSegment( &p, QRect( 10, 160, jackPerc, 40 ), lightc, darkc, lightc.light(115), 6 );
248 drawSegment( &p, QRect( 11 + jackPerc, 160, rightEnd1 - jackPerc, 40 ), white.light(80), black, white.light(90), 6 );
249 drawSegment( &p, QRect( rightEnd2, 167, 10, 25 ), white.light(80), black, white.light(90), 2 );
231 p.setPen( black ); 250 p.setPen( black );
232 p.drawText(15, 180, jacketMsg); 251 p.drawText(15, 180, jacketMsg);
233 } 252 }
234 253
235} 254}
236 255
diff --git a/core/applets/batteryapplet/batterystatus.h b/core/applets/batteryapplet/batterystatus.h
index 18c2943..a5ab804 100644
--- a/core/applets/batteryapplet/batterystatus.h
+++ b/core/applets/batteryapplet/batterystatus.h
@@ -39,20 +39,22 @@ protected:
39 bool BatteryStatus::getProcApmStatusIpaq(); 39 bool BatteryStatus::getProcApmStatusIpaq();
40private: 40private:
41 const PowerStatus *ps; 41 const PowerStatus *ps;
42 int percent; 42 int percent;
43 int ipaqPercent; 43 int ipaqPercent;
44 int jackPercent; 44 int jackPercent;
45 int jackMinutes; 45 int jackMinutes;
46 QString perc1; 46 QString perc1;
47 QString sec1; 47 QString sec1;
48 QString perc2; 48 QString perc2;
49 QString sec2; 49 QString sec2;
50 QString ipaqStatus; 50 QString ipaqStatus;
51 QString jackStatus; 51 QString jackStatus;
52 QString ipaqChem; 52 QString ipaqChem;
53 QString jackChem; 53 QString jackChem;
54 bool bat2; 54 bool bat2;
55 int screenWidth;
56 int screenHeight;
55}; 57};
56 58
57#endif 59#endif
58 60