diff --git a/frame/controller/dockitemmanager.cpp b/frame/controller/dockitemmanager.cpp index f72550831..f8ea0ea30 100644 --- a/frame/controller/dockitemmanager.cpp +++ b/frame/controller/dockitemmanager.cpp @@ -68,7 +68,7 @@ DockItemManager::DockItemManager(QObject *parent) connect(m_pluginsInter, &DockPluginsController::pluginItemInserted, this, &DockItemManager::pluginItemInserted, Qt::QueuedConnection); connect(m_pluginsInter, &DockPluginsController::pluginItemRemoved, this, &DockItemManager::pluginItemRemoved, Qt::QueuedConnection); connect(m_pluginsInter, &DockPluginsController::pluginItemUpdated, this, &DockItemManager::itemUpdated, Qt::QueuedConnection); - connect(m_pluginsInter, &DockPluginsController::fashionTraySizeChanged, this, &DockItemManager::fashionTraySizeChanged, Qt::QueuedConnection); + connect(m_pluginsInter, &DockPluginsController::trayVisableCountChanged, this, &DockItemManager::trayVisableCountChanged, Qt::QueuedConnection); // 刷新图标 QMetaObject::invokeMethod(this, "refershItemsIcon", Qt::QueuedConnection); diff --git a/frame/controller/dockitemmanager.h b/frame/controller/dockitemmanager.h index e278f10bb..24e4da601 100644 --- a/frame/controller/dockitemmanager.h +++ b/frame/controller/dockitemmanager.h @@ -50,7 +50,7 @@ signals: void itemInserted(const int index, DockItem *item) const; void itemRemoved(DockItem *item) const; void itemUpdated(DockItem *item) const; - void fashionTraySizeChanged(const QSize &traySize) const; + void trayVisableCountChanged(const int &count) const; void requestWindowAutoHide(const bool autoHide) const; void requestRefershWindowVisible() const; diff --git a/frame/controller/dockpluginscontroller.cpp b/frame/controller/dockpluginscontroller.cpp index 647bee7c0..babfb149e 100644 --- a/frame/controller/dockpluginscontroller.cpp +++ b/frame/controller/dockpluginscontroller.cpp @@ -47,8 +47,8 @@ void DockPluginsController::itemAdded(PluginsItemInterface *const itemInter, con if (item->graphicsEffect()) { item->graphicsEffect()->setEnabled(false); } - connect(static_cast(item), &TrayPluginItem::fashionTraySizeChanged, - this, &DockPluginsController::fashionTraySizeChanged, Qt::UniqueConnection); + connect(static_cast(item), &TrayPluginItem::trayVisableCountChanged, + this, &DockPluginsController::trayVisableCountChanged, Qt::UniqueConnection); } else { item = new PluginsItem(itemInter, itemKey); } diff --git a/frame/controller/dockpluginscontroller.h b/frame/controller/dockpluginscontroller.h index 2084bc036..cc029854e 100644 --- a/frame/controller/dockpluginscontroller.h +++ b/frame/controller/dockpluginscontroller.h @@ -58,7 +58,7 @@ signals: void pluginItemInserted(PluginsItem *pluginItem) const; void pluginItemRemoved(PluginsItem *pluginItem) const; void pluginItemUpdated(PluginsItem *pluginItem) const; - void fashionTraySizeChanged(const QSize &traySize) const; + void trayVisableCountChanged(const int &count) const; private: void loadLocalPlugins(); diff --git a/frame/item/traypluginitem.cpp b/frame/item/traypluginitem.cpp index 7eb16f8a2..3f3c8c5e4 100644 --- a/frame/item/traypluginitem.cpp +++ b/frame/item/traypluginitem.cpp @@ -42,6 +42,11 @@ void TrayPluginItem::setRightSplitVisible(const bool visible) QMetaObject::invokeMethod(centralWidget(), "setRightSplitVisible", Qt::QueuedConnection, Q_ARG(bool, visible)); } +int TrayPluginItem::trayVisableItemCount() +{ + return m_trayVisableItemCount; +} + bool TrayPluginItem::eventFilter(QObject *watched, QEvent *e) { // 时尚模式下 @@ -61,8 +66,11 @@ bool TrayPluginItem::eventFilter(QObject *watched, QEvent *e) if (watched == centralWidget() && e->type() == QEvent::DynamicPropertyChange) { const QString &propertyName = static_cast(e)->propertyName(); - if (propertyName == "FashionTraySize") { - Q_EMIT fashionTraySizeChanged(watched->property("FashionTraySize").toSize()); + if (propertyName == "TrayVisableItemCount") { + m_trayVisableItemCount = watched->property("TrayVisableItemCount").toInt(); + + qDebug()<<"++++++++++++++++"< #include @@ -336,9 +337,11 @@ void FashionTrayItem::normalWrapperToAttentionWrapper(FashionTrayWidgetWrapper * void FashionTrayItem::requestResize() { - // 此属性用来通知dock实现动画,目前已经失效,动画效果在托盘实现 -// setProperty("FashionTraySize", sizeHint()); -m_leftSpace->setVisible(!m_controlWidget->expanded()); + // 通知dock,当前托盘有几个图标显示,用来计算图标大小 + m_leftSpace->setVisible(!m_controlWidget->expanded()); + + int count = m_normalContainer->itemCount() + m_holdContainer->itemCount() + m_attentionContainer->itemCount(); + setProperty("TrayVisableItemCount", count + 1); // +1 : m_controlWidget } void FashionTrayItem::refreshHoldContainerPosition()