39
40
void setId(const QString &id) {
43
GKeyFile *desktopInfo = g_key_file_new();
44
QString desktopFilename = resolveDesktopFilename(id);
46
gboolean loaded = g_key_file_load_from_file(desktopInfo,
47
desktopFilename.toUtf8().data(),
52
g_warning("Couldn't parse the desktop: %s", desktopFilename.toUtf8().data());
53
g_key_file_free(desktopInfo);
57
gchar *name = g_key_file_get_locale_string(desktopInfo,
58
G_KEY_FILE_DESKTOP_GROUP,
59
G_KEY_FILE_DESKTOP_KEY_NAME,
62
displayName = QString::fromUtf8(name);
64
gchar *icon = g_key_file_get_string(desktopInfo,
65
G_KEY_FILE_DESKTOP_GROUP,
66
G_KEY_FILE_DESKTOP_KEY_ICON,
68
gchar *path = g_key_file_get_string(desktopInfo,
69
G_KEY_FILE_DESKTOP_GROUP,
70
G_KEY_FILE_DESKTOP_KEY_PATH,
72
iconName = resolveIcon(QString::fromUtf8(icon),
73
QString::fromUtf8(path));
77
g_key_file_free(desktopInfo);
80
QString resolveDesktopFilename(const QString &id) {
42
81
QString localShare =
43
82
QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation);
44
QSettings desktopFile(QString("%1/applications/%2.desktop").
45
arg(localShare).arg(id),
46
QSettings::IniFormat);
47
desktopFile.beginGroup("Desktop Entry");
48
displayName = desktopFile.value("Name").toString();
49
iconName = resolveIcon(desktopFile.value("Icon").toString(),
50
desktopFile.value("Path").toString());
83
QString desktopFilename(QString("%1/applications/%2.desktop").
84
arg(localShare).arg(id));
85
if (QFile(desktopFilename).exists())
86
return desktopFilename;
88
/* search the directory for a matching filename */
89
QDir dir(QString("%1/applications").arg(localShare));
90
dir.setFilter(QDir::Files);
91
QStringList fileList = dir.entryList();
92
QString pattern = QString("%1*.desktop").arg(id);
93
for (int i = 0; i < fileList.count(); i++) {
94
/* stop at the first match */
95
if (QDir::match(pattern, fileList[i])) {
96
return QString("%1/applications/%2").arg(localShare).arg(fileList[i]);
100
qWarning() << "No desktop file found for app id: " << id;
53
104
QString resolveIcon(const QString &iconName, const QString &basePath) {