diff options
author | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2017-09-28 15:14:58 +0200 |
---|---|---|
committer | Holger Freyther <holger+qt@freyther.de> | 2017-11-09 13:03:21 +0000 |
commit | a84980d2cde1f62e574446729d48dd0b29804933 (patch) | |
tree | 88cab57c9dc79493b44cb93330fd935d367840c1 /wayland/democompositor/apps | |
parent | a55e76398219a2188691ca718216b9faca7abe18 (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/README | 1 | ||||
-rw-r--r-- | wayland/democompositor/apps/appentry.cpp | 2 | ||||
-rw-r--r-- | wayland/democompositor/apps/appentry.h | 2 | ||||
-rw-r--r-- | wayland/democompositor/apps/applistmodel.cpp | 13 | ||||
-rw-r--r-- | wayland/democompositor/apps/applistmodel.h | 3 | ||||
-rw-r--r-- | wayland/democompositor/apps/appparser.cpp | 3 |
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) |