aboutsummaryrefslogtreecommitdiffstats
path: root/src/imports
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@digia.com>2014-05-27 11:49:54 +0200
committerFriedemann Kleint <Friedemann.Kleint@digia.com>2014-07-07 11:10:28 +0200
commitcef1f2fab06ed9d01d525681f5a11db67bb8f262 (patch)
treeeca3a46df630bdb770ee708a908fc4b38816c9af /src/imports
parent7bb27be8c5ce9a67a413022d627d9580cddbe64e (diff)
Implement iconic live previews/iconic thumbnail icons.
[ChangeLog][QWinThumbnailToolBar] Added pixmap properties and change notifications for thumbnail icons and live preview. Task-number: QTBUG-36730 Change-Id: I31ad0ff347235bc7933c1c14dece359ec0c36b39 Reviewed-by: Oliver Wolff <oliver.wolff@digia.com> Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
Diffstat (limited to 'src/imports')
-rw-r--r--src/imports/winextras/plugins.qmltypes3
-rw-r--r--src/imports/winextras/qquickthumbnailtoolbar.cpp100
-rw-r--r--src/imports/winextras/qquickthumbnailtoolbar_p.h24
3 files changed, 127 insertions, 0 deletions
diff --git a/src/imports/winextras/plugins.qmltypes b/src/imports/winextras/plugins.qmltypes
index f5963ce..eb1aa15 100644
--- a/src/imports/winextras/plugins.qmltypes
+++ b/src/imports/winextras/plugins.qmltypes
@@ -91,6 +91,9 @@ Module {
Property { name: "count"; type: "int"; isReadonly: true }
Property { name: "data"; type: "QObject"; isList: true; isReadonly: true }
Property { name: "buttons"; type: "QQuickThumbnailToolButton"; isList: true; isReadonly: true }
+ Property { name: "iconicThumbnailSource"; type: "QUrl" }
+ Property { name: "iconicLivePreviewSource"; type: "QUrl" }
+ Property { name: "iconicNotificationsEnabled"; type: "bool" }
Method { name: "clear" }
Method {
name: "addButton"
diff --git a/src/imports/winextras/qquickthumbnailtoolbar.cpp b/src/imports/winextras/qquickthumbnailtoolbar.cpp
index 5558cb8..6f242f9 100644
--- a/src/imports/winextras/qquickthumbnailtoolbar.cpp
+++ b/src/imports/winextras/qquickthumbnailtoolbar.cpp
@@ -42,6 +42,7 @@
#include "qquickthumbnailtoolbar_p.h"
#include "qquickthumbnailtoolbutton_p.h"
+#include "qquickiconloader_p.h"
#include <QQuickWindow>
#include <QQmlEngine>
@@ -69,6 +70,10 @@ QT_BEGIN_NAMESPACE
QQuickThumbnailToolBar::QQuickThumbnailToolBar(QQuickItem *parent) :
QQuickItem(parent)
{
+ connect(&m_toolbar, &QWinThumbnailToolBar::iconicThumbnailPixmapRequested,
+ this, &QQuickThumbnailToolBar::iconicThumbnailRequested);
+ connect(&m_toolbar, &QWinThumbnailToolBar::iconicLivePreviewPixmapRequested,
+ this, &QQuickThumbnailToolBar::iconicLivePreviewRequested);
}
QQuickThumbnailToolBar::~QQuickThumbnailToolBar()
@@ -119,6 +124,101 @@ void QQuickThumbnailToolBar::clear()
emit buttonsChanged();
}
+/*!
+ \qmlsignal ThumbnailToolBar::iconicThumbnailRequested()
+
+ This signal is emitted when the operating system requests a new iconic thumbnail pixmap,
+ typically when the thumbnail is shown.
+
+ \since 5.4
+*/
+
+/*!
+ \qmlsignal ThumbnailToolBar::iconicLivePreviewRequested()
+
+ This signal is emitted when the operating system requests a new iconic live preview pixmap,
+ typically when the user ALT-tabs to the application.
+ \since 5.4
+*/
+
+/*!
+ \qmlproperty bool ThumbnailToolBar::iconicNotificationsEnabled
+
+ This property holds whether the signals iconicThumbnailRequested()
+ or iconicLivePreviewRequested() will be emitted.
+ \since 5.4
+ */
+bool QQuickThumbnailToolBar::iconicNotificationsEnabled() const
+{
+ return m_toolbar.iconicPixmapNotificationsEnabled();
+}
+
+void QQuickThumbnailToolBar::setIconicNotificationsEnabled(bool enabled)
+{
+ if (enabled != m_toolbar.iconicPixmapNotificationsEnabled()) {
+ m_toolbar.setIconicPixmapNotificationsEnabled(enabled);
+ emit iconicNotificationsEnabledChanged();
+ }
+}
+
+void QQuickThumbnailToolBar::iconicThumbnailLoaded(const QVariant &value)
+{
+ m_toolbar.setIconicThumbnailPixmap(value.value<QPixmap>());
+}
+
+/*!
+ \qmlproperty url ThumbnailToolBar::iconicThumbnailSource
+
+ The pixmap for use as a thumbnail representation
+ \since 5.4
+ */
+void QQuickThumbnailToolBar::setIconicThumbnailSource(const QUrl &source)
+{
+ if (source == m_iconicThumbnailSource)
+ return;
+
+ if (source.isEmpty()) {
+ m_toolbar.setIconicThumbnailPixmap(QPixmap());
+ m_iconicThumbnailSource = source;
+ emit iconicThumbnailSourceChanged();
+ }
+
+ if (QQuickIconLoader::load(source, qmlEngine(this), QVariant::Pixmap, QSize(),
+ this, &QQuickThumbnailToolBar::iconicThumbnailLoaded) != QQuickIconLoader::LoadError) {
+ m_iconicThumbnailSource = source;
+ emit iconicThumbnailSourceChanged();
+ }
+}
+
+void QQuickThumbnailToolBar::iconicLivePreviewLoaded(const QVariant &value)
+{
+ m_toolbar.setIconicLivePreviewPixmap(value.value<QPixmap>());
+}
+
+/*!
+ \qmlproperty url ThumbnailToolBar::iconicLivePreviewSource
+
+ The pixmap for use as a live (peek) preview when tabbing into the application.
+ \since 5.4
+ */
+void QQuickThumbnailToolBar::setIconicLivePreviewSource(const QUrl &source)
+{
+ if (source == m_iconicLivePreviewSource)
+ return;
+
+ if (source.isEmpty()) {
+ m_toolbar.setIconicLivePreviewPixmap(QPixmap());
+ m_iconicLivePreviewSource = source;
+ emit iconicLivePreviewSourceChanged();
+ }
+
+ if (QQuickIconLoader::load(source, qmlEngine(this), QVariant::Pixmap, QSize(),
+ this, &QQuickThumbnailToolBar::iconicLivePreviewLoaded) != QQuickIconLoader::LoadError) {
+ m_iconicLivePreviewSource = source;
+ emit iconicLivePreviewSourceChanged();
+ }
+}
+
void QQuickThumbnailToolBar::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &data)
{
if (change == ItemSceneChange)
diff --git a/src/imports/winextras/qquickthumbnailtoolbar_p.h b/src/imports/winextras/qquickthumbnailtoolbar_p.h
index 6a80d80..8599a63 100644
--- a/src/imports/winextras/qquickthumbnailtoolbar_p.h
+++ b/src/imports/winextras/qquickthumbnailtoolbar_p.h
@@ -45,9 +45,12 @@
#include <QQuickItem>
#include <QWinThumbnailToolBar>
+#include <QUrl>
QT_BEGIN_NAMESPACE
+class QVariant;
+
class QQuickThumbnailToolButton;
class QQuickThumbnailToolBar : public QQuickItem
@@ -56,6 +59,9 @@ class QQuickThumbnailToolBar : public QQuickItem
Q_PROPERTY(int count READ count NOTIFY countChanged)
Q_PROPERTY(QQmlListProperty<QObject> data READ data)
Q_PROPERTY(QQmlListProperty<QQuickThumbnailToolButton> buttons READ buttons NOTIFY buttonsChanged)
+ Q_PROPERTY(bool iconicNotificationsEnabled READ iconicNotificationsEnabled WRITE setIconicNotificationsEnabled NOTIFY iconicNotificationsEnabledChanged)
+ Q_PROPERTY(QUrl iconicThumbnailSource READ iconicThumbnailSource WRITE setIconicThumbnailSource NOTIFY iconicThumbnailSourceChanged)
+ Q_PROPERTY(QUrl iconicLivePreviewSource READ iconicLivePreviewSource WRITE setIconicLivePreviewSource NOTIFY iconicLivePreviewSourceChanged)
Q_CLASSINFO("DefaultProperty", "data")
public:
@@ -70,12 +76,28 @@ public:
Q_INVOKABLE void addButton(QQuickThumbnailToolButton *button);
Q_INVOKABLE void removeButton(QQuickThumbnailToolButton *button);
+ bool iconicNotificationsEnabled() const;
+ void setIconicNotificationsEnabled(bool);
+ QUrl iconicThumbnailSource() const { return m_iconicThumbnailSource; }
+ void setIconicThumbnailSource(const QUrl &);
+ QUrl iconicLivePreviewSource() const { return m_iconicLivePreviewSource; }
+ void setIconicLivePreviewSource(const QUrl &);
+
public Q_SLOTS:
void clear();
Q_SIGNALS:
void countChanged();
void buttonsChanged();
+ void iconicNotificationsEnabledChanged();
+ void iconicThumbnailSourceChanged();
+ void iconicThumbnailRequested();
+ void iconicLivePreviewSourceChanged();
+ void iconicLivePreviewRequested();
+
+private Q_SLOTS:
+ void iconicThumbnailLoaded(const QVariant &);
+ void iconicLivePreviewLoaded(const QVariant &);
protected:
void itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &data);
@@ -87,6 +109,8 @@ private:
QWinThumbnailToolBar m_toolbar;
QList<QQuickThumbnailToolButton *> m_buttons;
+ QUrl m_iconicThumbnailSource;
+ QUrl m_iconicLivePreviewSource;
};
QT_END_NAMESPACE