summaryrefslogtreecommitdiffstats
path: root/wayland/democompositor/apps
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <holger@moiji-mobile.com>2017-09-28 15:14:58 +0200
committerHolger Freyther <holger+qt@freyther.de>2017-11-09 13:03:21 +0000
commita84980d2cde1f62e574446729d48dd0b29804933 (patch)
tree88cab57c9dc79493b44cb93330fd935d367840c1 /wayland/democompositor/apps
parenta55e76398219a2188691ca718216b9faca7abe18 (diff)
democompositor: Add a mandatory "Id" to the app specification
Add a manodatory appId, expose it to QML, add a simple find by id method and update the testcases. Change-Id: I4f80a97e5f31e972694dd61eff0166f9de2f5d51 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
Diffstat (limited to 'wayland/democompositor/apps')
-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
6 files changed, 22 insertions, 2 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)