diff --git a/kdevplatform/util/CMakeLists.txt b/kdevplatform/util/CMakeLists.txt --- a/kdevplatform/util/CMakeLists.txt +++ b/kdevplatform/util/CMakeLists.txt @@ -55,8 +55,8 @@ target_link_libraries(KDevPlatformUtil LINK_PUBLIC KDev::Interfaces - KF5::ItemModels LINK_PRIVATE + KF5::ItemModels KF5::ConfigWidgets KF5::TextEditor KF5::GuiAddons diff --git a/kdevplatform/util/multilevellistview.h b/kdevplatform/util/multilevellistview.h --- a/kdevplatform/util/multilevellistview.h +++ b/kdevplatform/util/multilevellistview.h @@ -21,7 +21,6 @@ #define KDEVPLATFORM_MULTILEVELLISTVIEW_H #include -#include #include "utilexport.h" class QTreeView; @@ -44,6 +43,12 @@ { Q_OBJECT public: + enum LastLevelViewMode { + SubTrees, ///< Shows complete subtree for each child. Only leafs are selectable. + DirectChildren ///< Shows only the direct childs. + }; + Q_ENUM(LastLevelViewMode) + /** * Creates a new MultiLevelListView with parent @p parent. * @@ -109,10 +114,11 @@ void setHeaderLabels(const QStringList& labels); /** - * Set the filter behavior of the last model. By default, SubTreesWithoutRoots - * is used and only leafs are selectable in the view for that model. + * Set the view mode of the view for the last level. + * Default is @c SubTrees. */ - void setLastModelsFilterBehavior(KSelectionProxyModel::FilterBehavior filter); + void setLastLevelViewMode(LastLevelViewMode mode); + Q_SIGNALS: /** * Notified that the current index has changed from @p previous to @p current diff --git a/kdevplatform/util/multilevellistview.cpp b/kdevplatform/util/multilevellistview.cpp --- a/kdevplatform/util/multilevellistview.cpp +++ b/kdevplatform/util/multilevellistview.cpp @@ -437,12 +437,25 @@ } } -void MultiLevelListView::setLastModelsFilterBehavior(KSelectionProxyModel::FilterBehavior filter) +static +KSelectionProxyModel::FilterBehavior toSelectionProxyModelFilterBehavior(MultiLevelListView::LastLevelViewMode mode) +{ + switch (mode) { + case MultiLevelListView::SubTrees: + return KSelectionProxyModel::SubTreesWithoutRoots; + case MultiLevelListView::DirectChildren: + return KSelectionProxyModel::ChildrenOfExactSelection; + } + Q_UNREACHABLE(); +}; + +void MultiLevelListView::setLastLevelViewMode(LastLevelViewMode mode) { if (d->proxies.isEmpty()) { return; } - dynamic_cast(d->proxies.last())->setFilterBehavior(filter); + const auto filterBehavior = toSelectionProxyModelFilterBehavior(mode); + dynamic_cast(d->proxies.last())->setFilterBehavior(filterBehavior); } diff --git a/plugins/appwizard/projectselectionpage.cpp b/plugins/appwizard/projectselectionpage.cpp --- a/plugins/appwizard/projectselectionpage.cpp +++ b/plugins/appwizard/projectselectionpage.cpp @@ -58,7 +58,7 @@ ui->listView->setLevels(2); ui->listView->setHeaderLabels(QStringList() << i18n("Category") << i18n("Project Type")); ui->listView->setModel(templatesModel); - ui->listView->setLastModelsFilterBehavior(KSelectionProxyModel::ChildrenOfExactSelection); + ui->listView->setLastLevelViewMode(MultiLevelListView::DirectChildren); connect (ui->listView, &MultiLevelListView::currentIndexChanged, this, &ProjectSelectionPage::typeChanged); typeChanged(ui->listView->currentIndex()); diff --git a/plugins/filetemplates/CMakeLists.txt b/plugins/filetemplates/CMakeLists.txt --- a/plugins/filetemplates/CMakeLists.txt +++ b/plugins/filetemplates/CMakeLists.txt @@ -43,7 +43,6 @@ KDev::Util KF5::NewStuff KF5::TextEditor - KF5::ItemModels ) ########### install files ###############