summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/applets/batteryapplet/batterystatus.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/core/applets/batteryapplet/batterystatus.cpp b/core/applets/batteryapplet/batterystatus.cpp
index 34043f4..08ddc85 100644
--- a/core/applets/batteryapplet/batterystatus.cpp
+++ b/core/applets/batteryapplet/batterystatus.cpp
@@ -1,222 +1,223 @@
1 1
2#include "batterystatus.h" 2#include "batterystatus.h"
3 3
4/* OPIE */ 4/* OPIE */
5#include <opie2/odevice.h> 5#include <opie2/odevice.h>
6#include <qpe/power.h> 6#include <qpe/power.h>
7 7
8/* QT */ 8/* QT */
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 <qtextstream.h> 12#include <qtextstream.h>
13#include <qmessagebox.h> 13#include <qmessagebox.h>
14 14
15using namespace Opie::Core; 15using namespace Opie::Core;
16 16
17BatteryStatus::BatteryStatus( const PowerStatus *p, QWidget *parent, WFlags f ) 17BatteryStatus::BatteryStatus( const PowerStatus *p, QWidget *parent, WFlags f )
18: QFrame( parent, 0, f), ps(p), bat2(false) { 18: QFrame( parent, 0, f), ps(p), bat2(false) {
19 19
20 UpdateBatteryStatus(); 20 UpdateBatteryStatus();
21} 21}
22 22
23BatteryStatus::~BatteryStatus() {} 23BatteryStatus::~BatteryStatus() {}
24 24
25void BatteryStatus::UpdateBatteryStatus() { 25void BatteryStatus::UpdateBatteryStatus() {
26 26
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 if ( ODevice::inst ( ) -> model() != Model_iPAQ_H191x )
31 getProcApmStatusIpaq();
31 } 32 }
32 percent = ps->batteryPercentRemaining(); 33 percent = ps->batteryPercentRemaining();
33} 34}
34 35
35/* 36/*
36 * Make use of the advanced apm interface of the ipaq 37 * Make use of the advanced apm interface of the ipaq
37 */ 38 */
38bool BatteryStatus::getProcApmStatusIpaq() { 39bool BatteryStatus::getProcApmStatusIpaq() {
39 40
40 bat2 = false; 41 bat2 = false;
41 42
42 QFile procApmIpaq("/proc/hal/battery"); 43 QFile procApmIpaq("/proc/hal/battery");
43 44
44 if (procApmIpaq.open(IO_ReadOnly) ) { 45 if (procApmIpaq.open(IO_ReadOnly) ) {
45 QStringList list; 46 QStringList list;
46 // since it is /proc we _must_ use QTextStream 47 // since it is /proc we _must_ use QTextStream
47 QTextStream stream ( &procApmIpaq); 48 QTextStream stream ( &procApmIpaq);
48 QString streamIn; 49 QString streamIn;
49 streamIn = stream.read(); 50 streamIn = stream.read();
50 list = QStringList::split("\n", streamIn); 51 list = QStringList::split("\n", streamIn);
51 52
52 sec2 = sec1 = ""; 53 sec2 = sec1 = "";
53 54
54 for(QStringList::Iterator line=list.begin(); line!=list.end(); line++) { 55 for(QStringList::Iterator line=list.begin(); line!=list.end(); line++) {
55 // not nice, need a rewrite later 56 // not nice, need a rewrite later
56 if( (*line).startsWith(" Percentage") ) { 57 if( (*line).startsWith(" Percentage") ) {
57 if (bat2 == true) { 58 if (bat2 == true) {
58 perc2 = (*line).mid(((*line).find('(')) +1,(*line).find(')')-(*line).find('(')-2); 59 perc2 = (*line).mid(((*line).find('(')) +1,(*line).find(')')-(*line).find('(')-2);
59 } else { 60 } else {
60 perc1 = (*line).mid(((*line).find('('))+1,(*line).find(')')-(*line).find('(')-2); 61 perc1 = (*line).mid(((*line).find('('))+1,(*line).find(')')-(*line).find('(')-2);
61 } 62 }
62 } else if( (*line).startsWith(" Life") ) { 63 } else if( (*line).startsWith(" Life") ) {
63 if (bat2 == true) { 64 if (bat2 == true) {
64 sec2 = (*line).mid(((*line).find(':')+2), 5 ); 65 sec2 = (*line).mid(((*line).find(':')+2), 5 );
65 } else { 66 } else {
66 sec1 = (*line).mid(((*line).find(':')+2), 5 ); 67 sec1 = (*line).mid(((*line).find(':')+2), 5 );
67 } 68 }
68 } else if( (*line).startsWith("Battery #1") ) { 69 } else if( (*line).startsWith("Battery #1") ) {
69 bat2 = true; 70 bat2 = true;
70 } else if( (*line).startsWith(" Status") ) { 71 } else if( (*line).startsWith(" Status") ) {
71 if (bat2 == true) { 72 if (bat2 == true) {
72 jackStatus = (*line).mid((*line).find('(')+1, (*line).find(')')-(*line).find('(')-1); 73 jackStatus = (*line).mid((*line).find('(')+1, (*line).find(')')-(*line).find('(')-1);
73 } else { 74 } else {
74 ipaqStatus = (*line).mid((*line).find('(')+1, (*line).find(')')-(*line).find('(')-1); 75 ipaqStatus = (*line).mid((*line).find('(')+1, (*line).find(')')-(*line).find('(')-1);
75 } 76 }
76 } else if( (*line).startsWith(" Chemistry") ) { 77 } else if( (*line).startsWith(" Chemistry") ) {
77 if (bat2 == true) { 78 if (bat2 == true) {
78 jackChem = (*line).mid((*line).find('('), (*line).find(')')-(*line).find('(')+1); 79 jackChem = (*line).mid((*line).find('('), (*line).find(')')-(*line).find('(')+1);
79 } else { 80 } else {
80 ipaqChem = (*line).mid((*line).find('('), (*line).find(')')-(*line).find('(')+1); 81 ipaqChem = (*line).mid((*line).find('('), (*line).find(')')-(*line).find('(')+1);
81 } 82 }
82 } 83 }
83 } 84 }
84 } else { 85 } else {
85 QMessageBox::warning(this, tr("Failure"),tr("could not open file")); 86 QMessageBox::warning(this, tr("Failure"),tr("could not open file"));
86 } 87 }
87 88
88 procApmIpaq.close(); 89 procApmIpaq.close();
89 jackPercent = perc2.toInt(); 90 jackPercent = perc2.toInt();
90 ipaqPercent = perc1.toInt(); 91 ipaqPercent = perc1.toInt();
91 92
92 if (perc2.isEmpty() || perc2 == "unknow" ) { 93 if (perc2.isEmpty() || perc2 == "unknow" ) {
93 perc2 = tr("no data"); 94 perc2 = tr("no data");
94 } else { 95 } else {
95 perc2 += " %"; 96 perc2 += " %";
96 } 97 }
97 98
98 if (sec2 == "0" || sec2 == "" || sec2.isEmpty()) { 99 if (sec2 == "0" || sec2 == "" || sec2.isEmpty()) {
99 sec2 = tr("no data"); 100 sec2 = tr("no data");
100 } else { 101 } else {
101 sec2 += " min"; 102 sec2 += " min";
102 } 103 }
103 104
104 jackStatus.prepend( " ( " ); 105 jackStatus.prepend( " ( " );
105 jackStatus.append( " )" ); 106 jackStatus.append( " )" );
106 return true; 107 return true;
107} 108}
108 109
109 110
110void BatteryStatus::updatePercent( int pc ) { 111void BatteryStatus::updatePercent( int pc ) {
111 percent = pc; 112 percent = pc;
112 repaint(FALSE); 113 repaint(FALSE);
113} 114}
114 115
115void BatteryStatus::drawSegment( QPainter *p, const QRect &r, const QColor &topgrad, const QColor &botgrad, const QColor &highlight, int hightlight_height ) { 116void BatteryStatus::drawSegment( QPainter *p, const QRect &r, const QColor &topgrad, const QColor &botgrad, const QColor &highlight, int hightlight_height ) {
116 int h1, h2, s1, s2, v1, v2, ng = r.height(), hy = ng*30/100, hh = hightlight_height; 117 int h1, h2, s1, s2, v1, v2, ng = r.height(), hy = ng*30/100, hh = hightlight_height;
117 topgrad.hsv( &h1, &s1, &v1 ); 118 topgrad.hsv( &h1, &s1, &v1 );
118 botgrad.hsv( &h2, &s2, &v2 ); 119 botgrad.hsv( &h2, &s2, &v2 );
119 for ( int j = 0; j < hy-2; j++ ) { 120 for ( int j = 0; j < hy-2; j++ ) {
120 p->setPen( QColor( h1 + ((h2-h1)*j)/(ng-1), s1 + ((s2-s1)*j)/(ng-1), 121 p->setPen( QColor( h1 + ((h2-h1)*j)/(ng-1), s1 + ((s2-s1)*j)/(ng-1),
121 v1 + ((v2-v1)*j)/(ng-1), QColor::Hsv ) ); 122 v1 + ((v2-v1)*j)/(ng-1), QColor::Hsv ) );
122 p->drawLine( r.x(), r.top()+hy-2-j, r.x()+r.width(), r.top()+hy-2-j ); 123 p->drawLine( r.x(), r.top()+hy-2-j, r.x()+r.width(), r.top()+hy-2-j );
123 } 124 }
124 for ( int j = 0; j < hh; j++ ) { 125 for ( int j = 0; j < hh; j++ ) {
125 p->setPen( highlight ); 126 p->setPen( highlight );
126 p->drawLine( r.x(), r.top()+hy-2+j, r.x()+r.width(), r.top()+hy-2+j ); 127 p->drawLine( r.x(), r.top()+hy-2+j, r.x()+r.width(), r.top()+hy-2+j );
127 } 128 }
128 for ( int j = 0; j < ng-hy-hh; j++ ) { 129 for ( int j = 0; j < ng-hy-hh; j++ ) {
129 p->setPen( QColor( h1 + ((h2-h1)*j)/(ng-1), s1 + ((s2-s1)*j)/(ng-1), 130 p->setPen( QColor( h1 + ((h2-h1)*j)/(ng-1), s1 + ((s2-s1)*j)/(ng-1),
130 v1 + ((v2-v1)*j)/(ng-1), QColor::Hsv ) ); 131 v1 + ((v2-v1)*j)/(ng-1), QColor::Hsv ) );
131 p->drawLine( r.x(), r.top()+hy+hh-2+j, r.x()+r.width(), r.top()+hy+hh-2+j ); 132 p->drawLine( r.x(), r.top()+hy+hh-2+j, r.x()+r.width(), r.top()+hy+hh-2+j );
132 } 133 }
133} 134}
134 135
135QString BatteryStatus::statusText() const { 136QString BatteryStatus::statusText() const {
136 QString text; 137 QString text;
137 138
138 if ( ps->batteryStatus() == PowerStatus::Charging ) { 139 if ( ps->batteryStatus() == PowerStatus::Charging ) {
139 if (bat2) { 140 if (bat2) {
140 text = tr("Charging both devices"); 141 text = tr("Charging both devices");
141 } else { 142 } else {
142 text = tr("Charging"); 143 text = tr("Charging");
143 } 144 }
144 } else if ( ps->batteryPercentAccurate() ) { 145 } else if ( ps->batteryPercentAccurate() ) {
145 text = tr( "Remaining Power: %1%" ).arg( percent ); 146 text = tr( "Remaining Power: %1%" ).arg( percent );
146 //text.sprintf( tr("Remaining Power") + ": %i%%", percent ); 147 //text.sprintf( tr("Remaining Power") + ": %i%%", percent );
147 } else { 148 } else {
148 text = tr( "Battery status: " ); 149 text = tr( "Battery status: " );
149 switch ( ps->batteryStatus() ) { 150 switch ( ps->batteryStatus() ) {
150 case PowerStatus::High: 151 case PowerStatus::High:
151 text.append( tr( "Good" ) ); 152 text.append( tr( "Good" ) );
152 break; 153 break;
153 case PowerStatus::Low: 154 case PowerStatus::Low:
154 text.append( tr( "Low" ) ); 155 text.append( tr( "Low" ) );
155 break; 156 break;
156 case PowerStatus::VeryLow: 157 case PowerStatus::VeryLow:
157 text.append( tr( "Very Low" ) ); 158 text.append( tr( "Very Low" ) );
158 break; 159 break;
159 case PowerStatus::Critical: 160 case PowerStatus::Critical:
160 text.append( tr( "Critical" ) ); 161 text.append( tr( "Critical" ) );
161 break; 162 break;
162 default: // NotPresent, etc. 163 default: // NotPresent, etc.
163 text.append( tr( "Unknown" ) ); 164 text.append( tr( "Unknown" ) );
164 } 165 }
165 } 166 }
166 167
167 if ( ps->acStatus() == PowerStatus::Backup ) 168 if ( ps->acStatus() == PowerStatus::Backup )
168 { 169 {
169 text.append( '\n' ); 170 text.append( '\n' );
170 text.append( tr( "On backup power" ) ); 171 text.append( tr( "On backup power" ) );
171 } 172 }
172 else if ( ps->acStatus() == PowerStatus::Online ) 173 else if ( ps->acStatus() == PowerStatus::Online )
173 { 174 {
174 text.append( '\n' ); 175 text.append( '\n' );
175 text.append( tr( "Power on-line" ) ); 176 text.append( tr( "Power on-line" ) );
176 } 177 }
177 else if ( ps->acStatus() == PowerStatus::Offline ) 178 else if ( ps->acStatus() == PowerStatus::Offline )
178 { 179 {
179 text.append( '\n' ); 180 text.append( '\n' );
180 text.append( tr( "External power disconnected" ) ); 181 text.append( tr( "External power disconnected" ) );
181 } 182 }
182 183
183 if ( ps->batteryTimeRemaining() >= 0 ) 184 if ( ps->batteryTimeRemaining() >= 0 )
184 { 185 {
185 text.append( '\n' ); 186 text.append( '\n' );
186 text.append( tr("Remaining Time: %1m %2s" ).arg( ps->batteryTimeRemaining() / 60 ) 187 text.append( tr("Remaining Time: %1m %2s" ).arg( ps->batteryTimeRemaining() / 60 )
187 .arg( ps->batteryTimeRemaining() % 60, 2 ) ); 188 .arg( ps->batteryTimeRemaining() % 60, 2 ) );
188/* text += "\n" + QString().sprintf( tr("Remaining Time") + ": %im %02is", 189/* text += "\n" + QString().sprintf( tr("Remaining Time") + ": %im %02is",
189 ps->batteryTimeRemaining() / 60, ps->batteryTimeRemaining() % 60 );*/ 190 ps->batteryTimeRemaining() / 60, ps->batteryTimeRemaining() % 60 );*/
190 } 191 }
191 return text; 192 return text;
192} 193}
193 194
194QString BatteryStatus::statusTextIpaq() const { 195QString BatteryStatus::statusTextIpaq() const {
195 QString text = tr( "Remaining Power: %1 \n%2\nRemaining Time: %3" ).arg( perc2 ) 196 QString text = tr( "Remaining Power: %1 \n%2\nRemaining Time: %3" ).arg( perc2 )
196 .arg( jackStatus ) 197 .arg( jackStatus )
197 .arg( sec2 ); 198 .arg( sec2 );
198/* QString text = tr("Remaining Power: ") + perc2 + " " + jackStatus; 199/* QString text = tr("Remaining Power: ") + perc2 + " " + jackStatus;
199 text += "\n" + tr("Remaining Time: ") + sec2;*/ 200 text += "\n" + tr("Remaining Time: ") + sec2;*/
200 return text; 201 return text;
201} 202}
202 203
203void BatteryStatus::paintEvent( QPaintEvent * ev ) { 204void BatteryStatus::paintEvent( QPaintEvent * ev ) {
204 205
205 QPainter p( this ); 206 QPainter p( this );
206 207
207 QString text = statusText(); 208 QString text = statusText();
208 p.eraseRect( p.boundingRect( 10, 50, width() - 20, 40 , AlignVCenter, text ) ); 209 p.eraseRect( p.boundingRect( 10, 50, width() - 20, 40 , AlignVCenter, text ) );
209 p.drawText( 10, 50, width() - 20, 40 , AlignVCenter, text ); 210 p.drawText( 10, 50, width() - 20, 40 , AlignVCenter, text );
210 211
211 QColor c; 212 QColor c;
212 QColor darkc; 213 QColor darkc;
213 QColor lightc; 214 QColor lightc;
214 if ( ps->acStatus() == PowerStatus::Offline ) { 215 if ( ps->acStatus() == PowerStatus::Offline ) {
215 c = blue.light(120); 216 c = blue.light(120);
216 darkc = c.dark(280); 217 darkc = c.dark(280);
217 lightc = c.light(145); 218 lightc = c.light(145);
218 } else if ( ps->acStatus() == PowerStatus::Online ) { 219 } else if ( ps->acStatus() == PowerStatus::Online ) {
219 c = green.dark(130); 220 c = green.dark(130);
220 darkc = c.dark(200); 221 darkc = c.dark(200);
221 lightc = c.light(220); 222 lightc = c.light(220);
222 } else { 223 } else {