diff --git a/deepin-devicemanager/src/DeviceManager/DevicePower.cpp b/deepin-devicemanager/src/DeviceManager/DevicePower.cpp index c55070a4..3c68bfa3 100644 --- a/deepin-devicemanager/src/DeviceManager/DevicePower.cpp +++ b/deepin-devicemanager/src/DeviceManager/DevicePower.cpp @@ -7,11 +7,16 @@ #include "commonfunction.h" // Qt库文件 -#include +#include +#include // Dtk头文件 #include +constexpr const char* kPowerService = "com.deepin.system.Power"; +constexpr const char* kPowerPath = "/com/deepin/system/Power"; +constexpr const char* kPowerInterface = "com.deepin.system.Power"; + DWIDGET_USE_NAMESPACE DevicePower::DevicePower() @@ -101,7 +106,19 @@ bool DevicePower::setInfoFromUpower(const QMap &mapInfo) m_Temp = QString("%1 degrees C").arg(temp); }*/ - getOtherMapInfo(mapInfo); + // 当前电池容量修改成通过DDE接口获得,目的是与状态栏的当前电池容量保持一致(bug#333825) + QMap tmpMapInfo = mapInfo; + if (tmpMapInfo.contains("percentage")) { + QDBusInterface interface(kPowerService, kPowerPath, kPowerInterface, QDBusConnection::systemBus()); + if (interface.isValid()) { + double tmpValue = interface.property("BatteryPercentage").toDouble(); + tmpMapInfo["percentage"] = QString("%1%").arg(static_cast(tmpValue)); + } else { + qCritical() << QString("Dbus %1 is not valid!").arg(kPowerService); + } + } + + getOtherMapInfo(tmpMapInfo); return true; }