diff options
Diffstat (limited to 'src/imports/winextras/qquickthumbnailtoolbar.cpp')
-rw-r--r-- | src/imports/winextras/qquickthumbnailtoolbar.cpp | 100 |
1 files changed, 100 insertions, 0 deletions
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) |