on xenial help sign in
Smore more preview handling. Handle other activation responses.
commitb47b4d3f27ee77e731d0f78295abd760901f1092 authorPawel Stolowski <pawel.stolowski@canonical.com> dateMon 24 Jun 2013, 18:28 (13 years ago) parentea92295
4 files changed+38−4
plugins/Unity/preview.cpp+5 plugins/Unity/preview.h+2 plugins/Unity/scope.cpp+25−3 plugins/Unity/scope.h+6−1
plugins/Unity/preview.cpp+5
@@ -42,6 +42,11 @@ void Preview::setUnityPreview(unity::dash::Preview::Ptr unityPreview)
4242 m_unityPreview = unityPreview;
4343}
4444
45+QString Preview::rendererName() const
46+{
47+ return QString::fromStdString(m_unityPreview->renderer_name());
48+}
49+
4550QString Preview::title() const
4651{
4752 return QString::fromStdString(m_unityPreview->title());
plugins/Unity/preview.h+2
@@ -32,6 +32,7 @@ class Preview : public QObject
3232{
3333 Q_OBJECT
3434
35+ Q_PROPERTY(QString rendererName READ rendererName)
3536 Q_PROPERTY(QString title READ title)
3637 Q_PROPERTY(QString subtitle READ subtitle)
3738
@@ -39,6 +40,7 @@ public:
3940 explicit Preview(QObject *parent = 0);
4041 static Preview* newFromUnityPreview(unity::dash::Preview::Ptr unityPreview);
4142
43+ QString rendererName() const;
4244 QString title() const;
4345 QString subtitle () const;
4446
plugins/Unity/scope.cpp+25−3
@@ -159,15 +159,37 @@ void Scope::preview(const QVariant &uri, const QVariant &icon_hint, const QVaria
159159 m_unityScope->Preview(res);
160160}
161161
162−void Scope::onActivated(unity::dash::LocalResult const& result, unity::dash::ScopeHandledType type, unity::glib::HintsMap const&)
162+void Scope::onActivated(unity::dash::LocalResult const& result, unity::dash::ScopeHandledType type, unity::glib::HintsMap const& hints)
163163{
164− if (type == unity::dash::NOT_HANDLED) {
165− fallbackActivate(QString::fromStdString(result.uri));
164+ // note: we will not get called on SHOW_PREVIEW, instead UnityCore will signal preview_ready.
165+ switch (type)
166+ {
167+ case unity::dash::NOT_HANDLED:
168+ fallbackActivate(QString::fromStdString(result.uri));
169+ break;
170+ case unity::dash::SHOW_DASH:
171+ Q_EMIT showDash();
172+ break;
173+ case unity::dash::HIDE_DASH:
174+ Q_EMIT hideDash();
175+ break;
176+ case unity::dash::GOTO_DASH_URI:
177+ if (hints.contains("goto-uri")) {
178+ Q_EMIT gotoUri(QString::fromStdString(hints["goto-uri"]));
179+ } else {
180+ qWarning() << "Missing goto-uri hint for GOTO_DASH_URI activation reply";
181+ }
182+ break;
183+ default:
184+ qWarning() << "Unhandled activation response:" << type;
166185 }
167186}
168187
169188void Scope::onPreviewReady(unity::dash::LocalResult const& result, unity::dash::Preview::Ptr const& preview)
170189{
190+ auto res = createLocalResult(uri, icon_hint, category, result_type, mimetype, title, comment, dnd_uri, metadata);
191+ auto prv = Preview::newFromUnityPreview(preview);
192+ Q_EMIT previewReady(prv);
171193}
172194
173195void Scope::fallbackActivate(const QString& uri)
plugins/Unity/scope.h+6−1
@@ -99,7 +99,12 @@ Q_SIGNALS:
9999 void searchFinished(const std::string&, unity::glib::HintsMap const&, unity::glib::Error const&);
100100 void searchQueryChanged();
101101 void noResultsHintChanged();
102+
103+ // signals triggered by activate(..) or preview(..) requests.
102104 void previewReady(const Preview &preview);
105+ void showDash();
106+ void hideDash();
107+ void gotoUri(const QString &uri);
103108
104109private Q_SLOTS:
105110 void synchronizeStates();
@@ -117,7 +122,7 @@ private:
117122 const QVariant &mimetype, const QVariant &title,
118123 const QVariant &comment, const QVariant &dnd_uri,
119124 const QVariant &metadata);
120− void onActivated(unity::dash::LocalResult const& result, unity::dash::ScopeHandledType type, unity::glib::HintsMap const&);
125+ void onActivated(unity::dash::LocalResult const& result, unity::dash::ScopeHandledType type, unity::glib::HintsMap const& hints);
121126 void onPreviewReady(unity::dash::LocalResult const& result, unity::dash::Preview::Ptr const& preview);
122127 void fallbackActivate(const QString& uri);
123128