-rw-r--r-- | core/applets/batteryapplet/battery.cpp | 2 | ||||
-rw-r--r-- | core/applets/batteryapplet/batterystatus.cpp | 12 |
2 files changed, 10 insertions, 4 deletions
diff --git a/core/applets/batteryapplet/battery.cpp b/core/applets/batteryapplet/battery.cpp index e85a9da..fa95b2b 100644 --- a/core/applets/batteryapplet/battery.cpp +++ b/core/applets/batteryapplet/battery.cpp @@ -123,24 +123,26 @@ void BatteryMeter::chargeTimeout() { repaint(FALSE); if ( batteryView ) batteryView->updatePercent( percent ); } void BatteryMeter::paintEvent( QPaintEvent* ) { if ( style == 1 ) { QPainter p(this); QFont f( "Fixed", AppLnk::smallIconSize()/2 ); QFontMetrics fm( f ); + //Avoid text overlapping + p.eraseRect( 0, 0, 20, 20 ); p.setFont( f ); p.drawText( 0, height()/2, QString::number( percent ) ); p.drawText( width()/4, height(), "%" ); return; } QPainter p(this); QColor color; QColor g = gray.light( 160 ); switch ( ps->acStatus() ) { case PowerStatus::Offline: color = blue.light( 150 ); diff --git a/core/applets/batteryapplet/batterystatus.cpp b/core/applets/batteryapplet/batterystatus.cpp index 7f8de2c..34043f4 100644 --- a/core/applets/batteryapplet/batterystatus.cpp +++ b/core/applets/batteryapplet/batterystatus.cpp @@ -40,24 +40,26 @@ 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); + sec2 = sec1 = ""; + 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 { @@ -78,25 +80,25 @@ bool BatteryStatus::getProcApmStatusIpaq() { ipaqChem = (*line).mid((*line).find('('), (*line).find(')')-(*line).find('(')+1); } } } } else { QMessageBox::warning(this, tr("Failure"),tr("could not open file")); } procApmIpaq.close(); jackPercent = perc2.toInt(); ipaqPercent = perc1.toInt(); - if (perc2.isEmpty()) { + if (perc2.isEmpty() || perc2 == "unknow" ) { perc2 = tr("no data"); } else { perc2 += " %"; } if (sec2 == "0" || sec2 == "" || sec2.isEmpty()) { sec2 = tr("no data"); } else { sec2 += " min"; } jackStatus.prepend( " ( " ); @@ -181,37 +183,38 @@ QString BatteryStatus::statusText() const { if ( ps->batteryTimeRemaining() >= 0 ) { text.append( '\n' ); text.append( tr("Remaining Time: %1m %2s" ).arg( ps->batteryTimeRemaining() / 60 ) .arg( ps->batteryTimeRemaining() % 60, 2 ) ); /* text += "\n" + QString().sprintf( tr("Remaining Time") + ": %im %02is", ps->batteryTimeRemaining() / 60, ps->batteryTimeRemaining() % 60 );*/ } return text; } QString BatteryStatus::statusTextIpaq() const { - QString text = tr( "Remaing Power: %1 %2\nRemaining Time: %3" ).arg( perc2 ) + QString text = tr( "Remaining Power: %1 \n%2\nRemaining Time: %3" ).arg( perc2 ) .arg( jackStatus ) .arg( sec2 ); /* QString text = tr("Remaining Power: ") + perc2 + " " + jackStatus; text += "\n" + tr("Remaining Time: ") + sec2;*/ return text; } void BatteryStatus::paintEvent( QPaintEvent * ev ) { QPainter p( this ); QString text = statusText(); + p.eraseRect( p.boundingRect( 10, 50, width() - 20, 40 , AlignVCenter, text ) ); p.drawText( 10, 50, width() - 20, 40 , AlignVCenter, text ); QColor c; QColor darkc; QColor lightc; if ( ps->acStatus() == PowerStatus::Offline ) { c = blue.light(120); darkc = c.dark(280); lightc = c.light(145); } else if ( ps->acStatus() == PowerStatus::Online ) { c = green.dark(130); darkc = c.dark(200); @@ -234,25 +237,26 @@ void BatteryStatus::paintEvent( QPaintEvent * ev ) { 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 ) { p.drawText( 15, 30, tr("Ipaq %1").arg( ipaqChem ) ); QString jacketMsg; if (bat2) { p.setPen(black); QString text = statusTextIpaq(); - p.drawText( 10, 150, text ); + p.eraseRect( p.boundingRect( 10, 130, width() - 20, 40 , AlignVCenter, text ) ); + p.drawText( 10, 130, width() - 20, 40 , AlignVCenter, text ); jacketMsg = tr("Jacket ").arg( jackChem ); } else { jackPercent = 0; jacketMsg = tr("No jacket with battery inserted"); } int jackPerc = ( jackPercent * ( width() - 47 ) ) / 100; 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 ); @@ -263,17 +267,17 @@ void BatteryStatus::paintEvent( QPaintEvent * ev ) { QFrame::paintEvent(ev); } 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 ), 2 * 10 + 80 + r.height() + r2.height() ); + r.width()+2*10 ), 2 * 10 + 100 + r.height() + r2.height() ); } return QSize( QMAX( QMIN( 200, qApp->desktop()->width() ), r.width()+2*10 ), 2 * 10 + 40 + r.height() ); } |