diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2019-11-25 16:10:04 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2020-02-07 09:37:53 +0100 |
commit | 6d0a453f41d304239285d64b06612c36922be701 (patch) | |
tree | 36a77a421948753d9512484f04efc7744941de88 /src/imports | |
parent | 053547fba7e83e894d8af3a63d022daa6a34ce99 (diff) |
Use the extended QQmlListProperty interface in a few places
Task-number: QTBUG-79263
Change-Id: If518f644b5b9eddbacfb1cb16fbb557127ffcfb2
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Diffstat (limited to 'src/imports')
-rw-r--r-- | src/imports/labsmodels/qqmldelegatecomponent.cpp | 24 | ||||
-rw-r--r-- | src/imports/labsmodels/qqmldelegatecomponent_p.h | 2 | ||||
-rw-r--r-- | src/imports/labsmodels/qqmltablemodel.cpp | 17 | ||||
-rw-r--r-- | src/imports/labsmodels/qqmltablemodel_p.h | 2 |
4 files changed, 43 insertions, 2 deletions
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<QQmlDelegateChoice> 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<QQmlDelegateChoice> *prop, QQmlDelegateChoice *choice) @@ -282,6 +284,26 @@ void QQmlDelegateChooser::choices_clear(QQmlListProperty<QQmlDelegateChoice> *pr q->delegateChanged(); } +void QQmlDelegateChooser::choices_replace(QQmlListProperty<QQmlDelegateChoice> *prop, int index, + QQmlDelegateChoice *choice) +{ + QQmlDelegateChooser *q = static_cast<QQmlDelegateChooser *>(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<QQmlDelegateChoice> *prop) +{ + QQmlDelegateChooser *q = static_cast<QQmlDelegateChooser *>(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; diff --git a/src/imports/labsmodels/qqmldelegatecomponent_p.h b/src/imports/labsmodels/qqmldelegatecomponent_p.h index 4c39dc0d0a..8473831b1d 100644 --- a/src/imports/labsmodels/qqmldelegatecomponent_p.h +++ b/src/imports/labsmodels/qqmldelegatecomponent_p.h @@ -116,6 +116,8 @@ public: static int choices_count(QQmlListProperty<QQmlDelegateChoice> *); static QQmlDelegateChoice *choices_at(QQmlListProperty<QQmlDelegateChoice> *, int); static void choices_clear(QQmlListProperty<QQmlDelegateChoice> *); + static void choices_replace(QQmlListProperty<QQmlDelegateChoice> *, int, QQmlDelegateChoice *); + static void choices_removeLast(QQmlListProperty<QQmlDelegateChoice> *); QQmlComponent *delegate(QQmlAdaptorModel *adaptorModel, int row, int column = -1) const override; diff --git a/src/imports/labsmodels/qqmltablemodel.cpp b/src/imports/labsmodels/qqmltablemodel.cpp index b6468d760f..6ba2cecf19 100644 --- a/src/imports/labsmodels/qqmltablemodel.cpp +++ b/src/imports/labsmodels/qqmltablemodel.cpp @@ -644,7 +644,9 @@ QQmlListProperty<QQmlTableModelColumn> QQmlTableModel::columns() &QQmlTableModel::columns_append, &QQmlTableModel::columns_count, &QQmlTableModel::columns_at, - &QQmlTableModel::columns_clear); + &QQmlTableModel::columns_clear, + &QQmlTableModel::columns_replace, + &QQmlTableModel::columns_removeLast); } void QQmlTableModel::columns_append(QQmlListProperty<QQmlTableModelColumn> *property, @@ -674,6 +676,19 @@ void QQmlTableModel::columns_clear(QQmlListProperty<QQmlTableModelColumn> *prope return model->mColumns.clear(); } +void QQmlTableModel::columns_replace(QQmlListProperty<QQmlTableModelColumn> *property, int index, QQmlTableModelColumn *value) +{ + QQmlTableModel *model = static_cast<QQmlTableModel*>(property->object); + if (QQmlTableModelColumn *column = qobject_cast<QQmlTableModelColumn*>(value)) + return model->mColumns.replace(index, column); +} + +void QQmlTableModel::columns_removeLast(QQmlListProperty<QQmlTableModelColumn> *property) +{ + QQmlTableModel *model = static_cast<QQmlTableModel*>(property->object); + model->mColumns.removeLast(); +} + /*! \qmlmethod QModelIndex TableModel::index(int row, int column) diff --git a/src/imports/labsmodels/qqmltablemodel_p.h b/src/imports/labsmodels/qqmltablemodel_p.h index d6e982d19a..75e2768849 100644 --- a/src/imports/labsmodels/qqmltablemodel_p.h +++ b/src/imports/labsmodels/qqmltablemodel_p.h @@ -96,6 +96,8 @@ public: static int columns_count(QQmlListProperty<QQmlTableModelColumn> *property); static QQmlTableModelColumn *columns_at(QQmlListProperty<QQmlTableModelColumn> *property, int index); static void columns_clear(QQmlListProperty<QQmlTableModelColumn> *property); + static void columns_replace(QQmlListProperty<QQmlTableModelColumn> *property, int index, QQmlTableModelColumn *value); + static void columns_removeLast(QQmlListProperty<QQmlTableModelColumn> *property); QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override; int rowCount(const QModelIndex &parent = QModelIndex()) const override; |