bugfix: restart backend cause app-item repeated load

Change-Id: I828b1b25a5368d968a5f54a5120194b7a364f75d
This commit is contained in:
杨万青 2015-09-07 11:29:25 +08:00
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 changed files with 42 additions and 29 deletions

View File

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

View File

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

View File

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

View File

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

View File

@ -58,7 +58,7 @@ private:
QString m_menuInterfacePath = "";
DBusDockSetting m_dockSetting;
DBusMenuManager *m_menuManager = NULL;
DockModeData *dockCons = DockModeData::instance();
DockModeData *m_dockModeData = DockModeData::instance();
};

View File

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

View File

@ -73,6 +73,7 @@ public slots:
private:
void initActiveLabel();
void updateActiveLabelPos();
void onDockModeChanged();
private:
bool m_isInit = true;