diff options
author | Arno <arno@disconnect.de> | 2018-02-17 22:20:28 +0100 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2018-02-17 23:04:05 +0100 |
commit | 3d3c693f05f79d31250c55579236f8b7b9c62a14 (patch) | |
tree | 7db28c3989507e5ee970a6b808437b71091767de /beetview.cpp | |
parent | 70545ab47b7ae61fb4358a6fc6f33e9c423ceea5 (diff) | |
download | BeetPlayer-3d3c693f05f79d31250c55579236f8b7b9c62a14.tar.gz BeetPlayer-3d3c693f05f79d31250c55579236f8b7b9c62a14.tar.bz2 BeetPlayer-3d3c693f05f79d31250c55579236f8b7b9c62a14.zip |
Re-Add Expand and Collapse Actions..
but only if the first child of the root item has children
Diffstat (limited to 'beetview.cpp')
-rw-r--r-- | beetview.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/beetview.cpp b/beetview.cpp index 875eb5a..82dd86b 100644 --- a/beetview.cpp +++ b/beetview.cpp @@ -1,11 +1,40 @@ #include <QMenu> #include <QContextMenuEvent> +#include <QStandardItemModel> +#include <QSortFilterProxyModel> #include "beetview.h" BeetView::BeetView(QWidget *parent) : QTreeView(parent) { } +void BeetView::expandOrCollapse(int mode){ + QModelIndexList sel = selectionModel()->selectedRows(); + for(QModelIndex i : sel){ + if(mode == Expand){ + expand(i); + }else if(mode == Collapse){ + collapse(i); + } + expandOrCollapseRecursive(i, mode); + } +} + +void BeetView::expandOrCollapseRecursive(const QModelIndex &idx, int mode){ + const QSortFilterProxyModel *pm = qobject_cast<const QSortFilterProxyModel*>(model()); + for(int i = 0; i < pm->rowCount(idx); ++i){ + QModelIndex curIdx = pm->index(i, 0, idx); + if(curIdx.isValid()){ + if(mode == Expand){ + expand(curIdx); + }else if(mode == Collapse){ + collapse(curIdx); + } + expandOrCollapseRecursive(curIdx, mode); + } + } +} + void BeetView::contextMenuEvent(QContextMenuEvent *e){ QMenu ctxMenu; for(QAction *a : actions()){ |