aboutsummaryrefslogtreecommitdiffstats
path: root/src/quickcontrols2/qquickiconlabel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/quickcontrols2/qquickiconlabel.cpp')
-rw-r--r--src/quickcontrols2/qquickiconlabel.cpp44
1 files changed, 13 insertions, 31 deletions
diff --git a/src/quickcontrols2/qquickiconlabel.cpp b/src/quickcontrols2/qquickiconlabel.cpp
index 61151f28..1cfceda2 100644
--- a/src/quickcontrols2/qquickiconlabel.cpp
+++ b/src/quickcontrols2/qquickiconlabel.cpp
@@ -41,7 +41,6 @@
#include <QtGui/private/qguiapplication_p.h>
#include <QtQuick/private/qquickitem_p.h>
#include <QtQuick/private/qquicktext_p.h>
-#include <QtQuickTemplates2/private/qquickicon_p.h>
QT_BEGIN_NAMESPACE
@@ -66,7 +65,6 @@ QQuickIconLabelPrivate::QQuickIconLabelPrivate()
leftPadding(0),
rightPadding(0),
bottomPadding(0),
- icon(nullptr),
image(nullptr),
label(nullptr)
{
@@ -74,7 +72,7 @@ QQuickIconLabelPrivate::QQuickIconLabelPrivate()
bool QQuickIconLabelPrivate::hasIcon() const
{
- return display != QQuickIconLabel::TextOnly && icon && (!icon->name().isEmpty() || !icon->source().isEmpty());
+ return display != QQuickIconLabel::TextOnly && !icon.isEmpty();
}
bool QQuickIconLabelPrivate::hasText() const
@@ -92,10 +90,10 @@ bool QQuickIconLabelPrivate::createImage()
watchChanges(image);
beginClass(image);
image->setObjectName(QStringLiteral("image"));
- image->setName(icon->name());
- image->setSource(icon->source());
- image->setSourceSize(QSize(icon->width(), icon->height()));
- image->setColor(icon->color());
+ image->setName(icon.name());
+ image->setSource(icon.source());
+ image->setSourceSize(QSize(icon.width(), icon.height()));
+ image->setColor(icon.color());
QQmlEngine::setContextForObject(image, qmlContext(q));
if (componentComplete)
completeComponent(image);
@@ -122,11 +120,11 @@ bool QQuickIconLabelPrivate::updateImage()
void QQuickIconLabelPrivate::syncImage()
{
- if (!image || !icon)
+ if (!image || icon.isEmpty())
return;
- image->setName(icon->name());
- image->setSource(icon->source());
+ image->setName(icon.name());
+ image->setSource(icon.source());
}
void QQuickIconLabelPrivate::updateOrSyncImage()
@@ -200,11 +198,11 @@ void QQuickIconLabelPrivate::updateOrSyncLabel()
void QQuickIconLabelPrivate::updateIcon()
{
- if (!image || !icon)
+ if (!image || icon.isEmpty())
return;
- image->setColor(icon->color());
- image->setSourceSize(QSize(icon->width(), icon->height()));
+ image->setColor(icon.color());
+ image->setSourceSize(QSize(icon.width(), icon.height()));
}
void QQuickIconLabelPrivate::updateImplicitSize()
@@ -395,35 +393,19 @@ QQuickIconLabel::~QQuickIconLabel()
d->unwatchChanges(d->label);
}
-QQuickIcon *QQuickIconLabel::icon() const
+QQuickIcon QQuickIconLabel::icon() const
{
Q_D(const QQuickIconLabel);
return d->icon;
}
-void QQuickIconLabel::setIcon(QQuickIcon *icon)
+void QQuickIconLabel::setIcon(const QQuickIcon &icon)
{
Q_D(QQuickIconLabel);
if (d->icon == icon)
return;
- if (QQuickIcon *oldIcon = d->icon) {
- QObjectPrivate::disconnect(oldIcon, &QQuickIcon::nameChanged, d, &QQuickIconLabelPrivate::updateOrSyncImage);
- QObjectPrivate::disconnect(oldIcon, &QQuickIcon::sourceChanged, d, &QQuickIconLabelPrivate::updateOrSyncImage);
- QObjectPrivate::disconnect(oldIcon, &QQuickIcon::colorChanged, d, &QQuickIconLabelPrivate::updateIcon);
- QObjectPrivate::disconnect(oldIcon, &QQuickIcon::widthChanged, d, &QQuickIconLabelPrivate::updateIcon);
- QObjectPrivate::disconnect(oldIcon, &QQuickIcon::heightChanged, d, &QQuickIconLabelPrivate::updateIcon);
- }
-
d->icon = icon;
- if (icon) {
- QObjectPrivate::connect(icon, &QQuickIcon::nameChanged, d, &QQuickIconLabelPrivate::updateOrSyncImage);
- QObjectPrivate::connect(icon, &QQuickIcon::sourceChanged, d, &QQuickIconLabelPrivate::updateOrSyncImage);
- QObjectPrivate::connect(icon, &QQuickIcon::colorChanged, d, &QQuickIconLabelPrivate::updateIcon);
- QObjectPrivate::connect(icon, &QQuickIcon::widthChanged, d, &QQuickIconLabelPrivate::updateIcon);
- QObjectPrivate::connect(icon, &QQuickIcon::heightChanged, d, &QQuickIconLabelPrivate::updateIcon);
- }
-
d->updateOrSyncImage();
}