mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-04 09:23:03 +00:00
optimize systray plugin
Change-Id: I8126005aa2efbe9d7c6d0998b73372c6f3e72c38
This commit is contained in:
parent
0910dc5e90
commit
3607e87f69
@ -73,7 +73,8 @@ DockItemController::DockItemController(QObject *parent)
|
||||
connect(m_appInter, &DBusDock::EntryAdded, this, &DockItemController::appItemAdded);
|
||||
connect(m_appInter, &DBusDock::EntryRemoved, this, &DockItemController::appItemRemoved);
|
||||
|
||||
connect(m_pluginsInter, &DockPluginsController::pluginItemInserted, this, &DockItemController::pluginsItemInserted, Qt::QueuedConnection);
|
||||
connect(m_pluginsInter, &DockPluginsController::pluginItemInserted, this, &DockItemController::pluginItemInserted, Qt::QueuedConnection);
|
||||
connect(m_pluginsInter, &DockPluginsController::pluginItemRemoved, this, &DockItemController::pluginItemRemoved, Qt::QueuedConnection);
|
||||
}
|
||||
|
||||
void DockItemController::appItemAdded(const QDBusObjectPath &path, const int index)
|
||||
@ -115,7 +116,7 @@ void DockItemController::appItemRemoved(const QString &appId)
|
||||
}
|
||||
}
|
||||
|
||||
void DockItemController::pluginsItemInserted(PluginsItem *item)
|
||||
void DockItemController::pluginItemInserted(PluginsItem *item)
|
||||
{
|
||||
// find first plugins item position
|
||||
int firstPluginPosition = -1;
|
||||
@ -152,3 +153,9 @@ void DockItemController::pluginsItemInserted(PluginsItem *item)
|
||||
m_itemList.insert(insertIndex, item);
|
||||
emit itemInserted(insertIndex, item);
|
||||
}
|
||||
|
||||
void DockItemController::pluginItemRemoved(PluginsItem *item)
|
||||
{
|
||||
emit itemRemoved(item);
|
||||
m_itemList.removeOne(item);
|
||||
}
|
||||
|
@ -31,7 +31,8 @@ private:
|
||||
explicit DockItemController(QObject *parent = 0);
|
||||
void appItemAdded(const QDBusObjectPath &path, const int index);
|
||||
void appItemRemoved(const QString &appId);
|
||||
void pluginsItemInserted(PluginsItem *item);
|
||||
void pluginItemInserted(PluginsItem *item);
|
||||
void pluginItemRemoved(PluginsItem *item);
|
||||
|
||||
private:
|
||||
QList<DockItem *> m_itemList;
|
||||
|
@ -36,6 +36,18 @@ void DockPluginsController::itemUpdate(PluginsItemInterface * const itemInter, c
|
||||
item->update();
|
||||
}
|
||||
|
||||
void DockPluginsController::itemRemoved(PluginsItemInterface * const itemInter, const QString &itemKey)
|
||||
{
|
||||
PluginsItem *item = pluginItemAt(itemInter, itemKey);
|
||||
|
||||
Q_ASSERT(item);
|
||||
|
||||
emit pluginItemRemoved(item);
|
||||
|
||||
m_pluginList[itemInter].remove(itemKey);
|
||||
item->deleteLater();
|
||||
}
|
||||
|
||||
void DockPluginsController::loadPlugins()
|
||||
{
|
||||
// Q_ASSERT(m_pluginLoaderList.isEmpty());
|
||||
|
@ -21,9 +21,11 @@ public:
|
||||
// implements PluginProxyInterface
|
||||
void itemAdded(PluginsItemInterface * const itemInter, const QString &itemKey);
|
||||
void itemUpdate(PluginsItemInterface * const itemInter, const QString &itemKey);
|
||||
void itemRemoved(PluginsItemInterface * const itemInter, const QString &itemKey);
|
||||
|
||||
signals:
|
||||
void pluginItemInserted(PluginsItem *pluginsItem) const;
|
||||
void pluginItemInserted(PluginsItem *pluginItem) const;
|
||||
void pluginItemRemoved(PluginsItem *pluginItem) const;
|
||||
|
||||
private slots:
|
||||
void loadPlugins();
|
||||
|
@ -27,7 +27,7 @@ MainPanel::MainPanel(QWidget *parent)
|
||||
"}");
|
||||
|
||||
connect(m_itemController, &DockItemController::itemInserted, this, &MainPanel::itemInserted);
|
||||
connect(m_itemController, &DockItemController::itemRemoved, this, &MainPanel::itemRemoved);
|
||||
connect(m_itemController, &DockItemController::itemRemoved, this, &MainPanel::itemRemoved, Qt::DirectConnection);
|
||||
connect(m_itemController, &DockItemController::itemMoved, this, &MainPanel::itemMoved);
|
||||
connect(m_itemAdjustTimer, &QTimer::timeout, this, &MainPanel::adjustItemSize);
|
||||
|
||||
@ -165,7 +165,6 @@ void MainPanel::adjustItemSize()
|
||||
const QList<DockItem *> itemList = m_itemController->itemList();
|
||||
for (auto item : itemList)
|
||||
{
|
||||
// item->setVisible(true);
|
||||
QMetaObject::invokeMethod(item, "setVisible", Qt::QueuedConnection, Q_ARG(bool, true));
|
||||
|
||||
switch (item->itemType())
|
||||
@ -283,6 +282,8 @@ void MainPanel::itemInserted(const int index, DockItem *item)
|
||||
void MainPanel::itemRemoved(DockItem *item)
|
||||
{
|
||||
m_itemLayout->removeWidget(item);
|
||||
|
||||
m_itemAdjustTimer->start();
|
||||
}
|
||||
|
||||
void MainPanel::itemMoved(DockItem *item, const int index)
|
||||
|
@ -11,6 +11,7 @@ class PluginProxyInterface
|
||||
public:
|
||||
virtual void itemAdded(PluginsItemInterface * const itemInter, const QString &itemKey) = 0;
|
||||
virtual void itemUpdate(PluginsItemInterface * const itemInter, const QString &itemKey) = 0;
|
||||
virtual void itemRemoved(PluginsItemInterface * const itemInter, const QString &itemKey) = 0;
|
||||
};
|
||||
|
||||
#endif // PLUGINPROXYINTERFACE_H
|
||||
|
@ -57,5 +57,12 @@ void SystemTrayPlugin::pluginAdded(const quint32 winId)
|
||||
|
||||
void SystemTrayPlugin::pluginRemoved(const quint32 winId)
|
||||
{
|
||||
Q_UNUSED(winId);
|
||||
TrayWidget *widget = m_trayList[winId];
|
||||
if (!widget)
|
||||
return;
|
||||
|
||||
m_trayList.remove(winId);
|
||||
|
||||
m_proxyInter->itemRemoved(this, QString::number(winId));
|
||||
widget->deleteLater();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user