on xenial help sign in
Support metadata fields
commit9e524e41f34d994059e53b80117c17741b41ac9a authorMichal Hruby <michal.mhr@gmail.com> dateMon 14 Oct 2013, 16:19 (13 years ago) parentd1ffeba
2 files changed+13−6
Dash/Apps/FrequentlyUsedAppsModel.qml+2−2 plugins/Unity/scope.cpp+11−4
Dash/Apps/FrequentlyUsedAppsModel.qml+2−2
@@ -75,7 +75,7 @@ ListModel {
7575 title: "Facebook"
7676 comment: ""
7777 dndUri: "appid://com.ubuntu.developer.webapps.webapp-facebook/webapp-facebook/current-user-version"
78− metadata: "subscope:applications.scope/applications-click.scope"
78+ metadata: "subscope:applications.scope/applications-click.scope?app_id=com.ubuntu.developer.webapps.webapp-facebook"
7979 }
8080 ListElement {
8181 uri: "application://webbrowser-app.desktop"
@@ -95,7 +95,7 @@ ListModel {
9595 title: "GMail"
9696 comment: ""
9797 dndUri: "appid://com.ubuntu.developer.webapps.webapp-gmail/webapp-gmail/current-user-version"
98− metadata: "subscope:applications.scope/applications-click.scope"
98+ metadata: "subscope:applications.scope/applications-click.scope?app_id=com.ubuntu.developer.webapps.webapp-gmail"
9999 }
100100 ListElement {
101101 uri: "application://ubuntu-system-settings.desktop"
plugins/Unity/scope.cpp+11−4
@@ -28,6 +28,7 @@
2828
2929// Qt
3030#include <QUrl>
31+#include <QUrlQuery>
3132#include <QDebug>
3233#include <QtGui/QDesktopServices>
3334#include <QQmlEngine>
@@ -206,11 +207,16 @@ void Scope::preview(const QVariant &uri, const QVariant &icon_hint, const QVaria
206207 QVariant real_metadata(metadata);
207208 // handle overridden results, since QML doesn't support defining maps
208209 if (metadata.type() == QVariant::String) {
209− QString metadata_uri(metadata.toString());
210− if (metadata_uri.startsWith(QLatin1String("subscope:"))) {
211− QString subscope_uri(metadata_uri.mid(9));
212− QStringList parts(subscope_uri.split(QChar('/')));
210+ QUrl metadata_url(metadata.toString());
211+ if (metadata_url.scheme() == QLatin1String("subscope")) {
212+ QString subscope_uri(metadata_url.toString(QUrl::RemoveScheme | QUrl::RemoveQuery));
213213 QVariantHash new_metadata;
214+ QUrlQuery query(metadata_url.query());
215+ QList<QPair<QString,QString>> queryItems(query.queryItems());
216+ for (auto it = queryItems.begin(); it != queryItems.end(); ++it) {
217+ new_metadata[it->first] = QVariant::fromValue(it->second);
218+ }
219+ QStringList parts(subscope_uri.split(QChar('/')));
214220 for (int i = parts.size() - 1; i >= 0; i--) {
215221 QVariantHash inner;
216222 inner["scope-id"] = QVariant::fromValue(parts[i]);
@@ -220,6 +226,7 @@ void Scope::preview(const QVariant &uri, const QVariant &icon_hint, const QVaria
220226 real_metadata = QVariant::fromValue(new_metadata);
221227 }
222228 }
229+
223230 auto res = createLocalResult(uri, icon_hint, category, result_type, mimetype, title, comment, dnd_uri, real_metadata);
224231 m_previewCancellable.Renew();
225232