From 71617b96207246a4c50f9dc04fefefc5c2199fc4 Mon Sep 17 00:00:00 2001 From: Robert McRackan Date: Fri, 16 Jul 2021 23:06:59 -0400 Subject: [PATCH] Added UNSAFE_MigrationHelper to help with upgrades --- FileManager/AudibleFileStorage.cs | 3 - FileManager/Configuration.cs | 25 +- LibationLauncher/Program.cs | 49 +- LibationLauncher/UNSAFE_MigrationHelper.cs | 145 ++++++ .../Dialogs/SettingsDialog.Designer.cs | 474 +++++++++--------- LibationWinForms/Dialogs/SettingsDialog.cs | 6 +- LibationWinForms/Dialogs/SettingsDialog.resx | 24 +- .../Dialogs/TEMP_TestNewControls.cs | 54 +- 8 files changed, 467 insertions(+), 313 deletions(-) create mode 100644 LibationLauncher/UNSAFE_MigrationHelper.cs diff --git a/FileManager/AudibleFileStorage.cs b/FileManager/AudibleFileStorage.cs index 36797785..0d15e94c 100644 --- a/FileManager/AudibleFileStorage.cs +++ b/FileManager/AudibleFileStorage.cs @@ -32,9 +32,6 @@ namespace FileManager public static string DecryptInProgress => Directory.CreateDirectory(Path.Combine(Configuration.Instance.DecryptInProgressEnum, "DecryptInProgress")).FullName; - // not customizable. don't move to config - public static string DownloadsFinal => new DirectoryInfo(Configuration.Instance.LibationFiles).CreateSubdirectory("DownloadsFinal").FullName; - public static string BooksDirectory { get diff --git a/FileManager/Configuration.cs b/FileManager/Configuration.cs index 91f3f0a5..2e40ecb3 100644 --- a/FileManager/Configuration.cs +++ b/FileManager/Configuration.cs @@ -56,7 +56,7 @@ namespace FileManager public const string USER_PROFILE_LABEL = "UserProfile"; public static string AppDir_Relative => @".\LibationFiles"; - public static string AppDir_Absolute => Path.GetFullPath(Path.Combine(Path.GetDirectoryName(Exe.FileLocationOnDisk), LIBATION_FILES)); + public static string AppDir_Absolute => Path.GetFullPath(Path.Combine(Path.GetDirectoryName(Exe.FileLocationOnDisk), LIBATION_FILES_KEY)); public static string MyDocs => Path.GetFullPath(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "LibationFiles")); public static string WinTemp => Path.GetFullPath(Path.Combine(Path.GetTempPath(), "Libation")); public static string UserProfile => Path.GetFullPath(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Libation")); @@ -112,6 +112,13 @@ namespace FileManager // exceptions: appsettings.json, LibationFiles dir, Settings.json // temp/working dir(s) should be outside of dropbox + [Description("Temporary location of files while they're in process of being downloaded and decrypted.\r\nWhen decryption is complete, the final file will be in Books location\r\nRecommend not using a folder which is backed up real time. Eg: Dropbox, iCloud, Google Drive")] + public string InProgress + { + get => persistentDictionary.GetString(nameof(InProgress)); + set => persistentDictionary.Set(nameof(InProgress), value); + } + [Description("Temporary location of files while they're in process of being downloaded.\r\nWhen download is complete, the final file will be in [LibationFiles]\\DownloadsFinal")] public string DownloadsInProgressEnum { @@ -140,8 +147,8 @@ namespace FileManager private Configuration() { } private const string APPSETTINGS_JSON = "appsettings.json"; - // this is the key in appsettings. Happens to match the metadirectory name but separate concern. keep separate - private const string LIBATION_FILES = "LibationFiles"; + // this is the key in appsettings. The string happens to match the metadirectory name but separate concern. keep separate + private const string LIBATION_FILES_KEY = "LibationFiles"; [Description("Location for storage of program-created files")] public string LibationFiles @@ -173,11 +180,9 @@ namespace FileManager startingContents = File.ReadAllText(APPSETTINGS_JSON); var startingJObj = JObject.Parse(startingContents); - if (startingJObj.ContainsKey(LIBATION_FILES)) + if (startingJObj.ContainsKey(LIBATION_FILES_KEY)) { - var startingValue = startingJObj[LIBATION_FILES].Value(); - - // do not check whether directory exists. special/meta directory (eg: AppDir) is valid + var startingValue = startingJObj[LIBATION_FILES_KEY].Value(); if (!string.IsNullOrWhiteSpace(startingValue)) return startingValue; } @@ -186,7 +191,7 @@ namespace FileManager catch { } // not found. write to file. read from file - var endingContents = new JObject { { LIBATION_FILES, UserProfile } }.ToString(Formatting.Indented); + var endingContents = new JObject { { LIBATION_FILES_KEY, UserProfile } }.ToString(Formatting.Indented); if (startingContents != endingContents) { File.WriteAllText(APPSETTINGS_JSON, endingContents); @@ -196,7 +201,7 @@ namespace FileManager // do not check whether directory exists. special/meta directory (eg: AppDir) is valid // verify from live file. no try/catch. want failures to be visible var jObjFinal = JObject.Parse(File.ReadAllText(APPSETTINGS_JSON)); - var valueFinal = jObjFinal[LIBATION_FILES].Value(); + var valueFinal = jObjFinal[LIBATION_FILES_KEY].Value(); return valueFinal; } @@ -235,7 +240,7 @@ namespace FileManager var startingContents = File.ReadAllText(APPSETTINGS_JSON); var jObj = JObject.Parse(startingContents); - jObj[LIBATION_FILES] = directory; + jObj[LIBATION_FILES_KEY] = directory; var endingContents = JsonConvert.SerializeObject(jObj, Formatting.Indented); if (startingContents != endingContents) diff --git a/LibationLauncher/Program.cs b/LibationLauncher/Program.cs index 6290b13e..fb36c1d7 100644 --- a/LibationLauncher/Program.cs +++ b/LibationLauncher/Program.cs @@ -26,13 +26,15 @@ namespace LibationLauncher Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); + // must occur before access to Configuration instance + migrate_to_v5_2_0(); + createSettings(); AudibleApiStorage.EnsureAccountsSettingsFileExists(); migrate_to_v4_0_0(); migrate_to_v5_0_0(); - migrate_to_v5_2_0(); ensureSerilogConfig(); configureLogging(); @@ -259,46 +261,32 @@ namespace LibationLauncher } #endregion - #region migrate to v5.2.0 : get rid of meta-directories + #region migrate to v5.2.0 : get rid of meta-directories, combine DownloadsInProgressEnum and DecryptInProgressEnum => InProgress private static void migrate_to_v5_2_0() { - var config = Configuration.Instance; - { - var newPath = TranslatePath(config.DecryptInProgressEnum); - if (newPath != config.DecryptInProgressEnum) - config.DecryptInProgressEnum = newPath; + var settingsKey = "DownloadsInProgressEnum"; + UNSAFE_MigrationHelper.Settings_Update(settingsKey, translatePath(UNSAFE_MigrationHelper.Settings_Get(settingsKey))); } { - var newPath = TranslatePath(config.DownloadsInProgressEnum); - if (newPath != config.DownloadsInProgressEnum) - config.DownloadsInProgressEnum = newPath; + var settingsKey = "DecryptInProgressEnum"; + UNSAFE_MigrationHelper.Settings_Update(settingsKey, translatePath(UNSAFE_MigrationHelper.Settings_Get(settingsKey))); } - { - var appsettings = "appsettings.json"; - var libationFiles = "LibationFiles"; - - var jObj = JObject.Parse(File.ReadAllText(appsettings)); - var origVlaue = jObj[libationFiles].Value(); - var newValue = TranslatePath(origVlaue); - - if (newValue != origVlaue) - { - var contents = new JObject { { libationFiles, newValue } }.ToString(Formatting.Indented); - File.WriteAllText(appsettings, contents); - } - } + UNSAFE_MigrationHelper.AppSettings_Update( + UNSAFE_MigrationHelper.LIBATION_FILES_KEY, + translatePath(UNSAFE_MigrationHelper.AppSettings_Get(UNSAFE_MigrationHelper.LIBATION_FILES_KEY)) + ); } - private static string TranslatePath(string path) + private static string translatePath(string path) => path switch { - "AppDir" => Configuration.AppDir_Relative, - "MyDocs" => Configuration.MyDocs, - Configuration.USER_PROFILE_LABEL => Configuration.UserProfile, - Configuration.WIN_TEMP_LABEL => Configuration.WinTemp, + "AppDir" => @".\LibationFiles", + "MyDocs" => Path.GetFullPath(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "LibationFiles")), + "UserProfile" => Path.GetFullPath(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Libation")), + "WinTemp" => Path.GetFullPath(Path.Combine(Path.GetTempPath(), "Libation")), _ => path }; #endregion @@ -475,9 +463,6 @@ namespace LibationLauncher DownloadsInProgressDir = AudibleFileStorage.DownloadsInProgress, DownloadsInProgressFiles = Directory.EnumerateFiles(AudibleFileStorage.DownloadsInProgress).Count(), - AudibleFileStorage.DownloadsFinal, - DownloadsFinalFiles = Directory.EnumerateFiles(AudibleFileStorage.DownloadsFinal).Count(), - config.DecryptInProgressEnum, DecryptInProgressDir = AudibleFileStorage.DecryptInProgress, DecryptInProgressFiles = Directory.EnumerateFiles(AudibleFileStorage.DecryptInProgress).Count(), diff --git a/LibationLauncher/UNSAFE_MigrationHelper.cs b/LibationLauncher/UNSAFE_MigrationHelper.cs new file mode 100644 index 00000000..1fd9f282 --- /dev/null +++ b/LibationLauncher/UNSAFE_MigrationHelper.cs @@ -0,0 +1,145 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using Dinah.Core; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; + +namespace LibationLauncher +{ + /// for migrations only. directly manipulatings settings files without going through domain logic + internal static class UNSAFE_MigrationHelper + { + #region appsettings.json + public const string APPSETTINGS_JSON = "appsettings.json"; + + public static bool AppSettingsJson_Exists => File.Exists(APPSETTINGS_JSON); + + public static string AppSettings_Get(string key) + { + bool success = false; + JToken val = null; + + process_AppSettingsJson(jObj => success = jObj.TryGetValue(key, out val), false); + + if (success) + return val.Value(); + return null; + } + + /// only insert if not exists + public static void AppSettings_Insert(string key, string value) + => process_AppSettingsJson(jObj => jObj.TryAdd(key, value)); + + /// only update if exists + public static void AppSettings_Update(string key, string value) + => process_AppSettingsJson(jObj => { + if (jObj.ContainsKey(key)) + jObj[key] = value; + }); + + /// only delete if exists + public static void AppSettings_Delete(string key) + => process_AppSettingsJson(jObj => { + if (jObj.ContainsKey(key)) + jObj.Remove(key); + }); + + /// True: save if contents changed. False: no not attempt save + private static void process_AppSettingsJson(Action action, bool save = true) + { + // only insert if not exists + if (!AppSettingsJson_Exists) + return; + + var startingContents = File.ReadAllText(APPSETTINGS_JSON); + var jObj = JObject.Parse(startingContents); + + action(jObj); + + if (!save) + return; + + // only save if different + var endingContents_indented = jObj.ToString(Formatting.Indented); + var endingContents_compact = jObj.ToString(Formatting.None); + if (startingContents.EqualsInsensitive(endingContents_indented) || startingContents.EqualsInsensitive(endingContents_compact)) + return; + + File.WriteAllText(APPSETTINGS_JSON, endingContents_indented); + System.Threading.Thread.Sleep(100); + } + #endregion + + #region Settings.json + public const string LIBATION_FILES_KEY = "LibationFiles"; + public const string SETTINGS_JSON = "Settings.json"; + + public static string SettingsJsonPath + { + get + { + var value = AppSettings_Get(LIBATION_FILES_KEY); + return value is null ? null : Path.Combine(value, SETTINGS_JSON); + } + } + public static bool SettingsJson_Exists => SettingsJsonPath is not null && File.Exists(SettingsJsonPath); + + public static string Settings_Get(string key) + { + bool success = false; + JToken val = null; + + process_SettingsJson(jObj => success = jObj.TryGetValue(key, out val), false); + + if (success) + return val.Value(); + return null; + } + + /// only insert if not exists + public static void Settings_Insert(string key, string value) + => process_SettingsJson(jObj => jObj.TryAdd(key, value)); + + /// only update if exists + public static void Settings_Update(string key, string value) + => process_SettingsJson(jObj => { + if (jObj.ContainsKey(key)) + jObj[key] = value; + }); + + /// only delete if exists + public static void Settings_Delete(string key) + => process_SettingsJson(jObj => { + if (jObj.ContainsKey(key)) + jObj.Remove(key); + }); + + /// True: save if contents changed. False: no not attempt save + private static void process_SettingsJson(Action action, bool save = true) + { + // only insert if not exists + if (!SettingsJson_Exists) + return; + + var startingContents = File.ReadAllText(SettingsJsonPath); + var jObj = JObject.Parse(startingContents); + + action(jObj); + + if (!save) + return; + + // only save if different + var endingContents_indented = jObj.ToString(Formatting.Indented); + var endingContents_compact = jObj.ToString(Formatting.None); + if (startingContents.EqualsInsensitive(endingContents_indented) || startingContents.EqualsInsensitive(endingContents_compact)) + return; + + File.WriteAllText(SettingsJsonPath, endingContents_indented); + System.Threading.Thread.Sleep(100); + } + #endregion + } +} diff --git a/LibationWinForms/Dialogs/SettingsDialog.Designer.cs b/LibationWinForms/Dialogs/SettingsDialog.Designer.cs index b51198ce..1ad478c2 100644 --- a/LibationWinForms/Dialogs/SettingsDialog.Designer.cs +++ b/LibationWinForms/Dialogs/SettingsDialog.Designer.cs @@ -28,243 +28,243 @@ /// private void InitializeComponent() { - this.booksLocationLbl = new System.Windows.Forms.Label(); - this.booksLocationTb = new System.Windows.Forms.TextBox(); - this.booksLocationSearchBtn = new System.Windows.Forms.Button(); - this.booksLocationDescLbl = new System.Windows.Forms.Label(); - this.downloadsInProgressGb = new System.Windows.Forms.GroupBox(); - this.downloadsInProgressLibationFilesRb = new System.Windows.Forms.RadioButton(); - this.downloadsInProgressWinTempRb = new System.Windows.Forms.RadioButton(); - this.downloadsInProgressDescLbl = new System.Windows.Forms.Label(); - this.decryptInProgressGb = new System.Windows.Forms.GroupBox(); - this.decryptInProgressLibationFilesRb = new System.Windows.Forms.RadioButton(); - this.decryptInProgressWinTempRb = new System.Windows.Forms.RadioButton(); - this.decryptInProgressDescLbl = new System.Windows.Forms.Label(); - this.saveBtn = new System.Windows.Forms.Button(); - this.cancelBtn = new System.Windows.Forms.Button(); - this.groupBox1 = new System.Windows.Forms.GroupBox(); - this.allowLibationFixupCbox = new System.Windows.Forms.CheckBox(); - this.downloadsInProgressGb.SuspendLayout(); - this.decryptInProgressGb.SuspendLayout(); - this.groupBox1.SuspendLayout(); - this.SuspendLayout(); - // - // booksLocationLbl - // - this.booksLocationLbl.AutoSize = true; - this.booksLocationLbl.Location = new System.Drawing.Point(14, 20); - this.booksLocationLbl.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.booksLocationLbl.Name = "booksLocationLbl"; - this.booksLocationLbl.Size = new System.Drawing.Size(85, 15); - this.booksLocationLbl.TabIndex = 0; - this.booksLocationLbl.Text = "Books location"; - // - // booksLocationTb - // - this.booksLocationTb.Location = new System.Drawing.Point(111, 16); - this.booksLocationTb.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); - this.booksLocationTb.Name = "booksLocationTb"; - this.booksLocationTb.Size = new System.Drawing.Size(760, 23); - this.booksLocationTb.TabIndex = 1; - // - // booksLocationSearchBtn - // - this.booksLocationSearchBtn.Location = new System.Drawing.Point(878, 14); - this.booksLocationSearchBtn.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); - this.booksLocationSearchBtn.Name = "booksLocationSearchBtn"; - this.booksLocationSearchBtn.Size = new System.Drawing.Size(41, 27); - this.booksLocationSearchBtn.TabIndex = 2; - this.booksLocationSearchBtn.Text = "..."; - this.booksLocationSearchBtn.UseVisualStyleBackColor = true; - this.booksLocationSearchBtn.Click += new System.EventHandler(this.booksLocationSearchBtn_Click); - // - // booksLocationDescLbl - // - this.booksLocationDescLbl.AutoSize = true; - this.booksLocationDescLbl.Location = new System.Drawing.Point(107, 43); - this.booksLocationDescLbl.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.booksLocationDescLbl.Name = "booksLocationDescLbl"; - this.booksLocationDescLbl.Size = new System.Drawing.Size(39, 15); - this.booksLocationDescLbl.TabIndex = 3; - this.booksLocationDescLbl.Text = "[desc]"; - // - // downloadsInProgressGb - // - this.downloadsInProgressGb.Controls.Add(this.downloadsInProgressLibationFilesRb); - this.downloadsInProgressGb.Controls.Add(this.downloadsInProgressWinTempRb); - this.downloadsInProgressGb.Controls.Add(this.downloadsInProgressDescLbl); - this.downloadsInProgressGb.Location = new System.Drawing.Point(10, 49); - this.downloadsInProgressGb.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); - this.downloadsInProgressGb.Name = "downloadsInProgressGb"; - this.downloadsInProgressGb.Padding = new System.Windows.Forms.Padding(4, 3, 4, 3); - this.downloadsInProgressGb.Size = new System.Drawing.Size(884, 135); - this.downloadsInProgressGb.TabIndex = 4; - this.downloadsInProgressGb.TabStop = false; - this.downloadsInProgressGb.Text = "Downloads in progress"; - // - // downloadsInProgressLibationFilesRb - // - this.downloadsInProgressLibationFilesRb.AutoSize = true; - this.downloadsInProgressLibationFilesRb.CheckAlign = System.Drawing.ContentAlignment.TopLeft; - this.downloadsInProgressLibationFilesRb.Location = new System.Drawing.Point(10, 93); - this.downloadsInProgressLibationFilesRb.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); - this.downloadsInProgressLibationFilesRb.Name = "downloadsInProgressLibationFilesRb"; - this.downloadsInProgressLibationFilesRb.Size = new System.Drawing.Size(215, 34); - this.downloadsInProgressLibationFilesRb.TabIndex = 2; - this.downloadsInProgressLibationFilesRb.TabStop = true; - this.downloadsInProgressLibationFilesRb.Text = "[desc]\r\n[libationFiles\\DownloadsInProgress]"; - this.downloadsInProgressLibationFilesRb.UseVisualStyleBackColor = true; - // - // downloadsInProgressWinTempRb - // - this.downloadsInProgressWinTempRb.AutoSize = true; - this.downloadsInProgressWinTempRb.CheckAlign = System.Drawing.ContentAlignment.TopLeft; - this.downloadsInProgressWinTempRb.Location = new System.Drawing.Point(10, 52); - this.downloadsInProgressWinTempRb.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); - this.downloadsInProgressWinTempRb.Name = "downloadsInProgressWinTempRb"; - this.downloadsInProgressWinTempRb.Size = new System.Drawing.Size(200, 34); - this.downloadsInProgressWinTempRb.TabIndex = 1; - this.downloadsInProgressWinTempRb.TabStop = true; - this.downloadsInProgressWinTempRb.Text = "[desc]\r\n[winTemp\\DownloadsInProgress]"; - this.downloadsInProgressWinTempRb.UseVisualStyleBackColor = true; - // - // downloadsInProgressDescLbl - // - this.downloadsInProgressDescLbl.AutoSize = true; - this.downloadsInProgressDescLbl.Location = new System.Drawing.Point(7, 18); - this.downloadsInProgressDescLbl.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.downloadsInProgressDescLbl.Name = "downloadsInProgressDescLbl"; - this.downloadsInProgressDescLbl.Size = new System.Drawing.Size(43, 30); - this.downloadsInProgressDescLbl.TabIndex = 0; - this.downloadsInProgressDescLbl.Text = "[desc]\r\n[line 2]"; - // - // decryptInProgressGb - // - this.decryptInProgressGb.Controls.Add(this.decryptInProgressLibationFilesRb); - this.decryptInProgressGb.Controls.Add(this.decryptInProgressWinTempRb); - this.decryptInProgressGb.Controls.Add(this.decryptInProgressDescLbl); - this.decryptInProgressGb.Location = new System.Drawing.Point(10, 193); - this.decryptInProgressGb.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); - this.decryptInProgressGb.Name = "decryptInProgressGb"; - this.decryptInProgressGb.Padding = new System.Windows.Forms.Padding(4, 3, 4, 3); - this.decryptInProgressGb.Size = new System.Drawing.Size(884, 135); - this.decryptInProgressGb.TabIndex = 5; - this.decryptInProgressGb.TabStop = false; - this.decryptInProgressGb.Text = "Decrypt in progress"; - // - // decryptInProgressLibationFilesRb - // - this.decryptInProgressLibationFilesRb.AutoSize = true; - this.decryptInProgressLibationFilesRb.CheckAlign = System.Drawing.ContentAlignment.TopLeft; - this.decryptInProgressLibationFilesRb.Location = new System.Drawing.Point(7, 93); - this.decryptInProgressLibationFilesRb.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); - this.decryptInProgressLibationFilesRb.Name = "decryptInProgressLibationFilesRb"; - this.decryptInProgressLibationFilesRb.Size = new System.Drawing.Size(197, 34); - this.decryptInProgressLibationFilesRb.TabIndex = 2; - this.decryptInProgressLibationFilesRb.TabStop = true; - this.decryptInProgressLibationFilesRb.Text = "[desc]\r\n[libationFiles\\DecryptInProgress]"; - this.decryptInProgressLibationFilesRb.UseVisualStyleBackColor = true; - // - // decryptInProgressWinTempRb - // - this.decryptInProgressWinTempRb.AutoSize = true; - this.decryptInProgressWinTempRb.CheckAlign = System.Drawing.ContentAlignment.TopLeft; - this.decryptInProgressWinTempRb.Location = new System.Drawing.Point(7, 52); - this.decryptInProgressWinTempRb.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); - this.decryptInProgressWinTempRb.Name = "decryptInProgressWinTempRb"; - this.decryptInProgressWinTempRb.Size = new System.Drawing.Size(182, 34); - this.decryptInProgressWinTempRb.TabIndex = 1; - this.decryptInProgressWinTempRb.TabStop = true; - this.decryptInProgressWinTempRb.Text = "[desc]\r\n[winTemp\\DecryptInProgress]"; - this.decryptInProgressWinTempRb.UseVisualStyleBackColor = true; - // - // decryptInProgressDescLbl - // - this.decryptInProgressDescLbl.AutoSize = true; - this.decryptInProgressDescLbl.Location = new System.Drawing.Point(7, 18); - this.decryptInProgressDescLbl.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.decryptInProgressDescLbl.Name = "decryptInProgressDescLbl"; - this.decryptInProgressDescLbl.Size = new System.Drawing.Size(43, 30); - this.decryptInProgressDescLbl.TabIndex = 0; - this.decryptInProgressDescLbl.Text = "[desc]\r\n[line 2]"; - // - // saveBtn - // - this.saveBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.saveBtn.Location = new System.Drawing.Point(714, 401); - this.saveBtn.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); - this.saveBtn.Name = "saveBtn"; - this.saveBtn.Size = new System.Drawing.Size(88, 27); - this.saveBtn.TabIndex = 7; - this.saveBtn.Text = "Save"; - this.saveBtn.UseVisualStyleBackColor = true; - this.saveBtn.Click += new System.EventHandler(this.saveBtn_Click); - // - // cancelBtn - // - this.cancelBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.cancelBtn.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.cancelBtn.Location = new System.Drawing.Point(832, 401); - this.cancelBtn.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); - this.cancelBtn.Name = "cancelBtn"; - this.cancelBtn.Size = new System.Drawing.Size(88, 27); - this.cancelBtn.TabIndex = 8; - this.cancelBtn.Text = "Cancel"; - this.cancelBtn.UseVisualStyleBackColor = true; - this.cancelBtn.Click += new System.EventHandler(this.cancelBtn_Click); - // - // groupBox1 - // - this.groupBox1.Controls.Add(this.allowLibationFixupCbox); - this.groupBox1.Controls.Add(this.downloadsInProgressGb); - this.groupBox1.Controls.Add(this.decryptInProgressGb); - this.groupBox1.Location = new System.Drawing.Point(18, 61); - this.groupBox1.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); - this.groupBox1.Name = "groupBox1"; - this.groupBox1.Padding = new System.Windows.Forms.Padding(4, 3, 4, 3); - this.groupBox1.Size = new System.Drawing.Size(902, 334); - this.groupBox1.TabIndex = 6; - this.groupBox1.TabStop = false; - this.groupBox1.Text = "Advanced settings for control freaks"; - // - // downloadChaptersCbox - // - this.allowLibationFixupCbox.AutoSize = true; - this.allowLibationFixupCbox.Location = new System.Drawing.Point(10, 24); - this.allowLibationFixupCbox.Name = "downloadChaptersCbox"; - this.allowLibationFixupCbox.Size = new System.Drawing.Size(262, 19); - this.allowLibationFixupCbox.TabIndex = 6; - this.allowLibationFixupCbox.Text = "Allow Libation to fix up audiobook metadata"; - this.allowLibationFixupCbox.UseVisualStyleBackColor = true; - // - // SettingsDialog - // - this.AcceptButton = this.saveBtn; - this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.cancelBtn; - this.ClientSize = new System.Drawing.Size(933, 442); - this.Controls.Add(this.groupBox1); - this.Controls.Add(this.cancelBtn); - this.Controls.Add(this.saveBtn); - this.Controls.Add(this.booksLocationDescLbl); - this.Controls.Add(this.booksLocationSearchBtn); - this.Controls.Add(this.booksLocationTb); - this.Controls.Add(this.booksLocationLbl); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; - this.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); - this.Name = "SettingsDialog"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "Edit Settings"; - this.Load += new System.EventHandler(this.SettingsDialog_Load); - this.downloadsInProgressGb.ResumeLayout(false); - this.downloadsInProgressGb.PerformLayout(); - this.decryptInProgressGb.ResumeLayout(false); - this.decryptInProgressGb.PerformLayout(); - this.groupBox1.ResumeLayout(false); - this.groupBox1.PerformLayout(); - this.ResumeLayout(false); - this.PerformLayout(); + this.booksLocationLbl = new System.Windows.Forms.Label(); + this.booksLocationTb = new System.Windows.Forms.TextBox(); + this.booksLocationSearchBtn = new System.Windows.Forms.Button(); + this.booksLocationDescLbl = new System.Windows.Forms.Label(); + this.downloadsInProgressGb = new System.Windows.Forms.GroupBox(); + this.downloadsInProgressLibationFilesRb = new System.Windows.Forms.RadioButton(); + this.downloadsInProgressWinTempRb = new System.Windows.Forms.RadioButton(); + this.downloadsInProgressDescLbl = new System.Windows.Forms.Label(); + this.decryptInProgressGb = new System.Windows.Forms.GroupBox(); + this.decryptInProgressLibationFilesRb = new System.Windows.Forms.RadioButton(); + this.decryptInProgressWinTempRb = new System.Windows.Forms.RadioButton(); + this.decryptInProgressDescLbl = new System.Windows.Forms.Label(); + this.saveBtn = new System.Windows.Forms.Button(); + this.cancelBtn = new System.Windows.Forms.Button(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.allowLibationFixupCbox = new System.Windows.Forms.CheckBox(); + this.downloadsInProgressGb.SuspendLayout(); + this.decryptInProgressGb.SuspendLayout(); + this.groupBox1.SuspendLayout(); + this.SuspendLayout(); + // + // booksLocationLbl + // + this.booksLocationLbl.AutoSize = true; + this.booksLocationLbl.Location = new System.Drawing.Point(14, 20); + this.booksLocationLbl.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.booksLocationLbl.Name = "booksLocationLbl"; + this.booksLocationLbl.Size = new System.Drawing.Size(85, 15); + this.booksLocationLbl.TabIndex = 0; + this.booksLocationLbl.Text = "Books location"; + // + // booksLocationTb + // + this.booksLocationTb.Location = new System.Drawing.Point(111, 16); + this.booksLocationTb.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.booksLocationTb.Name = "booksLocationTb"; + this.booksLocationTb.Size = new System.Drawing.Size(760, 23); + this.booksLocationTb.TabIndex = 1; + // + // booksLocationSearchBtn + // + this.booksLocationSearchBtn.Location = new System.Drawing.Point(878, 14); + this.booksLocationSearchBtn.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.booksLocationSearchBtn.Name = "booksLocationSearchBtn"; + this.booksLocationSearchBtn.Size = new System.Drawing.Size(41, 27); + this.booksLocationSearchBtn.TabIndex = 2; + this.booksLocationSearchBtn.Text = "..."; + this.booksLocationSearchBtn.UseVisualStyleBackColor = true; + this.booksLocationSearchBtn.Click += new System.EventHandler(this.booksLocationSearchBtn_Click); + // + // booksLocationDescLbl + // + this.booksLocationDescLbl.AutoSize = true; + this.booksLocationDescLbl.Location = new System.Drawing.Point(107, 43); + this.booksLocationDescLbl.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.booksLocationDescLbl.Name = "booksLocationDescLbl"; + this.booksLocationDescLbl.Size = new System.Drawing.Size(39, 15); + this.booksLocationDescLbl.TabIndex = 3; + this.booksLocationDescLbl.Text = "[desc]"; + // + // downloadsInProgressGb + // + this.downloadsInProgressGb.Controls.Add(this.downloadsInProgressLibationFilesRb); + this.downloadsInProgressGb.Controls.Add(this.downloadsInProgressWinTempRb); + this.downloadsInProgressGb.Controls.Add(this.downloadsInProgressDescLbl); + this.downloadsInProgressGb.Location = new System.Drawing.Point(10, 49); + this.downloadsInProgressGb.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.downloadsInProgressGb.Name = "downloadsInProgressGb"; + this.downloadsInProgressGb.Padding = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.downloadsInProgressGb.Size = new System.Drawing.Size(884, 135); + this.downloadsInProgressGb.TabIndex = 4; + this.downloadsInProgressGb.TabStop = false; + this.downloadsInProgressGb.Text = "Downloads in progress"; + // + // downloadsInProgressLibationFilesRb + // + this.downloadsInProgressLibationFilesRb.AutoSize = true; + this.downloadsInProgressLibationFilesRb.CheckAlign = System.Drawing.ContentAlignment.TopLeft; + this.downloadsInProgressLibationFilesRb.Location = new System.Drawing.Point(10, 93); + this.downloadsInProgressLibationFilesRb.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.downloadsInProgressLibationFilesRb.Name = "downloadsInProgressLibationFilesRb"; + this.downloadsInProgressLibationFilesRb.Size = new System.Drawing.Size(215, 34); + this.downloadsInProgressLibationFilesRb.TabIndex = 2; + this.downloadsInProgressLibationFilesRb.TabStop = true; + this.downloadsInProgressLibationFilesRb.Text = "[desc]\r\n[libationFiles\\DownloadsInProgress]"; + this.downloadsInProgressLibationFilesRb.UseVisualStyleBackColor = true; + // + // downloadsInProgressWinTempRb + // + this.downloadsInProgressWinTempRb.AutoSize = true; + this.downloadsInProgressWinTempRb.CheckAlign = System.Drawing.ContentAlignment.TopLeft; + this.downloadsInProgressWinTempRb.Location = new System.Drawing.Point(10, 52); + this.downloadsInProgressWinTempRb.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.downloadsInProgressWinTempRb.Name = "downloadsInProgressWinTempRb"; + this.downloadsInProgressWinTempRb.Size = new System.Drawing.Size(200, 34); + this.downloadsInProgressWinTempRb.TabIndex = 1; + this.downloadsInProgressWinTempRb.TabStop = true; + this.downloadsInProgressWinTempRb.Text = "[desc]\r\n[winTemp\\DownloadsInProgress]"; + this.downloadsInProgressWinTempRb.UseVisualStyleBackColor = true; + // + // downloadsInProgressDescLbl + // + this.downloadsInProgressDescLbl.AutoSize = true; + this.downloadsInProgressDescLbl.Location = new System.Drawing.Point(7, 18); + this.downloadsInProgressDescLbl.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.downloadsInProgressDescLbl.Name = "downloadsInProgressDescLbl"; + this.downloadsInProgressDescLbl.Size = new System.Drawing.Size(43, 30); + this.downloadsInProgressDescLbl.TabIndex = 0; + this.downloadsInProgressDescLbl.Text = "[desc]\r\n[line 2]"; + // + // decryptInProgressGb + // + this.decryptInProgressGb.Controls.Add(this.decryptInProgressLibationFilesRb); + this.decryptInProgressGb.Controls.Add(this.decryptInProgressWinTempRb); + this.decryptInProgressGb.Controls.Add(this.decryptInProgressDescLbl); + this.decryptInProgressGb.Location = new System.Drawing.Point(10, 193); + this.decryptInProgressGb.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.decryptInProgressGb.Name = "decryptInProgressGb"; + this.decryptInProgressGb.Padding = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.decryptInProgressGb.Size = new System.Drawing.Size(884, 135); + this.decryptInProgressGb.TabIndex = 5; + this.decryptInProgressGb.TabStop = false; + this.decryptInProgressGb.Text = "Decrypt in progress"; + // + // decryptInProgressLibationFilesRb + // + this.decryptInProgressLibationFilesRb.AutoSize = true; + this.decryptInProgressLibationFilesRb.CheckAlign = System.Drawing.ContentAlignment.TopLeft; + this.decryptInProgressLibationFilesRb.Location = new System.Drawing.Point(7, 93); + this.decryptInProgressLibationFilesRb.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.decryptInProgressLibationFilesRb.Name = "decryptInProgressLibationFilesRb"; + this.decryptInProgressLibationFilesRb.Size = new System.Drawing.Size(197, 34); + this.decryptInProgressLibationFilesRb.TabIndex = 2; + this.decryptInProgressLibationFilesRb.TabStop = true; + this.decryptInProgressLibationFilesRb.Text = "[desc]\r\n[libationFiles\\DecryptInProgress]"; + this.decryptInProgressLibationFilesRb.UseVisualStyleBackColor = true; + // + // decryptInProgressWinTempRb + // + this.decryptInProgressWinTempRb.AutoSize = true; + this.decryptInProgressWinTempRb.CheckAlign = System.Drawing.ContentAlignment.TopLeft; + this.decryptInProgressWinTempRb.Location = new System.Drawing.Point(7, 52); + this.decryptInProgressWinTempRb.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.decryptInProgressWinTempRb.Name = "decryptInProgressWinTempRb"; + this.decryptInProgressWinTempRb.Size = new System.Drawing.Size(182, 34); + this.decryptInProgressWinTempRb.TabIndex = 1; + this.decryptInProgressWinTempRb.TabStop = true; + this.decryptInProgressWinTempRb.Text = "[desc]\r\n[winTemp\\DecryptInProgress]"; + this.decryptInProgressWinTempRb.UseVisualStyleBackColor = true; + // + // decryptInProgressDescLbl + // + this.decryptInProgressDescLbl.AutoSize = true; + this.decryptInProgressDescLbl.Location = new System.Drawing.Point(7, 18); + this.decryptInProgressDescLbl.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.decryptInProgressDescLbl.Name = "decryptInProgressDescLbl"; + this.decryptInProgressDescLbl.Size = new System.Drawing.Size(43, 30); + this.decryptInProgressDescLbl.TabIndex = 0; + this.decryptInProgressDescLbl.Text = "[desc]\r\n[line 2]"; + // + // saveBtn + // + this.saveBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.saveBtn.Location = new System.Drawing.Point(714, 401); + this.saveBtn.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.saveBtn.Name = "saveBtn"; + this.saveBtn.Size = new System.Drawing.Size(88, 27); + this.saveBtn.TabIndex = 7; + this.saveBtn.Text = "Save"; + this.saveBtn.UseVisualStyleBackColor = true; + this.saveBtn.Click += new System.EventHandler(this.saveBtn_Click); + // + // cancelBtn + // + this.cancelBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.cancelBtn.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.cancelBtn.Location = new System.Drawing.Point(832, 401); + this.cancelBtn.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.cancelBtn.Name = "cancelBtn"; + this.cancelBtn.Size = new System.Drawing.Size(88, 27); + this.cancelBtn.TabIndex = 8; + this.cancelBtn.Text = "Cancel"; + this.cancelBtn.UseVisualStyleBackColor = true; + this.cancelBtn.Click += new System.EventHandler(this.cancelBtn_Click); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.allowLibationFixupCbox); + this.groupBox1.Controls.Add(this.downloadsInProgressGb); + this.groupBox1.Controls.Add(this.decryptInProgressGb); + this.groupBox1.Location = new System.Drawing.Point(18, 61); + this.groupBox1.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Padding = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.groupBox1.Size = new System.Drawing.Size(902, 334); + this.groupBox1.TabIndex = 6; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Advanced settings for control freaks"; + // + // allowLibationFixupCbox + // + this.allowLibationFixupCbox.AutoSize = true; + this.allowLibationFixupCbox.Location = new System.Drawing.Point(10, 24); + this.allowLibationFixupCbox.Name = "allowLibationFixupCbox"; + this.allowLibationFixupCbox.Size = new System.Drawing.Size(262, 19); + this.allowLibationFixupCbox.TabIndex = 6; + this.allowLibationFixupCbox.Text = "Allow Libation to fix up audiobook metadata"; + this.allowLibationFixupCbox.UseVisualStyleBackColor = true; + // + // SettingsDialog + // + this.AcceptButton = this.saveBtn; + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.cancelBtn; + this.ClientSize = new System.Drawing.Size(933, 442); + this.Controls.Add(this.groupBox1); + this.Controls.Add(this.cancelBtn); + this.Controls.Add(this.saveBtn); + this.Controls.Add(this.booksLocationDescLbl); + this.Controls.Add(this.booksLocationSearchBtn); + this.Controls.Add(this.booksLocationTb); + this.Controls.Add(this.booksLocationLbl); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.Name = "SettingsDialog"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "Edit Settings"; + this.Load += new System.EventHandler(this.SettingsDialog_Load); + this.downloadsInProgressGb.ResumeLayout(false); + this.downloadsInProgressGb.PerformLayout(); + this.decryptInProgressGb.ResumeLayout(false); + this.decryptInProgressGb.PerformLayout(); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); } diff --git a/LibationWinForms/Dialogs/SettingsDialog.cs b/LibationWinForms/Dialogs/SettingsDialog.cs index 12334ab3..149a220f 100644 --- a/LibationWinForms/Dialogs/SettingsDialog.cs +++ b/LibationWinForms/Dialogs/SettingsDialog.cs @@ -3,7 +3,6 @@ using System.IO; using System.Windows.Forms; using Dinah.Core; using FileManager; -using InternalUtilities; namespace LibationWinForms.Dialogs { @@ -12,10 +11,7 @@ namespace LibationWinForms.Dialogs Configuration config { get; } = Configuration.Instance; Func desc { get; } = Configuration.GetDescription; - public SettingsDialog() - { - InitializeComponent(); - } + public SettingsDialog() => InitializeComponent(); private void SettingsDialog_Load(object sender, EventArgs e) { diff --git a/LibationWinForms/Dialogs/SettingsDialog.resx b/LibationWinForms/Dialogs/SettingsDialog.resx index 88435f19..4f016953 100644 --- a/LibationWinForms/Dialogs/SettingsDialog.resx +++ b/LibationWinForms/Dialogs/SettingsDialog.resx @@ -81,6 +81,15 @@ True + + True + + + True + + + True + True @@ -93,6 +102,15 @@ True + + True + + + True + + + True + True @@ -102,10 +120,4 @@ True - - True - - - True - \ No newline at end of file diff --git a/LibationWinForms/Dialogs/TEMP_TestNewControls.cs b/LibationWinForms/Dialogs/TEMP_TestNewControls.cs index cc8e8702..3acf65e2 100644 --- a/LibationWinForms/Dialogs/TEMP_TestNewControls.cs +++ b/LibationWinForms/Dialogs/TEMP_TestNewControls.cs @@ -23,6 +23,8 @@ namespace LibationWinForms.Dialogs if (this.DesignMode) return; + + { var dirCtrl = this.directorySelectControl1; dirCtrl.SetDirectoryItems(new() @@ -40,36 +42,48 @@ namespace LibationWinForms.Dialogs ); } - //{ - // var dirOrCustCtrl = this.directoryOrCustomSelectControl1; - // dirOrCustCtrl.SetSearchTitle("Libation Files"); - // dirOrCustCtrl.SetDirectoryItems(new() - // { - // FileManager.Configuration.KnownDirectories.AppDir, - // FileManager.Configuration.KnownDirectories.MyDocs, - // FileManager.Configuration.KnownDirectories.LibationFiles, - // FileManager.Configuration.KnownDirectories.MyDocs, - // FileManager.Configuration.KnownDirectories.None, - // FileManager.Configuration.KnownDirectories.WinTemp, - // FileManager.Configuration.KnownDirectories.UserProfile - // } - // , - // FileManager.Configuration.KnownDirectories.MyDocs - // ); - //} + + + { + var dirOrCustCtrl = this.directoryOrCustomSelectControl1; + dirOrCustCtrl.SetSearchTitle("Libation Files"); + dirOrCustCtrl.SetDirectoryItems(new() + { + FileManager.Configuration.KnownDirectories.AppDir, + FileManager.Configuration.KnownDirectories.MyDocs, + FileManager.Configuration.KnownDirectories.LibationFiles, + FileManager.Configuration.KnownDirectories.MyDocs, + FileManager.Configuration.KnownDirectories.None, + FileManager.Configuration.KnownDirectories.WinTemp, + FileManager.Configuration.KnownDirectories.UserProfile + } + , + FileManager.Configuration.KnownDirectories.MyDocs + ); + } + } private void button1_Click(object sender, EventArgs e) { + + + var dirCtrl = this.directorySelectControl1; var x = dirCtrl.SelectedDirectory; dirCtrl.SelectDirectory(FileManager.Configuration.KnownDirectories.UserProfile); - //var dirOrCustCtrl = this.directoryOrCustomSelectControl1; - //var y = dirOrCustCtrl.SelectedDirectory; - //dirOrCustCtrl.SelectDirectory(FileManager.Configuration.KnownDirectories.UserProfile); + + + + var dirOrCustCtrl = this.directoryOrCustomSelectControl1; + var y = dirOrCustCtrl.SelectedDirectory; + dirOrCustCtrl.SelectDirectory(FileManager.Configuration.KnownDirectories.UserProfile); + + + } } } \ No newline at end of file