From 81d9d8635c6032b94d4c7eec3d29edaf84857bd5 Mon Sep 17 00:00:00 2001 From: suyihang Date: Wed, 4 Nov 2020 18:03:27 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BB=BB=E5=8A=A1=E6=A0=8F=E6=8F=92?= =?UTF-8?q?=E4=BB=B6=E6=98=BE=E7=A4=BA=E5=A4=A7=E5=B0=8F=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E8=87=AA=E5=AE=9A=E4=B9=89=E5=AE=BD=E5=BA=A6?= =?UTF-8?q?(=E6=88=96=E9=AB=98=E5=BA=A6)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增插件大小策略枚举类型,支持"跟随系统"和"自定义"两种类型,默认类型为"跟随系统",那么 这样系统自带的插件大小就不需要重新写代码控制,当需要控制插件大小时,返回"自定义"类型即 可. Log: 任务栏插件显示大小新增支持自定义宽度(或高度) Task: https://pms.uniontech.com/zentao/task-view-44090.html Change-Id: I0d4c30661ee7c02904160221dc6a72737f0b774d --- frame/item/pluginsitem.cpp | 5 +++++ frame/item/pluginsitem.h | 1 + frame/panel/mainpanelcontrol.cpp | 18 ++++++++++++------ interfaces/pluginsiteminterface.h | 14 ++++++++++++++ plugins/datetime/datetimeplugin.cpp | 5 +++++ plugins/datetime/datetimeplugin.h | 1 + 6 files changed, 38 insertions(+), 6 deletions(-) diff --git a/frame/item/pluginsitem.cpp b/frame/item/pluginsitem.cpp index 2a401274e..dde3ce279 100644 --- a/frame/item/pluginsitem.cpp +++ b/frame/item/pluginsitem.cpp @@ -99,6 +99,11 @@ QString PluginsItem::pluginName() const return m_pluginInter->pluginName(); } +PluginsItemInterface::PluginSizePolicy PluginsItem::pluginSizePolicy() const +{ + return m_pluginInter->pluginSizePolicy(); +} + DockItem::ItemType PluginsItem::itemType() const { if (m_pluginInter->type() == PluginsItemInterface::Normal) { diff --git a/frame/item/pluginsitem.h b/frame/item/pluginsitem.h index e8ef4f262..a4199f42a 100644 --- a/frame/item/pluginsitem.h +++ b/frame/item/pluginsitem.h @@ -41,6 +41,7 @@ public: void setInContainer(const bool container); QString pluginName() const; + PluginsItemInterface::PluginSizePolicy pluginSizePolicy() const; using DockItem::showContextMenu; using DockItem::hidePopup; diff --git a/frame/panel/mainpanelcontrol.cpp b/frame/panel/mainpanelcontrol.cpp index 3c8021a75..2383d0af1 100755 --- a/frame/panel/mainpanelcontrol.cpp +++ b/frame/panel/mainpanelcontrol.cpp @@ -1058,10 +1058,13 @@ void MainPanelControl::calcuDockIconSize(int w, int h, PluginsItem *trashPlugin, if (layout) { PluginsItem *pItem = static_cast(layout->itemAt(0)->widget()); if (pItem && pItem != trashPlugin && pItem != shutdownPlugin && pItem != keyboardPlugin && pItem !=notificationPlugin) { - if (pItem->pluginName() == "datetime") { - pItem->setFixedSize(pItem->sizeHint().width(), h); - } else { + switch (pItem->pluginSizePolicy()) { + case PluginsItemInterface::System: pItem->setFixedSize(tray_item_size, tray_item_size); + break; + case PluginsItemInterface::Custom: + pItem->setFixedSize(pItem->sizeHint().width(), h); + break; } } } @@ -1073,10 +1076,13 @@ void MainPanelControl::calcuDockIconSize(int w, int h, PluginsItem *trashPlugin, if (layout) { PluginsItem *pItem = static_cast(layout->itemAt(0)->widget()); if (pItem && pItem != trashPlugin && pItem != shutdownPlugin && pItem != keyboardPlugin && pItem !=notificationPlugin) { - if (pItem->pluginName() == "datetime") { - pItem->setFixedSize(w, pItem->sizeHint().height()); - } else { + switch (pItem->pluginSizePolicy()) { + case PluginsItemInterface::System: pItem->setFixedSize(tray_item_size, tray_item_size); + break; + case PluginsItemInterface::Custom: + pItem->setFixedSize(w, pItem->sizeHint().height()); + break; } } } diff --git a/interfaces/pluginsiteminterface.h b/interfaces/pluginsiteminterface.h index 80ee6528f..30de23e66 100644 --- a/interfaces/pluginsiteminterface.h +++ b/interfaces/pluginsiteminterface.h @@ -40,6 +40,14 @@ public: Fixed }; + /** + * @brief Plugin size policy + */ + enum PluginSizePolicy { + System = 1 << 0, // Follow the system + Custom = 1 << 1 // The custom + }; + /// /// \brief ~PluginsItemInterface /// DON'T try to delete m_proxyInter. @@ -229,6 +237,12 @@ public: /// virtual PluginType type() { return Normal; } + /// + /// \brief plugin size policy + /// default plugin size policy + /// + virtual PluginSizePolicy pluginSizePolicy() const { return System; } + protected: /// /// \brief m_proxyInter diff --git a/plugins/datetime/datetimeplugin.cpp b/plugins/datetime/datetimeplugin.cpp index ddef3e1d6..99ea2c979 100644 --- a/plugins/datetime/datetimeplugin.cpp +++ b/plugins/datetime/datetimeplugin.cpp @@ -47,6 +47,11 @@ const QString DatetimePlugin::pluginName() const return "datetime"; } +PluginsItemInterface::PluginSizePolicy DatetimePlugin::pluginSizePolicy() const +{ + return PluginsItemInterface::Custom; +} + const QString DatetimePlugin::pluginDisplayName() const { return tr("Datetime"); diff --git a/plugins/datetime/datetimeplugin.h b/plugins/datetime/datetimeplugin.h index 0bafa90e0..ea4536324 100644 --- a/plugins/datetime/datetimeplugin.h +++ b/plugins/datetime/datetimeplugin.h @@ -43,6 +43,7 @@ public: explicit DatetimePlugin(QObject *parent = nullptr); const QString pluginName() const override; + PluginSizePolicy pluginSizePolicy() const override; const QString pluginDisplayName() const override; void init(PluginProxyInterface *proxyInter) override;