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
wilder
David Edmundson 7 years ago
parent 072dc8f0f7
commit ed7cdfcc38
  1. 11
      src/kdescendantsproxymodel.cpp
  2. 9
      src/kdescendantsproxymodel.h

@ -229,6 +229,7 @@ void KDescendantsProxyModel::setDisplayAncestorData(bool display)
bool displayChanged = (display != d->m_displayAncestorData); bool displayChanged = (display != d->m_displayAncestorData);
d->m_displayAncestorData = display; d->m_displayAncestorData = display;
if (displayChanged) { if (displayChanged) {
emit displayAncestorDataChanged();
// send out big hammer. Everything needs to be updated. // send out big hammer. Everything needs to be updated.
emit dataChanged(index(0,0),index(rowCount()-1,columnCount()-1), changedRoles); emit dataChanged(index(0,0),index(rowCount()-1,columnCount()-1), changedRoles);
} }
@ -245,9 +246,12 @@ void KDescendantsProxyModel::setAncestorSeparator(const QString &separator)
Q_D(KDescendantsProxyModel); Q_D(KDescendantsProxyModel);
bool separatorChanged = (separator != d->m_ancestorSeparator); bool separatorChanged = (separator != d->m_ancestorSeparator);
d->m_ancestorSeparator = separator; d->m_ancestorSeparator = separator;
if (separatorChanged && d->m_displayAncestorData) { if (separatorChanged) {
// send out big hammer. Everything needs to be updated. emit ancestorSeparatorChanged();
emit dataChanged(index(0,0),index(rowCount()-1,columnCount()-1), changedRoles); 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(); endResetModel();
emit sourceModelChanged();
} }
QModelIndex KDescendantsProxyModel::parent(const QModelIndex &index) const QModelIndex KDescendantsProxyModel::parent(const QModelIndex &index) const

@ -72,6 +72,10 @@ class KITEMMODELS_EXPORT KDescendantsProxyModel : public QAbstractProxyModel
{ {
Q_OBJECT 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: public:
/** /**
@ -176,6 +180,11 @@ public:
virtual QModelIndexList match(const QModelIndex &start, int role, const QVariant &value, 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; int hits = 1, Qt::MatchFlags flags = Qt::MatchFlags(Qt::MatchStartsWith | Qt::MatchWrap)) const override;
Q_SIGNALS:
void sourceModelChanged();
void displayAncestorDataChanged();
void ancestorSeparatorChanged();
private: private:
Q_DECLARE_PRIVATE(KDescendantsProxyModel) Q_DECLARE_PRIVATE(KDescendantsProxyModel)
//@cond PRIVATE //@cond PRIVATE

Loading…
Cancel
Save