summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--wayland/democompositor/apps/README1
-rw-r--r--wayland/democompositor/apps/appentry.cpp2
-rw-r--r--wayland/democompositor/apps/appentry.h2
-rw-r--r--wayland/democompositor/apps/applistmodel.cpp13
-rw-r--r--wayland/democompositor/apps/applistmodel.h3
-rw-r--r--wayland/democompositor/apps/appparser.cpp3
-rw-r--r--wayland/democompositor/resources/apps/clock.app1
-rw-r--r--wayland/democompositor/resources/apps/maps.app1
-rw-r--r--wayland/democompositor/resources/apps/rss.app1
-rw-r--r--wayland/democompositor/resources/apps/stocqt.app1
-rw-r--r--wayland/democompositor/tests/apps/tst_appparser.cpp9
11 files changed, 31 insertions, 6 deletions
diff --git a/wayland/democompositor/apps/README b/wayland/democompositor/apps/README
index b804917..2f6fd77 100644
--- a/wayland/democompositor/apps/README
+++ b/wayland/democompositor/apps/README
@@ -16,6 +16,7 @@ Version The version of the specification
addressed. Currently version 1 Yes Number
Icon The icon to use for display Yes String
Name A user displayable name Yes String
+Id Reverse-DNS as unique application Id Yes String
Exec Application to execute to launch Yes String
Path The directory to search for the app No String
X-* Extensions to the specification No Any
diff --git a/wayland/democompositor/apps/appentry.cpp b/wayland/democompositor/apps/appentry.cpp
index cdb9ba8..ce94cad 100644
--- a/wayland/democompositor/apps/appentry.cpp
+++ b/wayland/democompositor/apps/appentry.cpp
@@ -53,5 +53,5 @@
AppEntry AppEntry::empty()
{
QString empty;
- return AppEntry{empty, empty, empty, empty, empty, QVariantMap()};
+ return AppEntry{empty, empty, empty, empty, empty, empty, QVariantMap()};
}
diff --git a/wayland/democompositor/apps/appentry.h b/wayland/democompositor/apps/appentry.h
index 4514331..4cdd581 100644
--- a/wayland/democompositor/apps/appentry.h
+++ b/wayland/democompositor/apps/appentry.h
@@ -62,6 +62,7 @@ class AppEntry {
Q_GADGET
Q_PROPERTY(QString iconName MEMBER iconName CONSTANT)
Q_PROPERTY(QString appName MEMBER appName CONSTANT)
+ Q_PROPERTY(QString appId MEMBER appId CONSTANT)
Q_PROPERTY(QString executableName MEMBER executableName CONSTANT)
Q_PROPERTY(QString executablePath MEMBER executablePath CONSTANT)
Q_PROPERTY(QVariantMap extensions MEMBER extensions CONSTANT)
@@ -69,6 +70,7 @@ public:
QString iconName;
QString appName;
+ QString appId;
QString executableName;
QString executablePath;
QString sourceFileName;
diff --git a/wayland/democompositor/apps/applistmodel.cpp b/wayland/democompositor/apps/applistmodel.cpp
index b0774f7..dfcc378 100644
--- a/wayland/democompositor/apps/applistmodel.cpp
+++ b/wayland/democompositor/apps/applistmodel.cpp
@@ -61,6 +61,7 @@ static QHash<int, QByteArray> modelRoles()
roles[AppListModel::App] = "appEntry";
roles[AppListModel::IconName] = "iconName";
roles[AppListModel::ApplicationName] = "applicationName";
+ roles[AppListModel::ApplicationId] = "applicationId";
roles[AppListModel::ExeuctableName] = "executableName";
roles[AppListModel::ExecutablePath] = "executablePath";
roles[AppListModel::SourceFileName] = "sourceFileName";
@@ -90,6 +91,8 @@ QVariant AppListModel::data(const QModelIndex& index, int role) const
return entry.iconName;
case ApplicationName:
return entry.appName;
+ case ApplicationId:
+ return entry.appId;
case ExeuctableName:
return entry.executableName;
case ExecutablePath:
@@ -206,3 +209,13 @@ QVector<AppEntry> AppListModel::removeEntries(const QVector<QString>& fileNames)
return removedEntries;
}
+
+QVariant AppListModel::findApplicationId(const QString& appId) const
+{
+ for (const auto& entry : m_rows) {
+ if (entry.appId == appId)
+ return QVariant::fromValue(entry);
+ }
+
+ return QVariant();
+}
diff --git a/wayland/democompositor/apps/applistmodel.h b/wayland/democompositor/apps/applistmodel.h
index 4662e8f..f2e61cc 100644
--- a/wayland/democompositor/apps/applistmodel.h
+++ b/wayland/democompositor/apps/applistmodel.h
@@ -67,6 +67,7 @@ public:
App = Qt::UserRole,
IconName,
ApplicationName,
+ ApplicationId,
ExeuctableName,
ExecutablePath,
SourceFileName,
@@ -76,6 +77,8 @@ public:
QVariant data(const QModelIndex& index, int role) const Q_DECL_OVERRIDE;
QHash<int, QByteArray> roleNames() const Q_DECL_OVERRIDE;
+ Q_INVOKABLE QVariant findApplicationId(const QString& appId) const;
+
Q_SIGNALS:
void appRemoved(const AppEntry& appEntry);
diff --git a/wayland/democompositor/apps/appparser.cpp b/wayland/democompositor/apps/appparser.cpp
index 38cc0b2..528cb8f 100644
--- a/wayland/democompositor/apps/appparser.cpp
+++ b/wayland/democompositor/apps/appparser.cpp
@@ -139,13 +139,14 @@ AppEntry AppParser::parseData(const QByteArray& content, const QString& fileName
QString iconName = readString(root, QStringLiteral("Icon"), ok);
QString appName = readString(root, QStringLiteral("Name"), ok);
+ QString appId = readString(root, QStringLiteral("Id"), ok);
QString executableName = readString(root, QStringLiteral("Exec"), ok);
QString executablePath = readStringOptional(root, QStringLiteral("Path"), ok);
QVariantMap extensions = readExtensions(root, QStringLiteral("X-"));
if (!*ok)
return AppEntry::empty();
- return AppEntry{iconName, appName, executableName, executablePath, fileName, extensions};
+ return AppEntry{iconName, appName, appId, executableName, executablePath, fileName, extensions};
}
AppEntry AppParser::parseFile(const QString& fileName, bool *ok)
diff --git a/wayland/democompositor/resources/apps/clock.app b/wayland/democompositor/resources/apps/clock.app
index f28d9b7..6ddf0d2 100644
--- a/wayland/democompositor/resources/apps/clock.app
+++ b/wayland/democompositor/resources/apps/clock.app
@@ -3,6 +3,7 @@
"Version": 1,
"Icon": "qrc:/images/Icon_Clocks.png",
"Name": "Clocks",
+ "Id": "io.qt.clocks",
"Exec": "clocks",
"Path": "./",
"X-Fullscreen": true,
diff --git a/wayland/democompositor/resources/apps/maps.app b/wayland/democompositor/resources/apps/maps.app
index e88899a..0192e4b 100644
--- a/wayland/democompositor/resources/apps/maps.app
+++ b/wayland/democompositor/resources/apps/maps.app
@@ -3,6 +3,7 @@
"Version": 1,
"Icon": "qrc:/images/Icon_Maps.png",
"Name": "Maps",
+ "Id": "io.qt.maps",
"Exec": "qml_location_mapviewer",
"Path": "./"
}
diff --git a/wayland/democompositor/resources/apps/rss.app b/wayland/democompositor/resources/apps/rss.app
index 13ffbca..d631cda 100644
--- a/wayland/democompositor/resources/apps/rss.app
+++ b/wayland/democompositor/resources/apps/rss.app
@@ -3,6 +3,7 @@
"Version": 1,
"Icon": "qrc:/images/Icon_RSS.png",
"Name": "RSS News",
+ "Id": "io.qt.rssnews",
"Exec": "rssnews",
"Path": "./"
}
diff --git a/wayland/democompositor/resources/apps/stocqt.app b/wayland/democompositor/resources/apps/stocqt.app
index 9317359..692f9ce 100644
--- a/wayland/democompositor/resources/apps/stocqt.app
+++ b/wayland/democompositor/resources/apps/stocqt.app
@@ -3,6 +3,7 @@
"Version": 1,
"Icon": "qrc:/images/Icon_StocQt.png",
"Name": "StoQt",
+ "Id": "io.qt.stoqt",
"Exec": "stocqt",
"Path": "./"
}
diff --git a/wayland/democompositor/tests/apps/tst_appparser.cpp b/wayland/democompositor/tests/apps/tst_appparser.cpp
index a71c123..38a459c 100644
--- a/wayland/democompositor/tests/apps/tst_appparser.cpp
+++ b/wayland/democompositor/tests/apps/tst_appparser.cpp
@@ -71,15 +71,16 @@ void tst_AppParser::testValidVersion1_data()
QTest::addColumn<QByteArray>("input");
QTest::addColumn<QString>("icon");
QTest::addColumn<QString>("name");
+ QTest::addColumn<QString>("id");
QTest::addColumn<QString>("exec");
QTest::addColumn<QString>("path");
QTest::addRow("clock")
- << QByteArray("{\"Type\":\"Application\", \"Version\":1, \"Icon\":\"icon\", \"Name\":\"Clocks\",\"Exec\":\"clocks\"}")
- << QStringLiteral("icon") << QStringLiteral("Clocks") << QStringLiteral("clocks") << QString();
+ << QByteArray("{\"Type\":\"Application\", \"Version\":1, \"Icon\":\"icon\", \"Name\":\"Clocks\",\"Id\":\"io.qt.clocks\",\"Exec\":\"clocks\"}")
+ << QStringLiteral("icon") << QStringLiteral("Clocks") << QStringLiteral("io.qt.clocks") << QStringLiteral("clocks") << QString();
QTest::addRow("path")
- << QByteArray("{\"Type\":\"Application\", \"Version\":1, \"Icon\":\"icon\", \"Name\":\"Clocks\",\"Exec\":\"clocks\",\"Path\":\"P\"}")
- << QStringLiteral("icon") << QStringLiteral("Clocks") << QStringLiteral("clocks") << QStringLiteral("P");
+ << QByteArray("{\"Type\":\"Application\", \"Version\":1, \"Icon\":\"icon\", \"Name\":\"Clocks\",\"Id\":\"io.qt.clocks\",\"Exec\":\"clocks\",\"Path\":\"P\"}")
+ << QStringLiteral("icon") << QStringLiteral("Clocks") << QStringLiteral("io.qt.clocks") << QStringLiteral("clocks") << QStringLiteral("P");
}
void tst_AppParser::testValidVersion1()