bugfix: sort xids in ascending order

Change-Id: I77b4be0b34939f20cff918643778dec0aaf22281
This commit is contained in:
杨万青 2015-09-30 15:11:02 +08:00
parent 54cf3c2259
commit 2f222d22fc
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: Wed, 30 Sep 2015 15:21:53 +0800
Reviewed-on: https://cr.deepin.io/7530
Project: dde/dde-dock
Branch: refs/heads/master
2 changed files with 18 additions and 14 deletions

View File

@ -42,14 +42,13 @@ QWidget *AppItem::getApplet()
if (!m_preview)
initPreview();
QJsonArray tmpArray = QJsonDocument::fromJson(m_itemData.xidsJsonString.toUtf8()).array();
if (m_itemData.isActived && !tmpArray.isEmpty())
if (m_itemData.isActived && !m_itemData.xidTitleMap.isEmpty())
{
m_preview->clearUpPreview();
foreach (QJsonValue v, tmpArray) {
QString title = v.toObject().value("Title").toString();
int xid = v.toObject().value("Xid").toInt();
m_preview->addItem(title,xid);
//Returns a list containing all the keys in the map in ascending order.
QList<int> xids = m_itemData.xidTitleMap.keys();
foreach (int xid, xids) {
m_preview->addItem(m_itemData.xidTitleMap[xid], xid);
}
} else {
return NULL; //use getTitle() to show title by abstractdockitem
@ -210,9 +209,9 @@ void AppItem::initData()
m_itemData.title = dataMap.value("title");
m_itemData.iconPath = dataMap.value("icon");
m_itemData.menuJsonString = dataMap.value("menu");
m_itemData.xidsJsonString = dataMap.value("app-xids");
updateXidTitleMap();
m_itemData.isActived = dataMap.value("app-status") == "active";
m_itemData.currentOpened = m_itemData.xidsJsonString.indexOf(QString::number(m_clientmanager->CurrentActiveWindow())) != -1;
m_itemData.currentOpened = m_itemData.xidTitleMap.keys().indexOf(m_clientmanager->CurrentActiveWindow().value()) != -1;
m_itemData.id = m_entryProxyer->id();
setActived(m_itemData.isActived);
@ -261,9 +260,14 @@ void AppItem::updateState()
m_appBackground->setIsActived(m_itemData.isActived);
}
void AppItem::updateXids()
void AppItem::updateXidTitleMap()
{
m_itemData.xidsJsonString = m_entryProxyer->data().value("app-xids");
m_itemData.xidTitleMap.clear();
QJsonArray nArray = QJsonDocument::fromJson(m_entryProxyer->data().value("app-xids").toUtf8()).array();
foreach (QJsonValue value, nArray) {
QJsonObject obj = value.toObject();
m_itemData.xidTitleMap.insert(obj.value("Xid").toInt(), obj.value("Title").toString());
}
}
void AppItem::updateMenuJsonString()
@ -275,7 +279,7 @@ void AppItem::onDbusDataChanged(const QString &, const QString &)
{
updateTitle();
updateState();
updateXids();
updateXidTitleMap();
updateMenuJsonString();
}
@ -358,7 +362,7 @@ void AppItem::reanchorIcon()
void AppItem::setCurrentOpened(uint value)
{
if (m_itemData.xidsJsonString.indexOf(QString::number(value)) != -1)
if (m_itemData.xidTitleMap.keys().indexOf(value) != -1)
{
m_itemData.currentOpened = true;
m_appBackground->setIsCurrentOpened(true);

View File

@ -29,7 +29,7 @@ struct AppItemData {
QString id;
QString iconPath;
QString title;
QString xidsJsonString;
QMap<int, QString> xidTitleMap;
QString menuJsonString;
bool isActived;
bool currentOpened;
@ -72,7 +72,7 @@ private:
void updateIcon();
void updateTitle();
void updateState();
void updateXids();
void updateXidTitleMap();
void updateMenuJsonString();
void onDbusDataChanged(const QString &, const QString &);