From d9ab95a4b28513eada70264387299b02f16aca08 Mon Sep 17 00:00:00 2001 From: gera Date: Thu, 17 Jun 2021 15:25:50 +0300 Subject: [PATCH] Add application preferences with update checkbox. --- src/CMakeLists.txt | 2 + src/prefs/ApplicationPrefs.cpp | 107 +++++++++++++++++++++++++++++++++ src/prefs/ApplicationPrefs.h | 43 +++++++++++++ src/prefs/PrefsPanel.cpp | 2 +- 4 files changed, 153 insertions(+), 1 deletion(-) create mode 100644 src/prefs/ApplicationPrefs.cpp create mode 100644 src/prefs/ApplicationPrefs.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 541683cf9..908e1deab 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -993,6 +993,8 @@ list( APPEND SOURCES update/UpdateManager.cpp update/UpdatePopupDialog.h update/UpdatePopupDialog.cpp + prefs/ApplicationPrefs.h + prefs/ApplicationPrefs.cpp > Experimental.cmake diff --git a/src/prefs/ApplicationPrefs.cpp b/src/prefs/ApplicationPrefs.cpp new file mode 100644 index 000000000..6b26b566b --- /dev/null +++ b/src/prefs/ApplicationPrefs.cpp @@ -0,0 +1,107 @@ +/********************************************************************** + + Audacity: A Digital Audio Editor + + ApplicationPrefs.cpp + + Anton Gerasimov + + +*******************************************************************//** + +\class ApplicationPrefs +\brief A PrefsPanel to enable/disable certain general application options like checking updates, etc. + +*//*******************************************************************/ + + +#include "ApplicationPrefs.h" + +#include + +#include "../Prefs.h" +#include "../ShuttleGui.h" + +//////////////////////////////////////////////////////////////////////////////// + +enum { CheckingUpdatesID = wxID_HIGHEST + 1 }; + +BEGIN_EVENT_TABLE(ApplicationPrefs, PrefsPanel) + EVT_CHECKBOX(CheckingUpdatesID, ApplicationPrefs::OnCheckingUpdates) +END_EVENT_TABLE() + +ApplicationPrefs::ApplicationPrefs(wxWindow * parent, wxWindowID winid) +: PrefsPanel(parent, winid, XO("Application")) +{ + Populate(); +} + +ApplicationPrefs::~ApplicationPrefs() +{ +} + +ComponentInterfaceSymbol ApplicationPrefs::GetSymbol() +{ + return WARNINGS_PREFS_PLUGIN_SYMBOL; +} + +TranslatableString ApplicationPrefs::GetDescription() +{ + return XO("Preferences for Application"); +} + +wxString ApplicationPrefs::HelpPageName() +{ + return "Application_Preferences"; +} + +void ApplicationPrefs::Populate() +{ + //------------------------- Main section -------------------- + // Now construct the GUI itself. + // Use 'eIsCreatingFromPrefs' so that the GUI is + // initialised with values from gPrefs. + ShuttleGui S(this, eIsCreatingFromPrefs); + PopulateOrExchange(S); + // ----------------------- End of main section -------------- +} + +void ApplicationPrefs::PopulateOrExchange(ShuttleGui & S) +{ + S.SetBorder(2); + S.StartScroller(); + + S.StartStatic(XO("Update Audacity")); + { + // TODO: replace `false` to UpdateManager::GetInstance().isUpdatesChakingEnabled() + // and XO("Check for Updates...") need remove endian after translation. + S.Id(CheckingUpdatesID).AddCheckBox( + XO("Check for Updates"), false); + } + S.EndStatic(); + S.EndScroller(); +} + +bool ApplicationPrefs::Commit() +{ + ShuttleGui S(this, eIsSavingToPrefs); + PopulateOrExchange(S); + + return true; +} + +void ApplicationPrefs::OnCheckingUpdates(wxCommandEvent& event) +{ + event.IsChecked(); + // TODO: add UpdateManager::GetInstance().enableUpdatesChaking(event.IsChecked()) +} + +namespace{ +PrefsPanel::Registration sAttachment{ "Application", + [](wxWindow *parent, wxWindowID winid, AudacityProject *) + { + wxASSERT(parent); // to justify safenew + return safenew ApplicationPrefs(parent, winid); + } +}; +} diff --git a/src/prefs/ApplicationPrefs.h b/src/prefs/ApplicationPrefs.h new file mode 100644 index 000000000..f91c7dd7c --- /dev/null +++ b/src/prefs/ApplicationPrefs.h @@ -0,0 +1,43 @@ +/********************************************************************** + + Audacity: A Digital Audio Editor + + ApplicationPrefs.h + + Anton Gerasimov + +**********************************************************************/ + +#ifndef __AUDACITY_APPLICATION_PREFS__ +#define __AUDACITY_APPLICATION_PREFS__ + +#include + +#include "PrefsPanel.h" + +class ShuttleGui; + +#define WARNINGS_PREFS_PLUGIN_SYMBOL ComponentInterfaceSymbol{ XO("Application") } + +class ApplicationPrefs final : public PrefsPanel +{ + public: + ApplicationPrefs(wxWindow * parent, wxWindowID winid); + ~ApplicationPrefs(); + ComponentInterfaceSymbol GetSymbol() override; + TranslatableString GetDescription() override; + + bool Commit() override; + wxString HelpPageName() override; + + void OnCheckingUpdates(wxCommandEvent& event); + + private: + void Populate(); + void PopulateOrExchange(ShuttleGui & S) override; + +public: + DECLARE_EVENT_TABLE() +}; + +#endif diff --git a/src/prefs/PrefsPanel.cpp b/src/prefs/PrefsPanel.cpp index e4df7904b..8f8986d9c 100644 --- a/src/prefs/PrefsPanel.cpp +++ b/src/prefs/PrefsPanel.cpp @@ -115,7 +115,7 @@ PrefsPanel::Factories PathStart, { {wxT(""), - wxT("Device,Playback,Recording,Quality,GUI,Tracks,ImportExport,Directories,Warnings,Effects,KeyConfig,Mouse") + wxT("Device,Playback,Recording,Quality,GUI,Tracks,ImportExport,Directories,Warnings,Effects,KeyConfig,Mouse,Application") }, {wxT("/Tracks"), wxT("TracksBehaviors,Spectrum")}, }