on xenial help sign in
Initial cut at preview action handling.
d606608Pawel Stolowski
plugins/Unity/CMakeLists.txt+1
@@ -25,6 +25,7 @@ set(QMLPLUGIN_SRC
25 moviepreview.cpp
25 moviepreview.cpp
26 musicpreview.cpp
26 musicpreview.cpp
27 preview.cpp
27 preview.cpp
28+ previewaction.cpp
28 variantutils.cpp
29 variantutils.cpp
29 )
30 )
30
31
plugins/Unity/preview.cpp+22−3
@@ -39,17 +39,36 @@ Preview::Preview(QObject *parent):
39
39
40QString Preview::rendererName() const
40QString Preview::rendererName() const
41{
41{
42+ if (m_unityPreview)
42− return QString::fromStdString(m_unityPreview->renderer_name());
43+ return QString::fromStdString(m_unityPreview->renderer_name());
44+ return "";
43}
45}
44
46
45QString Preview::title() const
47QString Preview::title() const
46{
48{
49+ if (m_unityPreview)
47− return QString::fromStdString(m_unityPreview->title());
50+ return QString::fromStdString(m_unityPreview->title());
51+ return "";
48}
52}
49
53
50QString Preview::subtitle () const
54QString Preview::subtitle () const
51{
55{
56+ if (m_unityPreview)
52− return QString::fromStdString(m_unityPreview->subtitle());
57+ return QString::fromStdString(m_unityPreview->subtitle());
58+ return "";
59+}
60+
61+PreviewActionList Preview::actions()
62+{
63+ PreviewActionList alist;
64+ if (m_unityPreview) {
65+ for (auto unityAction: m_unityPreview->GetActions()) {
66+ auto action = new PreviewAction(this);
67+ action->setUnityAction(unityAction);
68+ alist.append(action);
69+ }
70+ }
71+ return alist;
53}
72}
54
73
55Preview* Preview::newFromUnityPreview(unity::dash::Preview::Ptr unityPreview)
74Preview* Preview::newFromUnityPreview(unity::dash::Preview::Ptr unityPreview)
plugins/Unity/preview.h+5
@@ -28,6 +28,9 @@
28// libunity-core
28// libunity-core
29#include <UnityCore/Preview.h>
29#include <UnityCore/Preview.h>
30
30
31+// local
32+#include "previewaction.h"
33+
31class Preview : public QObject
34class Preview : public QObject
32{
35{
33 Q_OBJECT
36 Q_OBJECT
@@ -35,6 +38,7 @@ class Preview : public QObject
35 Q_PROPERTY(QString rendererName READ rendererName)
38 Q_PROPERTY(QString rendererName READ rendererName)
36 Q_PROPERTY(QString title READ title)
39 Q_PROPERTY(QString title READ title)
37 Q_PROPERTY(QString subtitle READ subtitle)
40 Q_PROPERTY(QString subtitle READ subtitle)
41+ Q_PROPERTY(PreviewActionList actions READ actions)
38
42
39public:
43public:
40 explicit Preview(QObject *parent = 0);
44 explicit Preview(QObject *parent = 0);
@@ -43,6 +47,7 @@ public:
43 QString rendererName() const;
47 QString rendererName() const;
44 QString title() const;
48 QString title() const;
45 QString subtitle () const;
49 QString subtitle () const;
50+ PreviewActionList actions();
46
51
47protected:
52protected:
48 virtual void setUnityPreview(unity::dash::Preview::Ptr unityPreview);
53 virtual void setUnityPreview(unity::dash::Preview::Ptr unityPreview);
plugins/Unity/previewaction.cppnew file+65
@@ -0,0 +1,65 @@
1+/*
2+ * Copyright (C) 2013 Canonical, Ltd.
3+ *
4+ * Authors:
5+ * Pawel Stolowski <pawel.stolowski@canonical.com>
6+ *
7+ * This program is free software; you can redistribute it and/or modify
8+ * it under the terms of the GNU General Public License as published by
9+ * the Free Software Foundation; version 3.
10+ *
11+ * This program is distributed in the hope that it will be useful,
12+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
13+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14+ * GNU General Public License for more details.
15+ *
16+ * You should have received a copy of the GNU General Public License
17+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
18+ */
19+
20+#include "previewaction.h"
21+
22+PreviewAction::PreviewAction(QObject *parent)
23+ : QObject(parent)
24+{
25+}
26+
27+void PreviewAction::setUnityAction(unity::dash::Preview::ActionPtr unityAction)
28+{
29+ m_unityAction = unityAction;
30+}
31+
32+QString PreviewAction::id() const
33+{
34+ if (m_unityAction)
35+ return QString::fromStdString(m_unityAction->id);
36+ return "";
37+}
38+
39+QString PreviewAction::displayName() const
40+{
41+ if (m_unityAction)
42+ return QString::fromStdString(m_unityAction->display_name);
43+ return "";
44+}
45+
46+QString PreviewAction::iconHint() const
47+{
48+ if (m_unityAction)
49+ return QString::fromStdString(m_unityAction->icon_hint);
50+ return "";
51+}
52+
53+QString PreviewAction::extraText() const
54+{
55+ if (m_unityAction)
56+ return QString::fromStdString(m_unityAction->extra_text);
57+ return "";
58+}
59+
60+QString PreviewAction::activationUri() const
61+{
62+ if (m_unityAction)
63+ return QString::fromStdString(m_unityAction->activation_uri);
64+ return "";
65+}
plugins/Unity/previewaction.hnew file+58
@@ -0,0 +1,58 @@
1+/*
2+ * Copyright (C) 2013 Canonical, Ltd.
3+ *
4+ * Authors:
5+ * Pawel Stolowski <pawel.stolowski@canonical.com>
6+ *
7+ * This program is free software; you can redistribute it and/or modify
8+ * it under the terms of the GNU General Public License as published by
9+ * the Free Software Foundation; version 3.
10+ *
11+ * This program is distributed in the hope that it will be useful,
12+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
13+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14+ * GNU General Public License for more details.
15+ *
16+ * You should have received a copy of the GNU General Public License
17+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
18+ */
19+
20+#ifndef PREVIEWACTION_H
21+#define PREVIEWACTION_H
22+
23+// Qt
24+#include <QObject>
25+#include <QList>
26+
27+// libuinity-core
28+#include <UnityCore/Preview.h>
29+
30+class PreviewAction : public QObject
31+{
32+ Q_OBJECT
33+
34+ Q_PROPERTY(QString id READ id)
35+ Q_PROPERTY(QString displayName READ displayName)
36+ Q_PROPERTY(QString iconHint READ iconHint)
37+ Q_PROPERTY(QString extraText READ extraText)
38+ Q_PROPERTY(QString activationUri READ activationUri)
39+
40+public:
41+ explicit PreviewAction(QObject *parent = 0);
42+ void setUnityAction(unity::dash::Preview::ActionPtr unityAction);
43+
44+ QString id() const;
45+ QString displayName() const;
46+ QString iconHint() const;
47+ QString extraText() const;
48+ QString activationUri() const;
49+
50+private:
51+ unity::dash::Preview::ActionPtr m_unityAction;
52+};
53+
54+typedef QList<PreviewAction *> PreviewActionList;
55+Q_DECLARE_METATYPE(PreviewAction*)
56+Q_DECLARE_METATYPE(PreviewActionList)
57+
58+#endif
plugins/Unity/scope.cpp+1−1
@@ -187,7 +187,7 @@ void Scope::onActivated(unity::dash::LocalResult const& result, unity::dash::Sco
187 }
187 }
188}
188}
189
189
190−void Scope::onPreviewReady(unity::dash::LocalResult const& result, unity::dash::Preview::Ptr const& preview)
190+void Scope::onPreviewReady(unity::dash::LocalResult const& /* result */, unity::dash::Preview::Ptr const& preview)
191{
191{
192 auto prv = Preview::newFromUnityPreview(preview);
192 auto prv = Preview::newFromUnityPreview(preview);
193 Q_EMIT previewReady(*prv);
193 Q_EMIT previewReady(*prv);