From 6d0a453f41d304239285d64b06612c36922be701 Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Mon, 25 Nov 2019 16:10:04 +0100 Subject: Use the extended QQmlListProperty interface in a few places Task-number: QTBUG-79263 Change-Id: If518f644b5b9eddbacfb1cb16fbb557127ffcfb2 Reviewed-by: Simon Hausmann Reviewed-by: Shawn Rutledge --- src/imports/labsmodels/qqmldelegatecomponent.cpp | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'src/imports/labsmodels/qqmldelegatecomponent.cpp') diff --git a/src/imports/labsmodels/qqmldelegatecomponent.cpp b/src/imports/labsmodels/qqmldelegatecomponent.cpp index aaf3fea5da..b8eb8049b3 100644 --- a/src/imports/labsmodels/qqmldelegatecomponent.cpp +++ b/src/imports/labsmodels/qqmldelegatecomponent.cpp @@ -250,7 +250,9 @@ QQmlListProperty QQmlDelegateChooser::choices() QQmlDelegateChooser::choices_append, QQmlDelegateChooser::choices_count, QQmlDelegateChooser::choices_at, - QQmlDelegateChooser::choices_clear); + QQmlDelegateChooser::choices_clear, + QQmlDelegateChooser::choices_replace, + QQmlDelegateChooser::choices_removeLast); } void QQmlDelegateChooser::choices_append(QQmlListProperty *prop, QQmlDelegateChoice *choice) @@ -282,6 +284,26 @@ void QQmlDelegateChooser::choices_clear(QQmlListProperty *pr q->delegateChanged(); } +void QQmlDelegateChooser::choices_replace(QQmlListProperty *prop, int index, + QQmlDelegateChoice *choice) +{ + QQmlDelegateChooser *q = static_cast(prop->object); + disconnect(q->m_choices[index], &QQmlDelegateChoice::changed, + q, &QQmlAbstractDelegateComponent::delegateChanged); + q->m_choices[index] = choice; + connect(choice, &QQmlDelegateChoice::changed, q, + &QQmlAbstractDelegateComponent::delegateChanged); + q->delegateChanged(); +} + +void QQmlDelegateChooser::choices_removeLast(QQmlListProperty *prop) +{ + QQmlDelegateChooser *q = static_cast(prop->object); + disconnect(q->m_choices.takeLast(), &QQmlDelegateChoice::changed, + q, &QQmlAbstractDelegateComponent::delegateChanged); + q->delegateChanged(); +} + QQmlComponent *QQmlDelegateChooser::delegate(QQmlAdaptorModel *adaptorModel, int row, int column) const { QVariant v; -- cgit v1.2.3