on xenial help sign in
Use the thumbnailer image provider for scope results that don't specify icon as well as for previews.

Approved by PS Jenkins bot, Pawel Stolowski.

commite5d5e71dbe1f6cc5376efd193ec834748fa134c7 authorMichal Hruby <michal.mhr@gmail.com> dateThu 3 Oct 2013, 01:28 (13 years ago) parent8e05f32296db28
8 files changed+43−32
plugins/Unity/categoryresults.cpp+7 plugins/Unity/iconutils.cpp+12 plugins/Unity/iconutils.h+1 plugins/Unity/preview.cpp+10−14 plugins/Unity/preview.h−2 tests/mocks/Unity/fake_preview.cpp−5 tests/mocks/Unity/fake_preview.h−2 tests/plugins/Unity/resultstest.cpp+13−9
plugins/Unity/categoryresults.cpp+7
@@ -79,6 +79,13 @@ CategoryResults::data(const QModelIndex& index, int role) const
7979 return DeeListModel::data(index, ResultsColumn::URI);
8080 case RoleIconHint: {
8181 QString giconString(DeeListModel::data(index, ResultsColumn::ICON_HINT).toString());
82+ if (giconString.isEmpty()) {
83+ QString uri(DeeListModel::data(index, ResultsColumn::URI).toString());
84+ QString thumbnailerUri(uriToThumbnailerProviderString(uri));
85+ if (!thumbnailerUri.isNull()) {
86+ return QVariant::fromValue(thumbnailerUri);
87+ }
88+ }
8289 return QVariant::fromValue(gIconToDeclarativeImageProviderString(giconString));
8390 }
8491 case RoleCategory:
plugins/Unity/iconutils.cpp+12
@@ -24,6 +24,7 @@
2424#include "iconutils.h"
2525
2626#define BASE_THEME_ICON_URI "image://theme/"
27+#define BASE_THUMBNAILER_URI "image://thumbnailer/"
2728
2829QString gIconToDeclarativeImageProviderString(QString const &giconString)
2930{
@@ -89,3 +90,14 @@ QString gIconToDeclarativeImageProviderString(QString const &giconString)
8990
9091 return result;
9192}
93+
94+QString uriToThumbnailerProviderString(QString const &uri)
95+{
96+ if (uri.startsWith(QLatin1String("file:///"))) {
97+ QString thumbnailerUri(BASE_THUMBNAILER_URI);
98+ thumbnailerUri.append(uri.midRef(7));
99+ return thumbnailerUri;
100+ }
101+
102+ return QString::null;
103+}
plugins/Unity/iconutils.h+1
@@ -23,5 +23,6 @@
2323#include <QString>
2424
2525QString gIconToDeclarativeImageProviderString(QString const &giconString);
26+QString uriToThumbnailerProviderString(QString const &uri);
2627
2728#endif
plugins/Unity/preview.cpp+10−14
@@ -106,20 +106,16 @@ QVariantMap Preview::infoHintsHash() const
106106QString Preview::image() const
107107{
108108 if (m_unityPreview) {
109− auto giconString = g_icon_to_string(m_unityPreview->image());
110− QString result(gIconToDeclarativeImageProviderString(QString::fromUtf8(giconString)));
111− g_free(giconString);
112− return result;
113− } else {
114− qWarning() << "Preview not set";
115− }
116− return QString::null;
117−}
118−
119−QString Preview::imageSourceUri() const
120−{
121− if (m_unityPreview) {
122− return QString::fromStdString(m_unityPreview->image_source_uri());
109+ if (m_unityPreview->image() != nullptr) {
110+ auto giconString = g_icon_to_string(m_unityPreview->image());
111+ QString result(gIconToDeclarativeImageProviderString(QString::fromUtf8(giconString)));
112+ g_free(giconString);
113+ return result;
114+ } else {
115+ QString sourceMedia(QString::fromStdString(m_unityPreview->image_source_uri()));
116+ QString thumbnailUri(uriToThumbnailerProviderString(sourceMedia));
117+ if (!thumbnailUri.isNull()) return thumbnailUri;
118+ }
123119 } else {
124120 qWarning() << "Preview not set";
125121 }
plugins/Unity/preview.h−2
@@ -47,7 +47,6 @@ class Q_DECL_EXPORT Preview : public QObject
4747 Q_PROPERTY(QVariant infoHints READ infoHints NOTIFY previewChanged)
4848 Q_PROPERTY(QVariantMap infoMap READ infoHintsHash NOTIFY previewChanged)
4949 Q_PROPERTY(QString image READ image NOTIFY previewChanged)
50− Q_PROPERTY(QString imageSourceUri READ imageSourceUri NOTIFY previewChanged)
5150 Q_PROPERTY(QVariant result READ result NOTIFY previewChanged)
5251
5352public:
@@ -62,7 +61,6 @@ public:
6261 QVariant infoHints();
6362 QVariantMap infoHintsHash() const;
6463 QString image() const;
65− QString imageSourceUri() const;
6664 QVariant result() const;
6765
6866 Q_INVOKABLE void execute(const QString& actionId, const QHash<QString, QVariant>& hints);
tests/mocks/Unity/fake_preview.cpp−5
@@ -56,11 +56,6 @@ QString Preview::image() const
5656 return "";
5757}
5858
59−QString Preview::imageSourceUri() const
60−{
61− return "";
62−}
63−
6459void Preview::execute(const QString& actionId, const QHash<QString, QVariant>& hints)
6560{
6661 Q_UNUSED(actionId);
tests/mocks/Unity/fake_preview.h−2
@@ -36,7 +36,6 @@ class Q_DECL_EXPORT Preview : public QObject
3636 Q_PROPERTY(QVariant infoHints READ infoHints NOTIFY previewChanged)
3737 Q_PROPERTY(QVariantMap infoMap READ infoHintsHash NOTIFY previewChanged)
3838 Q_PROPERTY(QString image READ image NOTIFY previewChanged)
39− Q_PROPERTY(QString imageSourceUri READ imageSourceUri NOTIFY previewChanged)
4039
4140public:
4241 explicit Preview(QObject *parent = 0);
@@ -49,7 +48,6 @@ public:
4948 QVariant infoHints();
5049 QVariantMap infoHintsHash() const;
5150 QString image() const;
52− QString imageSourceUri() const;
5351
5452 Q_INVOKABLE void execute(const QString& actionId, const QHash<QString, QVariant>& hints);
5553
tests/plugins/Unity/resultstest.cpp+13−9
@@ -65,26 +65,30 @@ void ResultsTest::testAllColumns()
6565
6666void ResultsTest::testIconColumn_data()
6767{
68+ QTest::addColumn<QString>("uri");
6869 QTest::addColumn<QString>("giconString");
6970 QTest::addColumn<QString>("result");
7071
71− QTest::newRow("absolute path") << "/usr/share/icons/example.png" << "/usr/share/icons/example.png";
72− QTest::newRow("file uri") << "file:///usr/share/icons/example.png" << "file:///usr/share/icons/example.png";
73− QTest::newRow("http uri") << "http://images.ubuntu.com/example.jpg" << "http://images.ubuntu.com/example.jpg";
74− QTest::newRow("image uri") << "image://thumbnail/with/arguments?passed_to=ImageProvider" << "image://thumbnail/with/arguments?passed_to=ImageProvider";
75− QTest::newRow("themed icon") << "accessories-other" << "image://theme/accessories-other";
76− QTest::newRow("fileicon") << ". GFileIcon http://example.org/resource.gif" << "http://example.org/resource.gif";
77− QTest::newRow("themedicon") << ". GThemedIcon accessories-other accessories generic" << "image://theme/accessories-other,accessories,generic";
78− QTest::newRow("annotatedicon") << ". UnityProtocolAnnotatedIcon %7B'base-icon':%20%3C'.%20GThemedIcon%20accessories-other%20accessories%20generic'%3E%7D" << "image://theme/accessories-other,accessories,generic";
72+ QTest::newRow("unspecified") << "test:uri" << "" << "";
73+ QTest::newRow("absolute path") << "test:uri" << "/usr/share/icons/example.png" << "/usr/share/icons/example.png";
74+ QTest::newRow("file uri") << "test:uri" << "file:///usr/share/icons/example.png" << "file:///usr/share/icons/example.png";
75+ QTest::newRow("http uri") << "test:uri" << "http://images.ubuntu.com/example.jpg" << "http://images.ubuntu.com/example.jpg";
76+ QTest::newRow("image uri") << "test:uri" << "image://thumbnail/with/arguments?passed_to=ImageProvider" << "image://thumbnail/with/arguments?passed_to=ImageProvider";
77+ QTest::newRow("themed icon") << "test:uri" << "accessories-other" << "image://theme/accessories-other";
78+ QTest::newRow("fileicon") << "test:uri" << ". GFileIcon http://example.org/resource.gif" << "http://example.org/resource.gif";
79+ QTest::newRow("themedicon") << "test:uri" << ". GThemedIcon accessories-other accessories generic" << "image://theme/accessories-other,accessories,generic";
80+ QTest::newRow("annotatedicon") << "test:uri" << ". UnityProtocolAnnotatedIcon %7B'base-icon':%20%3C'.%20GThemedIcon%20accessories-other%20accessories%20generic'%3E%7D" << "image://theme/accessories-other,accessories,generic";
81+ QTest::newRow("thumbnailer icon") << "file:///usr/share/samples/video/foo.avi" << "" << "image://thumbnailer//usr/share/samples/video/foo.avi";
7982}
8083
8184void ResultsTest::testIconColumn()
8285{
86+ QFETCH(QString, uri);
8387 QFETCH(QString, giconString);
8488 QFETCH(QString, result);
8589 auto deeModel = createBackendModel();
8690 dee_model_append (deeModel,
87− "test:uri",
91+ uri.toLocal8Bit().constData(),
8892 giconString.toLocal8Bit().constData(),
8993 0,
9094 0,