feat: 电池插件适配任务栏最新接口

增加icon接口,外部收到该接口后会进行展示

Log:
Influence: 任务栏-快捷设置区域电池插件图标
Task: https://pms.uniontech.com/task-view-110309.html
Change-Id: Ibf6f482a54266aaf48c70c0849133da7af49945c
This commit is contained in:
donghualin 2022-05-25 13:09:26 +08:00
parent 43efa10cd9
commit 751fef14be
5 changed files with 24 additions and 9 deletions

View File

@ -17,7 +17,7 @@ pkg_check_modules(QGSettings REQUIRED gsettings-qt)
add_definitions("${QT_DEFINITIONS} -DQT_PLUGIN")
add_library(${PLUGIN_NAME} SHARED ${SRCS} power.qrc)
set_target_properties(${PLUGIN_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ../system-trays)
set_target_properties(${PLUGIN_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ../quick-trays)
target_include_directories(${PLUGIN_NAME} PUBLIC ${DtkWidget_INCLUDE_DIRS}
${Qt5DBus_INCLUDE_DIRS}
${DFrameworkDBus_INCLUDE_DIRS}

View File

@ -185,6 +185,15 @@ void PowerPlugin::pluginSettingsChanged()
refreshPluginItemsVisible();
}
const QIcon *PowerPlugin::icon()
{
static QIcon batteryIcon;
const QPixmap pixmap = m_powerStatusWidget->getBatteryIcon();
batteryIcon.detach();
batteryIcon.addPixmap(pixmap);
return &batteryIcon;
}
void PowerPlugin::updateBatteryVisible()
{
const bool exist = !m_powerInter->batteryPercentage().isEmpty();
@ -205,6 +214,11 @@ void PowerPlugin::loadPlugin()
m_pluginLoaded = true;
m_powerStatusWidget.reset(new PowerStatusWidget);
connect(m_powerStatusWidget.get(), &PowerStatusWidget::iconChanged, this, [ this ] {
m_proxyInter->itemUpdate(this, POWER_KEY);
});
m_powerInter = new DBusPower(this);
m_systemPowerInter = new SystemPowerInter("com.deepin.system.Power", "/com/deepin/system/Power", QDBusConnection::systemBus(), this);

View File

@ -58,6 +58,7 @@ public:
int itemSortKey(const QString &itemKey) override;
void setSortKey(const QString &itemKey, const int order) override;
void pluginSettingsChanged() override;
const QIcon *icon() override;
private:
void updateBatteryVisible();

View File

@ -38,17 +38,16 @@ PowerStatusWidget::PowerStatusWidget(QWidget *parent)
{
// QIcon::setThemeName("deepin");
connect(m_powerInter, &DBusPower::BatteryPercentageChanged, this, static_cast<void (PowerStatusWidget::*)()>(&PowerStatusWidget::update));
connect(m_powerInter, &DBusPower::BatteryStateChanged, this, static_cast<void (PowerStatusWidget::*)()>(&PowerStatusWidget::update));
connect(m_powerInter, &DBusPower::OnBatteryChanged, this, static_cast<void (PowerStatusWidget::*)()>(&PowerStatusWidget::update));
connect(DGuiApplicationHelper::instance(), &DGuiApplicationHelper::themeTypeChanged, this, [ = ] {
refreshIcon();
});
connect(m_powerInter, &DBusPower::BatteryPercentageChanged, this, &PowerStatusWidget::refreshIcon);
connect(m_powerInter, &DBusPower::BatteryStateChanged, this, &PowerStatusWidget::refreshIcon);
connect(m_powerInter, &DBusPower::OnBatteryChanged, this, &PowerStatusWidget::refreshIcon);
connect(DGuiApplicationHelper::instance(), &DGuiApplicationHelper::themeTypeChanged, this, &PowerStatusWidget::refreshIcon);
}
void PowerStatusWidget::refreshIcon()
{
update();
Q_EMIT iconChanged();
}
void PowerStatusWidget::paintEvent(QPaintEvent *e)

View File

@ -43,18 +43,19 @@ class PowerStatusWidget : public QWidget
public:
explicit PowerStatusWidget(QWidget *parent = 0);
QPixmap getBatteryIcon();
public Q_SLOTS:
void refreshIcon();
signals:
void requestContextMenu(const QString &itemKey) const;
void iconChanged();
protected:
void resizeEvent(QResizeEvent *event);
void paintEvent(QPaintEvent *e);
private:
QPixmap getBatteryIcon();
private:
DBusPower *m_powerInter;