Diffstat (limited to 'core/applets/batteryapplet/battery.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | core/applets/batteryapplet/battery.cpp | 72 |
1 files changed, 38 insertions, 34 deletions
diff --git a/core/applets/batteryapplet/battery.cpp b/core/applets/batteryapplet/battery.cpp index 98b61b5..0d3d190 100644 --- a/core/applets/batteryapplet/battery.cpp +++ b/core/applets/batteryapplet/battery.cpp | |||
@@ -34,10 +34,9 @@ | |||
34 | 34 | ||
35 | 35 | ||
36 | using namespace Opie::Ui; | 36 | using namespace Opie::Ui; |
37 | BatteryMeter::BatteryMeter( QWidget *parent ) | 37 | BatteryMeter::BatteryMeter( QWidget *parent ) |
38 | : QWidget( parent ), charging(false) | 38 | : QWidget( parent ), charging(false) { |
39 | { | ||
40 | ps = new PowerStatus; | 39 | ps = new PowerStatus; |
41 | startTimer( 10000 ); | 40 | startTimer( 10000 ); |
42 | 41 | ||
43 | setFixedWidth( QMAX(AppLnk::smallIconSize()*3/4, 6) ); | 42 | setFixedWidth( QMAX(AppLnk::smallIconSize()*3/4, 6) ); |
@@ -51,22 +50,18 @@ BatteryMeter::BatteryMeter( QWidget *parent ) | |||
51 | c.setGroup( "Battery" ); | 50 | c.setGroup( "Battery" ); |
52 | style = c.readNumEntry( "Style", 0 ); | 51 | style = c.readNumEntry( "Style", 0 ); |
53 | } | 52 | } |
54 | 53 | ||
55 | BatteryMeter::~BatteryMeter() | 54 | BatteryMeter::~BatteryMeter() { |
56 | { | ||
57 | delete ps; | 55 | delete ps; |
58 | } | 56 | } |
59 | 57 | ||
60 | QSize BatteryMeter::sizeHint() const | 58 | QSize BatteryMeter::sizeHint() const { |
61 | { | ||
62 | return QSize(QMAX(AppLnk::smallIconSize()*3/4, 6), height() ); | 59 | return QSize(QMAX(AppLnk::smallIconSize()*3/4, 6), height() ); |
63 | } | 60 | } |
64 | 61 | ||
65 | void BatteryMeter::mousePressEvent( QMouseEvent* e ) | 62 | void BatteryMeter::mousePressEvent( QMouseEvent* e ) { |
66 | { | 63 | if ( e->button() == RightButton ) { |
67 | if ( e->button() == RightButton ) | ||
68 | { | ||
69 | style = 1-style; | 64 | style = 1-style; |
70 | Config c( "qpe" ); | 65 | Config c( "qpe" ); |
71 | c.setGroup( "Battery" ); | 66 | c.setGroup( "Battery" ); |
72 | c.writeEntry( "Style", style ); | 67 | c.writeEntry( "Style", style ); |
@@ -74,22 +69,31 @@ void BatteryMeter::mousePressEvent( QMouseEvent* e ) | |||
74 | } | 69 | } |
75 | QWidget::mousePressEvent( e ); | 70 | QWidget::mousePressEvent( e ); |
76 | } | 71 | } |
77 | 72 | ||
78 | void BatteryMeter::mouseReleaseEvent( QMouseEvent* /*e*/ ) | 73 | void BatteryMeter::mouseReleaseEvent( QMouseEvent* /*e*/ ) { |
79 | { | ||
80 | if ( batteryView && batteryView->isVisible() ) { | 74 | if ( batteryView && batteryView->isVisible() ) { |
81 | delete (QWidget *) batteryView; | 75 | batteryView->hide(); |
82 | } else { | 76 | } else { |
83 | if ( !batteryView ) batteryView = new BatteryStatus( ps ); | 77 | if ( !batteryView ) { |
84 | QPEApplication::showWidget( batteryView ); | 78 | batteryView = new BatteryStatus( ps, 0, WStyle_StaysOnTop | WType_Popup ); |
79 | batteryView->setFrameStyle( QFrame::PopupPanel | QFrame::Raised ); | ||
80 | } | ||
81 | |||
82 | QRect r(batteryView->pos(),batteryView->sizeHint()); | ||
83 | QPoint curPos = this->mapToGlobal ( rect().topLeft() ); | ||
84 | |||
85 | int lp = qApp->desktop()->width() - batteryView->sizeHint().width(); | ||
86 | r.moveTopLeft( QPoint(lp, curPos.y()-batteryView->sizeHint().height()-1) ); | ||
87 | batteryView->setGeometry(r); | ||
88 | |||
85 | batteryView->raise(); | 89 | batteryView->raise(); |
86 | batteryView->showMaximized(); | 90 | batteryView->show(); |
87 | } | 91 | } |
88 | } | 92 | } |
89 | 93 | ||
90 | void BatteryMeter::timerEvent( QTimerEvent * ) | 94 | |
91 | { | 95 | void BatteryMeter::timerEvent( QTimerEvent * ) { |
92 | PowerStatus prev = *ps; | 96 | PowerStatus prev = *ps; |
93 | 97 | ||
94 | *ps = PowerStatusManager::readStatus(); | 98 | *ps = PowerStatusManager::readStatus(); |
95 | 99 | ||
@@ -110,10 +114,9 @@ void BatteryMeter::timerEvent( QTimerEvent * ) | |||
110 | batteryView->repaint(); | 114 | batteryView->repaint(); |
111 | } | 115 | } |
112 | } | 116 | } |
113 | 117 | ||
114 | void BatteryMeter::chargeTimeout() | 118 | void BatteryMeter::chargeTimeout() { |
115 | { | ||
116 | percent += 20; | 119 | percent += 20; |
117 | if ( percent > 100 ) | 120 | if ( percent > 100 ) |
118 | percent = 0; | 121 | percent = 0; |
119 | 122 | ||
@@ -121,13 +124,11 @@ void BatteryMeter::chargeTimeout() | |||
121 | if ( batteryView ) | 124 | if ( batteryView ) |
122 | batteryView->updatePercent( percent ); | 125 | batteryView->updatePercent( percent ); |
123 | } | 126 | } |
124 | 127 | ||
125 | void BatteryMeter::paintEvent( QPaintEvent* ) | 128 | void BatteryMeter::paintEvent( QPaintEvent* ) { |
126 | { | ||
127 | 129 | ||
128 | if ( style == 1 ) | 130 | if ( style == 1 ) { |
129 | { | ||
130 | QPainter p(this); | 131 | QPainter p(this); |
131 | QFont f( "Fixed", AppLnk::smallIconSize()/2 ); | 132 | QFont f( "Fixed", AppLnk::smallIconSize()/2 ); |
132 | QFontMetrics fm( f ); | 133 | QFontMetrics fm( f ); |
133 | p.setFont( f ); | 134 | p.setFont( f ); |
@@ -138,17 +139,22 @@ void BatteryMeter::paintEvent( QPaintEvent* ) | |||
138 | 139 | ||
139 | QPainter p(this); | 140 | QPainter p(this); |
140 | QColor color; | 141 | QColor color; |
141 | QColor g = gray.light( 160 ); | 142 | QColor g = gray.light( 160 ); |
142 | switch ( ps->acStatus() ) | 143 | switch ( ps->acStatus() ) { |
143 | { | 144 | case PowerStatus::Offline: |
144 | case PowerStatus::Offline: color = blue.light( 150 ); break; | 145 | color = blue.light( 150 ); |
145 | case PowerStatus::Online: color = green.dark( 130 ).light( 180 ); break; | 146 | break; |
146 | default: color = red.light( 160 ); | 147 | case PowerStatus::Online: |
148 | color = green.dark( 130 ).light( 180 ); | ||
149 | break; | ||
150 | default: | ||
151 | color = red.light( 160 ); | ||
147 | } | 152 | } |
148 | 153 | ||
149 | int w = height() / 2; | 154 | int w = height() / 2; |
150 | if ( !(w%2) ) w--; // should have an odd value to get a real middle line | 155 | if ( !(w%2) ) |
156 | w--; // should have an odd value to get a real middle line | ||
151 | int h = height() - 4; | 157 | int h = height() - 4; |
152 | int pix = (percent * h) / 100; | 158 | int pix = (percent * h) / 100; |
153 | int y2 = height() -2; | 159 | int y2 = height() -2; |
154 | int y = y2 - pix; | 160 | int y = y2 - pix; |
@@ -161,10 +167,9 @@ void BatteryMeter::paintEvent( QPaintEvent* ) | |||
161 | 167 | ||
162 | //int extra = ((percent * h) % 100)/(100/4); | 168 | //int extra = ((percent * h) % 100)/(100/4); |
163 | 169 | ||
164 | int middle = w/2; | 170 | int middle = w/2; |
165 | for ( int i = 0; i < middle; i++ ) | 171 | for ( int i = 0; i < middle; i++ ) { |
166 | { | ||
167 | p.setPen( gray.dark( 100+i*20 ) ); | 172 | p.setPen( gray.dark( 100+i*20 ) ); |
168 | p.drawLine( x1+middle-i, 2, x1+middle-i, y-1 ); | 173 | p.drawLine( x1+middle-i, 2, x1+middle-i, y-1 ); |
169 | p.drawLine( x1+middle+i, 2, x1+middle+i, y-1 ); | 174 | p.drawLine( x1+middle+i, 2, x1+middle+i, y-1 ); |
170 | p.setPen( color.dark( 100+i*20 ) ); | 175 | p.setPen( color.dark( 100+i*20 ) ); |
@@ -172,10 +177,9 @@ void BatteryMeter::paintEvent( QPaintEvent* ) | |||
172 | p.drawLine( x1+middle+i, y, x1+middle+i, y2 ); | 177 | p.drawLine( x1+middle+i, y, x1+middle+i, y2 ); |
173 | } | 178 | } |
174 | } | 179 | } |
175 | 180 | ||
176 | int BatteryMeter::position() | 181 | int BatteryMeter::position() { |
177 | { | ||
178 | return 8; | 182 | return 8; |
179 | } | 183 | } |
180 | 184 | ||
181 | EXPORT_OPIE_APPLET_v1( BatteryMeter ) | 185 | EXPORT_OPIE_APPLET_v1( BatteryMeter ) |