update ts add add refresh tips data

This commit is contained in:
justforlxz 2019-05-13 11:38:51 +08:00
parent 0a71b340ac
commit 6725976464
No known key found for this signature in database
GPG Key ID: 593AFD577C1B1A60
3 changed files with 109 additions and 132 deletions

View File

@ -31,6 +31,7 @@ PowerPlugin::PowerPlugin(QObject *parent)
m_pluginLoaded(false),
m_tipsLabel(new TipsWidget),
m_tipsRefreshTimer(new QTimer(this)),
m_uPowerInter(new QDBusInterface("org.freedesktop.UPower",
"/org/freedesktop/UPower",
"org.freedesktop.UPower",
@ -40,6 +41,9 @@ PowerPlugin::PowerPlugin(QObject *parent)
m_tipsLabel->setVisible(false);
m_tipsLabel->setObjectName("power");
m_tipsRefreshTimer->setInterval(10 * 1000);
m_tipsRefreshTimer->setSingleShot(true);
if (!m_uPowerInter->isValid()) {
qDebug() << "DBusConnection to org.freedesktop.UPower is invalid";
return;
@ -60,7 +64,7 @@ PowerPlugin::PowerPlugin(QObject *parent)
if (batteryPath.path().isEmpty())
return;
m_uBatteryDeviceInter = new QDBusInterface(
"org.freedesktop.UPower",
batteryPath.path(),
@ -70,6 +74,8 @@ PowerPlugin::PowerPlugin(QObject *parent)
if(!m_uBatteryDeviceInter->isValid()) {
qDebug() << QString("DBusConnection to %1 is invalid").arg(batteryPath.path());
}
connect(m_tipsRefreshTimer, &QTimer::timeout, this, &PowerPlugin::refreshTipsData);
}
const QString PowerPlugin::pluginName() const
@ -100,35 +106,9 @@ QWidget *PowerPlugin::itemTipsWidget(const QString &itemKey)
m_tipsLabel->setObjectName(itemKey);
const uint percentage = qMin(100.0, qMax(0.0, data.value("Display")));
const QString value = QString("%1%").arg(std::round(percentage));
const int batteryState = m_powerInter->batteryState()["Display"];
const bool charging = (batteryState == BatteryState::CHARGING || batteryState == BatteryState::FULLY_CHARGED);
m_tipsRefreshTimer->start();
if (!charging) {
qint64 timeToEmpty = -1;
if(m_uBatteryDeviceInter && m_uBatteryDeviceInter->property("TimeToEmpty").isValid())
timeToEmpty = m_uBatteryDeviceInter->property("TimeToEmpty").toInt();
m_tipsLabel->setText(
tr("Remaining Capacity: %1, %2 Until Empty")
.arg(value)
.arg(QDateTime::fromTime_t(timeToEmpty).toUTC().toString("hh:mm:ss"))
);
} else {
if (batteryState == BatteryState::FULLY_CHARGED || percentage == 100.)
m_tipsLabel->setText(tr("Charged %1 Battery Is Charged").arg(value));
else {
qint64 timeToFull = -1;
if(m_uBatteryDeviceInter && m_uBatteryDeviceInter->property("TimeToFull").isValid())
timeToFull = m_uBatteryDeviceInter->property("TimeToFull").toInt();
m_tipsLabel->setText(
tr("Charging %1, %2 Until Full")
.arg(value)
.arg(QDateTime::fromTime_t(timeToFull).toUTC().toString("hh:mm:ss"))
);
}
}
refreshTipsData();
return m_tipsLabel;
}
@ -243,6 +223,7 @@ void PowerPlugin::loadPlugin()
m_powerInter = new DBusPower(this);
connect(m_powerInter, &DBusPower::BatteryPercentageChanged, this, &PowerPlugin::updateBatteryVisible);
connect(m_powerInter, &DBusPower::BatteryStateChanged, this, &PowerPlugin::refreshTipsData);
updateBatteryVisible();
}
@ -259,3 +240,64 @@ void PowerPlugin::refreshPluginItemsVisible()
updateBatteryVisible();
}
}
void PowerPlugin::refreshTipsData()
{
if (m_tipsLabel->isVisible()) {
m_tipsRefreshTimer->start();
}
const BatteryPercentageMap data = m_powerInter->batteryPercentage();
const uint percentage = qMin(100.0, qMax(0.0, data.value("Display")));
const QString value = QString("%1%").arg(std::round(percentage));
const int batteryState = m_powerInter->batteryState()["Display"];
const bool charging = (batteryState == BatteryState::CHARGING || batteryState == BatteryState::FULLY_CHARGED);
if (!charging) {
uint timeToEmpty = 0;
if(m_uBatteryDeviceInter && m_uBatteryDeviceInter->property("TimeToEmpty").isValid()) {
timeToEmpty = m_uBatteryDeviceInter->property("TimeToEmpty").toUInt();
}
QDateTime time = QDateTime::fromTime_t(timeToEmpty).toUTC();
uint hour = time.toString("hh").toUInt();
uint min = time.toString("mm").toUInt();
QString tips;
if (hour == 0) {
tips = tr("Capacity %1, %2 min remaining").arg(value).arg(min);
}
else {
tips = tr("Capacity %1, %2 hr %3 min remaining").arg(value).arg(hour).arg(min);
}
m_tipsLabel->setText(tips);
}
else {
if (batteryState == BatteryState::FULLY_CHARGED || percentage == 100.) {
m_tipsLabel->setText(tr("Charged %1").arg(value));
}
else {
uint timeToFull = 0;
if(m_uBatteryDeviceInter && m_uBatteryDeviceInter->property("TimeToFull").isValid()) {
timeToFull = m_uBatteryDeviceInter->property("TimeToFull").toUInt();
}
QDateTime time = QDateTime::fromTime_t(timeToFull).toUTC();
uint hour = time.toString("hh").toUInt();
uint min = time.toString("mm").toUInt();
QString tips;
if (hour == 0) {
tips = tr("Charging %1, %2 min until full").arg(value).arg(min);
}
else {
tips = tr("Charging %1, %2 hr %3 min until full").arg(value).arg(hour).arg(min);
}
m_tipsLabel->setText(tips);
}
}
}

View File

@ -30,7 +30,7 @@
#include <QLabel>
// from https://upower.freedesktop.org/docs/Device.html#Device:State
enum BatteryState
enum BatteryState
{
UNKOWN = 0,
CHARGING = 1,
@ -70,12 +70,14 @@ private:
void updateBatteryVisible();
void loadPlugin();
void refreshPluginItemsVisible();
void refreshTipsData();
private:
bool m_pluginLoaded;
PowerStatusWidget *m_powerStatusWidget;
TipsWidget *m_tipsLabel;
QTimer *m_tipsRefreshTimer;
DBusPower *m_powerInter;
QDBusInterface *m_uPowerInter;

View File

@ -4,7 +4,6 @@
<context>
<name>AbstractPluginsController</name>
<message>
<location filename="../frame/util/abstractpluginscontroller.cpp" line="163"/>
<source>The plugin %1 is not compatible with the system.</source>
<translation type="unfinished"></translation>
</message>
@ -12,7 +11,6 @@
<context>
<name>ContainerItem</name>
<message>
<location filename="../frame/item/containeritem.cpp" line="33"/>
<source>Click to display hidden icon</source>
<translation type="unfinished"></translation>
</message>
@ -20,7 +18,6 @@
<context>
<name>DBusAdaptors</name>
<message>
<location filename="../plugins/keyboard-layout/dbusadaptors.cpp" line="138"/>
<source>Add keyboard layout</source>
<translation type="unfinished"></translation>
</message>
@ -28,22 +25,18 @@
<context>
<name>DatetimePlugin</name>
<message>
<location filename="../plugins/datetime/datetimeplugin.cpp" line="57"/>
<source>Datetime</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugins/datetime/datetimeplugin.cpp" line="143"/>
<source>12 Hour Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugins/datetime/datetimeplugin.cpp" line="145"/>
<source>24 Hour Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugins/datetime/datetimeplugin.cpp" line="151"/>
<source>Time Settings</source>
<translation type="unfinished"></translation>
</message>
@ -51,17 +44,14 @@
<context>
<name>DeviceItem</name>
<message>
<location filename="../plugins/network/item/deviceitem.cpp" line="59"/>
<source>Enable network</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugins/network/item/deviceitem.cpp" line="61"/>
<source>Disable network</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugins/network/item/deviceitem.cpp" line="67"/>
<source>Network settings</source>
<translation type="unfinished"></translation>
</message>
@ -69,22 +59,18 @@
<context>
<name>DialogManager</name>
<message>
<location filename="../plugins/trash/popupcontrolwidget.cpp" line="88"/>
<source>Are you sure you want to empty %1 items?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugins/trash/popupcontrolwidget.cpp" line="93"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugins/trash/popupcontrolwidget.cpp" line="93"/>
<source>Delete</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugins/trash/popupcontrolwidget.cpp" line="113"/>
<source>This action cannot be restored</source>
<translation type="unfinished"></translation>
</message>
@ -92,12 +78,10 @@
<context>
<name>DiskControlItem</name>
<message>
<location filename="../plugins/disk-mount/diskcontrolitem.cpp" line="106"/>
<source>Unknown device</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugins/disk-mount/diskcontrolitem.cpp" line="112"/>
<source>Unknown volume</source>
<translation type="unfinished"></translation>
</message>
@ -105,17 +89,14 @@
<context>
<name>DiskMountPlugin</name>
<message>
<location filename="../plugins/disk-mount/diskmountplugin.cpp" line="40"/>
<source>Disk</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugins/disk-mount/diskmountplugin.cpp" line="90"/>
<source>Open</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugins/disk-mount/diskmountplugin.cpp" line="96"/>
<source>Unmount all</source>
<translation type="unfinished"></translation>
</message>
@ -123,87 +104,70 @@
<context>
<name>DockSettings</name>
<message>
<location filename="../frame/util/docksettings.cpp" line="47"/>
<source>Fashion Mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../frame/util/docksettings.cpp" line="48"/>
<source>Efficient Mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../frame/util/docksettings.cpp" line="49"/>
<source>Top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../frame/util/docksettings.cpp" line="50"/>
<source>Bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../frame/util/docksettings.cpp" line="51"/>
<source>Left</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../frame/util/docksettings.cpp" line="52"/>
<source>Right</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../frame/util/docksettings.cpp" line="53"/>
<source>Large</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../frame/util/docksettings.cpp" line="54"/>
<source>Medium</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../frame/util/docksettings.cpp" line="55"/>
<source>Small</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../frame/util/docksettings.cpp" line="56"/>
<source>Keep Shown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../frame/util/docksettings.cpp" line="57"/>
<source>Keep Hidden</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../frame/util/docksettings.cpp" line="58"/>
<source>Smart Hide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../frame/util/docksettings.cpp" line="93"/>
<source>Mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../frame/util/docksettings.cpp" line="101"/>
<source>Location</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../frame/util/docksettings.cpp" line="108"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../frame/util/docksettings.cpp" line="115"/>
<source>Status</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../frame/util/docksettings.cpp" line="119"/>
<source>Plugins</source>
<translation type="unfinished"></translation>
</message>
@ -211,7 +175,6 @@
<context>
<name>LauncherItem</name>
<message>
<location filename="../frame/item/launcheritem.cpp" line="105"/>
<source>Launcher</source>
<translation type="unfinished"></translation>
</message>
@ -219,7 +182,6 @@
<context>
<name>NetworkPlugin</name>
<message>
<location filename="../plugins/network/networkplugin.cpp" line="49"/>
<source>Network</source>
<translation type="unfinished"></translation>
</message>
@ -227,13 +189,10 @@
<context>
<name>OnboardPlugin</name>
<message>
<location filename="../plugins/onboard/onboardplugin.cpp" line="35"/>
<location filename="../plugins/onboard/onboardplugin.cpp" line="46"/>
<source>Onboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugins/onboard/onboardplugin.cpp" line="97"/>
<source>Settings</source>
<translation type="unfinished"></translation>
</message>
@ -241,76 +200,69 @@
<context>
<name>PowerPlugin</name>
<message>
<location filename="../plugins/power/powerplugin.cpp" line="46"/>
<source>Power</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugins/power/powerplugin.cpp" line="71"/>
<source>Remaining Capacity %1</source>
<source>Power settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugins/power/powerplugin.cpp" line="76"/>
<source>Charged %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugins/power/powerplugin.cpp" line="78"/>
<source>Charging %1</source>
<source>Charged %1, %2 min remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugins/power/powerplugin.cpp" line="124"/>
<source>Power settings</source>
<source>Charged %1, %2 hr %3 min remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Charged %1, %2 min until full</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Charged %1, %2 hr %3 min until full</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ShutdownPlugin</name>
<message>
<location filename="../plugins/shutdown/shutdownplugin.cpp" line="108"/>
<source>Shut down</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugins/shutdown/shutdownplugin.cpp" line="114"/>
<source>Restart</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugins/shutdown/shutdownplugin.cpp" line="128"/>
<source>Hibernate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugins/shutdown/shutdownplugin.cpp" line="136"/>
<source>Lock</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugins/shutdown/shutdownplugin.cpp" line="142"/>
<source>Log out</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugins/shutdown/shutdownplugin.cpp" line="121"/>
<source>Suspend</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugins/shutdown/shutdownplugin.cpp" line="46"/>
<location filename="../plugins/shutdown/shutdownplugin.cpp" line="62"/>
<source>Power</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugins/shutdown/shutdownplugin.cpp" line="150"/>
<source>Shut down</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Restart</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Suspend</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Hibernate</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Lock</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Log out</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Switch account</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugins/shutdown/shutdownplugin.cpp" line="158"/>
<source>Power settings</source>
<translation type="unfinished"></translation>
</message>
@ -318,12 +270,10 @@
<context>
<name>SoundApplet</name>
<message>
<location filename="../plugins/sound/soundapplet.cpp" line="54"/>
<source>Device</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugins/sound/soundapplet.cpp" line="72"/>
<source>Application</source>
<translation type="unfinished"></translation>
</message>
@ -331,22 +281,18 @@
<context>
<name>SoundItem</name>
<message>
<location filename="../plugins/sound/sounditem.cpp" line="78"/>
<source>Unmute</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugins/sound/sounditem.cpp" line="80"/>
<source>Mute</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugins/sound/sounditem.cpp" line="86"/>
<source>Audio Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugins/sound/sounditem.cpp" line="207"/>
<source>Current Volume %1</source>
<translation type="unfinished"></translation>
</message>
@ -354,7 +300,6 @@
<context>
<name>SoundPlugin</name>
<message>
<location filename="../plugins/sound/soundplugin.cpp" line="40"/>
<source>Sound</source>
<translation type="unfinished"></translation>
</message>
@ -362,17 +307,14 @@
<context>
<name>TrashPlugin</name>
<message>
<location filename="../plugins/trash/trashplugin.cpp" line="52"/>
<source>Trash</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugins/trash/trashplugin.cpp" line="90"/>
<source>Trash - %1 file</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugins/trash/trashplugin.cpp" line="92"/>
<source>Trash - %1 files</source>
<translation type="unfinished"></translation>
</message>
@ -380,12 +322,10 @@
<context>
<name>TrashWidget</name>
<message>
<location filename="../plugins/trash/trashwidget.cpp" line="71"/>
<source>Open</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugins/trash/trashwidget.cpp" line="79"/>
<source>Empty</source>
<translation type="unfinished"></translation>
</message>
@ -393,7 +333,6 @@
<context>
<name>TrayPlugin</name>
<message>
<location filename="../plugins/tray/trayplugin.cpp" line="60"/>
<source>System Tray</source>
<translation type="unfinished"></translation>
</message>
@ -401,12 +340,10 @@
<context>
<name>WiredItem</name>
<message>
<location filename="../plugins/network/item/wireditem.cpp" line="47"/>
<source>Unknown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugins/network/item/wireditem.cpp" line="199"/>
<source>Wired connection: %1</source>
<translation type="unfinished"></translation>
</message>
@ -414,12 +351,10 @@
<context>
<name>WirelessItem</name>
<message>
<location filename="../plugins/network/item/wirelessitem.cpp" line="49"/>
<source>No Network</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugins/network/item/wirelessitem.cpp" line="275"/>
<source>Wireless Connection: %1</source>
<translation type="unfinished"></translation>
</message>
@ -427,12 +362,10 @@
<context>
<name>WirelessList</name>
<message>
<location filename="../plugins/network/item/applet/wirelesslist.cpp" line="159"/>
<source>Wireless Network</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugins/network/item/applet/wirelesslist.cpp" line="161"/>
<source>Wireless Network %1</source>
<translation type="unfinished"></translation>
</message>