@@ -65,7 +65,7 @@ void LauncherBackend::setStoredApplications(const QStringList &appIds)
65 if (m_storedApps[i].pinned) {
65 if (m_storedApps[i].pinned) {
66 auto found = false;
66 auto found = false;
67 for (int j = 0; j < appIds.size(); j++) {
67 for (int j = 0; j < appIds.size(); j++) {
68− auto fullAppId = resolveAppId(appIds[j]);
68+ auto fullAppId = desktopFile(appIds[j]);
69 if (m_storedApps[i].settings->fileName() == fullAppId) {
69 if (m_storedApps[i].settings->fileName() == fullAppId) {
70 found = true;
70 found = true;
@@ -81,7 +81,7 @@ void LauncherBackend::setStoredApplications(const QStringList &appIds)
81 clearItems();
81 clearItems();
83 for (auto appId: appIds) {
83 for (auto appId: appIds) {
84− loadDesktopFile(appId, pinnedItems.contains(resolveAppId(appId)));
84+ loadDesktopFile(appId, pinnedItems.contains(desktopFile(appId)));
87 if (needToSync) {
87 if (needToSync) {
@@ -91,39 +91,32 @@ void LauncherBackend::setStoredApplications(const QStringList &appIds)
92QString LauncherBackend::desktopFile(const QString &appId) const
92QString LauncherBackend::desktopFile(const QString &appId) const
94− auto index = findItem(appId);
94+ QFileInfo fileInfo(QDir("/usr/share/applications"), appId);
95− if (index < 0) {
95+ return fileInfo.absoluteFilePath();
98− return resolveAppId(appId);
102QString LauncherBackend::displayName(const QString &appId) const
98QString LauncherBackend::displayName(const QString &appId) const
104− auto index = findItem(appId);
100+ auto desktopFile = parseDesktopFile(appId);
108− return m_storedApps[index].settings->value("Desktop Entry/Name").toString();
101+ auto displayName = desktopFile->value("Desktop Entry/Name").toString();
109− }
102+ delete desktopFile;
112QString LauncherBackend::icon(const QString &appId) const
106QString LauncherBackend::icon(const QString &appId) const
114− auto index = findItem(appId);
108+ auto desktopFile = parseDesktopFile(appId);
118− auto iconName = m_storedApps[index].settings->value("Desktop Entry/Icon").toString();
109+ auto iconName = desktopFile->value("Desktop Entry/Icon").toString();
119− if (!iconName.isEmpty()) {
112+ if (!iconName.isEmpty()) {
120− QFileInfo iconFileInfo(iconName);
113+ QFileInfo iconFileInfo(iconName);
121− if (iconFileInfo.isRelative()) {
114+ if (iconFileInfo.isRelative()) {
122− iconName = "image://gicon/" + iconName;
115+ iconName = "image://gicon/" + iconName;
129bool LauncherBackend::isPinned(const QString &appId) const
122bool LauncherBackend::isPinned(const QString &appId) const
@@ -184,12 +177,6 @@ void LauncherBackend::triggerQuickListAction(const QString &appId, const QString
184 Q_UNUSED(quickListId)
177 Q_UNUSED(quickListId)
187−QString LauncherBackend::resolveAppId(const QString &appId) const
189− QFileInfo fileInfo(QDir("/usr/share/applications"), appId);
190− return fileInfo.absoluteFilePath();
193void LauncherBackend::syncFromAccounts()
180void LauncherBackend::syncFromAccounts()
195 auto appIds = QStringList();
182 auto appIds = QStringList();
@@ -235,11 +222,16 @@ void LauncherBackend::syncToAccounts()
225+QSettings *LauncherBackend::parseDesktopFile(const QString &appId) const
227+ auto fullAppId = desktopFile(appId);
228+ return new QSettings(fullAppId, QSettings::IniFormat);
238bool LauncherBackend::loadDesktopFile(const QString &appId, bool isPinned)
231bool LauncherBackend::loadDesktopFile(const QString &appId, bool isPinned)
240 auto item = LauncherBackendItem();
233 auto item = LauncherBackendItem();
241− auto fullAppId = resolveAppId(appId);
234+ item.settings = parseDesktopFile(appId);
242− item.settings = new QSettings(fullAppId, QSettings::IniFormat);
243 item.pinned = isPinned;
235 item.pinned = isPinned;
244 m_storedApps.append(item);
236 m_storedApps.append(item);
245 return true; // QSettings doesn't really indicate a failure mode right now
237 return true; // QSettings doesn't really indicate a failure mode right now
@@ -247,7 +239,7 @@ bool LauncherBackend::loadDesktopFile(const QString &appId, bool isPinned)
248int LauncherBackend::findItem(const QString &appId) const
240int LauncherBackend::findItem(const QString &appId) const
250− auto fullAppId = resolveAppId(appId);
242+ auto fullAppId = desktopFile(appId);
251 for (int i = 0; i < m_storedApps.size(); i++) {
243 for (int i = 0; i < m_storedApps.size(); i++) {
252 if (m_storedApps[i].settings->fileName() == fullAppId) {
244 if (m_storedApps[i].settings->fileName() == fullAppId) {
253 return i;
245 return i;