feat(tray):add method and signal to tray item count

This commit is contained in:
shaojun 2019-10-29 14:53:35 +08:00
parent 4561065c6b
commit 357b141594
11 changed files with 38 additions and 14 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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();
}

View File

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

View File

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

View File

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

View File

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