KSPM: Make filterBehavior a Q_PROPERTY.

wilder
Stephen Kelly 11 years ago
parent 8ced53cda1
commit 9dc8c1c3ab
  1. 96
      src/kselectionproxymodel.cpp
  2. 7
      src/kselectionproxymodel.h

@ -442,7 +442,8 @@ public:
m_layoutChanging(false),
m_ignoreNextLayoutAboutToBeChanged(false),
m_ignoreNextLayoutChanged(false),
m_selectionModel(selectionModel)
m_selectionModel(selectionModel),
m_filterBehavior(KSelectionProxyModel::InvalidBehavior)
{
}
@ -2096,49 +2097,60 @@ void KSelectionProxyModel::setFilterBehavior(FilterBehavior behavior)
{
Q_D(KSelectionProxyModel);
beginResetModel();
d->m_filterBehavior = behavior;
switch (behavior) {
case SubTrees: {
d->m_omitChildren = false;
d->m_omitDescendants = false;
d->m_startWithChildTrees = false;
d->m_includeAllSelected = false;
break;
}
case SubTreeRoots: {
d->m_omitChildren = true;
d->m_startWithChildTrees = false;
d->m_includeAllSelected = false;
break;
}
case SubTreesWithoutRoots: {
d->m_omitChildren = false;
d->m_omitDescendants = false;
d->m_startWithChildTrees = true;
d->m_includeAllSelected = false;
break;
}
case ExactSelection: {
d->m_omitChildren = true;
d->m_startWithChildTrees = false;
d->m_includeAllSelected = true;
break;
}
case ChildrenOfExactSelection: {
d->m_omitChildren = false;
d->m_omitDescendants = true;
d->m_startWithChildTrees = true;
d->m_includeAllSelected = true;
break;
}
Q_ASSERT(behavior != InvalidBehavior);
if (behavior == InvalidBehavior) {
return;
}
d->resetInternalData();
d->selectionChanged(d->m_selectionModel.data()->selection(), QItemSelection());
if (d->m_filterBehavior != behavior) {
beginResetModel();
endResetModel();
d->m_filterBehavior = behavior;
switch (behavior) {
case InvalidBehavior: {
Q_ASSERT(!"InvalidBehavior can't be used here");
return;
}
case SubTrees: {
d->m_omitChildren = false;
d->m_omitDescendants = false;
d->m_startWithChildTrees = false;
d->m_includeAllSelected = false;
break;
}
case SubTreeRoots: {
d->m_omitChildren = true;
d->m_startWithChildTrees = false;
d->m_includeAllSelected = false;
break;
}
case SubTreesWithoutRoots: {
d->m_omitChildren = false;
d->m_omitDescendants = false;
d->m_startWithChildTrees = true;
d->m_includeAllSelected = false;
break;
}
case ExactSelection: {
d->m_omitChildren = true;
d->m_startWithChildTrees = false;
d->m_includeAllSelected = true;
break;
}
case ChildrenOfExactSelection: {
d->m_omitChildren = false;
d->m_omitDescendants = true;
d->m_startWithChildTrees = true;
d->m_includeAllSelected = true;
break;
}
}
emit filterBehaviorChanged();
d->resetInternalData();
d->selectionChanged(d->m_selectionModel.data()->selection(), QItemSelection());
endResetModel();
}
}
KSelectionProxyModel::FilterBehavior KSelectionProxyModel::filterBehavior() const

@ -86,6 +86,8 @@ class KSelectionProxyModelPrivate;
class KITEMMODELS_EXPORT KSelectionProxyModel : public QAbstractProxyModel
{
Q_OBJECT
Q_PROPERTY(FilterBehavior filterBehavior READ filterBehavior WRITE setFilterBehavior
NOTIFY filterBehaviorChanged)
public:
/**
ctor.
@ -112,7 +114,8 @@ public:
SubTreeRoots,
SubTreesWithoutRoots,
ExactSelection,
ChildrenOfExactSelection
ChildrenOfExactSelection,
InvalidBehavior
};
Q_ENUMS(FilterBehavior)
@ -292,6 +295,8 @@ private: // Don't allow subclasses to emit these Q_SIGNALS.
*/
void rootSelectionAdded(const QItemSelection &selection);
void filterBehaviorChanged();
protected:
QList<QPersistentModelIndex> sourceRootIndexes() const;

Loading…
Cancel
Save