From 3d3c693f05f79d31250c55579236f8b7b9c62a14 Mon Sep 17 00:00:00 2001 From: Arno Date: Sat, 17 Feb 2018 22:20:28 +0100 Subject: Re-Add Expand and Collapse Actions.. but only if the first child of the root item has children --- beetview.cpp | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'beetview.cpp') diff --git a/beetview.cpp b/beetview.cpp index 875eb5a..82dd86b 100644 --- a/beetview.cpp +++ b/beetview.cpp @@ -1,11 +1,40 @@ #include #include +#include +#include #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(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()){ -- cgit v1.2.3-70-g09d2