diff --git a/src/kdescendantsproxymodel.h b/src/kdescendantsproxymodel.h --- a/src/kdescendantsproxymodel.h +++ b/src/kdescendantsproxymodel.h @@ -72,6 +72,10 @@ { 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 @@ 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 diff --git a/src/kdescendantsproxymodel.cpp b/src/kdescendantsproxymodel.cpp --- a/src/kdescendantsproxymodel.cpp +++ b/src/kdescendantsproxymodel.cpp @@ -229,6 +229,7 @@ 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 @@ 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 @@ } endResetModel(); + emit sourceModelChanged(); } QModelIndex KDescendantsProxyModel::parent(const QModelIndex &index) const