From 73ad24a68219c6a803dcecbcc0c43057b041228d Mon Sep 17 00:00:00 2001 From: donghualin Date: Wed, 25 May 2022 10:58:58 +0800 Subject: [PATCH] =?UTF-8?q?test:=20=E6=B5=8B=E8=AF=95=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=E9=80=82=E9=85=8D=E6=96=B0=E7=9A=84=E4=BB=BB=E5=8A=A1=E6=A0=8F?= =?UTF-8?q?=E6=8F=92=E4=BB=B6=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在homemonitor插件中新增插件新的接口,匹配新的任务栏插件 Log: Influence: 无 Task: https://pms.uniontech.com/task-view-110309.html Change-Id: Idd9907d55b839939d52121934bd5c28ea349392c --- .../home_monitor/home_monitor.json | 2 +- .../home_monitor/homemonitorplugin.cpp | 41 +++++++++++++++++++ .../home_monitor/homemonitorplugin.h | 5 +++ .../home_monitor/informationwidget.cpp | 12 ++++-- .../home_monitor/informationwidget.h | 1 + .../plugin-guide/plugins-developer-guide.md | 4 ++ 6 files changed, 60 insertions(+), 5 deletions(-) diff --git a/plugins/plugin-guide/home_monitor/home_monitor.json b/plugins/plugin-guide/home_monitor/home_monitor.json index 86b33bb4a..031bf0ec8 100644 --- a/plugins/plugin-guide/home_monitor/home_monitor.json +++ b/plugins/plugin-guide/home_monitor/home_monitor.json @@ -1,3 +1,3 @@ { - "api": "1.1.1" + "api": "2.0.0" } diff --git a/plugins/plugin-guide/home_monitor/homemonitorplugin.cpp b/plugins/plugin-guide/home_monitor/homemonitorplugin.cpp index 1da95a044..48514a322 100644 --- a/plugins/plugin-guide/home_monitor/homemonitorplugin.cpp +++ b/plugins/plugin-guide/home_monitor/homemonitorplugin.cpp @@ -1,5 +1,7 @@ #include "homemonitorplugin.h" +#include + HomeMonitorPlugin::HomeMonitorPlugin(QObject *parent) : QObject(parent) { @@ -133,3 +135,42 @@ void HomeMonitorPlugin::invokedMenuItem(const QString &itemKey, const QString &m QProcess::startDetached("gparted"); } } + +const QIcon *HomeMonitorPlugin::icon() +{ + static QIcon pixMapIcon; + QPixmap pixmap; + QPainter painter(&pixmap); + painter.begin(&pixmap); + QFont font; + font.setPixelSize(10); + painter.setFont(font); + painter.drawText(QPoint(0, 0), m_pluginWidget->textContent()); + painter.end(); + pixMapIcon.detach(); + pixMapIcon.addPixmap(pixmap); + return &pixMapIcon; +} + +PluginsItemInterface::PluginStatus HomeMonitorPlugin::status() const +{ + return PluginStatus::Active; +} + +bool HomeMonitorPlugin::isPrimary() const +{ + // 如果当前插件是在快捷设置区域最上方显示的大图标且可以展开查看详情的,则返回true + // 否则,返回false + return false; +} + +QString HomeMonitorPlugin::description() const +{ + // 当isPrimary()返回值为true的时候,这个值用于返回在大图标下面的状态信息, + // 例如,如果当前图标是网络图标,下面则显示连接的网络信息,或者如果是其他的图标,下面显示连接的 + // 状态等(开启或者关闭) + if (status() == PluginStatus::Active) + return tr("Enabled"); + + return tr("Disabled"); +} diff --git a/plugins/plugin-guide/home_monitor/homemonitorplugin.h b/plugins/plugin-guide/home_monitor/homemonitorplugin.h index 3ae08f0b6..23b6b0643 100644 --- a/plugins/plugin-guide/home_monitor/homemonitorplugin.h +++ b/plugins/plugin-guide/home_monitor/homemonitorplugin.h @@ -31,6 +31,11 @@ public: const QString itemContextMenu(const QString &itemKey) override; void invokedMenuItem(const QString &itemKey, const QString &menuId, const bool checked) override; + const QIcon *icon() override; + PluginStatus status() const override; + bool isPrimary() const override; + QString description() const override; + private: InformationWidget *m_pluginWidget; QLabel *m_tipsWidget; diff --git a/plugins/plugin-guide/home_monitor/informationwidget.cpp b/plugins/plugin-guide/home_monitor/informationwidget.cpp index b06fffa32..32c9ab24d 100644 --- a/plugins/plugin-guide/home_monitor/informationwidget.cpp +++ b/plugins/plugin-guide/home_monitor/informationwidget.cpp @@ -33,7 +33,7 @@ InformationWidget::InformationWidget(QWidget *parent) refreshInfo(); } -void InformationWidget::refreshInfo() +const QString InformationWidget::textContent() const { // 获取分区总容量 const double total = m_storageInfo->bytesTotal(); @@ -41,7 +41,11 @@ void InformationWidget::refreshInfo() const double available = m_storageInfo->bytesAvailable(); // 得到可用百分比 const int percent = qRound(available / total * 100); - - // 更新内容 - m_infoLabel->setText(QString("Home:\n%1\%").arg(percent)); + return QString("Home:\n%1\%").arg(percent); +} + +void InformationWidget::refreshInfo() +{ + // 更新内容 + m_infoLabel->setText(textContent()); } diff --git a/plugins/plugin-guide/home_monitor/informationwidget.h b/plugins/plugin-guide/home_monitor/informationwidget.h index 21db1c624..d14ebdc77 100644 --- a/plugins/plugin-guide/home_monitor/informationwidget.h +++ b/plugins/plugin-guide/home_monitor/informationwidget.h @@ -14,6 +14,7 @@ public: explicit InformationWidget(QWidget *parent = nullptr); inline QStorageInfo * storageInfo() { return m_storageInfo; } + const QString textContent() const; private slots: // 用于更新数据的槽函数 diff --git a/plugins/plugin-guide/plugins-developer-guide.md b/plugins/plugin-guide/plugins-developer-guide.md index d93c91136..0fd03d61a 100644 --- a/plugins/plugin-guide/plugins-developer-guide.md +++ b/plugins/plugin-guide/plugins-developer-guide.md @@ -51,6 +51,10 @@ PluginsItemInterface 中定义的接口除了displayMode 和 position(历史 |refreshIcon | 当插件控件的图标需要更新时此接口被调用| |displayMode | 用于插件主动获取 dde-dock 当前的显示模式| |position | 用于插件主动获取 dde-dock 当前的位置| +|icon | 用于返回当前插件在快捷设置面板上的图标,正常状态下显示的图标即可 | +|status | 用于返回当前快捷设置插件的状态,激活状态还是禁用状态 | +|isPrimary | 用于标记当前快捷设置的插件是否为主插件(图标占两个图标位置) | +|description | 用于返回插件的描述(快捷设置面板中isPrimary为true的时候有用) | ### PluginProxyInterface