summaryrefslogtreecommitdiff
authorskyhusker <skyhusker>2005-06-14 18:14:38 (UTC)
committer skyhusker <skyhusker>2005-06-14 18:14:38 (UTC)
commitcc964541dce909aa557b7f07d00b63c4578a00ee (patch) (unidiff)
tree2f3497aaad3903111894d662a7395a278b5a8c35
parentce379c1225ee98d58b98a0b9f2c133ac690e75ff (diff)
downloadopie-cc964541dce909aa557b7f07d00b63c4578a00ee.zip
opie-cc964541dce909aa557b7f07d00b63c4578a00ee.tar.gz
opie-cc964541dce909aa557b7f07d00b63c4578a00ee.tar.bz2
Fix bugs #1384 and #1546
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/applets/batteryapplet/battery.cpp2
-rw-r--r--core/applets/batteryapplet/batterystatus.cpp12
2 files changed, 10 insertions, 4 deletions
diff --git a/core/applets/batteryapplet/battery.cpp b/core/applets/batteryapplet/battery.cpp
index e85a9da..fa95b2b 100644
--- a/core/applets/batteryapplet/battery.cpp
+++ b/core/applets/batteryapplet/battery.cpp
@@ -111,48 +111,50 @@ void BatteryMeter::timerEvent( QTimerEvent * ) {
111 batteryView->updatePercent( percent ); 111 batteryView->updatePercent( percent );
112 } 112 }
113 repaint( style != 0 ); 113 repaint( style != 0 );
114 if ( batteryView ) 114 if ( batteryView )
115 batteryView->repaint(); 115 batteryView->repaint();
116 } 116 }
117} 117}
118 118
119void BatteryMeter::chargeTimeout() { 119void BatteryMeter::chargeTimeout() {
120 percent += 20; 120 percent += 20;
121 if ( percent > 100 ) 121 if ( percent > 100 )
122 percent = 0; 122 percent = 0;
123 123
124 repaint(FALSE); 124 repaint(FALSE);
125 if ( batteryView ) 125 if ( batteryView )
126 batteryView->updatePercent( percent ); 126 batteryView->updatePercent( percent );
127} 127}
128 128
129void BatteryMeter::paintEvent( QPaintEvent* ) { 129void BatteryMeter::paintEvent( QPaintEvent* ) {
130 130
131 if ( style == 1 ) { 131 if ( style == 1 ) {
132 QPainter p(this); 132 QPainter p(this);
133 QFont f( "Fixed", AppLnk::smallIconSize()/2 ); 133 QFont f( "Fixed", AppLnk::smallIconSize()/2 );
134 QFontMetrics fm( f ); 134 QFontMetrics fm( f );
135 //Avoid text overlapping
136 p.eraseRect( 0, 0, 20, 20 );
135 p.setFont( f ); 137 p.setFont( f );
136 p.drawText( 0, height()/2, QString::number( percent ) ); 138 p.drawText( 0, height()/2, QString::number( percent ) );
137 p.drawText( width()/4, height(), "%" ); 139 p.drawText( width()/4, height(), "%" );
138 return; 140 return;
139 } 141 }
140 142
141 QPainter p(this); 143 QPainter p(this);
142 QColor color; 144 QColor color;
143 QColor g = gray.light( 160 ); 145 QColor g = gray.light( 160 );
144 switch ( ps->acStatus() ) { 146 switch ( ps->acStatus() ) {
145 case PowerStatus::Offline: 147 case PowerStatus::Offline:
146 color = blue.light( 150 ); 148 color = blue.light( 150 );
147 break; 149 break;
148 case PowerStatus::Online: 150 case PowerStatus::Online:
149 color = green.dark( 130 ).light( 180 ); 151 color = green.dark( 130 ).light( 180 );
150 break; 152 break;
151 default: 153 default:
152 color = red.light( 160 ); 154 color = red.light( 160 );
153 } 155 }
154 156
155 int w = height() / 2; 157 int w = height() / 2;
156 if ( !(w%2) ) 158 if ( !(w%2) )
157 w--; // should have an odd value to get a real middle line 159 w--; // should have an odd value to get a real middle line
158 int h = height() - 4; 160 int h = height() - 4;
diff --git a/core/applets/batteryapplet/batterystatus.cpp b/core/applets/batteryapplet/batterystatus.cpp
index 7f8de2c..34043f4 100644
--- a/core/applets/batteryapplet/batterystatus.cpp
+++ b/core/applets/batteryapplet/batterystatus.cpp
@@ -27,88 +27,90 @@ void BatteryStatus::UpdateBatteryStatus() {
27 jackPercent = 0; 27 jackPercent = 0;
28 28
29 if ( ODevice::inst ( )-> series ( ) == Model_iPAQ ) { 29 if ( ODevice::inst ( )-> series ( ) == Model_iPAQ ) {
30 getProcApmStatusIpaq(); 30 getProcApmStatusIpaq();
31 } 31 }
32 percent = ps->batteryPercentRemaining(); 32 percent = ps->batteryPercentRemaining();
33} 33}
34 34
35/* 35/*
36 * Make use of the advanced apm interface of the ipaq 36 * Make use of the advanced apm interface of the ipaq
37 */ 37 */
38bool BatteryStatus::getProcApmStatusIpaq() { 38bool BatteryStatus::getProcApmStatusIpaq() {
39 39
40 bat2 = false; 40 bat2 = false;
41 41
42 QFile procApmIpaq("/proc/hal/battery"); 42 QFile procApmIpaq("/proc/hal/battery");
43 43
44 if (procApmIpaq.open(IO_ReadOnly) ) { 44 if (procApmIpaq.open(IO_ReadOnly) ) {
45 QStringList list; 45 QStringList list;
46 // since it is /proc we _must_ use QTextStream 46 // since it is /proc we _must_ use QTextStream
47 QTextStream stream ( &procApmIpaq); 47 QTextStream stream ( &procApmIpaq);
48 QString streamIn; 48 QString streamIn;
49 streamIn = stream.read(); 49 streamIn = stream.read();
50 list = QStringList::split("\n", streamIn); 50 list = QStringList::split("\n", streamIn);
51
52 sec2 = sec1 = "";
51 53
52 for(QStringList::Iterator line=list.begin(); line!=list.end(); line++) { 54 for(QStringList::Iterator line=list.begin(); line!=list.end(); line++) {
53 // not nice, need a rewrite later 55 // not nice, need a rewrite later
54 if( (*line).startsWith(" Percentage") ) { 56 if( (*line).startsWith(" Percentage") ) {
55 if (bat2 == true) { 57 if (bat2 == true) {
56 perc2 = (*line).mid(((*line).find('(')) +1,(*line).find(')')-(*line).find('(')-2); 58 perc2 = (*line).mid(((*line).find('(')) +1,(*line).find(')')-(*line).find('(')-2);
57 } else { 59 } else {
58 perc1 = (*line).mid(((*line).find('('))+1,(*line).find(')')-(*line).find('(')-2); 60 perc1 = (*line).mid(((*line).find('('))+1,(*line).find(')')-(*line).find('(')-2);
59 } 61 }
60 } else if( (*line).startsWith(" Life") ) { 62 } else if( (*line).startsWith(" Life") ) {
61 if (bat2 == true) { 63 if (bat2 == true) {
62 sec2 = (*line).mid(((*line).find(':')+2), 5 ); 64 sec2 = (*line).mid(((*line).find(':')+2), 5 );
63 } else { 65 } else {
64 sec1 = (*line).mid(((*line).find(':')+2), 5 ); 66 sec1 = (*line).mid(((*line).find(':')+2), 5 );
65 } 67 }
66 } else if( (*line).startsWith("Battery #1") ) { 68 } else if( (*line).startsWith("Battery #1") ) {
67 bat2 = true; 69 bat2 = true;
68 } else if( (*line).startsWith(" Status") ) { 70 } else if( (*line).startsWith(" Status") ) {
69 if (bat2 == true) { 71 if (bat2 == true) {
70 jackStatus = (*line).mid((*line).find('(')+1, (*line).find(')')-(*line).find('(')-1); 72 jackStatus = (*line).mid((*line).find('(')+1, (*line).find(')')-(*line).find('(')-1);
71 } else { 73 } else {
72 ipaqStatus = (*line).mid((*line).find('(')+1, (*line).find(')')-(*line).find('(')-1); 74 ipaqStatus = (*line).mid((*line).find('(')+1, (*line).find(')')-(*line).find('(')-1);
73 } 75 }
74 } else if( (*line).startsWith(" Chemistry") ) { 76 } else if( (*line).startsWith(" Chemistry") ) {
75 if (bat2 == true) { 77 if (bat2 == true) {
76 jackChem = (*line).mid((*line).find('('), (*line).find(')')-(*line).find('(')+1); 78 jackChem = (*line).mid((*line).find('('), (*line).find(')')-(*line).find('(')+1);
77 } else { 79 } else {
78 ipaqChem = (*line).mid((*line).find('('), (*line).find(')')-(*line).find('(')+1); 80 ipaqChem = (*line).mid((*line).find('('), (*line).find(')')-(*line).find('(')+1);
79 } 81 }
80 } 82 }
81 } 83 }
82 } else { 84 } else {
83 QMessageBox::warning(this, tr("Failure"),tr("could not open file")); 85 QMessageBox::warning(this, tr("Failure"),tr("could not open file"));
84 } 86 }
85 87
86 procApmIpaq.close(); 88 procApmIpaq.close();
87 jackPercent = perc2.toInt(); 89 jackPercent = perc2.toInt();
88 ipaqPercent = perc1.toInt(); 90 ipaqPercent = perc1.toInt();
89 91
90 if (perc2.isEmpty()) { 92 if (perc2.isEmpty() || perc2 == "unknow" ) {
91 perc2 = tr("no data"); 93 perc2 = tr("no data");
92 } else { 94 } else {
93 perc2 += " %"; 95 perc2 += " %";
94 } 96 }
95 97
96 if (sec2 == "0" || sec2 == "" || sec2.isEmpty()) { 98 if (sec2 == "0" || sec2 == "" || sec2.isEmpty()) {
97 sec2 = tr("no data"); 99 sec2 = tr("no data");
98 } else { 100 } else {
99 sec2 += " min"; 101 sec2 += " min";
100 } 102 }
101 103
102 jackStatus.prepend( " ( " ); 104 jackStatus.prepend( " ( " );
103 jackStatus.append( " )" ); 105 jackStatus.append( " )" );
104 return true; 106 return true;
105} 107}
106 108
107 109
108void BatteryStatus::updatePercent( int pc ) { 110void BatteryStatus::updatePercent( int pc ) {
109 percent = pc; 111 percent = pc;
110 repaint(FALSE); 112 repaint(FALSE);
111} 113}
112 114
113void BatteryStatus::drawSegment( QPainter *p, const QRect &r, const QColor &topgrad, const QColor &botgrad, const QColor &highlight, int hightlight_height ) { 115void BatteryStatus::drawSegment( QPainter *p, const QRect &r, const QColor &topgrad, const QColor &botgrad, const QColor &highlight, int hightlight_height ) {
114 int h1, h2, s1, s2, v1, v2, ng = r.height(), hy = ng*30/100, hh = hightlight_height; 116 int h1, h2, s1, s2, v1, v2, ng = r.height(), hy = ng*30/100, hh = hightlight_height;
@@ -169,111 +171,113 @@ QString BatteryStatus::statusText() const {
169 } 171 }
170 else if ( ps->acStatus() == PowerStatus::Online ) 172 else if ( ps->acStatus() == PowerStatus::Online )
171 { 173 {
172 text.append( '\n' ); 174 text.append( '\n' );
173 text.append( tr( "Power on-line" ) ); 175 text.append( tr( "Power on-line" ) );
174 } 176 }
175 else if ( ps->acStatus() == PowerStatus::Offline ) 177 else if ( ps->acStatus() == PowerStatus::Offline )
176 { 178 {
177 text.append( '\n' ); 179 text.append( '\n' );
178 text.append( tr( "External power disconnected" ) ); 180 text.append( tr( "External power disconnected" ) );
179 } 181 }
180 182
181 if ( ps->batteryTimeRemaining() >= 0 ) 183 if ( ps->batteryTimeRemaining() >= 0 )
182 { 184 {
183 text.append( '\n' ); 185 text.append( '\n' );
184 text.append( tr("Remaining Time: %1m %2s" ).arg( ps->batteryTimeRemaining() / 60 ) 186 text.append( tr("Remaining Time: %1m %2s" ).arg( ps->batteryTimeRemaining() / 60 )
185 .arg( ps->batteryTimeRemaining() % 60, 2 ) ); 187 .arg( ps->batteryTimeRemaining() % 60, 2 ) );
186/* text += "\n" + QString().sprintf( tr("Remaining Time") + ": %im %02is", 188/* text += "\n" + QString().sprintf( tr("Remaining Time") + ": %im %02is",
187 ps->batteryTimeRemaining() / 60, ps->batteryTimeRemaining() % 60 );*/ 189 ps->batteryTimeRemaining() / 60, ps->batteryTimeRemaining() % 60 );*/
188 } 190 }
189 return text; 191 return text;
190} 192}
191 193
192QString BatteryStatus::statusTextIpaq() const { 194QString BatteryStatus::statusTextIpaq() const {
193 QString text = tr( "Remaing Power: %1 %2\nRemaining Time: %3" ).arg( perc2 ) 195 QString text = tr( "Remaining Power: %1 \n%2\nRemaining Time: %3" ).arg( perc2 )
194 .arg( jackStatus ) 196 .arg( jackStatus )
195 .arg( sec2 ); 197 .arg( sec2 );
196/* QString text = tr("Remaining Power: ") + perc2 + " " + jackStatus; 198/* QString text = tr("Remaining Power: ") + perc2 + " " + jackStatus;
197 text += "\n" + tr("Remaining Time: ") + sec2;*/ 199 text += "\n" + tr("Remaining Time: ") + sec2;*/
198 return text; 200 return text;
199} 201}
200 202
201void BatteryStatus::paintEvent( QPaintEvent * ev ) { 203void BatteryStatus::paintEvent( QPaintEvent * ev ) {
202 204
203 QPainter p( this ); 205 QPainter p( this );
204 206
205 QString text = statusText(); 207 QString text = statusText();
208 p.eraseRect( p.boundingRect( 10, 50, width() - 20, 40 , AlignVCenter, text ) );
206 p.drawText( 10, 50, width() - 20, 40 , AlignVCenter, text ); 209 p.drawText( 10, 50, width() - 20, 40 , AlignVCenter, text );
207 210
208 QColor c; 211 QColor c;
209 QColor darkc; 212 QColor darkc;
210 QColor lightc; 213 QColor lightc;
211 if ( ps->acStatus() == PowerStatus::Offline ) { 214 if ( ps->acStatus() == PowerStatus::Offline ) {
212 c = blue.light(120); 215 c = blue.light(120);
213 darkc = c.dark(280); 216 darkc = c.dark(280);
214 lightc = c.light(145); 217 lightc = c.light(145);
215 } else if ( ps->acStatus() == PowerStatus::Online ) { 218 } else if ( ps->acStatus() == PowerStatus::Online ) {
216 c = green.dark(130); 219 c = green.dark(130);
217 darkc = c.dark(200); 220 darkc = c.dark(200);
218 lightc = c.light(220); 221 lightc = c.light(220);
219 } else { 222 } else {
220 c = red; 223 c = red;
221 darkc = c.dark(280); 224 darkc = c.dark(280);
222 lightc = c.light(140); 225 lightc = c.light(140);
223 } 226 }
224 if ( percent < 0 ) 227 if ( percent < 0 )
225 return; 228 return;
226 229
227 int rightEnd1 = width() - 47; 230 int rightEnd1 = width() - 47;
228 int rightEnd2 = width() - 35; 231 int rightEnd2 = width() - 35;
229 int percent2 = (percent * rightEnd1) / 100; 232 int percent2 = (percent * rightEnd1) / 100;
230 p.setPen( black ); 233 p.setPen( black );
231 qDrawShadePanel( &p, 9, 10, rightEnd1 , 39, colorGroup(), TRUE, 1, NULL); 234 qDrawShadePanel( &p, 9, 10, rightEnd1 , 39, colorGroup(), TRUE, 1, NULL);
232 qDrawShadePanel( &p, rightEnd2, 17, 12, 24, colorGroup(), TRUE, 1, NULL); 235 qDrawShadePanel( &p, rightEnd2, 17, 12, 24, colorGroup(), TRUE, 1, NULL);
233 drawSegment( &p, QRect( 10, 10, percent2, 40 ), lightc, darkc, lightc.light(115), 6 ); 236 drawSegment( &p, QRect( 10, 10, percent2, 40 ), lightc, darkc, lightc.light(115), 6 );
234 drawSegment( &p, QRect( 11 + percent2, 10, rightEnd1 - percent2, 40 ), white.light(80), black, white.light(90), 6 ); 237 drawSegment( &p, QRect( 11 + percent2, 10, rightEnd1 - percent2, 40 ), white.light(80), black, white.light(90), 6 );
235 drawSegment( &p, QRect( rightEnd2, 17, 10, 25 ), white.light(80), black, white.light(90), 2 ); 238 drawSegment( &p, QRect( rightEnd2, 17, 10, 25 ), white.light(80), black, white.light(90), 2 );
236 p.setPen( black); 239 p.setPen( black);
237 240
238 if ( ODevice::inst ( )-> series ( ) == Model_iPAQ && bat2 ) { 241 if ( ODevice::inst ( )-> series ( ) == Model_iPAQ && bat2 ) {
239 242
240 p.drawText( 15, 30, tr("Ipaq %1").arg( ipaqChem ) ); 243 p.drawText( 15, 30, tr("Ipaq %1").arg( ipaqChem ) );
241 244
242 QString jacketMsg; 245 QString jacketMsg;
243 if (bat2) { 246 if (bat2) {
244 p.setPen(black); 247 p.setPen(black);
245 QString text = statusTextIpaq(); 248 QString text = statusTextIpaq();
246 p.drawText( 10, 150, text ); 249 p.eraseRect( p.boundingRect( 10, 130, width() - 20, 40 , AlignVCenter, text ) );
250 p.drawText( 10, 130, width() - 20, 40 , AlignVCenter, text );
247 jacketMsg = tr("Jacket ").arg( jackChem ); 251 jacketMsg = tr("Jacket ").arg( jackChem );
248 } else { 252 } else {
249 jackPercent = 0; 253 jackPercent = 0;
250 jacketMsg = tr("No jacket with battery inserted"); 254 jacketMsg = tr("No jacket with battery inserted");
251 } 255 }
252 256
253 int jackPerc = ( jackPercent * ( width() - 47 ) ) / 100; 257 int jackPerc = ( jackPercent * ( width() - 47 ) ) / 100;
254 258
255 qDrawShadePanel( &p, 9, 90, rightEnd1, 39, colorGroup(), TRUE, 1, NULL); 259 qDrawShadePanel( &p, 9, 90, rightEnd1, 39, colorGroup(), TRUE, 1, NULL);
256 qDrawShadePanel( &p, rightEnd2, 97, 12, 24, colorGroup(), TRUE, 1, NULL); 260 qDrawShadePanel( &p, rightEnd2, 97, 12, 24, colorGroup(), TRUE, 1, NULL);
257 drawSegment( &p, QRect( 10, 90, jackPerc, 40 ), lightc, darkc, lightc.light(115), 6 ); 261 drawSegment( &p, QRect( 10, 90, jackPerc, 40 ), lightc, darkc, lightc.light(115), 6 );
258 drawSegment( &p, QRect( 11 + jackPerc, 90, rightEnd1 - jackPerc, 40 ), white.light(80), black, white.light(90), 6 ); 262 drawSegment( &p, QRect( 11 + jackPerc, 90, rightEnd1 - jackPerc, 40 ), white.light(80), black, white.light(90), 6 );
259 drawSegment( &p, QRect( rightEnd2, 97, 10, 25 ), white.light(80), black, white.light(90), 2 ); 263 drawSegment( &p, QRect( rightEnd2, 97, 10, 25 ), white.light(80), black, white.light(90), 2 );
260 p.setPen( black ); 264 p.setPen( black );
261 p.drawText(15, 100, width() - 20, 20 , AlignVCenter, jacketMsg); 265 p.drawText(15, 100, width() - 20, 20 , AlignVCenter, jacketMsg);
262 } 266 }
263 QFrame::paintEvent(ev); 267 QFrame::paintEvent(ev);
264} 268}
265 269
266QSize BatteryStatus::sizeHint() const { 270QSize BatteryStatus::sizeHint() const {
267 QString text = statusText(); 271 QString text = statusText();
268 QString text2 = statusTextIpaq(); 272 QString text2 = statusTextIpaq();
269 QFontMetrics fm = fontMetrics(); 273 QFontMetrics fm = fontMetrics();
270 QRect r=fm.boundingRect( 10, 0, width(), height(), AlignVCenter, text ); 274 QRect r=fm.boundingRect( 10, 0, width(), height(), AlignVCenter, text );
271 QRect r2=fm.boundingRect( 10, 0, width(), height(), AlignVCenter, text2 ); 275 QRect r2=fm.boundingRect( 10, 0, width(), height(), AlignVCenter, text2 );
272 276
273 if ( bat2 ) { 277 if ( bat2 ) {
274 return QSize( QMAX( QMIN( 200, qApp->desktop()->width() ), 278 return QSize( QMAX( QMIN( 200, qApp->desktop()->width() ),
275 r.width()+2*10 ), 2 * 10 + 80 + r.height() + r2.height() ); 279 r.width()+2*10 ), 2 * 10 + 100 + r.height() + r2.height() );
276 } 280 }
277 return QSize( QMAX( QMIN( 200, qApp->desktop()->width() ), 281 return QSize( QMAX( QMIN( 200, qApp->desktop()->width() ),
278 r.width()+2*10 ), 2 * 10 + 40 + r.height() ); 282 r.width()+2*10 ), 2 * 10 + 40 + r.height() );
279} 283}