Skip to content

Commit

Permalink
Merge pull request #194 from aldelaro5/config-autocollapse
Browse files Browse the repository at this point in the history
Add Setting to collapse all Expanded Groups on save
  • Loading branch information
dreamsyntax authored Feb 28, 2025
2 parents 161ffd5 + 0d5e937 commit a25490e
Show file tree
Hide file tree
Showing 8 changed files with 37 additions and 7 deletions.
14 changes: 14 additions & 0 deletions Source/GUI/MainWindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ MainWindow::MainWindow()
m_watcher->restoreWatchModel(SConfig::getInstance().getWatchModel());
}

m_actCollapseGroupsOnSave->setChecked(SConfig::getInstance().getCollapseGroupsOnSave());

m_actAutoHook->setChecked(SConfig::getInstance().getAutoHook());

if (m_actAutoHook->isChecked())
Expand All @@ -78,6 +80,8 @@ void MainWindow::makeMenus()
m_actExportAsCSV = new QAction(tr("&Export as CSV..."), this);
m_actAutoloadLastFile = new QAction(tr("Auto-load last file"), this);
m_actAutoloadLastFile->setCheckable(true);
m_actCollapseGroupsOnSave = new QAction(tr("Collapse Groups on save"), this);
m_actCollapseGroupsOnSave->setCheckable(true);
QAction* const actOpenConfigDir{new QAction(tr("Open Configuration Directory..."), this)};

m_actOpenWatchList->setShortcut(Qt::Modifier::CTRL | Qt::Key::Key_O);
Expand Down Expand Up @@ -120,6 +124,9 @@ void MainWindow::makeMenus()
connect(m_actAutoloadLastFile, &QAction::triggered, this,
&MainWindow::onAutoLoadLastFileTriggered);

connect(m_actCollapseGroupsOnSave, &QAction::triggered, this,
&MainWindow::onCollapseGroupsOnSaveTriggered);

connect(m_actSettings, &QAction::triggered, this, &MainWindow::onOpenSettings);

connect(m_actAutoHook, &QAction::toggled, this, &MainWindow::onAutoHookToggled);
Expand All @@ -143,6 +150,7 @@ void MainWindow::makeMenus()
m_menuFile->addAction(m_actExportAsCSV);
m_menuFile->addSeparator();
m_menuFile->addAction(m_actAutoloadLastFile);
m_menuFile->addAction(m_actCollapseGroupsOnSave);
m_menuFile->addSeparator();
m_menuFile->addAction(actOpenConfigDir);
m_menuFile->addSeparator();
Expand Down Expand Up @@ -362,6 +370,11 @@ void MainWindow::onAutoLoadLastFileTriggered(const bool checked)
updateStatusBar();
}

void MainWindow::onCollapseGroupsOnSaveTriggered(const bool checked)
{
SConfig::getInstance().setCollapseGroupsOnSave(checked);
}

void MainWindow::onAutoHookToggled(const bool checked)
{
if (checked)
Expand Down Expand Up @@ -579,6 +592,7 @@ void MainWindow::closeEvent(QCloseEvent* event)
SConfig::getInstance().setAutoHook(m_actAutoHook->isChecked());
SConfig::getInstance().setAutoloadLastFile(m_actAutoloadLastFile->isChecked());
SConfig::getInstance().setLastLoadedFile(m_watcher->m_watchListFile);
SConfig::getInstance().setCollapseGroupsOnSave(m_actCollapseGroupsOnSave->isChecked());
if (!m_actAutoloadLastFile->isChecked() || m_watcher->m_watchListFile.isEmpty())
{
SConfig::getInstance().setWatchModel(m_watcher->saveWatchModel());
Expand Down
2 changes: 2 additions & 0 deletions Source/GUI/MainWindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ class MainWindow : public QMainWindow
void updateDolphinHookingStatus();
void onHookAttempt();
void onUnhook();
void onCollapseGroupsOnSaveTriggered(bool checked);
void onAutoHookToggled(bool checked);
void onHookIfNotHooked();
void onOpenMenViewer();
Expand Down Expand Up @@ -86,6 +87,7 @@ class MainWindow : public QMainWindow
QAction* m_actImportFromCT{};
QAction* m_actExportAsCSV{};
QAction* m_actAutoloadLastFile{};
QAction* m_actCollapseGroupsOnSave{};
QAction* m_actSettings{};
QAction* m_actAutoHook{};
QAction* m_actHook{};
Expand Down
3 changes: 2 additions & 1 deletion Source/GUI/MemWatcher/MemWatchModel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#include "../../Common/CommonUtils.h"
#include "../../DolphinProcess/DolphinAccessor.h"
#include "../GUICommon.h"
#include "../Settings/SConfig.h"

namespace
{
Expand Down Expand Up @@ -666,7 +667,7 @@ MemWatchModel::CTParsingErrors MemWatchModel::importRootFromCTFile(QFile* const

void MemWatchModel::writeRootToJsonRecursive(QJsonObject& json) const
{
m_rootNode->writeToJson(json);
m_rootNode->writeToJson(json, !SConfig::getInstance().getCollapseGroupsOnSave());
}

QString MemWatchModel::writeRootToCSVStringRecursive() const
Expand Down
2 changes: 1 addition & 1 deletion Source/GUI/MemWatcher/MemWatchWidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -404,7 +404,7 @@ void MemWatchWidget::copySelectedWatchesToClipBoard()

rootNodeCopy.appendChild(childNode); // Borrow node temporarily.
}
rootNodeCopy.writeToJson(jsonNode);
rootNodeCopy.writeToJson(jsonNode, true);

// Remove borrowed children before going out of scope.
rootNodeCopy.removeChildren();
Expand Down
10 changes: 10 additions & 0 deletions Source/GUI/Settings/SConfig.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,16 @@ bool SConfig::ownsSettingsFile() const
return m_lockFile->isLocked();
}

bool SConfig::getCollapseGroupsOnSave() const
{
return value("collapseGroupsOnSave", false).toBool();
}

void SConfig::setCollapseGroupsOnSave(const bool enabled)
{
setValue("collapseGroupsOnSave", enabled);
}

void SConfig::setValue(const QString& key, const QVariant& value)
{
m_map[key] = value;
Expand Down
3 changes: 3 additions & 0 deletions Source/GUI/Settings/SConfig.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,9 @@ class SConfig
QString getLastLoadedFile() const;
void setLastLoadedFile(const QString& fileName);

bool getCollapseGroupsOnSave() const;
void setCollapseGroupsOnSave(bool enabled);

private:
void setValue(const QString& key, const QVariant& value);
QVariant value(const QString& key, const QVariant& defaultValue) const;
Expand Down
8 changes: 4 additions & 4 deletions Source/MemoryWatch/MemWatchTreeNode.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -199,20 +199,20 @@ void MemWatchTreeNode::readFromJson(const QJsonObject& json, MemWatchTreeNode* p
}
}

void MemWatchTreeNode::writeToJson(QJsonObject& json) const
void MemWatchTreeNode::writeToJson(QJsonObject& json, const bool writeExpandedState) const
{
if (isGroup())
{
json["groupName"] = m_groupName;
if (m_expanded)
if (m_expanded && writeExpandedState)
{
json["expanded"] = m_expanded;
}
QJsonArray entries;
for (MemWatchTreeNode* const child : m_children)
{
QJsonObject theNode;
child->writeToJson(theNode);
child->writeToJson(theNode, writeExpandedState);
entries.append(theNode);
}
json["groupEntries"] = entries;
Expand All @@ -225,7 +225,7 @@ void MemWatchTreeNode::writeToJson(QJsonObject& json) const
for (MemWatchTreeNode* const child : m_children)
{
QJsonObject theNode;
child->writeToJson(theNode);
child->writeToJson(theNode, writeExpandedState);
watchList.append(theNode);
}
json["watchList"] = watchList;
Expand Down
2 changes: 1 addition & 1 deletion Source/MemoryWatch/MemWatchTreeNode.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ class MemWatchTreeNode
void deleteChildren();

void readFromJson(const QJsonObject& json, MemWatchTreeNode* parent = nullptr);
void writeToJson(QJsonObject& json) const;
void writeToJson(QJsonObject& json, const bool writeExpandedState) const;
QString writeAsCSV() const;

private:
Expand Down

0 comments on commit a25490e

Please sign in to comment.