feat: 任务栏插件显示大小新增支持自定义宽度(或高度)

新增插件大小策略枚举类型,支持"跟随系统"和"自定义"两种类型,默认类型为"跟随系统",那么
这样系统自带的插件大小就不需要重新写代码控制,当需要控制插件大小时,返回"自定义"类型即
可.

Log: 任务栏插件显示大小新增支持自定义宽度(或高度)
Task: https://pms.uniontech.com/zentao/task-view-44090.html
Change-Id: I0d4c30661ee7c02904160221dc6a72737f0b774d
This commit is contained in:
suyihang 2020-11-04 18:03:27 +08:00
parent 346c62a477
commit 81d9d8635c
6 changed files with 38 additions and 6 deletions

View File

@ -99,6 +99,11 @@ QString PluginsItem::pluginName() const
return m_pluginInter->pluginName(); return m_pluginInter->pluginName();
} }
PluginsItemInterface::PluginSizePolicy PluginsItem::pluginSizePolicy() const
{
return m_pluginInter->pluginSizePolicy();
}
DockItem::ItemType PluginsItem::itemType() const DockItem::ItemType PluginsItem::itemType() const
{ {
if (m_pluginInter->type() == PluginsItemInterface::Normal) { if (m_pluginInter->type() == PluginsItemInterface::Normal) {

View File

@ -41,6 +41,7 @@ public:
void setInContainer(const bool container); void setInContainer(const bool container);
QString pluginName() const; QString pluginName() const;
PluginsItemInterface::PluginSizePolicy pluginSizePolicy() const;
using DockItem::showContextMenu; using DockItem::showContextMenu;
using DockItem::hidePopup; using DockItem::hidePopup;

View File

@ -1058,10 +1058,13 @@ void MainPanelControl::calcuDockIconSize(int w, int h, PluginsItem *trashPlugin,
if (layout) { if (layout) {
PluginsItem *pItem = static_cast<PluginsItem *>(layout->itemAt(0)->widget()); PluginsItem *pItem = static_cast<PluginsItem *>(layout->itemAt(0)->widget());
if (pItem && pItem != trashPlugin && pItem != shutdownPlugin && pItem != keyboardPlugin && pItem !=notificationPlugin) { if (pItem && pItem != trashPlugin && pItem != shutdownPlugin && pItem != keyboardPlugin && pItem !=notificationPlugin) {
if (pItem->pluginName() == "datetime") { switch (pItem->pluginSizePolicy()) {
pItem->setFixedSize(pItem->sizeHint().width(), h); case PluginsItemInterface::System:
} else {
pItem->setFixedSize(tray_item_size, tray_item_size); 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) { if (layout) {
PluginsItem *pItem = static_cast<PluginsItem *>(layout->itemAt(0)->widget()); PluginsItem *pItem = static_cast<PluginsItem *>(layout->itemAt(0)->widget());
if (pItem && pItem != trashPlugin && pItem != shutdownPlugin && pItem != keyboardPlugin && pItem !=notificationPlugin) { if (pItem && pItem != trashPlugin && pItem != shutdownPlugin && pItem != keyboardPlugin && pItem !=notificationPlugin) {
if (pItem->pluginName() == "datetime") { switch (pItem->pluginSizePolicy()) {
pItem->setFixedSize(w, pItem->sizeHint().height()); case PluginsItemInterface::System:
} else {
pItem->setFixedSize(tray_item_size, tray_item_size); pItem->setFixedSize(tray_item_size, tray_item_size);
break;
case PluginsItemInterface::Custom:
pItem->setFixedSize(w, pItem->sizeHint().height());
break;
} }
} }
} }

View File

@ -40,6 +40,14 @@ public:
Fixed Fixed
}; };
/**
* @brief Plugin size policy
*/
enum PluginSizePolicy {
System = 1 << 0, // Follow the system
Custom = 1 << 1 // The custom
};
/// ///
/// \brief ~PluginsItemInterface /// \brief ~PluginsItemInterface
/// DON'T try to delete m_proxyInter. /// DON'T try to delete m_proxyInter.
@ -229,6 +237,12 @@ public:
/// ///
virtual PluginType type() { return Normal; } virtual PluginType type() { return Normal; }
///
/// \brief plugin size policy
/// default plugin size policy
///
virtual PluginSizePolicy pluginSizePolicy() const { return System; }
protected: protected:
/// ///
/// \brief m_proxyInter /// \brief m_proxyInter

View File

@ -47,6 +47,11 @@ const QString DatetimePlugin::pluginName() const
return "datetime"; return "datetime";
} }
PluginsItemInterface::PluginSizePolicy DatetimePlugin::pluginSizePolicy() const
{
return PluginsItemInterface::Custom;
}
const QString DatetimePlugin::pluginDisplayName() const const QString DatetimePlugin::pluginDisplayName() const
{ {
return tr("Datetime"); return tr("Datetime");

View File

@ -43,6 +43,7 @@ public:
explicit DatetimePlugin(QObject *parent = nullptr); explicit DatetimePlugin(QObject *parent = nullptr);
const QString pluginName() const override; const QString pluginName() const override;
PluginSizePolicy pluginSizePolicy() const override;
const QString pluginDisplayName() const override; const QString pluginDisplayName() const override;
void init(PluginProxyInterface *proxyInter) override; void init(PluginProxyInterface *proxyInter) override;