From 0c4cdb89ade12cacb7e69b0d913a7c83fe7b344a Mon Sep 17 00:00:00 2001 From: Al12rs Date: Thu, 8 Feb 2018 22:59:35 +0100 Subject: Changed the data tab to remember the current expanded folders when hiding or un-hiding a file. Using the refresh button will close alll the expanded nodes an return to the initial state as it did before. --- src/mainwindow.cpp | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) (limited to 'src/mainwindow.cpp') diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 5f337da3..afb00313 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -142,6 +142,7 @@ along with Mod Organizer. If not, see . #include #include #include +#include #include #include #include @@ -1306,6 +1307,38 @@ void MainWindow::refreshDataTree() subTree->setExpanded(true); } +void MainWindow::refreshDataTreeKeepExpandedNodes() +{ + QCheckBox *conflictsBox = findChild("conflictsCheckBox"); + QTreeWidget *tree = findChild("dataTree"); + + QStringList expandedNodes; + QTreeWidgetItemIterator it1(tree, QTreeWidgetItemIterator::NotHidden | QTreeWidgetItemIterator::HasChildren); + while (*it1) { + QTreeWidgetItem *current = (*it1); + if (current->isExpanded() && !(current->text(0)=="data")) { + expandedNodes.append(current->text(0)+"/"+current->parent()->text(0)); + } + ++it1; + } + + tree->clear(); + QStringList columns("data"); + columns.append(""); + QTreeWidgetItem *subTree = new QTreeWidgetItem(columns); + updateTo(subTree, L"", *m_OrganizerCore.directoryStructure(), conflictsBox->isChecked()); + tree->insertTopLevelItem(0, subTree); + subTree->setExpanded(true); + QTreeWidgetItemIterator it2(tree, QTreeWidgetItemIterator::HasChildren); + while (*it2) { + QTreeWidgetItem *current = (*it2); + if (!(current->text(0)=="data") && expandedNodes.contains(current->text(0)+"/"+current->parent()->text(0))) { + current->setExpanded(true); + } + ++it2; + } +} + void MainWindow::refreshSavesIfOpen() { @@ -3705,7 +3738,7 @@ void MainWindow::hideFile() if (QFile::rename(oldName, newName)) { originModified(m_ContextItem->data(1, Qt::UserRole + 1).toInt()); - refreshDataTree(); + refreshDataTreeKeepExpandedNodes(); } else { reportError(tr("failed to rename \"%1\" to \"%2\"").arg(oldName).arg(QDir::toNativeSeparators(newName))); } @@ -3729,7 +3762,7 @@ void MainWindow::unhideFile() } if (QFile::rename(oldName, newName)) { originModified(m_ContextItem->data(1, Qt::UserRole + 1).toInt()); - refreshDataTree(); + refreshDataTreeKeepExpandedNodes(); } else { reportError(tr("failed to rename \"%1\" to \"%2\"").arg(QDir::toNativeSeparators(oldName)).arg(QDir::toNativeSeparators(newName))); } -- cgit v1.3.1