mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-03 00:15:21 +00:00
feat(tray):add method and signal to tray item count
This commit is contained in:
parent
4561065c6b
commit
357b141594
@ -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);
|
||||
|
@ -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;
|
||||
|
||||
|
@ -47,8 +47,8 @@ void DockPluginsController::itemAdded(PluginsItemInterface *const itemInter, con
|
||||
if (item->graphicsEffect()) {
|
||||
item->graphicsEffect()->setEnabled(false);
|
||||
}
|
||||
connect(static_cast<TrayPluginItem *>(item), &TrayPluginItem::fashionTraySizeChanged,
|
||||
this, &DockPluginsController::fashionTraySizeChanged, Qt::UniqueConnection);
|
||||
connect(static_cast<TrayPluginItem *>(item), &TrayPluginItem::trayVisableCountChanged,
|
||||
this, &DockPluginsController::trayVisableCountChanged, Qt::UniqueConnection);
|
||||
} else {
|
||||
item = new PluginsItem(itemInter, itemKey);
|
||||
}
|
||||
|
@ -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();
|
||||
|
@ -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<QDynamicPropertyChangeEvent *>(e)->propertyName();
|
||||
if (propertyName == "FashionTraySize") {
|
||||
Q_EMIT fashionTraySizeChanged(watched->property("FashionTraySize").toSize());
|
||||
if (propertyName == "TrayVisableItemCount") {
|
||||
m_trayVisableItemCount = watched->property("TrayVisableItemCount").toInt();
|
||||
|
||||
qDebug()<<"++++++++++++++++"<<m_trayVisableItemCount;
|
||||
Q_EMIT trayVisableCountChanged(m_trayVisableItemCount);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -35,12 +35,16 @@ public:
|
||||
|
||||
void setSuggestIconSize(QSize size);
|
||||
void setRightSplitVisible(const bool visible);
|
||||
int trayVisableItemCount();
|
||||
|
||||
Q_SIGNALS:
|
||||
void fashionTraySizeChanged(const QSize &traySize) const;
|
||||
void trayVisableCountChanged(const int &count) const;
|
||||
|
||||
private:
|
||||
bool eventFilter(QObject *watched, QEvent *e) Q_DECL_OVERRIDE;
|
||||
|
||||
private:
|
||||
int m_trayVisableItemCount = 0;
|
||||
};
|
||||
|
||||
#endif // TRAYPLUGINITEM_H
|
||||
|
@ -121,7 +121,7 @@ DockSettings::DockSettings(QWidget *parent)
|
||||
|
||||
connect(m_itemManager, &DockItemManager::itemInserted, this, &DockSettings::dockItemCountChanged, Qt::QueuedConnection);
|
||||
connect(m_itemManager, &DockItemManager::itemRemoved, this, &DockSettings::dockItemCountChanged, Qt::QueuedConnection);
|
||||
connect(m_itemManager, &DockItemManager::fashionTraySizeChanged, this, &DockSettings::onFashionTraySizeChanged, Qt::QueuedConnection);
|
||||
connect(m_itemManager, &DockItemManager::trayVisableCountChanged, this, &DockSettings::trayVisableCountChanged, Qt::QueuedConnection);
|
||||
|
||||
connect(m_displayInter, &DBusDisplay::PrimaryRectChanged, this, &DockSettings::primaryScreenChanged, Qt::QueuedConnection);
|
||||
connect(m_displayInter, &DBusDisplay::ScreenHeightChanged, this, &DockSettings::primaryScreenChanged, Qt::QueuedConnection);
|
||||
@ -482,7 +482,7 @@ void DockSettings::onOpacityChanged(const double value)
|
||||
emit opacityChanged(value * 255);
|
||||
}
|
||||
|
||||
void DockSettings::onFashionTraySizeChanged(const QSize &traySize)
|
||||
void DockSettings::trayVisableCountChanged(const int &count)
|
||||
{
|
||||
emit windowGeometryChanged();
|
||||
}
|
||||
|
@ -113,7 +113,7 @@ private slots:
|
||||
void resetFrontendGeometry();
|
||||
void updateForbidPostions();
|
||||
void onOpacityChanged(const double value);
|
||||
void onFashionTraySizeChanged(const QSize &traySize);
|
||||
void trayVisableCountChanged(const int &count);
|
||||
void onWindowSizeChanged();
|
||||
|
||||
private:
|
||||
|
@ -177,6 +177,14 @@ bool AbstractContainer::isEmpty()
|
||||
return m_wrapperList.isEmpty();
|
||||
}
|
||||
|
||||
int AbstractContainer::itemCount()
|
||||
{
|
||||
if(expand())
|
||||
return m_wrapperList.count();
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool AbstractContainer::containsWrapper(FashionTrayWidgetWrapper *wrapper)
|
||||
{
|
||||
for (auto w : m_wrapperList) {
|
||||
|
@ -28,6 +28,7 @@ public:
|
||||
void clearWrapper();
|
||||
void saveCurrentOrderToConfig();
|
||||
bool isEmpty();
|
||||
int itemCount();
|
||||
bool containsWrapper(FashionTrayWidgetWrapper *wrapper);
|
||||
bool containsWrapperByTrayWidget(AbstractTrayWidget *trayWidget);
|
||||
FashionTrayWidgetWrapper *wrapperByTrayWidget(AbstractTrayWidget *trayWidget);
|
||||
|
@ -22,6 +22,7 @@
|
||||
#include "fashiontrayitem.h"
|
||||
#include "fashiontray/fashiontrayconstants.h"
|
||||
#include "system-trays/systemtrayitem.h"
|
||||
#include "containers/abstractcontainer.h"
|
||||
|
||||
#include <QDebug>
|
||||
#include <QResizeEvent>
|
||||
@ -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()
|
||||
|
Loading…
x
Reference in New Issue
Block a user