summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--core/applets/batteryapplet/battery.cpp1
-rw-r--r--core/applets/batteryapplet/batterystatus.cpp9
-rw-r--r--core/applets/batteryapplet/batterystatus.h2
3 files changed, 9 insertions, 3 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
@@ -34,96 +34,97 @@
using namespace Opie::Ui;
BatteryMeter::BatteryMeter( QWidget *parent )
: QWidget( parent ), charging(false) {
ps = new PowerStatus;
startTimer( 10000 );
setFixedWidth( QMAX(AppLnk::smallIconSize()*3/4, 6) );
setFixedHeight( AppLnk::smallIconSize() );
chargeTimer = new QTimer( this );
connect( chargeTimer, SIGNAL(timeout()), this, SLOT(chargeTimeout()) );
timerEvent(0);
QPEApplication::setStylusOperation( this, QPEApplication::RightOnHold );
Config c( "qpe" );
c.setGroup( "Battery" );
style = c.readNumEntry( "Style", 0 );
}
BatteryMeter::~BatteryMeter() {
delete ps;
}
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 );
} else if ( charging && ps->batteryStatus() != PowerStatus::Charging ) {
charging = false;
chargeTimer->stop();
if ( batteryView )
batteryView->updatePercent( percent );
}
repaint( style != 0 );
if ( batteryView )
batteryView->repaint();
}
}
void BatteryMeter::chargeTimeout() {
percent += 20;
if ( percent > 100 )
percent = 0;
repaint(FALSE);
if ( batteryView )
batteryView->updatePercent( percent );
}
void BatteryMeter::paintEvent( QPaintEvent* ) {
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,77 +1,82 @@
#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) {
+ UpdateBatteryStatus();
+}
+
+BatteryStatus::~BatteryStatus() {}
+
+void BatteryStatus::UpdateBatteryStatus() {
+
jackPercent = 0;
if ( ODevice::inst ( )-> series ( ) == Model_iPAQ ) {
getProcApmStatusIpaq();
}
percent = ps->batteryPercentRemaining();
}
-BatteryStatus::~BatteryStatus() {}
-
/*
* 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);
}
} else if( (*line).startsWith(" Life") ) {
if (bat2 == true) {
sec2 = (*line).mid(((*line).find(':')+2), 5 );
} else {
sec1 = (*line).mid(((*line).find(':')+2), 5 );
}
} else if( (*line).startsWith("Battery #1") ) {
bat2 = true;
} else if( (*line).startsWith(" Status") ) {
if (bat2 == true) {
jackStatus = (*line).mid((*line).find('(')+1, (*line).find(')')-(*line).find('(')-1);
} else {
ipaqStatus = (*line).mid((*line).find('(')+1, (*line).find(')')-(*line).find('(')-1);
}
} else if( (*line).startsWith(" Chemistry") ) {
if (bat2 == true) {
jackChem = (*line).mid((*line).find('('), (*line).find(')')-(*line).find('(')+1);
} else {
ipaqChem = (*line).mid((*line).find('('), (*line).find(')')-(*line).find('(')+1);
}
}
}
} else {
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
@@ -1,64 +1,64 @@
/**********************************************************************
** Copyright (C) 2000 Trolltech AS. All rights reserved.
**
** This file is part of Qtopia Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** 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;
bool bat2inserted;
int screenWidth;
int screenHeight;
};
#endif