diff options
Diffstat (limited to 'src/manager-lib/applicationmanager.cpp')
| -rw-r--r-- | src/manager-lib/applicationmanager.cpp | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/src/manager-lib/applicationmanager.cpp b/src/manager-lib/applicationmanager.cpp index 49e578a0..e950e10a 100644 --- a/src/manager-lib/applicationmanager.cpp +++ b/src/manager-lib/applicationmanager.cpp @@ -564,6 +564,17 @@ QVector<Application *> ApplicationManager::mimeTypeHandlers(const QString &mimeT return handlers; } +QVariantMap ApplicationManager::get(Application *app) const +{ + QVariantMap map; + if (app) { + const QHash<int, QByteArray> roles = roleNames(); + for (auto it = roles.begin(); it != roles.end(); ++it) + map.insert(QString::fromLatin1(it.value()), dataForRole(app, it.key())); + } + return map; +} + void ApplicationManager::registerMimeTypes() { #if defined(QT_GUI_LIB) @@ -1254,7 +1265,11 @@ QVariant ApplicationManager::data(const QModelIndex &index, int role) const return QVariant(); Application *app = d->apps.at(index.row()); + return dataForRole(app, role); +} +QVariant ApplicationManager::dataForRole(Application *app, int role) const +{ switch (role) { case AMRoles::Id: return app->id(); @@ -1325,12 +1340,7 @@ QVariantMap ApplicationManager::get(int index) const qCWarning(LogSystem) << "ApplicationManager::get(index): invalid index:" << index; return QVariantMap(); } - - QVariantMap map; - QHash<int, QByteArray> roles = roleNames(); - for (auto it = roles.begin(); it != roles.end(); ++it) - map.insert(qL1S(it.value()), data(this->index(index), it.key())); - return map; + return get(d->apps.at(index)); } /*! @@ -1421,8 +1431,7 @@ QStringList ApplicationManager::applicationIds() const */ QVariantMap ApplicationManager::get(const QString &id) const { - int index = indexOfApplication(id); - return (index < 0) ? QVariantMap{} : get(index); + return get(application(id)); } Am::RunState ApplicationManager::applicationRunState(const QString &id) const |
