From c6d626867488fc45da12ba6d3593da035ecfb4b5 Mon Sep 17 00:00:00 2001 From: Otiel Date: Mon, 13 May 2019 14:08:03 +0200 Subject: [PATCH 001/105] feat: apply language immediately after changing combobox --- .../Settings/UserControlSettingsGeneral.xaml | 1 + .../UserControlSettingsGeneral.xaml.cs | 23 +++++++++++-------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsGeneral.xaml b/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsGeneral.xaml index 58c78aff..f903fe57 100644 --- a/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsGeneral.xaml +++ b/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsGeneral.xaml @@ -105,6 +105,7 @@ ItemsSource="{Binding Source={local:EnumerationExtension {x:Type local:Language}}}" SelectedValue="{Binding Language, UpdateSourceTrigger=Explicit}" SelectedValuePath="Value" + SelectionChanged="ComboBoxLanguage_SelectionChanged" TabIndex="4" /> Date: Mon, 13 May 2019 14:12:04 +0200 Subject: [PATCH 002/105] refactor: move apply language method to helper class --- src/BandcampDownloader/App.xaml.cs | 19 +---------------- .../BandcampDownloader.csproj | 1 + .../Helpers/LanguageHelper.cs | 21 +++++++++++++++++++ .../UserControlSettingsGeneral.xaml.cs | 12 +---------- 4 files changed, 24 insertions(+), 29 deletions(-) create mode 100644 src/BandcampDownloader/Helpers/LanguageHelper.cs diff --git a/src/BandcampDownloader/App.xaml.cs b/src/BandcampDownloader/App.xaml.cs index 62a5b81e..8d779f1f 100644 --- a/src/BandcampDownloader/App.xaml.cs +++ b/src/BandcampDownloader/App.xaml.cs @@ -1,8 +1,6 @@ using System; -using System.Globalization; using System.Windows; using Config.Net; -using WPFLocalizeExtension.Engine; namespace BandcampDownloader { @@ -20,7 +18,7 @@ public partial class App: Application { protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); InitializeSettings(); - LoadLanguage(); + LanguageHelper.ApplyLanguage(UserSettings.Language.ToString()); } /// @@ -34,20 +32,5 @@ private void InitializeSettings() { App.UserSettings.DownloadsPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\{artist}\\{album}"; } } - - /// - /// Load settings for localization - /// - private void LoadLanguage() { - // Sets the CultureInfo according to the language saved in settings. - LocalizeDictionary.Instance.Culture = new CultureInfo(UserSettings.Language.ToString()); - - // Set system MessageBox buttons - MessageBoxManager.OK = BandcampDownloader.Properties.Resources.messageBoxButtonOK; - MessageBoxManager.Cancel = BandcampDownloader.Properties.Resources.messageBoxButtonCancel; - MessageBoxManager.Yes = BandcampDownloader.Properties.Resources.messageBoxButtonYes; - MessageBoxManager.No = BandcampDownloader.Properties.Resources.messageBoxButtonNo; - MessageBoxManager.Register(); - } } } \ No newline at end of file diff --git a/src/BandcampDownloader/BandcampDownloader.csproj b/src/BandcampDownloader/BandcampDownloader.csproj index 5733b5a3..088aad19 100644 --- a/src/BandcampDownloader/BandcampDownloader.csproj +++ b/src/BandcampDownloader/BandcampDownloader.csproj @@ -150,6 +150,7 @@ + diff --git a/src/BandcampDownloader/Helpers/LanguageHelper.cs b/src/BandcampDownloader/Helpers/LanguageHelper.cs new file mode 100644 index 00000000..2c27ea21 --- /dev/null +++ b/src/BandcampDownloader/Helpers/LanguageHelper.cs @@ -0,0 +1,21 @@ +using System.Globalization; +using WPFLocalizeExtension.Engine; + +namespace BandcampDownloader { + + internal static class LanguageHelper { + + public static void ApplyLanguage(string cultureName) { + // Apply language + LocalizeDictionary.Instance.Culture = new CultureInfo(cultureName); + + // Set system MessageBox buttons + MessageBoxManager.Unregister(); + MessageBoxManager.OK = Properties.Resources.messageBoxButtonOK; + MessageBoxManager.Cancel = Properties.Resources.messageBoxButtonCancel; + MessageBoxManager.Yes = Properties.Resources.messageBoxButtonYes; + MessageBoxManager.No = Properties.Resources.messageBoxButtonNo; + MessageBoxManager.Register(); + } + } +} \ No newline at end of file diff --git a/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsGeneral.xaml.cs b/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsGeneral.xaml.cs index e30dd5b9..f624f911 100644 --- a/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsGeneral.xaml.cs +++ b/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsGeneral.xaml.cs @@ -1,10 +1,8 @@ using System; using System.Diagnostics; -using System.Globalization; using System.Reflection; using System.Windows; using System.Windows.Controls; -using WPFLocalizeExtension.Engine; namespace BandcampDownloader { @@ -59,15 +57,7 @@ private async void ButtonCheckForUpdates_Click(object sender, RoutedEventArgs e) private void ComboBoxLanguage_SelectionChanged(object sender, SelectionChangedEventArgs e) { // Apply selected language - LocalizeDictionary.Instance.Culture = new CultureInfo(comboBoxLanguage.SelectedValue.ToString()); - - // Set system MessageBox buttons - MessageBoxManager.Unregister(); - MessageBoxManager.OK = Properties.Resources.messageBoxButtonOK; - MessageBoxManager.Cancel = Properties.Resources.messageBoxButtonCancel; - MessageBoxManager.Yes = Properties.Resources.messageBoxButtonYes; - MessageBoxManager.No = Properties.Resources.messageBoxButtonNo; - MessageBoxManager.Register(); + LanguageHelper.ApplyLanguage(comboBoxLanguage.SelectedValue.ToString()); } private void Hyperlink_RequestNavigate(object sender, System.Windows.Navigation.RequestNavigateEventArgs e) { From cbeb4d8a02ca1a89f54fcd521ded64d4c5040f84 Mon Sep 17 00:00:00 2001 From: Otiel Date: Mon, 13 May 2019 14:27:34 +0200 Subject: [PATCH 003/105] feat: revert language if settings window is cancelled --- src/BandcampDownloader/BandcampDownloader.csproj | 1 + .../UI/Dialogs/Settings/IUserControlSettings.cs | 11 +++++++++++ .../Settings/UserControlSettingsAdvanced.xaml.cs | 9 ++++++++- .../Settings/UserControlSettingsCoverArt.xaml.cs | 9 ++++++++- .../Settings/UserControlSettingsDownloads.xaml.cs | 9 ++++++++- .../Settings/UserControlSettingsGeneral.xaml.cs | 9 ++++++++- .../Settings/UserControlSettingsNetwork.xaml.cs | 9 ++++++++- .../Settings/UserControlSettingsPlaylist.xaml.cs | 9 ++++++++- .../Settings/UserControlSettingsTags.xaml.cs | 9 ++++++++- .../UI/Dialogs/Settings/WindowSettings.xaml.cs | 14 ++++++++++++++ 10 files changed, 82 insertions(+), 7 deletions(-) create mode 100644 src/BandcampDownloader/UI/Dialogs/Settings/IUserControlSettings.cs diff --git a/src/BandcampDownloader/BandcampDownloader.csproj b/src/BandcampDownloader/BandcampDownloader.csproj index 088aad19..8410ca8f 100644 --- a/src/BandcampDownloader/BandcampDownloader.csproj +++ b/src/BandcampDownloader/BandcampDownloader.csproj @@ -162,6 +162,7 @@ + UserControlSettingsAbout.xaml diff --git a/src/BandcampDownloader/UI/Dialogs/Settings/IUserControlSettings.cs b/src/BandcampDownloader/UI/Dialogs/Settings/IUserControlSettings.cs new file mode 100644 index 00000000..9eb5a30c --- /dev/null +++ b/src/BandcampDownloader/UI/Dialogs/Settings/IUserControlSettings.cs @@ -0,0 +1,11 @@ +namespace BandcampDownloader { + + internal interface IUserControlSettings { + + void CancelChanges(); + + void LoadSettings(); + + void SaveSettings(); + } +} \ No newline at end of file diff --git a/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsAdvanced.xaml.cs b/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsAdvanced.xaml.cs index ff75b736..320e2788 100644 --- a/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsAdvanced.xaml.cs +++ b/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsAdvanced.xaml.cs @@ -2,7 +2,7 @@ namespace BandcampDownloader { - public partial class UserControlSettingsAdvanced: UserControl { + public partial class UserControlSettingsAdvanced: UserControl, IUserControlSettings { public UserControlSettingsAdvanced() { InitializeComponent(); @@ -10,6 +10,13 @@ public UserControlSettingsAdvanced() { DataContext = App.UserSettings; } + /// + /// Cancels the changes already applied. + /// + public void CancelChanges() { + // Nothing to "unapply" + } + /// /// Loads settings from App.UserSettings. /// diff --git a/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsCoverArt.xaml.cs b/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsCoverArt.xaml.cs index 29fe122a..f90ab6a8 100644 --- a/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsCoverArt.xaml.cs +++ b/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsCoverArt.xaml.cs @@ -2,7 +2,7 @@ namespace BandcampDownloader { - public partial class UserControlSettingsCoverArt: UserControl { + public partial class UserControlSettingsCoverArt: UserControl, IUserControlSettings { public UserControlSettingsCoverArt() { InitializeComponent(); @@ -10,6 +10,13 @@ public UserControlSettingsCoverArt() { DataContext = App.UserSettings; } + /// + /// Cancels the changes already applied. + /// + public void CancelChanges() { + // Nothing to "unapply" + } + /// /// Loads settings from App.UserSettings. /// diff --git a/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsDownloads.xaml.cs b/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsDownloads.xaml.cs index d4296ede..b1ea885c 100644 --- a/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsDownloads.xaml.cs +++ b/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsDownloads.xaml.cs @@ -2,7 +2,7 @@ namespace BandcampDownloader { - public partial class UserControlSettingsDownloads: UserControl { + public partial class UserControlSettingsDownloads: UserControl, IUserControlSettings { public UserControlSettingsDownloads() { InitializeComponent(); @@ -10,6 +10,13 @@ public UserControlSettingsDownloads() { DataContext = App.UserSettings; } + /// + /// Cancels the changes already applied. + /// + public void CancelChanges() { + // Nothing to "unapply" + } + /// /// Loads settings from App.UserSettings. /// diff --git a/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsGeneral.xaml.cs b/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsGeneral.xaml.cs index f624f911..62223f94 100644 --- a/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsGeneral.xaml.cs +++ b/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsGeneral.xaml.cs @@ -6,7 +6,7 @@ namespace BandcampDownloader { - public partial class UserControlSettingsGeneral: UserControl { + public partial class UserControlSettingsGeneral: UserControl, IUserControlSettings { public UserControlSettingsGeneral() { InitializeComponent(); @@ -14,6 +14,13 @@ public UserControlSettingsGeneral() { DataContext = App.UserSettings; } + /// + /// Cancels the changes already applied. + /// + public void CancelChanges() { + LanguageHelper.ApplyLanguage(App.UserSettings.Language.ToString()); + } + /// /// Loads settings from App.UserSettings. /// diff --git a/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsNetwork.xaml.cs b/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsNetwork.xaml.cs index 6d56e132..41258efb 100644 --- a/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsNetwork.xaml.cs +++ b/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsNetwork.xaml.cs @@ -2,7 +2,7 @@ namespace BandcampDownloader { - public partial class UserControlSettingsNetwork: UserControl { + public partial class UserControlSettingsNetwork: UserControl, IUserControlSettings { public UserControlSettingsNetwork() { InitializeComponent(); @@ -10,6 +10,13 @@ public UserControlSettingsNetwork() { DataContext = App.UserSettings; } + /// + /// Cancels the changes already applied. + /// + public void CancelChanges() { + // Nothing to "unapply" + } + /// /// Loads settings from App.UserSettings. /// diff --git a/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsPlaylist.xaml.cs b/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsPlaylist.xaml.cs index 7dc96708..0e5d2542 100644 --- a/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsPlaylist.xaml.cs +++ b/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsPlaylist.xaml.cs @@ -2,7 +2,7 @@ namespace BandcampDownloader { - public partial class UserControlSettingsPlaylist: UserControl { + public partial class UserControlSettingsPlaylist: UserControl, IUserControlSettings { public UserControlSettingsPlaylist() { InitializeComponent(); @@ -10,6 +10,13 @@ public UserControlSettingsPlaylist() { DataContext = App.UserSettings; } + /// + /// Cancels the changes already applied. + /// + public void CancelChanges() { + // Nothing to "unapply" + } + /// /// Loads settings from App.UserSettings. /// diff --git a/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsTags.xaml.cs b/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsTags.xaml.cs index c13f3081..cd6048b8 100644 --- a/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsTags.xaml.cs +++ b/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsTags.xaml.cs @@ -2,7 +2,7 @@ namespace BandcampDownloader { - public partial class UserControlSettingsTags: UserControl { + public partial class UserControlSettingsTags: UserControl, IUserControlSettings { public UserControlSettingsTags() { InitializeComponent(); @@ -10,6 +10,13 @@ public UserControlSettingsTags() { DataContext = App.UserSettings; } + /// + /// Cancels the changes already applied. + /// + public void CancelChanges() { + // Nothing to "unapply" + } + /// /// Loads settings from App.UserSettings. /// diff --git a/src/BandcampDownloader/UI/Dialogs/Settings/WindowSettings.xaml.cs b/src/BandcampDownloader/UI/Dialogs/Settings/WindowSettings.xaml.cs index 580672e4..7547ab92 100644 --- a/src/BandcampDownloader/UI/Dialogs/Settings/WindowSettings.xaml.cs +++ b/src/BandcampDownloader/UI/Dialogs/Settings/WindowSettings.xaml.cs @@ -22,6 +22,7 @@ public WindowSettings(bool activeDownloads) { } private void ButtonCancel_Click(object sender, RoutedEventArgs e) { + CancelChanges(); Close(); } @@ -36,6 +37,19 @@ private void ButtonSave_Click(object sender, RoutedEventArgs e) { Close(); } + /// + /// Cancels the changes already applied. + /// + private void CancelChanges() { + userControlSettingsAdvanced.CancelChanges(); + userControlSettingsCoverArt.CancelChanges(); + userControlSettingsDownloads.CancelChanges(); + userControlSettingsGeneral.CancelChanges(); + userControlSettingsNetwork.CancelChanges(); + userControlSettingsPlaylist.CancelChanges(); + userControlSettingsTags.CancelChanges(); + } + /// /// Resets settings to their default values. /// From 2ea96a7eb430a8f8d6980cd4408d4d9a794cdbb2 Mon Sep 17 00:00:00 2001 From: Otiel Date: Mon, 13 May 2019 14:27:47 +0200 Subject: [PATCH 004/105] docs: improve XML comments --- .../UI/Dialogs/Settings/WindowSettings.xaml.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/BandcampDownloader/UI/Dialogs/Settings/WindowSettings.xaml.cs b/src/BandcampDownloader/UI/Dialogs/Settings/WindowSettings.xaml.cs index 7547ab92..69bd3407 100644 --- a/src/BandcampDownloader/UI/Dialogs/Settings/WindowSettings.xaml.cs +++ b/src/BandcampDownloader/UI/Dialogs/Settings/WindowSettings.xaml.cs @@ -76,7 +76,7 @@ private void ResetSettings() { } /// - /// Save all settings. + /// Saves all settings. /// private void SaveSettings() { userControlSettingsAdvanced.SaveSettings(); From 0cbdce0e6229aea38aea72e933992cbd004c6102 Mon Sep 17 00:00:00 2001 From: Otiel Date: Mon, 13 May 2019 16:01:35 +0200 Subject: [PATCH 005/105] refactor: pass language enum instead of culture string --- src/BandcampDownloader/App.xaml.cs | 2 +- src/BandcampDownloader/Helpers/LanguageHelper.cs | 8 ++++++-- .../Dialogs/Settings/UserControlSettingsGeneral.xaml.cs | 4 ++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/BandcampDownloader/App.xaml.cs b/src/BandcampDownloader/App.xaml.cs index 8d779f1f..3388c074 100644 --- a/src/BandcampDownloader/App.xaml.cs +++ b/src/BandcampDownloader/App.xaml.cs @@ -18,7 +18,7 @@ public partial class App: Application { protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); InitializeSettings(); - LanguageHelper.ApplyLanguage(UserSettings.Language.ToString()); + LanguageHelper.ApplyLanguage(UserSettings.Language); } /// diff --git a/src/BandcampDownloader/Helpers/LanguageHelper.cs b/src/BandcampDownloader/Helpers/LanguageHelper.cs index 2c27ea21..efec2978 100644 --- a/src/BandcampDownloader/Helpers/LanguageHelper.cs +++ b/src/BandcampDownloader/Helpers/LanguageHelper.cs @@ -5,9 +5,13 @@ namespace BandcampDownloader { internal static class LanguageHelper { - public static void ApplyLanguage(string cultureName) { + /// + /// Applies the specified language. + /// + /// The language to apply. + public static void ApplyLanguage(Language language) { // Apply language - LocalizeDictionary.Instance.Culture = new CultureInfo(cultureName); + LocalizeDictionary.Instance.Culture = new CultureInfo(language.ToString()); // Set system MessageBox buttons MessageBoxManager.Unregister(); diff --git a/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsGeneral.xaml.cs b/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsGeneral.xaml.cs index 62223f94..55e5760c 100644 --- a/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsGeneral.xaml.cs +++ b/src/BandcampDownloader/UI/Dialogs/Settings/UserControlSettingsGeneral.xaml.cs @@ -18,7 +18,7 @@ public UserControlSettingsGeneral() { /// Cancels the changes already applied. /// public void CancelChanges() { - LanguageHelper.ApplyLanguage(App.UserSettings.Language.ToString()); + LanguageHelper.ApplyLanguage(App.UserSettings.Language); } /// @@ -64,7 +64,7 @@ private async void ButtonCheckForUpdates_Click(object sender, RoutedEventArgs e) private void ComboBoxLanguage_SelectionChanged(object sender, SelectionChangedEventArgs e) { // Apply selected language - LanguageHelper.ApplyLanguage(comboBoxLanguage.SelectedValue.ToString()); + LanguageHelper.ApplyLanguage((Language) comboBoxLanguage.SelectedValue); } private void Hyperlink_RequestNavigate(object sender, System.Windows.Navigation.RequestNavigateEventArgs e) { From e7f22f9d416d0a0b3e709b11cf8bd29282b65358 Mon Sep 17 00:00:00 2001 From: Otiel Date: Mon, 13 May 2019 16:01:46 +0200 Subject: [PATCH 006/105] refactor: make class static --- src/BandcampDownloader/Helpers/ProxyHelper.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/BandcampDownloader/Helpers/ProxyHelper.cs b/src/BandcampDownloader/Helpers/ProxyHelper.cs index 26f96c8f..25eba4cf 100644 --- a/src/BandcampDownloader/Helpers/ProxyHelper.cs +++ b/src/BandcampDownloader/Helpers/ProxyHelper.cs @@ -3,7 +3,7 @@ namespace BandcampDownloader { - internal class ProxyHelper { + internal static class ProxyHelper { /// /// Sets the proxy of the specified WebClient according to the UserSettings. From f746191c58a1150a8411eeca024b7b143defdb58 Mon Sep 17 00:00:00 2001 From: Otiel Date: Tue, 14 May 2019 11:07:44 +0200 Subject: [PATCH 007/105] fix: label clickable even when it should not be --- src/BandcampDownloader/UI/Dialogs/WindowMain.xaml | 3 ++- src/BandcampDownloader/UI/Dialogs/WindowMain.xaml.cs | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/BandcampDownloader/UI/Dialogs/WindowMain.xaml b/src/BandcampDownloader/UI/Dialogs/WindowMain.xaml index 0246ee2a..704e4464 100644 --- a/src/BandcampDownloader/UI/Dialogs/WindowMain.xaml +++ b/src/BandcampDownloader/UI/Dialogs/WindowMain.xaml @@ -132,7 +132,8 @@ Content="" Cursor="Hand" Foreground="#FF003BFF" - MouseDown="LabelNewVersion_MouseDown" /> + MouseDown="LabelNewVersion_MouseDown" + Visibility="Hidden" />