mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-04 17:33:05 +00:00
bugfix: restart backend cause app-item repeated load
Change-Id: I828b1b25a5368d968a5f54a5120194b7a364f75d
This commit is contained in:
parent
1f3b1794d3
commit
dac97f066d
Notes:
Deepin Code Review
2016-06-14 07:19:47 +00:00
Verified+1: Anonymous Coward #1000004 Code-Review+2: <mr.asianwang@gmail.com> Submitted-by: <mr.asianwang@gmail.com> Submitted-at: Mon, 07 Sep 2015 14:05:02 +0800 Reviewed-on: https://cr.deepin.io/6814 Project: dde/dde-dock Branch: refs/heads/master
@ -7,7 +7,7 @@ AppManager::AppManager(QObject *parent) : QObject(parent)
|
||||
connect(m_entryManager, &DBusEntryManager::Removed, this, &AppManager::onEntryRemoved);
|
||||
}
|
||||
|
||||
void AppManager::updateEntries()
|
||||
void AppManager::initEntries()
|
||||
{
|
||||
|
||||
LauncherItem * lItem = new LauncherItem();
|
||||
@ -33,30 +33,38 @@ void AppManager::onEntryAdded(const QDBusObjectPath &path)
|
||||
DBusEntryProxyer *entryProxyer = new DBusEntryProxyer(path.path());
|
||||
if (entryProxyer->isValid() && entryProxyer->type() == "App")
|
||||
{
|
||||
qWarning() << "entry add:" << path.path();
|
||||
AppItem *item = new AppItem();
|
||||
item->setEntryProxyer(entryProxyer);
|
||||
emit entryAdded(item);
|
||||
QString tmpId = item->getItemId();
|
||||
if (m_ids.indexOf(tmpId) != -1){
|
||||
item->deleteLater();
|
||||
}else{
|
||||
qWarning() << "entry add:" << tmpId;
|
||||
m_ids.append(tmpId);
|
||||
emit entryAdded(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void AppManager::onEntryRemoved(const QString &id)
|
||||
{
|
||||
qWarning() << "entry remove:" << id;
|
||||
m_ids.removeAll(id);
|
||||
emit entryRemoved(id);
|
||||
}
|
||||
|
||||
void AppManager::sortItemList()
|
||||
{
|
||||
QStringList dockedList = m_dockAppManager->DockedAppList().value();
|
||||
QStringList ids = m_initItemList.keys();
|
||||
m_ids = m_initItemList.keys();
|
||||
QStringList tmpIds = m_initItemList.keys();
|
||||
foreach (QString id, dockedList) { //For docked items
|
||||
int index = ids.indexOf(id);
|
||||
int index = tmpIds.indexOf(id);
|
||||
if (index != -1)
|
||||
emit entryAdded(m_initItemList.take(ids.at(index)));
|
||||
emit entryAdded(m_initItemList.take(tmpIds.at(index)));
|
||||
}
|
||||
ids = m_initItemList.keys();
|
||||
foreach (QString id, ids) { //For undocked items
|
||||
tmpIds = m_initItemList.keys();
|
||||
foreach (QString id, tmpIds) { //For undocked items
|
||||
emit entryAdded(m_initItemList.take(id));
|
||||
}
|
||||
}
|
||||
|
@ -14,7 +14,7 @@ class AppManager : public QObject
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit AppManager(QObject *parent = 0);
|
||||
void updateEntries();
|
||||
void initEntries();
|
||||
|
||||
signals:
|
||||
void entryAdded(AbstractDockItem *item);
|
||||
@ -26,6 +26,7 @@ private:
|
||||
void onEntryAdded(const QDBusObjectPath &path);
|
||||
|
||||
private:
|
||||
QStringList m_ids;
|
||||
DBusEntryManager *m_entryManager = NULL;
|
||||
DBusDockedAppManager *m_dockAppManager = new DBusDockedAppManager(this);
|
||||
QMap<QString, AbstractDockItem *> m_initItemList; //Juse for initialization <id, item>
|
||||
|
@ -141,7 +141,7 @@ void Panel::initAppManager()
|
||||
m_appManager = new AppManager(this);
|
||||
connect(m_appManager, &AppManager::entryAdded, this, &Panel::onAppItemAdd);
|
||||
connect(m_appManager, &AppManager::entryRemoved, this, &Panel::onAppItemRemove);
|
||||
m_appManager->updateEntries();
|
||||
m_appManager->initEntries();
|
||||
}
|
||||
|
||||
void Panel::initReflection()
|
||||
|
@ -32,13 +32,13 @@ void PanelMenu::showMenu(int x, int y)
|
||||
targetObj.insert("isDockMenu",QJsonValue(false));
|
||||
|
||||
QJsonArray contentArry;
|
||||
contentArry.append(createRadioItemObj("Fashion mode",ToFashionMode,DockModeGroup,dockCons->getDockMode() == Dock::FashionMode));
|
||||
contentArry.append(createRadioItemObj("Efficient mode",ToEfficientMode,DockModeGroup,dockCons->getDockMode() == Dock::EfficientMode));
|
||||
contentArry.append(createRadioItemObj("Classic mode",ToClassicMode,DockModeGroup,dockCons->getDockMode() == Dock::ClassicMode));
|
||||
contentArry.append(createRadioItemObj("Fashion mode",ToFashionMode,DockModeGroup,m_dockModeData->getDockMode() == Dock::FashionMode));
|
||||
contentArry.append(createRadioItemObj("Efficient mode",ToEfficientMode,DockModeGroup,m_dockModeData->getDockMode() == Dock::EfficientMode));
|
||||
contentArry.append(createRadioItemObj("Classic mode",ToClassicMode,DockModeGroup,m_dockModeData->getDockMode() == Dock::ClassicMode));
|
||||
contentArry.append(createItemObj("",OperationType(-1)));
|
||||
contentArry.append(createRadioItemObj("Keep showing",ToKeepShowing,HideModeGroup,dockCons->getHideMode() == Dock::KeepShowing));
|
||||
contentArry.append(createRadioItemObj("Keep hidden",ToKeepHidden,HideModeGroup,dockCons->getHideMode() == Dock::KeepHidden));
|
||||
contentArry.append(createRadioItemObj("Smart hide",ToSmartHide,HideModeGroup,dockCons->getHideMode() == Dock::SmartHide));
|
||||
contentArry.append(createRadioItemObj("Keep showing",ToKeepShowing,HideModeGroup,m_dockModeData->getHideMode() == Dock::KeepShowing));
|
||||
contentArry.append(createRadioItemObj("Keep hidden",ToKeepHidden,HideModeGroup,m_dockModeData->getHideMode() == Dock::KeepHidden));
|
||||
contentArry.append(createRadioItemObj("Smart hide",ToSmartHide,HideModeGroup,m_dockModeData->getHideMode() == Dock::SmartHide));
|
||||
contentArry.append(createItemObj("",OperationType(-1)));
|
||||
contentArry.append(createItemObj("Notification area setting",ToPluginSetting));
|
||||
|
||||
@ -89,37 +89,37 @@ void PanelMenu::onItemInvoked(const QString &itemId, bool result)
|
||||
void PanelMenu::changeToFashionMode()
|
||||
{
|
||||
qWarning() << "Change to fashion mode...";
|
||||
dockCons->setDockMode(Dock::FashionMode);
|
||||
m_dockModeData->setDockMode(Dock::FashionMode);
|
||||
}
|
||||
|
||||
void PanelMenu::changeToEfficientMode()
|
||||
{
|
||||
qWarning() << "Change to efficient mode...";
|
||||
dockCons->setDockMode(Dock::EfficientMode);
|
||||
m_dockModeData->setDockMode(Dock::EfficientMode);
|
||||
}
|
||||
|
||||
void PanelMenu::changeToClassicMode()
|
||||
{
|
||||
qWarning() << "Change to classic mode...";
|
||||
dockCons->setDockMode(Dock::ClassicMode);
|
||||
m_dockModeData->setDockMode(Dock::ClassicMode);
|
||||
}
|
||||
|
||||
void PanelMenu::changeToKeepShowing()
|
||||
{
|
||||
qWarning() << "Change to keep showing mode...";
|
||||
dockCons->setHideMode(Dock::KeepShowing);
|
||||
m_dockModeData->setHideMode(Dock::KeepShowing);
|
||||
}
|
||||
|
||||
void PanelMenu::changeToKeepHidden()
|
||||
{
|
||||
qWarning() << "Change to keep hidden mode...";
|
||||
dockCons->setHideMode(Dock::KeepHidden);
|
||||
m_dockModeData->setHideMode(Dock::KeepHidden);
|
||||
}
|
||||
|
||||
void PanelMenu::changeToSmartHide()
|
||||
{
|
||||
qWarning() << "Change to smart hide mode...";
|
||||
dockCons->setHideMode(Dock::SmartHide);
|
||||
m_dockModeData->setHideMode(Dock::SmartHide);
|
||||
}
|
||||
|
||||
QJsonObject PanelMenu::createItemObj(const QString &itemName, OperationType type)
|
||||
|
@ -58,7 +58,7 @@ private:
|
||||
QString m_menuInterfacePath = "";
|
||||
DBusDockSetting m_dockSetting;
|
||||
DBusMenuManager *m_menuManager = NULL;
|
||||
DockModeData *dockCons = DockModeData::instance();
|
||||
DockModeData *m_dockModeData = DockModeData::instance();
|
||||
|
||||
};
|
||||
|
||||
|
@ -176,17 +176,12 @@ void AppBackground::initActiveLabel()
|
||||
{
|
||||
m_activeLabel = new ActiveLabel(this);
|
||||
connect(m_activeLabel, &ActiveLabel::sizeChange, this, &AppBackground::updateActiveLabelPos);
|
||||
connect(DockModeData::instance(), &DockModeData::dockModeChanged, this, &AppBackground::onDockModeChanged);
|
||||
connect(m_activeLabel, &ActiveLabel::showAnimationFinish, [=]{
|
||||
if (m_isActived)
|
||||
m_activeLabel->show();
|
||||
m_bePress = false;
|
||||
});
|
||||
connect(DockModeData::instance(), &DockModeData::dockModeChanged, [=]{
|
||||
if (!getIsFashionMode())
|
||||
m_activeLabel->hide();
|
||||
else if (m_isActived)
|
||||
m_activeLabel->show();
|
||||
});
|
||||
}
|
||||
|
||||
void AppBackground::updateActiveLabelPos()
|
||||
@ -195,3 +190,11 @@ void AppBackground::updateActiveLabelPos()
|
||||
m_activeLabel->move((width() - m_activeLabel->width()) / 2, height() - m_activeLabel->height());
|
||||
}
|
||||
|
||||
void AppBackground::onDockModeChanged()
|
||||
{
|
||||
if (m_activeLabel && !getIsFashionMode())
|
||||
m_activeLabel->hide();
|
||||
else if (m_activeLabel && m_isActived)
|
||||
m_activeLabel->show();
|
||||
}
|
||||
|
||||
|
@ -73,6 +73,7 @@ public slots:
|
||||
private:
|
||||
void initActiveLabel();
|
||||
void updateActiveLabelPos();
|
||||
void onDockModeChanged();
|
||||
|
||||
private:
|
||||
bool m_isInit = true;
|
||||
|
Loading…
x
Reference in New Issue
Block a user