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();
}
PluginsItemInterface::PluginSizePolicy PluginsItem::pluginSizePolicy() const
{
return m_pluginInter->pluginSizePolicy();
}
DockItem::ItemType PluginsItem::itemType() const
{
if (m_pluginInter->type() == PluginsItemInterface::Normal) {

View File

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

View File

@ -1058,10 +1058,13 @@ void MainPanelControl::calcuDockIconSize(int w, int h, PluginsItem *trashPlugin,
if (layout) {
PluginsItem *pItem = static_cast<PluginsItem *>(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<PluginsItem *>(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;
}
}
}

View File

@ -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

View File

@ -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");

View File

@ -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;