on xenial help sign in
Some more action/preview handling code.
036496bPawel Stolowski
plugins/Unity/preview.cpp+25−3
@@ -23,6 +23,7 @@
23#include "applicationpreview.h"
23#include "applicationpreview.h"
24#include "moviepreview.h"
24#include "moviepreview.h"
25#include "musicpreview.h"
25#include "musicpreview.h"
26+#include "variantutils.h"
26
27
27// Qt
28// Qt
28#include <QDebug>
29#include <QDebug>
@@ -39,22 +40,31 @@ Preview::Preview(QObject *parent):
39
40
40QString Preview::rendererName() const
41QString Preview::rendererName() const
41{
42{
42− if (m_unityPreview)
43+ if (m_unityPreview) {
43 return QString::fromStdString(m_unityPreview->renderer_name());
44 return QString::fromStdString(m_unityPreview->renderer_name());
45+ } else {
46+ qWarning() << "Preview not set";
47+ }
44 return "";
48 return "";
45}
49}
46
50
47QString Preview::title() const
51QString Preview::title() const
48{
52{
49− if (m_unityPreview)
53+ if (m_unityPreview) {
50 return QString::fromStdString(m_unityPreview->title());
54 return QString::fromStdString(m_unityPreview->title());
55+ } else {
56+ qWarning() << "Preview not set";
57+ }
51 return "";
58 return "";
52}
59}
53
60
54QString Preview::subtitle () const
61QString Preview::subtitle () const
55{
62{
56− if (m_unityPreview)
63+ if (m_unityPreview) {
57 return QString::fromStdString(m_unityPreview->subtitle());
64 return QString::fromStdString(m_unityPreview->subtitle());
65+ } else {
66+ qWarning() << "Preview not set";
67+ }
58 return "";
68 return "";
59}
69}
60
70
@@ -67,6 +77,8 @@ PreviewActionList Preview::actions()
67 action->setUnityAction(unityAction);
77 action->setUnityAction(unityAction);
68 alist.append(action);
78 alist.append(action);
69 }
79 }
80+ } else {
81+ qWarning() << "Preview not set";
70 }
82 }
71 return alist;
83 return alist;
72}
84}
@@ -100,3 +112,13 @@ void Preview::setUnityPreview(unity::dash::Preview::Ptr /* unityPreview */)
100{
112{
101 // default implementation does nothing
113 // default implementation does nothing
102}
114}
115+
116+void Preview::execute(const QString& actionId, const QHash<QString, QVariant>& hints)
117+{
118+ if (m_unityPreview) {
119+ auto unityHints = convertToHintsMap(hints);
120+ m_unityPreview->PerformAction(actionId.toStdString(), unityHints);
121+ } else {
122+ qWarning() << "Preview not set";
123+ }
124+}
plugins/Unity/preview.h+3−1
@@ -49,11 +49,13 @@ public:
49 QString subtitle () const;
49 QString subtitle () const;
50 PreviewActionList actions();
50 PreviewActionList actions();
51
51
52+public Q_SLOTS:
53+ void execute(const QString& actionId, const QHash<QString, QVariant>& hints);
54+
52protected:
55protected:
53 virtual void setUnityPreview(unity::dash::Preview::Ptr unityPreview);
56 virtual void setUnityPreview(unity::dash::Preview::Ptr unityPreview);
54
57
55 unity::dash::Preview::Ptr m_unityPreview;
58 unity::dash::Preview::Ptr m_unityPreview;
56−
57};
59};
58
60
59Q_DECLARE_METATYPE(Preview *)
61Q_DECLARE_METATYPE(Preview *)
plugins/Unity/previewaction.cpp+11
@@ -63,3 +63,14 @@ QString PreviewAction::activationUri() const
63 return QString::fromStdString(m_unityAction->activation_uri);
63 return QString::fromStdString(m_unityAction->activation_uri);
64 return "";
64 return "";
65}
65}
66+
67+LayoutHint PreviewAction::layoutHint() const
68+{
69+ if (m_unityAction)
70+ return static_cast<LayoutHint>(m_unityAction->layout_hint);
71+ return LayoutHint::None;
72+}
73+
74+void PreviewAction::execute(const QHash<QString, QVariant>& hints)
75+{
76+}
plugins/Unity/previewaction.h+15
@@ -27,6 +27,15 @@
27// libuinity-core
27// libuinity-core
28#include <UnityCore/Preview.h>
28#include <UnityCore/Preview.h>
29
29
30+enum LayoutHint // keep in sync with unty::dash::LayoutHint
31+{
32+ None,
33+ Left,
34+ Right,
35+ Top,
36+ Bottom
37+};
38+
30class PreviewAction : public QObject
39class PreviewAction : public QObject
31{
40{
32 Q_OBJECT
41 Q_OBJECT
@@ -36,6 +45,7 @@ class PreviewAction : public QObject
36 Q_PROPERTY(QString iconHint READ iconHint)
45 Q_PROPERTY(QString iconHint READ iconHint)
37 Q_PROPERTY(QString extraText READ extraText)
46 Q_PROPERTY(QString extraText READ extraText)
38 Q_PROPERTY(QString activationUri READ activationUri)
47 Q_PROPERTY(QString activationUri READ activationUri)
48+ Q_PROPERTY(LayoutHint layoutHint READ layoutHint)
39
49
40public:
50public:
41 explicit PreviewAction(QObject *parent = 0);
51 explicit PreviewAction(QObject *parent = 0);
@@ -46,6 +56,10 @@ public:
46 QString iconHint() const;
56 QString iconHint() const;
47 QString extraText() const;
57 QString extraText() const;
48 QString activationUri() const;
58 QString activationUri() const;
59+ LayoutHint layoutHint() const;
60+
61+public Q_SLOTS:
62+ void execute(const QHash<QString, QVariant>& hints);
49
63
50private:
64private:
51 unity::dash::Preview::ActionPtr m_unityAction;
65 unity::dash::Preview::ActionPtr m_unityAction;
@@ -54,5 +68,6 @@ private:
54typedef QList<PreviewAction *> PreviewActionList;
68typedef QList<PreviewAction *> PreviewActionList;
55Q_DECLARE_METATYPE(PreviewAction*)
69Q_DECLARE_METATYPE(PreviewAction*)
56Q_DECLARE_METATYPE(PreviewActionList)
70Q_DECLARE_METATYPE(PreviewActionList)
71+Q_DECLARE_METATYPE(LayoutHint)
57
72
58#endif
73#endif
plugins/Unity/scope.cpp+1−1
@@ -140,7 +140,7 @@ unity::dash::LocalResult Scope::createLocalResult(const QVariant &uri, const QVa
140 res.name = title.toString().toStdString();
140 res.name = title.toString().toStdString();
141 res.comment = comment.toString().toStdString();
141 res.comment = comment.toString().toStdString();
142 res.dnd_uri = dnd_uri.toString().toStdString();
142 res.dnd_uri = dnd_uri.toString().toStdString();
143− res.hints = hintsMapFromQVariant(metadata);
143+ res.hints = convertToHintsMap(metadata);
144
144
145 return res;
145 return res;
146}
146}
plugins/Unity/variantutils.cpp+14−7
@@ -66,17 +66,24 @@ GVariant* GVariantFromQVariant(const QVariant &var)
66 return gv;
66 return gv;
67}
67}
68
68
69+
70+unity::glib::HintsMap convertToHintsMap(const QHash<QString, QVariant> &val)
71+{
72+ unity::glib::HintsMap hintsMap;
73+ QHash<QString, QVariant>::const_iterator it = val.constBegin();
74+ while (it != val.constEnd()) {
75+ hintsMap[it.key().toStdString()] = GVariantFromQVariant(it.value());
76+ ++it;
77+ }
78+ return hintsMap;
79+}
80+
69−unity::glib::HintsMap hintsMapFromQVariant(const QVariant &var)
81+unity::glib::HintsMap convertToHintsMap(const QVariant &var)
70{
82{
71 if (var.type() == QVariant::Hash) {
83 if (var.type() == QVariant::Hash) {
72 unity::glib::HintsMap hintsMap;
84 unity::glib::HintsMap hintsMap;
73 const auto hash = var.toHash();
85 const auto hash = var.toHash();
74− QHash<QString, QVariant>::const_iterator it = hash.constBegin();
86+ return convertToHintsMap(hash);
75− while (it != hash.constEnd()) {
76− hintsMap[it.key().toStdString()] = GVariantFromQVariant(it.value());
77− ++it;
78− }
79− return hintsMap;
80 }
87 }
81 return unity::glib::HintsMap();
88 return unity::glib::HintsMap();
82}
89}
plugins/Unity/variantutils.h+2−1
@@ -27,6 +27,7 @@
27#include <UnityCore/Variant.h>
27#include <UnityCore/Variant.h>
28
28
29GVariant* GVariantFromQVariant(const QVariant &value);
29GVariant* GVariantFromQVariant(const QVariant &value);
30−unity::glib::HintsMap hintsMapFromQVariant(const QVariant &var);
30+unity::glib::HintsMap convertToHintsMap(const QHash<QString, QVariant> &val);
31+unity::glib::HintsMap convertToHintsMap(const QVariant &var);
31
32
32#endif
33#endif