On Thursday 26 November 2009 18:01:19 Aaron J. Seigo wrote: > On November 26, 2009, Kåre Särs wrote: > > I also thought about extragear/base/plasma/applets/, but that one is > > empty (dead?). > > anything that you wish to package, ship and support can go into extragear > (and yes, we do need to open a plasma module in extragear again). a forked > version won't happen in addons, however. i mean, really, two battery > monitors in the default packages? > > in this particular case, i'm ok with a hidden config option. usually i > really dislike these things, but it's trivial, will get this issue off my > back and will be a nice example later on for why hidden config options do > or don't work.
Here's a patch that re-enables this option, with the hidden config option "showRemainingTime=true". I've commented out the i18n for the label since we're in string freeze. It basically moves around a bit of code I had disabled temporarily when I reworked the layout of the popup and adapts to the better alignment. No tooltip in there, however. Should I commit this one? -- sebas http://www.kde.org | http://vizZzion.org | GPG Key ID: 9119 0EF9
diff --git a/workspace/plasma/generic/applets/battery/battery.cpp b/workspace/plasma/generic/applets/battery/battery.cpp index 232222c..538237b 100644 --- a/workspace/plasma/generic/applets/battery/battery.cpp +++ b/workspace/plasma/generic/applets/battery/battery.cpp @@ -390,6 +390,15 @@ void Battery::initExtenderItem(Plasma::ExtenderItem *item) m_controlsLayout->addItem(m_acInfoLabel, row, 1); row++; + m_remainingTimeLabel = new Plasma::Label(controls); + m_remainingTimeLabel->setAlignment(Qt::AlignRight); + //m_remainingTimeLabel->setText(i18nc("Label for remaining time", "Time Remaining:")); + m_remainingInfoLabel = new Plasma::Label(controls); + m_remainingInfoLabel->nativeWidget()->setWordWrap(false); + m_controlsLayout->addItem(m_remainingTimeLabel, row, 0); + m_controlsLayout->addItem(m_remainingInfoLabel, row, 1); + row++; + Battery *m_extenderApplet = static_cast<Battery*>(Plasma::Applet::load("battery")); int s = 64; if (m_extenderApplet) { @@ -536,58 +545,40 @@ void Battery::updateStatus() if (m_numOfBattery && m_batteryLabelLabel) { QHashIterator<QString, QHash<QString, QVariant > > battery_data(m_batteries_data); int bnum = 0; + QString state; while (battery_data.hasNext()) { bnum++; battery_data.next(); - QString state = battery_data.value()["State"].toString(); - m_remainingMSecs = battery_data.value()["Remaining msec"].toInt(); - //kDebug() << "time left:" << m_remainingMSecs; - /* - if (state == "Discharging" && m_remainingMSecs > 0 && m_showRemainingTime) { - - // FIXME: Somehow, m_extenderApplet is null here, so the label never becomes visible - if (m_extenderApplet) { - m_extenderApplet->showBatteryLabel(true); - } - // we don't have too much accuracy so only give hours and minutes - batteryLabelText.append(i18n("Time remaining: <b>%1</b><br />", KGlobal::locale()->prettyFormatDuration(m_remainingMSecs))); - } else { - */ - //if (m_extenderApplet) { - // m_extenderApplet->showBatteryLabel(false); - //} - if (m_numOfBattery == 0) { - //kDebug() << "zero batteries ..."; - } else if (m_numOfBattery == 1) { - m_batteryLabelLabel->setText(i18n("Battery:")); - if (battery_data.value()["Plugged in"].toBool()) { - if (state == "NoCharge") { - m_batteryInfoLabel->setText(i18n("%1% (charged)", battery_data.value()["Percent"].toString())); - } else if (state == "Discharging") { - m_batteryInfoLabel->setText(i18nc("Shown when a time estimate is not available", "%1% (discharging)\n", battery_data.value()["Percent"].toString())); - } else { - m_batteryInfoLabel->setText(i18n("%1% (charging)", battery_data.value()["Percent"].toString())); - } - } else { - m_batteryInfoLabel->setText(i18nc("Battery is not plugged in", "Not present")); - } - } else { - //kDebug() << "More batteries ..."; - // FIXME: we're overwriting the text - if (bnum > 1) { - batteriesLabel.append("<br />"); - batteriesInfo.append("<br />"); - } - batteriesLabel.append(i18nc("Placeholder is the battery ID", "<b>Battery %1:</b> ", bnum)); + state = battery_data.value()["State"].toString(); + if (m_numOfBattery == 1) { + m_batteryLabelLabel->setText(i18n("Battery:")); + if (battery_data.value()["Plugged in"].toBool()) { if (state == "NoCharge") { - batteriesInfo.append(i18n("%1% (charged)", battery_data.value()["Percent"].toString())); + m_batteryInfoLabel->setText(i18n("%1% (charged)", battery_data.value()["Percent"].toString())); } else if (state == "Discharging") { - batteriesInfo.append(i18n("%2% (discharging)", bnum, battery_data.value()["Percent"].toString())); + m_batteryInfoLabel->setText(i18nc("Shown when a time estimate is not available", "%1% (discharging)", battery_data.value()["Percent"].toString())); } else { - batteriesInfo.append(i18n("%2% (charging)", bnum, battery_data.value()["Percent"].toString())); + m_batteryInfoLabel->setText(i18n("%1% (charging)", battery_data.value()["Percent"].toString())); } + } else { + m_batteryInfoLabel->setText(i18nc("Battery is not plugged in", "Not present")); + } + } else { + //kDebug() << "More batteries ..."; + // FIXME: we're overwriting the text + if (bnum > 1) { + batteriesLabel.append("<br />"); + batteriesInfo.append("<br />"); + } + batteriesLabel.append(i18nc("Placeholder is the battery ID", "<b>Battery %1:</b> ", bnum)); + if (state == "NoCharge") { + batteriesInfo.append(i18n("%1% (charged)", battery_data.value()["Percent"].toString())); + } else if (state == "Discharging") { + batteriesInfo.append(i18n("%2% (discharging)", bnum, battery_data.value()["Percent"].toString())); + } else { + batteriesInfo.append(i18n("%2% (charging)", bnum, battery_data.value()["Percent"].toString())); } - //} + } } m_acLabelLabel->setText(i18n("AC Adapter:")); // ouch ... if (m_acAdapterPlugged) { @@ -595,6 +586,17 @@ void Battery::updateStatus() } else { m_acInfoLabel->setText(i18n("Not plugged in")); } + m_remainingMSecs = battery_data.value()["Remaining msec"].toInt(); + //kDebug() << "time left:" << m_remainingMSecs; + if ((state == "Discharging" || state == "Charging") && m_remainingMSecs > 0 && m_showRemainingTime) { + m_remainingTimeLabel->show(); + m_remainingInfoLabel->show(); + // we don't have too much accuracy so only give hours and minutes + m_remainingInfoLabel->setText(KGlobal::locale()->prettyFormatDuration(m_remainingMSecs)); + } else { + m_remainingTimeLabel->hide(); + m_remainingInfoLabel->hide(); + } } else { m_batteryLabelLabel->setText(i18n("<b>Battery:</b> ")); m_batteryInfoLabel->setText(i18nc("Battery is not plugged in", "Not present")); @@ -856,8 +858,8 @@ void Battery::paintInterface(QPainter *p, const QStyleOptionGraphicsItem *option } QString state = battery_data.value()["State"].toString(); - if (m_showRemainingTime && (state=="Charging" || state=="Discharging" )) { - m_remainingMSecs = battery_data.value()["Remaining msec"].toInt(); + m_remainingMSecs = battery_data.value()["Remaining msec"].toInt(); + if (m_remainingMSecs > 0 && (m_showRemainingTime && (state=="Charging" || state=="Discharging"))) { QTime t = QTime(m_hours, m_minutes); KLocale tmpLocale(*KGlobal::locale()); tmpLocale.setTimeFormat("%k:%M"); diff --git a/workspace/plasma/generic/applets/battery/battery.h b/workspace/plasma/generic/applets/battery/battery.h index 8f44ded..08543ec 100644 --- a/workspace/plasma/generic/applets/battery/battery.h +++ b/workspace/plasma/generic/applets/battery/battery.h @@ -108,6 +108,8 @@ class Battery : public Plasma::PopupApplet Plasma::Label *m_batteryInfoLabel; Plasma::Label *m_acLabelLabel; Plasma::Label *m_acInfoLabel; + Plasma::Label *m_remainingTimeLabel; + Plasma::Label *m_remainingInfoLabel; //QGraphicsGridLayout *m_brightnessLayout; Plasma::Label *m_statusLabel; //Plasma::Label *m_batteryLabel;
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ Plasma-devel mailing list Plasma-devel@kde.org https://mail.kde.org/mailman/listinfo/plasma-devel