Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/Main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -297,6 +297,10 @@ class GuiAppApplication : public JUCEApplication, public FocusChangeListener

void saveWindowPosition()
{
// Check if we should save
if (! Settings::getSaveOnExit())
return;

// Don't save minimized position
if (! isMinimised())
{
Expand Down
5 changes: 5 additions & 0 deletions src/utils/Settings.h
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,10 @@ class Settings
}
}

static void setSaveOnExit(bool shouldSave) { getInstance()->saveOnExit = shouldSave; }

static bool getSaveOnExit() { return getInstance()->saveOnExit; }

private:
Settings() : appProperties(nullptr) {}

Expand All @@ -180,4 +184,5 @@ class Settings
}

ApplicationProperties* appProperties;
bool saveOnExit = true;
};
44 changes: 44 additions & 0 deletions src/windows/settings/GeneralSettingsTab.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,11 @@ GeneralSettingsTab::GeneralSettingsTab()
openSettingsButton.setButtonText("Open Settings File");
openSettingsButton.onClick = [this] { handleOpenSettings(); };
addAndMakeVisible(openSettingsButton);

// Set up button to restore default settings
restoreDefaultSettingsButton.setButtonText("Restore Default Settings");
restoreDefaultSettingsButton.onClick = [this] { handleRestoreDefaultSettings(); };
addAndMakeVisible(restoreDefaultSettingsButton);
}

void GeneralSettingsTab::resized()
Expand All @@ -22,6 +27,10 @@ void GeneralSettingsTab::resized()
area.removeFromTop(10); // Filler space

openSettingsButton.setBounds(area.removeFromTop(30));

area.removeFromTop(10); // Filler space

restoreDefaultSettingsButton.setBounds(area.removeFromTop(30));
}

void GeneralSettingsTab::handleOpenLogFolder()
Expand All @@ -40,3 +49,38 @@ void GeneralSettingsTab::handleOpenSettings()
// TODO - handler error case
}
}

void GeneralSettingsTab::handleRestoreDefaultSettings()
{
NativeMessageBox::showYesNoBox(
AlertWindow::QuestionIcon,
"Restore Default Settings",
"Are you sure you want to restore default settings? This will delete your current settings "
"file and reset all preferences to their defaults.",
this,
ModalCallbackFunction::create(
[this](int result)
{
if (result == 1) // Yes
{
if (auto* settings = Settings::getUserSettings())
{
// Delete the settings file
settings->getFile().deleteFile();

// Clear in-memory settings
settings->clear();

// Prevent saving on exit
Settings::setSaveOnExit(false);

NativeMessageBox::showMessageBoxAsync(
AlertWindow::InfoIcon,
"Settings Restored",
"Settings have been restored to defaults. It is recommended to restart "
"the application for all changes to take full effect.",
this);
}
}
}));
}
2 changes: 2 additions & 0 deletions src/windows/settings/GeneralSettingsTab.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,11 @@ class GeneralSettingsTab : public Component
private:
void handleOpenLogFolder();
void handleOpenSettings();
void handleRestoreDefaultSettings();

TextButton openLogFolderButton;
TextButton openSettingsButton;
TextButton restoreDefaultSettingsButton;

JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(GeneralSettingsTab)
};
Loading