summaryrefslogtreecommitdiff
authorbrad <brad>2004-06-24 09:13:31 (UTC)
committer brad <brad>2004-06-24 09:13:31 (UTC)
commitbc5c0b3549d43f7e04a06049578c5413dbf0c00b (patch) (side-by-side diff)
treeddc7318c4c40812ac562e0691dc99253e0fb9669
parent9c471976e750812f0af3b443964954d4b5a5ed20 (diff)
downloadopie-bc5c0b3549d43f7e04a06049578c5413dbf0c00b.zip
opie-bc5c0b3549d43f7e04a06049578c5413dbf0c00b.tar.gz
opie-bc5c0b3549d43f7e04a06049578c5413dbf0c00b.tar.bz2
Battery status panel was only updating once when it was created, after this
it was being hidden and re-shown without updating the data. Now it is updated every time it is shown.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/applets/batteryapplet/battery.cpp1
-rw-r--r--core/applets/batteryapplet/batterystatus.cpp17
-rw-r--r--core/applets/batteryapplet/batterystatus.h2
3 files changed, 13 insertions, 7 deletions
diff --git a/core/applets/batteryapplet/battery.cpp b/core/applets/batteryapplet/battery.cpp
index 0d3d190..e85a9da 100644
--- a/core/applets/batteryapplet/battery.cpp
+++ b/core/applets/batteryapplet/battery.cpp
@@ -58,48 +58,49 @@ BatteryMeter::~BatteryMeter() {
QSize BatteryMeter::sizeHint() const {
return QSize(QMAX(AppLnk::smallIconSize()*3/4, 6), height() );
}
void BatteryMeter::mousePressEvent( QMouseEvent* e ) {
if ( e->button() == RightButton ) {
style = 1-style;
Config c( "qpe" );
c.setGroup( "Battery" );
c.writeEntry( "Style", style );
repaint( true );
}
QWidget::mousePressEvent( e );
}
void BatteryMeter::mouseReleaseEvent( QMouseEvent* /*e*/ ) {
if ( batteryView && batteryView->isVisible() ) {
batteryView->hide();
} else {
if ( !batteryView ) {
batteryView = new BatteryStatus( ps, 0, WStyle_StaysOnTop | WType_Popup );
batteryView->setFrameStyle( QFrame::PopupPanel | QFrame::Raised );
}
+ batteryView->UpdateBatteryStatus();
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->show();
}
}
void BatteryMeter::timerEvent( QTimerEvent * ) {
PowerStatus prev = *ps;
*ps = PowerStatusManager::readStatus();
if ( prev != *ps ) {
percent = ps->batteryPercentRemaining();
if ( !charging && ps->batteryStatus() == PowerStatus::Charging ) {
percent = 0;
charging = true;
chargeTimer->start( 500 );
diff --git a/core/applets/batteryapplet/batterystatus.cpp b/core/applets/batteryapplet/batterystatus.cpp
index 5a24b94..860db64 100644
--- a/core/applets/batteryapplet/batterystatus.cpp
+++ b/core/applets/batteryapplet/batterystatus.cpp
@@ -1,53 +1,58 @@
#include "batterystatus.h"
/* OPIE */
#include <opie2/odevice.h>
#include <qpe/power.h>
/* QT */
#include <qpushbutton.h>
#include <qdrawutil.h>
#include <qfile.h>
#include <qtextstream.h>
#include <qmessagebox.h>
using namespace Opie::Core;
BatteryStatus::BatteryStatus( const PowerStatus *p, QWidget *parent, WFlags f )
: QFrame( parent, 0, f), ps(p), bat2(false) {
- jackPercent = 0;
-
- if ( ODevice::inst ( )-> series ( ) == Model_iPAQ ) {
- getProcApmStatusIpaq();
- }
- percent = ps->batteryPercentRemaining();
+ UpdateBatteryStatus();
}
BatteryStatus::~BatteryStatus() {}
+void BatteryStatus::UpdateBatteryStatus() {
+
+ jackPercent = 0;
+
+ if ( ODevice::inst ( )-> series ( ) == Model_iPAQ ) {
+ getProcApmStatusIpaq();
+ }
+ percent = ps->batteryPercentRemaining();
+}
+
/*
* Make use of the advanced apm interface of the ipaq
*/
bool BatteryStatus::getProcApmStatusIpaq() {
bat2 = false;
QFile procApmIpaq("/proc/hal/battery");
if (procApmIpaq.open(IO_ReadOnly) ) {
QStringList list;
// since it is /proc we _must_ use QTextStream
QTextStream stream ( &procApmIpaq);
QString streamIn;
streamIn = stream.read();
list = QStringList::split("\n", streamIn);
for(QStringList::Iterator line=list.begin(); line!=list.end(); line++) {
// not nice, need a rewrite later
if( (*line).startsWith(" Percentage") ) {
if (bat2 == true) {
perc2 = (*line).mid(((*line).find('(')) +1,(*line).find(')')-(*line).find('(')-2);
} else {
perc1 = (*line).mid(((*line).find('('))+1,(*line).find(')')-(*line).find('(')-2);
diff --git a/core/applets/batteryapplet/batterystatus.h b/core/applets/batteryapplet/batterystatus.h
index bb95ece..4da446d 100644
--- a/core/applets/batteryapplet/batterystatus.h
+++ b/core/applets/batteryapplet/batterystatus.h
@@ -9,49 +9,49 @@
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#ifndef BATTERY_STATUS_H
#define BATTERY_STATUS_H
#include <qframe.h>
class PowerStatus;
class BatteryStatus : public QFrame
{
Q_OBJECT
public:
BatteryStatus( const PowerStatus *s, QWidget *parent=0, WFlags f = 0 );
~BatteryStatus();
-
+ void BatteryStatus::UpdateBatteryStatus();
void updatePercent( int );
QSize sizeHint() const;
protected:
void drawSegment( QPainter *p, const QRect &r, const QColor &topgrad, const QColor &botgrad, const QColor &highlight, int hightlight_height );
void paintEvent( QPaintEvent *pe );
bool BatteryStatus::getProcApmStatusIpaq();
private:
QString statusText() const;
QString statusTextIpaq() const;
const PowerStatus *ps;
int percent;
int ipaqPercent;
int jackPercent;
int jackMinutes;
QString perc1;
QString sec1;
QString perc2;
QString sec2;
QString ipaqStatus;
QString jackStatus;
QString ipaqChem;
QString jackChem;
bool bat2;