mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-02 15:45:21 +00:00
feat: 增加回收站和电源插件在控制中心的显示和隐藏
响应DConfig配置文件的变化,根据当前新增或删除的配置来新增或删除插件 Log: Influence: 从控制中心勾选或者取消勾选回收站和电源插件,观察任务栏的变化 Task: https://pms.uniontech.com/task-view-216841.html Change-Id: Ia79ae924180d07e1b11f26bd119c83a8932cb80d
This commit is contained in:
parent
224066836a
commit
8cb6cb89d7
@ -137,6 +137,11 @@ ProxyPluginController::ProxyPluginController(QObject *parent)
|
||||
QMetaObject::invokeMethod(this, &ProxyPluginController::startLoader, Qt::QueuedConnection);
|
||||
}
|
||||
|
||||
bool ProxyPluginController::pluginIsLoaded(PluginsItemInterface *itemInter)
|
||||
{
|
||||
return m_pluginsItems.contains(itemInter);
|
||||
}
|
||||
|
||||
QPluginLoader *ProxyPluginController::pluginLoader(PluginsItemInterface * const itemInter)
|
||||
{
|
||||
QMap<PluginsItemInterface *, QMap<QString, QObject *> > &plugin = pluginsMap();
|
||||
|
@ -51,6 +51,8 @@ protected:
|
||||
explicit ProxyPluginController(QObject *parent = nullptr);
|
||||
~ProxyPluginController() override {}
|
||||
|
||||
bool pluginIsLoaded(PluginsItemInterface *itemInter) override;
|
||||
|
||||
void pluginItemAdded(PluginsItemInterface * const itemInter, const QString &itemKey) override;
|
||||
void pluginItemUpdate(PluginsItemInterface * const itemInter, const QString &itemKey) override;
|
||||
void pluginItemRemoved(PluginsItemInterface * const itemInter, const QString &itemKey) override;
|
||||
|
@ -31,6 +31,7 @@ ToolAppHelper::ToolAppHelper(QWidget *toolAreaWidget, QObject *parent)
|
||||
: QObject(parent)
|
||||
, m_toolAreaWidget(toolAreaWidget)
|
||||
, m_displayMode(DisplayMode::Efficient)
|
||||
, m_position(Dock::Position::Bottom)
|
||||
{
|
||||
connect(QuickSettingController::instance(), &QuickSettingController::pluginInserted, this, [ = ](PluginsItemInterface *itemInter, const QuickSettingController::PluginAttribute pluginAttr) {
|
||||
if (pluginAttr != QuickSettingController::PluginAttribute::Tool)
|
||||
@ -38,27 +39,28 @@ ToolAppHelper::ToolAppHelper(QWidget *toolAreaWidget, QObject *parent)
|
||||
|
||||
pluginItemAdded(itemInter);
|
||||
});
|
||||
connect(QuickSettingController::instance(), &QuickSettingController::pluginRemoved, this, [ = ](PluginsItemInterface *itemInter) {
|
||||
pluginItemRemoved(itemInter);
|
||||
});
|
||||
|
||||
QList<PluginsItemInterface *> pluginItems = QuickSettingController::instance()->pluginItems(QuickSettingController::PluginAttribute::Tool);
|
||||
for (PluginsItemInterface *pluginItem : pluginItems)
|
||||
pluginItemAdded(pluginItem);
|
||||
|
||||
updateToolArea();
|
||||
}
|
||||
|
||||
void ToolAppHelper::setDisplayMode(DisplayMode displayMode)
|
||||
{
|
||||
m_displayMode = displayMode;
|
||||
updateWidgetStatus();
|
||||
moveToolWidget();
|
||||
updateWidgetStatus();
|
||||
}
|
||||
|
||||
void ToolAppHelper::removePluginItem(DockItem *dockItem)
|
||||
void ToolAppHelper::setPosition(Position position)
|
||||
{
|
||||
removeToolArea(dockItem);
|
||||
|
||||
if (m_toolAreaWidget->layout()->count() == 0 && toolIsVisible())
|
||||
updateWidgetStatus();
|
||||
|
||||
Q_EMIT requestUpdate();
|
||||
m_toolAreaWidget->setFixedSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX);
|
||||
m_position = position;
|
||||
}
|
||||
|
||||
bool ToolAppHelper::toolIsVisible() const
|
||||
@ -78,11 +80,12 @@ void ToolAppHelper::appendToToolArea(int index, DockItem *dockItem)
|
||||
Q_EMIT requestUpdate();
|
||||
}
|
||||
|
||||
bool ToolAppHelper::removeToolArea(DockItem *dockItem)
|
||||
bool ToolAppHelper::removeToolArea(PluginsItemInterface *itemInter)
|
||||
{
|
||||
QBoxLayout *boxLayout = static_cast<QBoxLayout *>(m_toolAreaWidget->layout());
|
||||
for (int i = 0; i < boxLayout->count(); i++) {
|
||||
if (boxLayout->itemAt(i)->widget() == dockItem) {
|
||||
PluginsItem *dockItem = qobject_cast<PluginsItem *>(boxLayout->itemAt(i)->widget());
|
||||
if (dockItem && dockItem->pluginItem() == itemInter) {
|
||||
boxLayout->removeWidget(dockItem);
|
||||
return true;
|
||||
}
|
||||
@ -115,6 +118,38 @@ void ToolAppHelper::moveToolWidget()
|
||||
}
|
||||
}
|
||||
|
||||
void ToolAppHelper::updateToolArea()
|
||||
{
|
||||
bool oldVisible = m_toolAreaWidget->isVisible();
|
||||
QLayout *layout = m_toolAreaWidget->layout();
|
||||
if (m_position == Dock::Position::Bottom || m_position == Dock::Position::Top) {
|
||||
int size = 0;
|
||||
for (int i = 0; i < layout->count(); i++) {
|
||||
PluginsItem *dockItem = qobject_cast<PluginsItem *>(layout->itemAt(i)->widget());
|
||||
if (!dockItem)
|
||||
continue;
|
||||
|
||||
size += dockItem->width();
|
||||
}
|
||||
m_toolAreaWidget->setFixedWidth(size);
|
||||
m_toolAreaWidget->setVisible(size > 0);
|
||||
} else {
|
||||
int size = 0;
|
||||
for (int i = 0; i < layout->count(); i++) {
|
||||
PluginsItem *dockItem = qobject_cast<PluginsItem *>(layout->itemAt(i)->widget());
|
||||
if (!dockItem)
|
||||
continue;
|
||||
|
||||
size += dockItem->height();
|
||||
}
|
||||
m_toolAreaWidget->setFixedHeight(size);
|
||||
m_toolAreaWidget->setVisible(size > 0);
|
||||
}
|
||||
bool isVisible = m_toolAreaWidget->isVisible();
|
||||
if (oldVisible != isVisible)
|
||||
Q_EMIT toolVisibleChanged(isVisible);
|
||||
}
|
||||
|
||||
void ToolAppHelper::updateWidgetStatus()
|
||||
{
|
||||
bool oldVisible = toolIsVisible();
|
||||
@ -130,13 +165,9 @@ void ToolAppHelper::updateWidgetStatus()
|
||||
Q_EMIT toolVisibleChanged(visible);
|
||||
}
|
||||
|
||||
bool ToolAppHelper::pluginInTool(DockItem *dockItem) const
|
||||
bool ToolAppHelper::pluginInTool(PluginsItemInterface *itemInter) const
|
||||
{
|
||||
PluginsItem *pluginItem = qobject_cast<PluginsItem *>(dockItem);
|
||||
if (!pluginItem)
|
||||
return false;
|
||||
|
||||
return (QuickSettingController::instance()->pluginAttribute(pluginItem->pluginItem()) == QuickSettingController::PluginAttribute::Tool);
|
||||
return (QuickSettingController::instance()->pluginAttribute(itemInter) == QuickSettingController::PluginAttribute::Tool);
|
||||
}
|
||||
|
||||
void ToolAppHelper::pluginItemAdded(PluginsItemInterface *itemInter)
|
||||
@ -145,9 +176,23 @@ void ToolAppHelper::pluginItemAdded(PluginsItemInterface *itemInter)
|
||||
return;
|
||||
|
||||
QuickSettingController *quickController = QuickSettingController::instance();
|
||||
PluginsItem *pluginItem = quickController->pluginItemWidget(itemInter);
|
||||
if (pluginInTool(pluginItem))
|
||||
if (pluginInTool(itemInter)) {
|
||||
PluginsItem *pluginItem = quickController->pluginItemWidget(itemInter);
|
||||
appendToToolArea(0, pluginItem);
|
||||
updateToolArea();
|
||||
Q_EMIT requestUpdate();
|
||||
}
|
||||
}
|
||||
|
||||
void ToolAppHelper::pluginItemRemoved(PluginsItemInterface *itemInter)
|
||||
{
|
||||
QuickSettingController *quickController = QuickSettingController::instance();
|
||||
if (pluginInTool(itemInter)) {
|
||||
PluginsItem *pluginItem = quickController->pluginItemWidget(itemInter);
|
||||
removeToolArea(pluginItem->pluginItem());
|
||||
updateToolArea();
|
||||
Q_EMIT requestUpdate();
|
||||
}
|
||||
}
|
||||
|
||||
bool ToolAppHelper::pluginExists(PluginsItemInterface *itemInter) const
|
||||
|
@ -41,7 +41,7 @@ public:
|
||||
explicit ToolAppHelper(QWidget *toolAreaWidget, QObject *parent = nullptr);
|
||||
|
||||
void setDisplayMode(DisplayMode displayMode);
|
||||
void removePluginItem(DockItem *dockItem);
|
||||
void setPosition(Dock::Position position);
|
||||
bool toolIsVisible() const;
|
||||
|
||||
Q_SIGNALS:
|
||||
@ -50,17 +50,20 @@ Q_SIGNALS:
|
||||
|
||||
private:
|
||||
void appendToToolArea(int index, DockItem *dockItem);
|
||||
bool removeToolArea(DockItem *dockItem);
|
||||
bool removeToolArea(PluginsItemInterface *itemInter);
|
||||
void moveToolWidget();
|
||||
void updateToolArea();
|
||||
|
||||
void updateWidgetStatus();
|
||||
bool pluginInTool(DockItem *dockItem) const;
|
||||
bool pluginInTool(PluginsItemInterface *itemInter) const;
|
||||
void pluginItemAdded(PluginsItemInterface *itemInter);
|
||||
void pluginItemRemoved(PluginsItemInterface *itemInter);
|
||||
bool pluginExists(PluginsItemInterface *itemInter) const;
|
||||
|
||||
private:
|
||||
QWidget *m_toolAreaWidget;
|
||||
DisplayMode m_displayMode;
|
||||
Dock::Position m_position;
|
||||
QList<DockItem *> m_sequentPluginItems;
|
||||
};
|
||||
|
||||
|
@ -48,17 +48,19 @@ PluginsItem::PluginsItem(PluginsItemInterface *const pluginInter, const QString
|
||||
{
|
||||
qDebug() << "load plugins item: " << pluginInter->pluginName() << itemKey << m_centralWidget;
|
||||
|
||||
m_centralWidget->setParent(this);
|
||||
m_centralWidget->setVisible(true);
|
||||
m_centralWidget->setObjectName(pluginInter->pluginName() + "-centralwidget");
|
||||
m_centralWidget->installEventFilter(this);
|
||||
if (m_centralWidget) {
|
||||
m_centralWidget->setParent(this);
|
||||
m_centralWidget->setVisible(true);
|
||||
m_centralWidget->setObjectName(pluginInter->pluginName() + "-centralwidget");
|
||||
m_centralWidget->installEventFilter(this);
|
||||
|
||||
QBoxLayout *hLayout = new QHBoxLayout;
|
||||
hLayout->addWidget(m_centralWidget);
|
||||
hLayout->setSpacing(0);
|
||||
hLayout->setMargin(0);
|
||||
QBoxLayout *hLayout = new QHBoxLayout;
|
||||
hLayout->addWidget(m_centralWidget);
|
||||
hLayout->setSpacing(0);
|
||||
hLayout->setMargin(0);
|
||||
|
||||
setLayout(hLayout);
|
||||
setLayout(hLayout);
|
||||
}
|
||||
setAccessibleName(pluginInter->pluginName());
|
||||
setAttribute(Qt::WA_TranslucentBackground);
|
||||
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include "pluginsiteminterface_v20.h"
|
||||
#include "pluginadapter.h"
|
||||
#include "utils.h"
|
||||
#include "settingconfig.h"
|
||||
|
||||
#include <DNotifySender>
|
||||
#include <DSysInfo>
|
||||
@ -49,6 +50,7 @@ AbstractPluginsController::AbstractPluginsController(QObject *parent)
|
||||
|
||||
refreshPluginSettings();
|
||||
|
||||
connect(SETTINGCONFIG, &SettingConfig::valueChanged, this, &AbstractPluginsController::onConfigChanged);
|
||||
connect(m_dockDaemonInter, &DockInter::PluginSettingsSynced, this, &AbstractPluginsController::refreshPluginSettings, Qt::QueuedConnection);
|
||||
}
|
||||
|
||||
@ -95,7 +97,9 @@ void AbstractPluginsController::itemAdded(PluginsItemInterface * const itemInter
|
||||
pluginAdapter->setItemKey(itemKey);
|
||||
|
||||
m_pluginExists << pluginItem;
|
||||
pluginItemAdded(pluginItem, itemKey);
|
||||
m_pluginItemKeyMap[pluginItem] = itemKey;
|
||||
if (canAddedPlugin(pluginItem))
|
||||
pluginItemAdded(pluginItem, itemKey);
|
||||
}
|
||||
|
||||
void AbstractPluginsController::itemUpdate(PluginsItemInterface * const itemInter, const QString &itemKey)
|
||||
@ -106,6 +110,7 @@ void AbstractPluginsController::itemUpdate(PluginsItemInterface * const itemInte
|
||||
void AbstractPluginsController::itemRemoved(PluginsItemInterface * const itemInter, const QString &itemKey)
|
||||
{
|
||||
m_pluginExists.removeOne(itemInter);
|
||||
m_pluginItemKeyMap.remove(itemInter);
|
||||
pluginItemRemoved(getPluginInterface(itemInter), itemKey);
|
||||
}
|
||||
|
||||
@ -483,3 +488,56 @@ bool AbstractPluginsController::eventFilter(QObject *o, QEvent *e)
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool AbstractPluginsController::canAddRemove(PluginsItemInterface *plugin) const
|
||||
{
|
||||
if (!plugin->flags() & PluginFlag::Attribute_CanSetting)
|
||||
return false;
|
||||
|
||||
if (plugin->flags() & PluginFlag::Type_Tool)
|
||||
return true;
|
||||
|
||||
if (plugin->flags() & PluginFlag::Type_System)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool AbstractPluginsController::canAddedPlugin(PluginsItemInterface *plugin) const
|
||||
{
|
||||
if (!canAddRemove(plugin))
|
||||
return true;
|
||||
|
||||
const QStringList configPlugins = SETTINGCONFIG->value("Dock_Quick_Plugin_Name").toStringList();
|
||||
return configPlugins.contains(plugin->pluginName());
|
||||
}
|
||||
|
||||
void AbstractPluginsController::onConfigChanged(const QString &key, const QVariant &value)
|
||||
{
|
||||
QStringList pluginNames = value.toStringList();
|
||||
if (key == "Dock_Quick_Plugin_Name") {
|
||||
// 这里只处理工具插件(回收站)和系统插件(电源插件)
|
||||
for (PluginsItemInterface *plugin : pluginCurrent()) {
|
||||
if (!canAddRemove(plugin))
|
||||
continue;
|
||||
|
||||
const QString itemKey = m_pluginItemKeyMap.value(plugin);
|
||||
if (!pluginNames.contains(plugin->pluginName()) && pluginIsLoaded(plugin)) {
|
||||
// 如果当前配置中不包含当前插件,但是当前插件已经加载,那么就移除该插件
|
||||
pluginItemRemoved(plugin, itemKey);
|
||||
QWidget *itemWidget = plugin->itemWidget(itemKey);
|
||||
if (itemWidget)
|
||||
itemWidget->setVisible(false);
|
||||
} else if (pluginNames.contains(plugin->pluginName()) && !pluginIsLoaded(plugin)) {
|
||||
// 如果当前配置中包含当前插件,但是当前插件并未加载,那么就加载该插件
|
||||
pluginItemAdded(plugin, itemKey);
|
||||
// 只有工具插件是通过QWidget的方式进行显示的,因此,这里只处理工具插件
|
||||
if (plugin->flags() & PluginFlag::Type_Tool) {
|
||||
QWidget *itemWidget = plugin->itemWidget(itemKey);
|
||||
if (itemWidget)
|
||||
itemWidget->setVisible(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -62,6 +62,17 @@ public:
|
||||
Q_SIGNALS:
|
||||
void pluginLoaderFinished();
|
||||
|
||||
protected:
|
||||
virtual bool pluginIsLoaded(PluginsItemInterface *itemInter) { return true; }
|
||||
|
||||
QObject *pluginItemAt(PluginsItemInterface * const itemInter, const QString &itemKey) const;
|
||||
PluginsItemInterface *pluginInterAt(const QString &itemKey);
|
||||
PluginsItemInterface *pluginInterAt(QObject *destItem);
|
||||
bool eventFilter(QObject *o, QEvent *e) override;
|
||||
|
||||
bool canAddRemove(PluginsItemInterface *plugin) const;
|
||||
bool canAddedPlugin(PluginsItemInterface *plugin) const;
|
||||
|
||||
private:
|
||||
// implements PluginProxyInterface
|
||||
void saveValue(PluginsItemInterface *const itemInter, const QString &key, const QVariant &value) override;
|
||||
@ -74,15 +85,8 @@ private:
|
||||
void requestWindowAutoHide(PluginsItemInterface * const itemInter, const QString &itemKey, const bool autoHide) override;
|
||||
void requestRefreshWindowVisible(PluginsItemInterface * const itemInter, const QString &itemKey) override;
|
||||
void requestSetAppletVisible(PluginsItemInterface * const itemInter, const QString &itemKey, const bool visible) override;
|
||||
|
||||
PluginsItemInterface *getPluginInterface(PluginsItemInterface * const itemInter);
|
||||
|
||||
protected:
|
||||
QObject *pluginItemAt(PluginsItemInterface * const itemInter, const QString &itemKey) const;
|
||||
PluginsItemInterface *pluginInterAt(const QString &itemKey);
|
||||
PluginsItemInterface *pluginInterAt(QObject *destItem);
|
||||
bool eventFilter(QObject *o, QEvent *e) override;
|
||||
|
||||
protected Q_SLOTS:
|
||||
void startLoader(PluginLoader *loader);
|
||||
|
||||
@ -92,6 +96,7 @@ private slots:
|
||||
void loadPlugin(const QString &pluginFile);
|
||||
void initPlugin(PluginsItemInterface *interface);
|
||||
void refreshPluginSettings();
|
||||
void onConfigChanged(const QString &key, const QVariant &value);
|
||||
|
||||
private:
|
||||
QDBusConnectionInterface *m_dbusDaemonInterface;
|
||||
@ -103,6 +108,7 @@ private:
|
||||
// filepath, interface, loaded
|
||||
QMap<QPair<QString, PluginsItemInterface *>, bool> m_pluginLoadMap;
|
||||
QList<PluginsItemInterface *> m_pluginExists;
|
||||
QMap<PluginsItemInterface *, QString> m_pluginItemKeyMap;
|
||||
|
||||
QJsonObject m_pluginSettingsObject;
|
||||
QMap<qulonglong, PluginAdapter *> m_pluginAdapterMap;
|
||||
|
@ -45,6 +45,7 @@ DockTrayWindow::DockTrayWindow(DockInter *dockInter, QWidget *parent)
|
||||
, m_position(Dock::Position::Bottom)
|
||||
, m_displayMode(Dock::DisplayMode::Efficient)
|
||||
, m_mainBoxLayout(new QBoxLayout(QBoxLayout::Direction::RightToLeft, this))
|
||||
, m_frontWidget(new QWidget(this))
|
||||
, m_toolWidget(new QWidget(this))
|
||||
, m_toolLayout(new QBoxLayout(QBoxLayout::RightToLeft, m_toolWidget))
|
||||
, m_toolLineLabel(new QLabel(this))
|
||||
@ -78,6 +79,7 @@ void DockTrayWindow::setDisplayMode(const Dock::DisplayMode &displayMode)
|
||||
{
|
||||
m_displayMode = displayMode;
|
||||
moveToolPlugin();
|
||||
updateToolWidget();
|
||||
// 如果当前模式为高效模式,则设置当前的trayView为其计算位置的参照
|
||||
if (displayMode == Dock::DisplayMode::Efficient)
|
||||
ExpandIconWidget::popupTrayView()->setReferGridView(m_trayView);
|
||||
@ -131,6 +133,9 @@ void DockTrayWindow::resizeEvent(QResizeEvent *event)
|
||||
void DockTrayWindow::paintEvent(QPaintEvent *event)
|
||||
{
|
||||
QWidget::paintEvent(event);
|
||||
if (!m_toolLineLabel->isVisible())
|
||||
return;
|
||||
|
||||
QPainter painter(this);
|
||||
QColor color;
|
||||
if (DGuiApplicationHelper::instance()->themeType() == DGuiApplicationHelper::LightType) {
|
||||
@ -271,6 +276,13 @@ void DockTrayWindow::moveToolPlugin()
|
||||
}
|
||||
}
|
||||
|
||||
void DockTrayWindow::updateToolWidget()
|
||||
{
|
||||
m_toolWidget->setVisible(m_toolLayout->count() > 0);
|
||||
m_toolLineLabel->setVisible(m_toolLayout->count() > 0);
|
||||
m_frontWidget->setVisible(m_toolLayout->count() > 0);
|
||||
}
|
||||
|
||||
void DockTrayWindow::initUi()
|
||||
{
|
||||
m_toolLayout->setContentsMargins(0, 0, 0, 0);
|
||||
@ -279,7 +291,7 @@ void DockTrayWindow::initUi()
|
||||
m_systemPuginWidget->setDisplayMode(Dock::DisplayMode::Efficient);
|
||||
m_mainBoxLayout->setContentsMargins(0, 0, 0, 0);
|
||||
m_mainBoxLayout->setSpacing(0);
|
||||
m_mainBoxLayout->addSpacing(FRONTSPACING);
|
||||
m_mainBoxLayout->addWidget(m_frontWidget);
|
||||
m_mainBoxLayout->addWidget(m_toolWidget);
|
||||
m_mainBoxLayout->addSpacing(SPLITESPACE);
|
||||
m_mainBoxLayout->addWidget(m_toolLineLabel);
|
||||
@ -293,6 +305,7 @@ void DockTrayWindow::initUi()
|
||||
m_toolLineLabel->setFixedSize(0, 0);
|
||||
|
||||
m_mainBoxLayout->addStretch();
|
||||
updateToolWidget();
|
||||
}
|
||||
|
||||
void DockTrayWindow::initConnection()
|
||||
@ -353,6 +366,7 @@ void DockTrayWindow::onUpdateComponentSize()
|
||||
case Dock::Position::Left:
|
||||
case Dock::Position::Right:
|
||||
m_toolLineLabel->setFixedSize(width() * 0.6, SPLITERSIZE);
|
||||
m_frontWidget->setFixedSize(QWIDGETSIZE_MAX, FRONTSPACING);
|
||||
m_dateTimeWidget->setFixedSize(QWIDGETSIZE_MAX, m_dateTimeWidget->suitableSize().height());
|
||||
m_systemPuginWidget->setFixedSize(QWIDGETSIZE_MAX, m_systemPuginWidget->suitableSize().height());
|
||||
m_quickIconWidget->setFixedSize(QWIDGETSIZE_MAX, m_quickIconWidget->suitableSize().height());
|
||||
@ -361,6 +375,7 @@ void DockTrayWindow::onUpdateComponentSize()
|
||||
case Dock::Position::Top:
|
||||
case Dock::Position::Bottom:
|
||||
m_toolLineLabel->setFixedSize(SPLITERSIZE, height() * 0.6);
|
||||
m_frontWidget->setFixedSize(FRONTSPACING, QWIDGETSIZE_MAX);
|
||||
m_dateTimeWidget->setFixedSize(m_dateTimeWidget->suitableSize().width(), QWIDGETSIZE_MAX);
|
||||
m_systemPuginWidget->setFixedSize(m_systemPuginWidget->suitableSize().width(), QWIDGETSIZE_MAX);
|
||||
m_quickIconWidget->setFixedSize(m_quickIconWidget->suitableSize().width(), QWIDGETSIZE_MAX);
|
||||
@ -380,6 +395,7 @@ void DockTrayWindow::onItemAdded(PluginsItemInterface *itemInter)
|
||||
pluginItem->setVisible(true);
|
||||
|
||||
m_toolLayout->addWidget(pluginItem);
|
||||
updateToolWidget();
|
||||
|
||||
Q_EMIT requestUpdate();
|
||||
}
|
||||
@ -396,6 +412,7 @@ void DockTrayWindow::onItemRemove(PluginsItemInterface *itemInter)
|
||||
continue;
|
||||
|
||||
m_toolLayout->removeWidget(pluginItem);
|
||||
updateToolWidget();
|
||||
|
||||
Q_EMIT requestUpdate();
|
||||
break;
|
||||
|
@ -68,6 +68,7 @@ private:
|
||||
void resizeTool() const;
|
||||
bool pluginExists(PluginsItemInterface *itemInter) const;
|
||||
void moveToolPlugin();
|
||||
void updateToolWidget();
|
||||
|
||||
private Q_SLOTS:
|
||||
void onUpdateComponentSize();
|
||||
@ -80,6 +81,7 @@ private:
|
||||
Dock::Position m_position;
|
||||
Dock::DisplayMode m_displayMode;
|
||||
QBoxLayout *m_mainBoxLayout;
|
||||
QWidget *m_frontWidget;
|
||||
QWidget *m_toolWidget;
|
||||
QBoxLayout *m_toolLayout;
|
||||
QLabel *m_toolLineLabel;
|
||||
|
@ -371,6 +371,7 @@ void MainPanelControl::setPositonValue(Dock::Position position)
|
||||
|
||||
m_position = position;
|
||||
m_tray->setPositon(position);
|
||||
m_toolHelper->setPosition(position);
|
||||
|
||||
QMetaObject::invokeMethod(this, &MainPanelControl::updateMainPanelLayout, Qt::QueuedConnection);
|
||||
}
|
||||
@ -428,9 +429,6 @@ void MainPanelControl::removeItem(DockItem *item)
|
||||
case DockItem::Placeholder:
|
||||
m_recentHelper->removeAppItem(item);
|
||||
break;
|
||||
case DockItem::Plugins:
|
||||
m_toolHelper->removePluginItem(item);
|
||||
break;
|
||||
case DockItem::AppMultiWindow:
|
||||
m_multiHelper->removeMultiWindow(static_cast<AppMultiItem *>(item));
|
||||
break;
|
||||
@ -908,7 +906,6 @@ DockItem *MainPanelControl::dropTargetItem(DockItem *sourceItem, QPoint point)
|
||||
return targetItem;
|
||||
}
|
||||
|
||||
|
||||
void MainPanelControl::updateDisplayMode()
|
||||
{
|
||||
updateModeChange();
|
||||
@ -918,7 +915,6 @@ void MainPanelControl::updateDisplayMode()
|
||||
void MainPanelControl::updateModeChange()
|
||||
{
|
||||
m_toolAreaWidget->setVisible(m_displayMode == DisplayMode::Fashion);
|
||||
m_toolSonAreaWidget->setVisible(m_displayMode == DisplayMode::Fashion);
|
||||
onRecentVisibleChanged(m_recentHelper->recentIsVisible());
|
||||
onDockAppVisibleChanged(m_recentHelper->dockAppIsVisible());
|
||||
onToolVisibleChanged(m_toolHelper->toolIsVisible());
|
||||
|
@ -177,14 +177,22 @@ QSize TrayManagerWindow::suitableSize(const Dock::Position &position) const
|
||||
{
|
||||
QMargins m = m_mainLayout->contentsMargins();
|
||||
if (position == Dock::Position::Top || position == Dock::Position::Bottom) {
|
||||
return QSize(appDatetimeSize(position) +
|
||||
m_systemPluginWidget->suitableSize(position).width() + m_mainLayout->spacing() +
|
||||
m.left() + m.right(), QWIDGETSIZE_MAX);
|
||||
int width = appDatetimeSize(position);
|
||||
int systemWidgetWidth = m_systemPluginWidget->suitableSize(position).width();
|
||||
if (systemWidgetWidth > 0) {
|
||||
width += systemWidgetWidth + m_mainLayout->spacing();
|
||||
}
|
||||
width += m.left() + m.right();
|
||||
return QSize(width, QWIDGETSIZE_MAX);
|
||||
}
|
||||
|
||||
return QSize(QWIDGETSIZE_MAX, appDatetimeSize(position) +
|
||||
m_systemPluginWidget->suitableSize(position).height() + m_mainLayout->spacing() +
|
||||
m.top() + m.bottom());
|
||||
int height = appDatetimeSize(position);
|
||||
int systemWidgetHeight = m_systemPluginWidget->suitableSize(position).height();
|
||||
if (systemWidgetHeight > 0) {
|
||||
height += systemWidgetHeight + m_mainLayout->spacing();
|
||||
}
|
||||
height += m.top() + m.bottom();
|
||||
return QSize(QWIDGETSIZE_MAX, height);
|
||||
}
|
||||
|
||||
// 用于返回需要绘制的圆形区域
|
||||
|
Loading…
x
Reference in New Issue
Block a user