aboutsummaryrefslogtreecommitdiffstats
path: root/src/imports/winextras/qquicktaskbarbutton.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@digia.com>2014-06-30 11:29:31 +0200
committerFriedemann Kleint <Friedemann.Kleint@digia.com>2014-07-02 12:43:43 +0200
commit7bb27be8c5ce9a67a413022d627d9580cddbe64e (patch)
tree3284f172868869a220d801297c55f67015d17497 /src/imports/winextras/qquicktaskbarbutton.cpp
parentafd0051c5cfb6ccb1d361d89c36b9c494c29ec5e (diff)
Refactor QQuickIconLoader.
Instead using a QObject with a single icon member variable that needs to be instantiated for each task bar button, introduce a static load function that takes a member function pointer accepting a QVariant. For synchronous requests, invoke it immediately; connect it to a slot for network requests. Task-number: QTBUG-36730 Change-Id: Ic70422d98d0bc3d486b32fb3534400b9fff8d324 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Diffstat (limited to 'src/imports/winextras/qquicktaskbarbutton.cpp')
-rw-r--r--src/imports/winextras/qquicktaskbarbutton.cpp26
1 files changed, 18 insertions, 8 deletions
diff --git a/src/imports/winextras/qquicktaskbarbutton.cpp b/src/imports/winextras/qquicktaskbarbutton.cpp
index 97e0765..b644b78 100644
--- a/src/imports/winextras/qquicktaskbarbutton.cpp
+++ b/src/imports/winextras/qquicktaskbarbutton.cpp
@@ -1,7 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2013 Ivan Vizir <define-true-false@yandex.com>
- ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+ ** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the QtWinExtras module of the Qt Toolkit.
@@ -41,7 +41,10 @@
****************************************************************************/
#include "qquicktaskbarbutton_p.h"
+#include "qquickiconloader_p.h"
+
#include <QQuickWindow>
+#include <QVariant>
QT_BEGIN_NAMESPACE
@@ -73,7 +76,6 @@ QT_BEGIN_NAMESPACE
QQuickTaskbarOverlay::QQuickTaskbarOverlay(QWinTaskbarButton *button, QObject *parent) :
QObject(parent), m_button(button)
{
- connect(&m_loader, SIGNAL(finished()), SLOT(iconLoaded()));
}
QUrl QQuickTaskbarOverlay::iconSource() const
@@ -83,10 +85,20 @@ QUrl QQuickTaskbarOverlay::iconSource() const
void QQuickTaskbarOverlay::setIconSource(const QUrl &iconSource)
{
- if (m_iconSource != iconSource) {
+ if (m_iconSource == iconSource)
+ return;
+
+ if (iconSource.isEmpty()) {
+ m_button->clearOverlayIcon();
+ m_iconSource = iconSource;
+ emit iconSourceChanged();
+ return;
+ }
+
+ if (QQuickIconLoader::load(iconSource, qmlEngine(parent()), QVariant::Icon, QSize(),
+ this, &QQuickTaskbarOverlay::iconLoaded) != QQuickIconLoader::LoadError) {
m_iconSource = iconSource;
emit iconSourceChanged();
- m_loader.load(m_iconSource, qmlEngine(parent()));
}
}
@@ -103,11 +115,9 @@ void QQuickTaskbarOverlay::setAccessibleDescription(const QString &description)
}
}
-void QQuickTaskbarOverlay::iconLoaded()
+void QQuickTaskbarOverlay::iconLoaded(const QVariant &value)
{
- QIcon icon = m_loader.icon();
- if (!icon.isNull())
- m_button->setOverlayIcon(icon);
+ m_button->setOverlayIcon(value.value<QIcon>());
}
QQuickTaskbarButton::QQuickTaskbarButton(QQuickItem *parent) : QQuickItem(parent),