on xenial help sign in
fix issues from review
bc6b8f2Michael Zanetti
plugins/Unity/Launcher/backend/launcherbackend.cpp+21−24
@@ -29,6 +29,8 @@
29class LauncherBackendItem
29class LauncherBackendItem
30{
30{
31public:
31public:
32+ LauncherBackendItem(): pinned(false) {}
33+
32 QString desktopFile;
34 QString desktopFile;
33 QString displayName;
35 QString displayName;
34 QString icon;
36 QString icon;
@@ -71,19 +73,14 @@ void LauncherBackend::setStoredApplications(const QStringList &appIds)
71 }
73 }
72 }
74 }
73 m_storedApps = appIds;
75 m_storedApps = appIds;
74− Q_FOREACH(const QString &appId, m_storedApps) {
75− if (!m_itemCache.contains(appId)) {
76− LauncherBackendItem *item = new LauncherBackendItem();
77− m_itemCache.insert(appId, item);
78− }
79− }
80 syncToAccounts();
76 syncToAccounts();
81}
77}
82
78
83QString LauncherBackend::desktopFile(const QString &appId) const
79QString LauncherBackend::desktopFile(const QString &appId) const
84{
80{
85− if (m_itemCache.contains(appId)) {
81+ LauncherBackendItem *item = m_itemCache.value(appId);
82+ if (item) {
86− return m_itemCache.value(appId)->desktopFile;
83+ return item->desktopFile;
87 }
84 }
88
85
89 return findDesktopFile(appId);
86 return findDesktopFile(appId);
@@ -91,8 +88,9 @@ QString LauncherBackend::desktopFile(const QString &appId) const
91
88
92QString LauncherBackend::displayName(const QString &appId) const
89QString LauncherBackend::displayName(const QString &appId) const
93{
90{
94− if (m_itemCache.contains(appId)) {
91+ LauncherBackendItem *item = m_itemCache.value(appId);
92+ if (item) {
95− return m_itemCache.value(appId)->displayName;
93+ return item->displayName;
96 }
94 }
97
95
98 QString df = findDesktopFile(appId);
96 QString df = findDesktopFile(appId);
@@ -108,8 +106,9 @@ QString LauncherBackend::displayName(const QString &appId) const
108QString LauncherBackend::icon(const QString &appId) const
106QString LauncherBackend::icon(const QString &appId) const
109{
107{
110 QString iconName;
108 QString iconName;
111− if (m_itemCache.contains(appId)) {
109+ LauncherBackendItem *item = m_itemCache.value(appId);
110+ if (item) {
112− iconName = m_itemCache.value(appId)->icon;
111+ iconName = item->icon;
113 } else {
112 } else {
114 QString df = findDesktopFile(appId);
113 QString df = findDesktopFile(appId);
115 if (!df.isEmpty()) {
114 if (!df.isEmpty()) {
@@ -128,17 +127,10 @@ QString LauncherBackend::icon(const QString &appId) const
128
127
129bool LauncherBackend::isPinned(const QString &appId) const
128bool LauncherBackend::isPinned(const QString &appId) const
130{
129{
131− if (m_itemCache.contains(appId)) {
132− return m_itemCache.value(appId)->pinned;
133− }
134−
135− QString df = findDesktopFile(appId);
136− if (!df.isEmpty()) {
137− LauncherBackendItem *item = parseDesktopFile(df);
130+ LauncherBackendItem *item = m_itemCache.value(appId);
138− m_itemCache.insert(appId, item);
131+ if (item) {
139 return item->pinned;
132 return item->pinned;
140 }
133 }
141−
142 return false;
134 return false;
143}
135}
144
136
@@ -149,6 +141,10 @@ void LauncherBackend::setPinned(const QString &appId, bool pinned)
149 }
141 }
150
142
151 LauncherBackendItem *item = m_itemCache.value(appId);
143 LauncherBackendItem *item = m_itemCache.value(appId);
144+ if (!item) {
145+ item = new LauncherBackendItem();
146+ m_itemCache.insert(appId, item);
147+ }
152 if (item->pinned != pinned) {
148 if (item->pinned != pinned) {
153 item->pinned = pinned;
149 item->pinned = pinned;
154 syncToAccounts();
150 syncToAccounts();
@@ -288,11 +284,12 @@ void LauncherBackend::loadFromVariant(const QVariantMap &details)
288 }
284 }
289 QString appId = details.value("id").toString();
285 QString appId = details.value("id").toString();
290
286
291− if (m_itemCache.contains(appId)) {
287+ LauncherBackendItem *item = m_itemCache.value(appId);
292− delete m_itemCache.value(appId);
288+ if (item) {
289+ delete item;
293 }
290 }
294
291
295− LauncherBackendItem *item = new LauncherBackendItem();
292+ item = new LauncherBackendItem();
296
293
297 item->desktopFile = details.value("desktopFile").toString();
294 item->desktopFile = details.value("desktopFile").toString();
298 item->displayName = details.value("name").toString();
295 item->displayName = details.value("name").toString();