@@ -29,6 +29,8 @@
29class LauncherBackendItem
29class LauncherBackendItem
32+ LauncherBackendItem(): pinned(false) {}
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)
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);
80 syncToAccounts();
76 syncToAccounts();
83QString LauncherBackend::desktopFile(const QString &appId) const
79QString LauncherBackend::desktopFile(const QString &appId) const
85− if (m_itemCache.contains(appId)) {
81+ LauncherBackendItem *item = m_itemCache.value(appId);
86− return m_itemCache.value(appId)->desktopFile;
83+ return item->desktopFile;
89 return findDesktopFile(appId);
86 return findDesktopFile(appId);
@@ -91,8 +88,9 @@ QString LauncherBackend::desktopFile(const QString &appId) const
92QString LauncherBackend::displayName(const QString &appId) const
89QString LauncherBackend::displayName(const QString &appId) const
94− if (m_itemCache.contains(appId)) {
91+ LauncherBackendItem *item = m_itemCache.value(appId);
95− return m_itemCache.value(appId)->displayName;
93+ return item->displayName;
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
110 QString iconName;
108 QString iconName;
111− if (m_itemCache.contains(appId)) {
109+ LauncherBackendItem *item = m_itemCache.value(appId);
112− iconName = m_itemCache.value(appId)->icon;
111+ iconName = item->icon;
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
129bool LauncherBackend::isPinned(const QString &appId) const
128bool LauncherBackend::isPinned(const QString &appId) const
131− if (m_itemCache.contains(appId)) {
132− return m_itemCache.value(appId)->pinned;
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;
142 return false;
134 return false;
@@ -149,6 +141,10 @@ void LauncherBackend::setPinned(const QString &appId, bool pinned)
151 LauncherBackendItem *item = m_itemCache.value(appId);
143 LauncherBackendItem *item = m_itemCache.value(appId);
145+ item = new LauncherBackendItem();
146+ m_itemCache.insert(appId, item);
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)
289 QString appId = details.value("id").toString();
285 QString appId = details.value("id").toString();
291− if (m_itemCache.contains(appId)) {
287+ LauncherBackendItem *item = m_itemCache.value(appId);
292− delete m_itemCache.value(appId);
288+ if (item) {
295− LauncherBackendItem *item = new LauncherBackendItem();
292+ item = new LauncherBackendItem();
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();