-rw-r--r-- | core/applets/batteryapplet/battery.cpp | 135 | ||||
-rw-r--r-- | core/applets/batteryapplet/battery.h | 14 |
2 files changed, 82 insertions, 67 deletions
diff --git a/core/applets/batteryapplet/battery.cpp b/core/applets/batteryapplet/battery.cpp index f3a95ed..eee3ed3 100644 --- a/core/applets/batteryapplet/battery.cpp +++ b/core/applets/batteryapplet/battery.cpp @@ -22,4 +22,6 @@ -#include <qpe/power.h> #include <qpe/applnk.h> +#include <qpe/config.h> +#include <qpe/power.h> +#include <qpe/qpeapplication.h> @@ -34,3 +36,3 @@ BatteryMeter::BatteryMeter( QWidget *parent ) startTimer( 10000 ); - setFixedHeight( AppLnk::smallIconSize() ); + setFixedHeight( AppLnk::smallIconSize() ); chargeTimer = new QTimer( this ); @@ -38,2 +40,6 @@ BatteryMeter::BatteryMeter( QWidget *parent ) timerEvent(0); + QPEApplication::setStylusOperation( this, QPEApplication::RightOnHold ); + Config c( "qpe" ); + c.setGroup( "Battery" ); + style = c.readNumEntry( "Style", 0 ); } @@ -50,12 +56,24 @@ QSize BatteryMeter::sizeHint() const -void BatteryMeter::mouseReleaseEvent( QMouseEvent *) +void BatteryMeter::mousePressEvent( QMouseEvent* e ) +{ + if ( e->button() == RightButton ) + { + style = 1-style; + Config c( "qpe" ); + c.setGroup( "Battery" ); + c.writeEntry( "Style", style ); + repaint(); + } + QWidget::mousePressEvent( e ); +} + +void BatteryMeter::mouseReleaseEvent( QMouseEvent* e) { if ( batteryView && batteryView->isVisible() ) { - delete (QWidget *) batteryView; + delete (QWidget *) batteryView; } else { - if ( !batteryView ) - batteryView = new BatteryStatus( ps ); - batteryView->showMaximized(); - batteryView->raise(); - batteryView->show(); + if ( !batteryView ) batteryView = new BatteryStatus( ps ); + batteryView->showMaximized(); + batteryView->raise(); + batteryView->show(); } @@ -70,16 +88,16 @@ void BatteryMeter::timerEvent( QTimerEvent * ) if ( prev != *ps ) { - percent = ps->batteryPercentRemaining(); - if ( !charging && ps->batteryStatus() == PowerStatus::Charging && percent < 0 ) { - percent = 0; - charging = true; - chargeTimer->start( 500 ); - } else if ( charging && ps->batteryStatus() != PowerStatus::Charging ) { - charging = false; - chargeTimer->stop(); - if ( batteryView ) - batteryView->updatePercent( percent ); - } - repaint(FALSE); - if ( batteryView ) - batteryView->repaint(); + percent = ps->batteryPercentRemaining(); + if ( !charging && ps->batteryStatus() == PowerStatus::Charging && percent < 0 ) { + percent = 0; + charging = true; + chargeTimer->start( 500 ); + } else if ( charging && ps->batteryStatus() != PowerStatus::Charging ) { + charging = false; + chargeTimer->stop(); + if ( batteryView ) + batteryView->updatePercent( percent ); + } + repaint(FALSE); + if ( batteryView ) + batteryView->repaint(); } @@ -100,22 +118,25 @@ void BatteryMeter::paintEvent( QPaintEvent* ) { - QPainter p(this); + if ( style == 1 ) + { + QPainter p(this); + QFont f( "Fixed", AppLnk::smallIconSize()/2 ); + QFontMetrics fm( f ); + p.setFont( f ); + p.drawText( 0, AppLnk::smallIconSize()/2, QString::number( percent ) ); + p.drawText( AppLnk::smallIconSize()/4, AppLnk::smallIconSize(), "%" ); + return; + } - QColor c; - QColor darkc; - QColor lightc; - if ( ps->acStatus() == PowerStatus::Offline ) { - c = blue.light(120); - darkc = c.dark(120); - lightc = c.light(140); - } else if ( ps->acStatus() == PowerStatus::Online ) { - c = green.dark(130); - darkc = c.dark(120); - lightc = c.light(180); - } else { - c = red; - darkc = c.dark(120); - lightc = c.light(160); + QPainter p(this); + QColor color; + QColor g = gray.light( 160 ); + switch ( ps->acStatus() ) + { + case PowerStatus::Offline: color = blue.light( 150 ); break; + case PowerStatus::Online: color = green.dark( 130 ).light( 180 ); break; + default: color = red.light( 160 ); } - int w = height() / 2 ; + int w = height() / 2; + if ( !(w%2) ) w--; // should have an odd value to get a real middle line int h = height() - 4; @@ -127,5 +148,5 @@ void BatteryMeter::paintEvent( QPaintEvent* ) p.setPen(QColor(80,80,80)); - p.drawLine(x1+w/4,0,x1+w/4+w/2,0); - p.drawRect(x1,1,w,height()-1); - p.setBrush(c); + p.drawLine(x1+w/4,0,x1+w/4+w/2+1,0); // header + p.drawRect(x1,1,w,height()-1); // corpus + p.setBrush(color); @@ -133,20 +154,12 @@ void BatteryMeter::paintEvent( QPaintEvent* ) -#define Y(i) ((i<=extra)?y-1:y) -#define DRAWUPPER(i) if ( Y(i) >= 2 ) p.drawLine(i+x1,2,i+x1,Y(i)); - p.setPen( gray ); - DRAWUPPER(1); - DRAWUPPER(3); - p.setPen( gray.light(130) ); - DRAWUPPER(2); - p.setPen( gray.dark(120) ); - DRAWUPPER(4); - -#define DRAW(i) { if ( Y(i) < y2 ) p.drawLine(i+x1,Y(i)+1, i+x1,y2); } - p.setPen( c ); - DRAW(1); - DRAW(3); - p.setPen( lightc ); - DRAW(2); - p.setPen(darkc); - DRAW(4); + int middle = w/2; + for ( int i = 0; i < middle; i++ ) + { + p.setPen( gray.dark( 100+i*20 ) ); + p.drawLine( x1+middle-i, 2, x1+middle-i, y-1 ); + p.drawLine( x1+middle+i, 2, x1+middle+i, y-1 ); + p.setPen( color.dark( 100+i*20 ) ); + p.drawLine( x1+middle-i, y, x1+middle-i, y2 ); + p.drawLine( x1+middle+i, y, x1+middle+i, y2 ); + } } diff --git a/core/applets/batteryapplet/battery.h b/core/applets/batteryapplet/battery.h index d4807b0..c2d1216 100644 --- a/core/applets/batteryapplet/battery.h +++ b/core/applets/batteryapplet/battery.h @@ -32,3 +32,3 @@ class BatteryMeter : public QWidget Q_OBJECT -public: + public: BatteryMeter( QWidget *parent = 0 ); @@ -38,11 +38,12 @@ public: -protected: - void timerEvent( QTimerEvent * ); + protected: + void timerEvent( QTimerEvent* ); void paintEvent( QPaintEvent* ); - void mouseReleaseEvent( QMouseEvent * ); + void mousePressEvent( QMouseEvent* ); + void mouseReleaseEvent( QMouseEvent* ); -protected slots: + protected slots: void chargeTimeout(); -protected: + protected: QGuardedPtr<BatteryStatus> batteryView; @@ -52,2 +53,3 @@ protected: bool charging; + int style; }; |