From ed7cdfcc3898c246a3e36ece5deb3bab6530f948 Mon Sep 17 00:00:00 2001 From: David Edmundson Date: Wed, 31 Jul 2019 16:51:42 +0100 Subject: [PATCH] Add Q_PROPERTIES interface to KDescendantsProxyModel Summary: For eventual use in a KItemModels QML plugin Test Plan: Compliles. Used it in a QML project (exported elsewhere) Seemed to work Subscribers: kde-frameworks-devel Tags: #frameworks Differential Revision: https://phabricator.kde.org/D22859 --- src/kdescendantsproxymodel.cpp | 11 ++++++++--- src/kdescendantsproxymodel.h | 9 +++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/kdescendantsproxymodel.cpp b/src/kdescendantsproxymodel.cpp index 822edb2..1422b88 100644 --- a/src/kdescendantsproxymodel.cpp +++ b/src/kdescendantsproxymodel.cpp @@ -229,6 +229,7 @@ void KDescendantsProxyModel::setDisplayAncestorData(bool display) bool displayChanged = (display != d->m_displayAncestorData); d->m_displayAncestorData = display; if (displayChanged) { + emit displayAncestorDataChanged(); // send out big hammer. Everything needs to be updated. emit dataChanged(index(0,0),index(rowCount()-1,columnCount()-1), changedRoles); } @@ -245,9 +246,12 @@ void KDescendantsProxyModel::setAncestorSeparator(const QString &separator) Q_D(KDescendantsProxyModel); bool separatorChanged = (separator != d->m_ancestorSeparator); d->m_ancestorSeparator = separator; - if (separatorChanged && d->m_displayAncestorData) { - // send out big hammer. Everything needs to be updated. - emit dataChanged(index(0,0),index(rowCount()-1,columnCount()-1), changedRoles); + if (separatorChanged) { + emit ancestorSeparatorChanged(); + if (d->m_displayAncestorData) { + // send out big hammer. Everything needs to be updated. + emit dataChanged(index(0,0),index(rowCount()-1,columnCount()-1), changedRoles); + } } } @@ -312,6 +316,7 @@ void KDescendantsProxyModel::setSourceModel(QAbstractItemModel *_sourceModel) } endResetModel(); + emit sourceModelChanged(); } QModelIndex KDescendantsProxyModel::parent(const QModelIndex &index) const diff --git a/src/kdescendantsproxymodel.h b/src/kdescendantsproxymodel.h index da9fe7c..292df0f 100644 --- a/src/kdescendantsproxymodel.h +++ b/src/kdescendantsproxymodel.h @@ -72,6 +72,10 @@ class KITEMMODELS_EXPORT KDescendantsProxyModel : public QAbstractProxyModel { Q_OBJECT + Q_PROPERTY(QAbstractItemModel *model READ sourceModel WRITE setSourceModel NOTIFY sourceModelChanged) + Q_PROPERTY(bool displayAncestorData READ displayAncestorData WRITE setDisplayAncestorData NOTIFY displayAncestorDataChanged) + Q_PROPERTY(QString ancestorSeparator READ ancestorSeparator WRITE setAncestorSeparator NOTIFY ancestorSeparatorChanged) + public: /** @@ -176,6 +180,11 @@ public: virtual QModelIndexList match(const QModelIndex &start, int role, const QVariant &value, int hits = 1, Qt::MatchFlags flags = Qt::MatchFlags(Qt::MatchStartsWith | Qt::MatchWrap)) const override; +Q_SIGNALS: + void sourceModelChanged(); + void displayAncestorDataChanged(); + void ancestorSeparatorChanged(); + private: Q_DECLARE_PRIVATE(KDescendantsProxyModel) //@cond PRIVATE