[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [kate] addons/filetree: CHANGELOG: Implemented Feature Request: Expand/Collapse all actions for item
From: Christoph Cullmann <cullmann () kde ! org>
Date: 2016-10-19 12:54:29
Message-ID: E1bwqO5-000895-Fm () code ! kde ! org
[Download RAW message or body]
Git commit 0b2997addf31e4c68580445271c460c61c658342 by Christoph Cullmann, \
on behalf of Markus Pister. Committed on 19/10/2016 at 12:53.
Pushed by cullmann into branch 'master'.
CHANGELOG: Implemented Feature Request: Expand/Collapse all actions for \
items in the documents list
BUG: 360195
Patch by Markus Pister
M +54 -0 addons/filetree/katefiletree.cpp
M +4 -0 addons/filetree/katefiletree.h
http://commits.kde.org/kate/0b2997addf31e4c68580445271c460c61c658342
diff --git a/addons/filetree/katefiletree.cpp \
b/addons/filetree/katefiletree.cpp index b4437c7..9729e9a 100644
--- a/addons/filetree/katefiletree.cpp
+++ b/addons/filetree/katefiletree.cpp
@@ -69,6 +69,14 @@ KateFileTree::KateFileTree(QWidget *parent): \
QTreeView(parent)
connect(m_filelistCloseDocument, SIGNAL(triggered()), this, \
SLOT(slotDocumentClose()));
m_filelistCloseDocument->setWhatsThis(i18n("Close the current \
document."));
+ m_filelistExpandRecursive = new \
QAction(QIcon::fromTheme(QLatin1String("view-list-tree")), \
i18nc("@action:inmenu", "Expand recursively"), this); + \
connect(m_filelistExpandRecursive, SIGNAL(triggered()), this, \
SLOT(slotExpandRecursive())); + \
m_filelistExpandRecursive->setWhatsThis(i18n("Expand the file list sub tree \
recursively.")); +
+ m_filelistCollapseRecursive = new \
QAction(QIcon::fromTheme(QLatin1String("view-list-tree")), \
i18nc("@action:inmenu", "Collapse recursively"), this); + \
connect(m_filelistCollapseRecursive, SIGNAL(triggered()), this, \
SLOT(slotCollapseRecursive())); + \
m_filelistCollapseRecursive->setWhatsThis(i18n("Collapse the file list sub \
tree recursively.")); +
m_filelistCloseOtherDocument = new \
QAction(QIcon::fromTheme(QLatin1String("document-close")), \
i18nc("@action:inmenu", "Close Other"), this);
connect(m_filelistCloseOtherDocument, SIGNAL(triggered()), this, \
SLOT(slotDocumentCloseOther()));
m_filelistCloseOtherDocument->setWhatsThis(i18n("Close other documents \
in this folder.")); @@ -225,6 +233,8 @@ void \
KateFileTree::contextMenuEvent(QContextMenuEvent *event) QMenu menu;
menu.addAction(m_filelistReloadDocument);
menu.addAction(m_filelistCloseDocument);
+ menu.addAction(m_filelistExpandRecursive);
+ menu.addAction(m_filelistCollapseRecursive);
if (isFile) {
menu.addAction(m_filelistCloseOtherDocument);
@@ -337,6 +347,50 @@ void KateFileTree::slotDocumentClose()
KTextEditor::Editor::instance()->application()->closeDocuments(closingDocuments);
}
+void KateFileTree::slotExpandRecursive()
+{
+ if (! m_indexContextMenu.isValid()) {
+ return;
+ }
+
+ // Work list for DFS walk over sub tree
+ QList<QPersistentModelIndex> worklist = { m_indexContextMenu };
+
+ while (! worklist.isEmpty()) {
+ QPersistentModelIndex index = worklist.takeLast();
+
+ // Expand current item
+ expand(index);
+
+ // Append all children of current item
+ for (int i=0 ; i < model()->rowCount(index) ; ++i) {
+ worklist.append(index.child(i,0));
+ }
+ }
+}
+
+void KateFileTree::slotCollapseRecursive()
+{
+ if (! m_indexContextMenu.isValid()) {
+ return;
+ }
+
+ // Work list for DFS walk over sub tree
+ QList<QPersistentModelIndex> worklist = { m_indexContextMenu };
+
+ while (! worklist.isEmpty()) {
+ QPersistentModelIndex index = worklist.takeLast();
+
+ // Expand current item
+ collapse(index);
+
+ // Prepend all children of current item
+ for (int i=0 ; i < model()->rowCount(index) ; ++i) {
+ worklist.append(index.child(i,0));
+ }
+ }
+}
+
void KateFileTree::slotDocumentCloseOther()
{
QVariant v = model()->data(m_indexContextMenu.parent(), \
KateFileTreeModel::DocumentTreeRole);
diff --git a/addons/filetree/katefiletree.h \
b/addons/filetree/katefiletree.h index 497f998..7593a0e 100644
--- a/addons/filetree/katefiletree.h
+++ b/addons/filetree/katefiletree.h
@@ -44,6 +44,8 @@ public:
public Q_SLOTS:
void slotDocumentClose();
+ void slotExpandRecursive();
+ void slotCollapseRecursive();
void slotDocumentCloseOther();
void slotDocumentReload();
void slotCopyFilename();
@@ -88,6 +90,8 @@ private:
private:
QAction *m_filelistCloseDocument;
+ QAction *m_filelistExpandRecursive;
+ QAction *m_filelistCollapseRecursive;
QAction *m_filelistCloseOtherDocument;
QAction *m_filelistReloadDocument;
QAction *m_filelistCopyFilename;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic