on xenial help sign in
Some more action/preview handling code.
commit036496b594a939bc80bb21bedf766cfd808247fe authorPawel Stolowski <pawel.stolowski@canonical.com> dateTue 25 Jun 2013, 15:13 (13 years ago) parentd606608
7 files changed+71−13
plugins/Unity/preview.cpp+25−3 plugins/Unity/preview.h+3−1 plugins/Unity/previewaction.cpp+11 plugins/Unity/previewaction.h+15 plugins/Unity/scope.cpp+1−1 plugins/Unity/variantutils.cpp+14−7 plugins/Unity/variantutils.h+2−1
plugins/Unity/preview.cpp+25−3
@@ -23,6 +23,7 @@
2323#include "applicationpreview.h"
2424#include "moviepreview.h"
2525#include "musicpreview.h"
26+#include "variantutils.h"
2627
2728// Qt
2829#include <QDebug>
@@ -39,22 +40,31 @@ Preview::Preview(QObject *parent):
3940
4041QString Preview::rendererName() const
4142{
42− if (m_unityPreview)
43+ if (m_unityPreview) {
4344 return QString::fromStdString(m_unityPreview->renderer_name());
45+ } else {
46+ qWarning() << "Preview not set";
47+ }
4448 return "";
4549}
4650
4751QString Preview::title() const
4852{
49− if (m_unityPreview)
53+ if (m_unityPreview) {
5054 return QString::fromStdString(m_unityPreview->title());
55+ } else {
56+ qWarning() << "Preview not set";
57+ }
5158 return "";
5259}
5360
5461QString Preview::subtitle () const
5562{
56− if (m_unityPreview)
63+ if (m_unityPreview) {
5764 return QString::fromStdString(m_unityPreview->subtitle());
65+ } else {
66+ qWarning() << "Preview not set";
67+ }
5868 return "";
5969}
6070
@@ -67,6 +77,8 @@ PreviewActionList Preview::actions()
6777 action->setUnityAction(unityAction);
6878 alist.append(action);
6979 }
80+ } else {
81+ qWarning() << "Preview not set";
7082 }
7183 return alist;
7284}
@@ -100,3 +112,13 @@ void Preview::setUnityPreview(unity::dash::Preview::Ptr /* unityPreview */)
100112{
101113 // default implementation does nothing
102114}
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:
4949 QString subtitle () const;
5050 PreviewActionList actions();
5151
52+public Q_SLOTS:
53+ void execute(const QString& actionId, const QHash<QString, QVariant>& hints);
54+
5255protected:
5356 virtual void setUnityPreview(unity::dash::Preview::Ptr unityPreview);
5457
5558 unity::dash::Preview::Ptr m_unityPreview;
56−
5759};
5860
5961Q_DECLARE_METATYPE(Preview *)
plugins/Unity/previewaction.cpp+11
@@ -63,3 +63,14 @@ QString PreviewAction::activationUri() const
6363 return QString::fromStdString(m_unityAction->activation_uri);
6464 return "";
6565}
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 @@
2727// libuinity-core
2828#include <UnityCore/Preview.h>
2929
30+enum LayoutHint // keep in sync with unty::dash::LayoutHint
31+{
32+ None,
33+ Left,
34+ Right,
35+ Top,
36+ Bottom
37+};
38+
3039class PreviewAction : public QObject
3140{
3241 Q_OBJECT
@@ -36,6 +45,7 @@ class PreviewAction : public QObject
3645 Q_PROPERTY(QString iconHint READ iconHint)
3746 Q_PROPERTY(QString extraText READ extraText)
3847 Q_PROPERTY(QString activationUri READ activationUri)
48+ Q_PROPERTY(LayoutHint layoutHint READ layoutHint)
3949
4050public:
4151 explicit PreviewAction(QObject *parent = 0);
@@ -46,6 +56,10 @@ public:
4656 QString iconHint() const;
4757 QString extraText() const;
4858 QString activationUri() const;
59+ LayoutHint layoutHint() const;
60+
61+public Q_SLOTS:
62+ void execute(const QHash<QString, QVariant>& hints);
4963
5064private:
5165 unity::dash::Preview::ActionPtr m_unityAction;
@@ -54,5 +68,6 @@ private:
5468typedef QList<PreviewAction *> PreviewActionList;
5569Q_DECLARE_METATYPE(PreviewAction*)
5670Q_DECLARE_METATYPE(PreviewActionList)
71+Q_DECLARE_METATYPE(LayoutHint)
5772
5873#endif
plugins/Unity/scope.cpp+1−1
@@ -140,7 +140,7 @@ unity::dash::LocalResult Scope::createLocalResult(const QVariant &uri, const QVa
140140 res.name = title.toString().toStdString();
141141 res.comment = comment.toString().toStdString();
142142 res.dnd_uri = dnd_uri.toString().toStdString();
143− res.hints = hintsMapFromQVariant(metadata);
143+ res.hints = convertToHintsMap(metadata);
144144
145145 return res;
146146}
plugins/Unity/variantutils.cpp+14−7
@@ -66,17 +66,24 @@ GVariant* GVariantFromQVariant(const QVariant &var)
6666 return gv;
6767}
6868
69−unity::glib::HintsMap hintsMapFromQVariant(const QVariant &var)
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+
81+unity::glib::HintsMap convertToHintsMap(const QVariant &var)
7082{
7183 if (var.type() == QVariant::Hash) {
7284 unity::glib::HintsMap hintsMap;
7385 const auto hash = var.toHash();
74− QHash<QString, QVariant>::const_iterator it = hash.constBegin();
75− while (it != hash.constEnd()) {
76− hintsMap[it.key().toStdString()] = GVariantFromQVariant(it.value());
77− ++it;
78− }
79− return hintsMap;
86+ return convertToHintsMap(hash);
8087 }
8188 return unity::glib::HintsMap();
8289}
plugins/Unity/variantutils.h+2−1
@@ -27,6 +27,7 @@
2727#include <UnityCore/Variant.h>
2828
2929GVariant* 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);
3132
3233#endif