-rw-r--r-- | core/applets/batteryapplet/battery.cpp | 72 | ||||
-rw-r--r-- | core/applets/batteryapplet/battery.h | 3 | ||||
-rw-r--r-- | core/applets/batteryapplet/batterystatus.cpp | 103 | ||||
-rw-r--r-- | core/applets/batteryapplet/batterystatus.h | 12 |
4 files changed, 102 insertions, 88 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 @@ -37,4 +37,3 @@ using namespace Opie::Ui; BatteryMeter::BatteryMeter( QWidget *parent ) - : QWidget( parent ), charging(false) -{ +: QWidget( parent ), charging(false) { ps = new PowerStatus; @@ -54,4 +53,3 @@ BatteryMeter::BatteryMeter( QWidget *parent ) -BatteryMeter::~BatteryMeter() -{ +BatteryMeter::~BatteryMeter() { delete ps; @@ -59,4 +57,3 @@ BatteryMeter::~BatteryMeter() -QSize BatteryMeter::sizeHint() const -{ +QSize BatteryMeter::sizeHint() const { return QSize(QMAX(AppLnk::smallIconSize()*3/4, 6), height() ); @@ -64,6 +61,4 @@ QSize BatteryMeter::sizeHint() const -void BatteryMeter::mousePressEvent( QMouseEvent* e ) -{ - if ( e->button() == RightButton ) - { +void BatteryMeter::mousePressEvent( QMouseEvent* e ) { + if ( e->button() == RightButton ) { style = 1-style; @@ -77,11 +72,20 @@ void BatteryMeter::mousePressEvent( QMouseEvent* e ) -void BatteryMeter::mouseReleaseEvent( QMouseEvent* /*e*/ ) -{ +void BatteryMeter::mouseReleaseEvent( QMouseEvent* /*e*/ ) { if ( batteryView && batteryView->isVisible() ) { - delete (QWidget *) batteryView; + batteryView->hide(); } else { - if ( !batteryView ) batteryView = new BatteryStatus( ps ); - QPEApplication::showWidget( batteryView ); + if ( !batteryView ) { + batteryView = new BatteryStatus( ps, 0, WStyle_StaysOnTop | WType_Popup ); + batteryView->setFrameStyle( QFrame::PopupPanel | QFrame::Raised ); + } + + QRect r(batteryView->pos(),batteryView->sizeHint()); + QPoint curPos = this->mapToGlobal ( rect().topLeft() ); + + int lp = qApp->desktop()->width() - batteryView->sizeHint().width(); + r.moveTopLeft( QPoint(lp, curPos.y()-batteryView->sizeHint().height()-1) ); + batteryView->setGeometry(r); + batteryView->raise(); - batteryView->showMaximized(); + batteryView->show(); } @@ -89,4 +93,4 @@ void BatteryMeter::mouseReleaseEvent( QMouseEvent* /*e*/ ) -void BatteryMeter::timerEvent( QTimerEvent * ) -{ + +void BatteryMeter::timerEvent( QTimerEvent * ) { PowerStatus prev = *ps; @@ -113,4 +117,3 @@ void BatteryMeter::timerEvent( QTimerEvent * ) -void BatteryMeter::chargeTimeout() -{ +void BatteryMeter::chargeTimeout() { percent += 20; @@ -124,7 +127,5 @@ void BatteryMeter::chargeTimeout() -void BatteryMeter::paintEvent( QPaintEvent* ) -{ +void BatteryMeter::paintEvent( QPaintEvent* ) { - if ( style == 1 ) - { + if ( style == 1 ) { QPainter p(this); @@ -141,7 +142,11 @@ void BatteryMeter::paintEvent( QPaintEvent* ) 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 ); + 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 ); } @@ -149,3 +154,4 @@ void BatteryMeter::paintEvent( QPaintEvent* ) int w = height() / 2; - if ( !(w%2) ) w--; // should have an odd value to get a real middle line + if ( !(w%2) ) + w--; // should have an odd value to get a real middle line int h = height() - 4; @@ -164,4 +170,3 @@ void BatteryMeter::paintEvent( QPaintEvent* ) int middle = w/2; - for ( int i = 0; i < middle; i++ ) - { + for ( int i = 0; i < middle; i++ ) { p.setPen( gray.dark( 100+i*20 ) ); @@ -175,4 +180,3 @@ void BatteryMeter::paintEvent( QPaintEvent* ) -int BatteryMeter::position() -{ +int BatteryMeter::position() { return 8; diff --git a/core/applets/batteryapplet/battery.h b/core/applets/batteryapplet/battery.h index 622c083..970c857 100644 --- a/core/applets/batteryapplet/battery.h +++ b/core/applets/batteryapplet/battery.h @@ -39,2 +39,4 @@ class BatteryMeter : public QWidget + + protected: @@ -44,3 +46,2 @@ class BatteryMeter : public QWidget void mouseReleaseEvent( QMouseEvent* ); - protected slots: diff --git a/core/applets/batteryapplet/batterystatus.cpp b/core/applets/batteryapplet/batterystatus.cpp index ab8f36d..655fdc4 100644 --- a/core/applets/batteryapplet/batterystatus.cpp +++ b/core/applets/batteryapplet/batterystatus.cpp @@ -11,3 +11,2 @@ #include <qfile.h> -#include <qlayout.h> #include <qtextstream.h> @@ -17,9 +16,4 @@ using namespace Opie::Core; -BatteryStatus::BatteryStatus( const PowerStatus *p, QWidget *parent ) - : QWidget( parent, 0, WDestructiveClose), ps(p), bat2(false) { - setCaption( tr("Battery status") ); - setMinimumSize( 150, 200 ); - - QPushButton *pb = new QPushButton( tr("Close"), this ); - QVBoxLayout *layout = new QVBoxLayout ( this ); +BatteryStatus::BatteryStatus( const PowerStatus *p, QWidget *parent, WFlags f ) +: QFrame( parent, 0, f), ps(p), bat2(false) { @@ -27,9 +21,2 @@ BatteryStatus::BatteryStatus( const PowerStatus *p, QWidget *parent ) - pb->setMaximumSize( 120, 40 ); - - pb->show(); - - layout->addStretch(); - layout->addWidget( pb ); - if ( ODevice::inst ( )-> series ( ) == Model_iPAQ ) { @@ -37,10 +24,6 @@ BatteryStatus::BatteryStatus( const PowerStatus *p, QWidget *parent ) } - connect( pb, SIGNAL( clicked() ), this, SLOT( close() ) ); percent = ps->batteryPercentRemaining(); - show(); } -BatteryStatus::~BatteryStatus() -{ -} +BatteryStatus::~BatteryStatus() {} @@ -98,3 +81,2 @@ bool BatteryStatus::getProcApmStatusIpaq() { procApmIpaq.close(); - jackPercent = perc2.toInt(); @@ -108,3 +90,2 @@ bool BatteryStatus::getProcApmStatusIpaq() { - if (sec2 == "0" || sec2 == "" || sec2.isEmpty()) { @@ -116,3 +97,2 @@ bool BatteryStatus::getProcApmStatusIpaq() { jackStatus == (" ( " + jackStatus + " )"); - return true; @@ -146,6 +126,5 @@ void BatteryStatus::drawSegment( QPainter *p, const QRect &r, const QColor &topg -void BatteryStatus::paintEvent( QPaintEvent * ) { - - QPainter p(this); +QString BatteryStatus::statusText() const { QString text; + if ( ps->batteryStatus() == PowerStatus::Charging ) { @@ -177,16 +156,30 @@ void BatteryStatus::paintEvent( QPaintEvent * ) { } - p.drawText( 10, 90, text ); if ( ps->acStatus() == PowerStatus::Backup ) - p.drawText( 10, 110, tr("On backup power") ); + text += "\n" + tr("On backup power"); else if ( ps->acStatus() == PowerStatus::Online ) - p.drawText( 10, 110, tr("Power on-line") ); + text += "\n" + tr("Power on-line"); else if ( ps->acStatus() == PowerStatus::Offline ) - p.drawText( 10, 110, tr("External power disconnected") ); + text += "\n" + tr("External power disconnected"); if ( ps->batteryTimeRemaining() >= 0 ) { - text.sprintf( tr("Battery time remaining") + ": %im %02is", + text += "\n" + QString().sprintf( tr("Battery time remaining") + ": %im %02is", ps->batteryTimeRemaining() / 60, ps->batteryTimeRemaining() % 60 ); - p.drawText( 10, 130, text ); } + return text; +} + +QString BatteryStatus::statusTextIpaq() const { + QString text; + text += tr("Percentage battery remaining: ") + perc2 + " " + jackStatus; + text += "\n" + tr("Battery time remaining: ") + sec2; + return text; +} + +void BatteryStatus::paintEvent( QPaintEvent * ) { + + QPainter p( this ); + + QString text = statusText(); + p.drawText( 10, 50, width() - 20, 40 , AlignVCenter, text ); @@ -215,13 +208,12 @@ void BatteryStatus::paintEvent( QPaintEvent * ) { p.setPen( black ); - qDrawShadePanel( &p, 9, 30, rightEnd1 , 39, colorGroup(), TRUE, 1, NULL); - qDrawShadePanel( &p, rightEnd2, 37, 12, 24, colorGroup(), TRUE, 1, NULL); - drawSegment( &p, QRect( 10, 30, percent2, 40 ), lightc, darkc, lightc.light(115), 6 ); - drawSegment( &p, QRect( 11 + percent2, 30, rightEnd1 - percent2, 40 ), white.light(80), black, white.light(90), 6 ); - drawSegment( &p, QRect( rightEnd2, 37, 10, 25 ), white.light(80), black, white.light(90), 2 ); + qDrawShadePanel( &p, 9, 10, rightEnd1 , 39, colorGroup(), TRUE, 1, NULL); + qDrawShadePanel( &p, rightEnd2, 17, 12, 24, colorGroup(), TRUE, 1, NULL); + drawSegment( &p, QRect( 10, 10, percent2, 40 ), lightc, darkc, lightc.light(115), 6 ); + drawSegment( &p, QRect( 11 + percent2, 10, rightEnd1 - percent2, 40 ), white.light(80), black, white.light(90), 6 ); + drawSegment( &p, QRect( rightEnd2, 17, 10, 25 ), white.light(80), black, white.light(90), 2 ); p.setPen( black); + if ( ODevice::inst ( )-> series ( ) == Model_iPAQ && bat2 ) { - if ( ODevice::inst ( )-> series ( ) == Model_iPAQ ) { - - p.drawText(15, 50, tr ("Ipaq ") + ipaqChem); + p.drawText( 15, 30, tr ("Ipaq ") + ipaqChem ); @@ -230,4 +222,4 @@ void BatteryStatus::paintEvent( QPaintEvent * ) { p.setPen(black); - p.drawText(10,220, tr("Percentage battery remaining: ") + perc2 + " " + jackStatus); - p.drawText(10,240, tr("Battery time remaining: ") + sec2); + QString text = statusTextIpaq(); + p.drawText( 10, 150, text ); jacketMsg = tr("Jacket ") + jackChem; @@ -240,12 +232,25 @@ void BatteryStatus::paintEvent( QPaintEvent * ) { - qDrawShadePanel( &p, 9, 160, rightEnd1, 39, colorGroup(), TRUE, 1, NULL); - qDrawShadePanel( &p, rightEnd2, 167, 12, 24, colorGroup(), TRUE, 1, NULL); - drawSegment( &p, QRect( 10, 160, jackPerc, 40 ), lightc, darkc, lightc.light(115), 6 ); - drawSegment( &p, QRect( 11 + jackPerc, 160, rightEnd1 - jackPerc, 40 ), white.light(80), black, white.light(90), 6 ); - drawSegment( &p, QRect( rightEnd2, 167, 10, 25 ), white.light(80), black, white.light(90), 2 ); + qDrawShadePanel( &p, 9, 90, rightEnd1, 39, colorGroup(), TRUE, 1, NULL); + qDrawShadePanel( &p, rightEnd2, 97, 12, 24, colorGroup(), TRUE, 1, NULL); + drawSegment( &p, QRect( 10, 90, jackPerc, 40 ), lightc, darkc, lightc.light(115), 6 ); + drawSegment( &p, QRect( 11 + jackPerc, 90, rightEnd1 - jackPerc, 40 ), white.light(80), black, white.light(90), 6 ); + drawSegment( &p, QRect( rightEnd2, 97, 10, 25 ), white.light(80), black, white.light(90), 2 ); p.setPen( black ); - p.drawText(15, 180, jacketMsg); + p.drawText(15, 100, width() - 20, 20 , AlignVCenter, jacketMsg); } - } +QSize BatteryStatus::sizeHint() const { + QString text = statusText(); + QString text2 = statusTextIpaq(); + QFontMetrics fm = fontMetrics(); + QRect r=fm.boundingRect( 10, 0, width(), height(), AlignVCenter, text ); + QRect r2=fm.boundingRect( 10, 0, width(), height(), AlignVCenter, text2 ); + + if ( bat2 ) { + return QSize( QMAX( QMIN( 200, qApp->desktop()->width() ), + r.width() ), 2 * 10 + 80 + r.height() + r2.height() ); + } + return QSize( QMAX( QMIN( 200, qApp->desktop()->width() ), + r.width() ), 2 * 10 + 40 + r.height() ); +} diff --git a/core/applets/batteryapplet/batterystatus.h b/core/applets/batteryapplet/batterystatus.h index a5ab804..bb95ece 100644 --- a/core/applets/batteryapplet/batterystatus.h +++ b/core/applets/batteryapplet/batterystatus.h @@ -22,3 +22,3 @@ -#include <qwidget.h> +#include <qframe.h> @@ -26,3 +26,3 @@ class PowerStatus; -class BatteryStatus : public QWidget +class BatteryStatus : public QFrame { @@ -30,3 +30,3 @@ class BatteryStatus : public QWidget public: - BatteryStatus( const PowerStatus *s, QWidget *parent=0 ); + BatteryStatus( const PowerStatus *s, QWidget *parent=0, WFlags f = 0 ); ~BatteryStatus(); @@ -34,3 +34,3 @@ public: void updatePercent( int ); - + QSize sizeHint() const; protected: @@ -39,3 +39,6 @@ protected: bool BatteryStatus::getProcApmStatusIpaq(); + private: + QString statusText() const; + QString statusTextIpaq() const; const PowerStatus *ps; @@ -54,2 +57,3 @@ private: bool bat2; + bool bat2inserted; int screenWidth; |