From 9a5d9f386728361d5f0293788fbbb6545928b1d9 Mon Sep 17 00:00:00 2001 From: Michael Bucari-Tovo Date: Tue, 10 May 2022 15:25:47 -0600 Subject: [PATCH 1/6] Move cover art downloader to DownloadDecryptBook --- Source/FileLiberator/DownloadDecryptBook.cs | 53 ++++++++++++++++----- Source/FileLiberator/Processable.cs | 31 +----------- 2 files changed, 41 insertions(+), 43 deletions(-) diff --git a/Source/FileLiberator/DownloadDecryptBook.cs b/Source/FileLiberator/DownloadDecryptBook.cs index b03334a0..ea9d3125 100644 --- a/Source/FileLiberator/DownloadDecryptBook.cs +++ b/Source/FileLiberator/DownloadDecryptBook.cs @@ -71,6 +71,8 @@ namespace FileLiberator // moves new files from temp dir to final dest var movedAudioFile = moveFilesToBooksDir(libraryBook, entries); + DownloadCoverArt(libraryBook); + // decrypt failed if (!movedAudioFile) return new StatusHandler { "Cannot find final audio file after decryption" }; @@ -187,31 +189,27 @@ namespace FileLiberator } } - NAudio.Lame.LameConfig lameConfig = new(); - - - lameConfig.Mode = NAudio.Lame.MPEGMode.Mono; + audiobookDlLic.LameConfig = new(); + audiobookDlLic.LameConfig.Mode = NAudio.Lame.MPEGMode.Mono; if (config.LameTargetBitrate) { if (config.LameConstantBitrate) - lameConfig.BitRate = config.LameBitrate; + audiobookDlLic.LameConfig.BitRate = config.LameBitrate; else { - lameConfig.ABRRateKbps = config.LameBitrate; - lameConfig.VBR = NAudio.Lame.VBRMode.ABR; - lameConfig.WriteVBRTag = true; + audiobookDlLic.LameConfig.ABRRateKbps = config.LameBitrate; + audiobookDlLic.LameConfig.VBR = NAudio.Lame.VBRMode.ABR; + audiobookDlLic.LameConfig.WriteVBRTag = true; } } else { - lameConfig.VBR = NAudio.Lame.VBRMode.Default; - lameConfig.VBRQuality = config.LameVBRQuality; - lameConfig.WriteVBRTag = true; + audiobookDlLic.LameConfig.VBR = NAudio.Lame.VBRMode.Default; + audiobookDlLic.LameConfig.VBRQuality = config.LameVBRQuality; + audiobookDlLic.LameConfig.WriteVBRTag = true; } - audiobookDlLic.LameConfig = lameConfig; - return audiobookDlLic; } @@ -277,5 +275,34 @@ namespace FileLiberator return true; } + + private void DownloadCoverArt(LibraryBook libraryBook) + { + var destinationDir = AudibleFileStorage.Audio.GetDestinationDirectory(libraryBook); + var coverPath = AudibleFileStorage.Audio.GetBooksDirectoryFilename(libraryBook, ".jpg"); + coverPath = Path.Combine(destinationDir, Path.GetFileName(coverPath)); + + try + { + if (File.Exists(coverPath)) + FileUtility.SaferDelete(coverPath); + + (string picId, PictureSize size) = libraryBook.Book.PictureLarge is null ? + (libraryBook.Book.PictureId, PictureSize.Native) : + (libraryBook.Book.PictureLarge, PictureSize.Native); + + var picBytes = PictureStorage.GetPictureSynchronously(new PictureDefinition(picId, size)); + + if (picBytes.Length > 0) + File.WriteAllBytes(coverPath, picBytes); + } + catch (Exception ex) + { + //Failure to download cover art should not be + //considered a failure to download the book + Serilog.Log.Logger.Error(ex.Message); + } + } + } } diff --git a/Source/FileLiberator/Processable.cs b/Source/FileLiberator/Processable.cs index 56ca47a5..da66f0f6 100644 --- a/Source/FileLiberator/Processable.cs +++ b/Source/FileLiberator/Processable.cs @@ -48,38 +48,9 @@ namespace FileLiberator = (await ProcessAsync(libraryBook)) ?? new StatusHandler { "Processable should never return a null status" }; - if (status.IsSuccess) - DownloadCoverArt(libraryBook); - return status; } - - private void DownloadCoverArt(LibraryBook libraryBook) - { - var destinationDir = AudibleFileStorage.Audio.GetDestinationDirectory(libraryBook); - var coverPath = FileManager.FileUtility.GetValidFilename(System.IO.Path.Combine(destinationDir, "Cover.jpg"), "", true); - - if (System.IO.File.Exists(coverPath)) return; - - try - { - (string picId, PictureSize size) = libraryBook.Book.PictureLarge is null ? - (libraryBook.Book.PictureId, PictureSize.Native) : - (libraryBook.Book.PictureLarge, PictureSize.Native); - - var picBytes = PictureStorage.GetPictureSynchronously(new PictureDefinition(picId, size)); - - if (picBytes.Length > 0) - System.IO.File.WriteAllBytes(coverPath, picBytes); - } - catch (Exception ex) - { - //Failure to download cover art should not be - //considered a failure to download the book - Serilog.Log.Logger.Error(ex.Message); - } - } - + public async Task TryProcessAsync(LibraryBook libraryBook) => Validate(libraryBook) ? await ProcessAsync(libraryBook) From 64eaa157e5f60fe8e796a530728b30ad91858a4f Mon Sep 17 00:00:00 2001 From: Michael Bucari-Tovo Date: Tue, 10 May 2022 15:36:31 -0600 Subject: [PATCH 2/6] Add option for downloading cover --- Source/AppScaffolding/LibationScaffolding.cs | 3 + Source/FileLiberator/DownloadDecryptBook.cs | 6 +- Source/LibationFileManager/Configuration.cs | 7 + .../Dialogs/SettingsDialog.Designer.cs | 1900 +++++++++-------- .../Dialogs/SettingsDialog.cs | 3 + 5 files changed, 975 insertions(+), 944 deletions(-) diff --git a/Source/AppScaffolding/LibationScaffolding.cs b/Source/AppScaffolding/LibationScaffolding.cs index 6bde3030..32171974 100644 --- a/Source/AppScaffolding/LibationScaffolding.cs +++ b/Source/AppScaffolding/LibationScaffolding.cs @@ -134,6 +134,9 @@ namespace AppScaffolding if (!config.Exists(nameof(config.GridColumnsWidths))) config.GridColumnsWidths = new Dictionary(); + + if (!config.Exists(nameof(config.DownloadCoverArt))) + config.DownloadCoverArt = true; } /// Initialize logging. Run after migration diff --git a/Source/FileLiberator/DownloadDecryptBook.cs b/Source/FileLiberator/DownloadDecryptBook.cs index ea9d3125..7fc6a273 100644 --- a/Source/FileLiberator/DownloadDecryptBook.cs +++ b/Source/FileLiberator/DownloadDecryptBook.cs @@ -71,12 +71,13 @@ namespace FileLiberator // moves new files from temp dir to final dest var movedAudioFile = moveFilesToBooksDir(libraryBook, entries); - DownloadCoverArt(libraryBook); - // decrypt failed if (!movedAudioFile) return new StatusHandler { "Cannot find final audio file after decryption" }; + if (Configuration.Instance.DownloadCoverArt) + DownloadCoverArt(libraryBook); + libraryBook.Book.UserDefinedItem.BookStatus = LiberatedStatus.Liberated; return new StatusHandler(); @@ -130,6 +131,7 @@ namespace FileLiberator // REAL WORK DONE HERE var success = await Task.Run(abDownloader.Run); + return success; } finally diff --git a/Source/LibationFileManager/Configuration.cs b/Source/LibationFileManager/Configuration.cs index 698a5a05..a95cc17c 100644 --- a/Source/LibationFileManager/Configuration.cs +++ b/Source/LibationFileManager/Configuration.cs @@ -200,6 +200,13 @@ namespace LibationFileManager get => persistentDictionary.GetNonString>(nameof(GridColumnsWidths)); set => persistentDictionary.SetNonString(nameof(GridColumnsWidths), value); } + + [Description("Save cover image alongside audiobook?")] + public bool DownloadCoverArt + { + get => persistentDictionary.GetNonString(nameof(DownloadCoverArt)); + set => persistentDictionary.SetNonString(nameof(DownloadCoverArt), value); + } public enum BadBookAction { diff --git a/Source/LibationWinForms/Dialogs/SettingsDialog.Designer.cs b/Source/LibationWinForms/Dialogs/SettingsDialog.Designer.cs index 2df343c7..a66c8f04 100644 --- a/Source/LibationWinForms/Dialogs/SettingsDialog.Designer.cs +++ b/Source/LibationWinForms/Dialogs/SettingsDialog.Designer.cs @@ -28,957 +28,972 @@ /// private void InitializeComponent() { - this.booksLocationDescLbl = new System.Windows.Forms.Label(); - this.inProgressDescLbl = new System.Windows.Forms.Label(); - this.saveBtn = new System.Windows.Forms.Button(); - this.cancelBtn = new System.Windows.Forms.Button(); - this.importEpisodesCb = new System.Windows.Forms.CheckBox(); - this.downloadEpisodesCb = new System.Windows.Forms.CheckBox(); - this.badBookGb = new System.Windows.Forms.GroupBox(); - this.badBookIgnoreRb = new System.Windows.Forms.RadioButton(); - this.badBookRetryRb = new System.Windows.Forms.RadioButton(); - this.badBookAbortRb = new System.Windows.Forms.RadioButton(); - this.badBookAskRb = new System.Windows.Forms.RadioButton(); - this.stripAudibleBrandingCbox = new System.Windows.Forms.CheckBox(); - this.splitFilesByChapterCbox = new System.Windows.Forms.CheckBox(); - this.allowLibationFixupCbox = new System.Windows.Forms.CheckBox(); - this.convertLossyRb = new System.Windows.Forms.RadioButton(); - this.convertLosslessRb = new System.Windows.Forms.RadioButton(); - this.inProgressSelectControl = new LibationWinForms.Dialogs.DirectorySelectControl(); - this.logsBtn = new System.Windows.Forms.Button(); - this.booksSelectControl = new LibationWinForms.Dialogs.DirectoryOrCustomSelectControl(); - this.loggingLevelLbl = new System.Windows.Forms.Label(); - this.loggingLevelCb = new System.Windows.Forms.ComboBox(); - this.tabControl = new System.Windows.Forms.TabControl(); - this.tab1ImportantSettings = new System.Windows.Forms.TabPage(); - this.booksGb = new System.Windows.Forms.GroupBox(); - this.tab2ImportLibrary = new System.Windows.Forms.TabPage(); - this.showImportedStatsCb = new System.Windows.Forms.CheckBox(); - this.tab3DownloadDecrypt = new System.Windows.Forms.TabPage(); - this.inProgressFilesGb = new System.Windows.Forms.GroupBox(); - this.customFileNamingGb = new System.Windows.Forms.GroupBox(); - this.chapterFileTemplateBtn = new System.Windows.Forms.Button(); - this.chapterFileTemplateTb = new System.Windows.Forms.TextBox(); - this.chapterFileTemplateLbl = new System.Windows.Forms.Label(); - this.fileTemplateBtn = new System.Windows.Forms.Button(); - this.fileTemplateTb = new System.Windows.Forms.TextBox(); - this.fileTemplateLbl = new System.Windows.Forms.Label(); - this.folderTemplateBtn = new System.Windows.Forms.Button(); - this.folderTemplateTb = new System.Windows.Forms.TextBox(); - this.folderTemplateLbl = new System.Windows.Forms.Label(); - this.tab4AudioFileOptions = new System.Windows.Forms.TabPage(); - this.lameOptionsGb = new System.Windows.Forms.GroupBox(); - this.lameDownsampleMonoCbox = new System.Windows.Forms.CheckBox(); - this.lameBitrateGb = new System.Windows.Forms.GroupBox(); - this.LameMatchSourceBRCbox = new System.Windows.Forms.CheckBox(); - this.lameConstantBitrateCbox = new System.Windows.Forms.CheckBox(); - this.label7 = new System.Windows.Forms.Label(); - this.label6 = new System.Windows.Forms.Label(); - this.label5 = new System.Windows.Forms.Label(); - this.label4 = new System.Windows.Forms.Label(); - this.label11 = new System.Windows.Forms.Label(); - this.label3 = new System.Windows.Forms.Label(); - this.lameBitrateTb = new System.Windows.Forms.TrackBar(); - this.label1 = new System.Windows.Forms.Label(); - this.lameQualityGb = new System.Windows.Forms.GroupBox(); - this.label19 = new System.Windows.Forms.Label(); - this.label18 = new System.Windows.Forms.Label(); - this.label17 = new System.Windows.Forms.Label(); - this.label16 = new System.Windows.Forms.Label(); - this.label12 = new System.Windows.Forms.Label(); - this.label15 = new System.Windows.Forms.Label(); - this.label9 = new System.Windows.Forms.Label(); - this.label8 = new System.Windows.Forms.Label(); - this.label13 = new System.Windows.Forms.Label(); - this.label10 = new System.Windows.Forms.Label(); - this.label14 = new System.Windows.Forms.Label(); - this.label2 = new System.Windows.Forms.Label(); - this.lameVBRQualityTb = new System.Windows.Forms.TrackBar(); - this.groupBox2 = new System.Windows.Forms.GroupBox(); - this.lameTargetQualityRb = new System.Windows.Forms.RadioButton(); - this.lameTargetBitrateRb = new System.Windows.Forms.RadioButton(); - this.stripUnabridgedCbox = new System.Windows.Forms.CheckBox(); - this.retainAaxFileCbox = new System.Windows.Forms.CheckBox(); - this.createCueSheetCbox = new System.Windows.Forms.CheckBox(); - this.autoScanCb = new System.Windows.Forms.CheckBox(); - this.badBookGb.SuspendLayout(); - this.tabControl.SuspendLayout(); - this.tab1ImportantSettings.SuspendLayout(); - this.booksGb.SuspendLayout(); - this.tab2ImportLibrary.SuspendLayout(); - this.tab3DownloadDecrypt.SuspendLayout(); - this.inProgressFilesGb.SuspendLayout(); - this.customFileNamingGb.SuspendLayout(); - this.tab4AudioFileOptions.SuspendLayout(); - this.lameOptionsGb.SuspendLayout(); - this.lameBitrateGb.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.lameBitrateTb)).BeginInit(); - this.lameQualityGb.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.lameVBRQualityTb)).BeginInit(); - this.groupBox2.SuspendLayout(); - this.SuspendLayout(); - // - // booksLocationDescLbl - // - this.booksLocationDescLbl.AutoSize = true; - this.booksLocationDescLbl.Location = new System.Drawing.Point(7, 19); - this.booksLocationDescLbl.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.booksLocationDescLbl.Name = "booksLocationDescLbl"; - this.booksLocationDescLbl.Size = new System.Drawing.Size(69, 15); - this.booksLocationDescLbl.TabIndex = 1; - this.booksLocationDescLbl.Text = "[book desc]"; - // - // inProgressDescLbl - // - this.inProgressDescLbl.AutoSize = true; - this.inProgressDescLbl.Location = new System.Drawing.Point(7, 19); - this.inProgressDescLbl.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.inProgressDescLbl.Name = "inProgressDescLbl"; - this.inProgressDescLbl.Size = new System.Drawing.Size(100, 45); - this.inProgressDescLbl.TabIndex = 18; - this.inProgressDescLbl.Text = "[in progress desc]\r\n[line 2]\r\n[line 3]"; - // - // 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(667, 441); - 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 = 98; - 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(785, 441); - 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 = 99; - this.cancelBtn.Text = "Cancel"; - this.cancelBtn.UseVisualStyleBackColor = true; - this.cancelBtn.Click += new System.EventHandler(this.cancelBtn_Click); - // - // importEpisodesCb - // - this.importEpisodesCb.AutoSize = true; - this.importEpisodesCb.Location = new System.Drawing.Point(6, 56); - this.importEpisodesCb.Name = "importEpisodesCb"; - this.importEpisodesCb.Size = new System.Drawing.Size(146, 19); - this.importEpisodesCb.TabIndex = 3; - this.importEpisodesCb.Text = "[import episodes desc]"; - this.importEpisodesCb.UseVisualStyleBackColor = true; - // - // downloadEpisodesCb - // - this.downloadEpisodesCb.AutoSize = true; - this.downloadEpisodesCb.Location = new System.Drawing.Point(6, 81); - this.downloadEpisodesCb.Name = "downloadEpisodesCb"; - this.downloadEpisodesCb.Size = new System.Drawing.Size(163, 19); - this.downloadEpisodesCb.TabIndex = 4; - this.downloadEpisodesCb.Text = "[download episodes desc]"; - this.downloadEpisodesCb.UseVisualStyleBackColor = true; - // - // badBookGb - // - this.badBookGb.Controls.Add(this.badBookIgnoreRb); - this.badBookGb.Controls.Add(this.badBookRetryRb); - this.badBookGb.Controls.Add(this.badBookAbortRb); - this.badBookGb.Controls.Add(this.badBookAskRb); - this.badBookGb.Location = new System.Drawing.Point(7, 6); - this.badBookGb.Name = "badBookGb"; - this.badBookGb.Size = new System.Drawing.Size(888, 76); - this.badBookGb.TabIndex = 13; - this.badBookGb.TabStop = false; - this.badBookGb.Text = "[bad book desc]"; - // - // badBookIgnoreRb - // - this.badBookIgnoreRb.AutoSize = true; - this.badBookIgnoreRb.Location = new System.Drawing.Point(384, 47); - this.badBookIgnoreRb.Name = "badBookIgnoreRb"; - this.badBookIgnoreRb.Size = new System.Drawing.Size(94, 19); - this.badBookIgnoreRb.TabIndex = 17; - this.badBookIgnoreRb.TabStop = true; - this.badBookIgnoreRb.Text = "[ignore desc]"; - this.badBookIgnoreRb.UseVisualStyleBackColor = true; - // - // badBookRetryRb - // - this.badBookRetryRb.AutoSize = true; - this.badBookRetryRb.Location = new System.Drawing.Point(5, 47); - this.badBookRetryRb.Name = "badBookRetryRb"; - this.badBookRetryRb.Size = new System.Drawing.Size(84, 19); - this.badBookRetryRb.TabIndex = 16; - this.badBookRetryRb.TabStop = true; - this.badBookRetryRb.Text = "[retry desc]"; - this.badBookRetryRb.UseVisualStyleBackColor = true; - // - // badBookAbortRb - // - this.badBookAbortRb.AutoSize = true; - this.badBookAbortRb.Location = new System.Drawing.Point(384, 22); - this.badBookAbortRb.Name = "badBookAbortRb"; - this.badBookAbortRb.Size = new System.Drawing.Size(88, 19); - this.badBookAbortRb.TabIndex = 15; - this.badBookAbortRb.TabStop = true; - this.badBookAbortRb.Text = "[abort desc]"; - this.badBookAbortRb.UseVisualStyleBackColor = true; - // - // badBookAskRb - // - this.badBookAskRb.AutoSize = true; - this.badBookAskRb.Location = new System.Drawing.Point(6, 22); - this.badBookAskRb.Name = "badBookAskRb"; - this.badBookAskRb.Size = new System.Drawing.Size(77, 19); - this.badBookAskRb.TabIndex = 14; - this.badBookAskRb.TabStop = true; - this.badBookAskRb.Text = "[ask desc]"; - this.badBookAskRb.UseVisualStyleBackColor = true; - // - // stripAudibleBrandingCbox - // - this.stripAudibleBrandingCbox.AutoSize = true; - this.stripAudibleBrandingCbox.Location = new System.Drawing.Point(19, 143); - this.stripAudibleBrandingCbox.Name = "stripAudibleBrandingCbox"; - this.stripAudibleBrandingCbox.Size = new System.Drawing.Size(143, 34); - this.stripAudibleBrandingCbox.TabIndex = 13; - this.stripAudibleBrandingCbox.Text = "[StripAudibleBranding\r\ndesc]"; - this.stripAudibleBrandingCbox.UseVisualStyleBackColor = true; - // - // splitFilesByChapterCbox - // - this.splitFilesByChapterCbox.AutoSize = true; - this.splitFilesByChapterCbox.Location = new System.Drawing.Point(19, 93); - this.splitFilesByChapterCbox.Name = "splitFilesByChapterCbox"; - this.splitFilesByChapterCbox.Size = new System.Drawing.Size(162, 19); - this.splitFilesByChapterCbox.TabIndex = 13; - this.splitFilesByChapterCbox.Text = "[SplitFilesByChapter desc]"; - this.splitFilesByChapterCbox.UseVisualStyleBackColor = true; - // - // allowLibationFixupCbox - // - this.allowLibationFixupCbox.AutoSize = true; - this.allowLibationFixupCbox.Checked = true; - this.allowLibationFixupCbox.CheckState = System.Windows.Forms.CheckState.Checked; - this.allowLibationFixupCbox.Location = new System.Drawing.Point(19, 18); - this.allowLibationFixupCbox.Name = "allowLibationFixupCbox"; - this.allowLibationFixupCbox.Size = new System.Drawing.Size(163, 19); - this.allowLibationFixupCbox.TabIndex = 10; - this.allowLibationFixupCbox.Text = "[AllowLibationFixup desc]"; - this.allowLibationFixupCbox.UseVisualStyleBackColor = true; - this.allowLibationFixupCbox.CheckedChanged += new System.EventHandler(this.allowLibationFixupCbox_CheckedChanged); - // - // convertLossyRb - // - this.convertLossyRb.AutoSize = true; - this.convertLossyRb.Location = new System.Drawing.Point(19, 207); - this.convertLossyRb.Name = "convertLossyRb"; - this.convertLossyRb.Size = new System.Drawing.Size(329, 19); - this.convertLossyRb.TabIndex = 12; - this.convertLossyRb.Text = "Download my books as .MP3 files (transcode if necessary)"; - this.convertLossyRb.UseVisualStyleBackColor = true; - this.convertLossyRb.CheckedChanged += new System.EventHandler(this.convertFormatRb_CheckedChanged); - // - // convertLosslessRb - // - this.convertLosslessRb.AutoSize = true; - this.convertLosslessRb.Checked = true; - this.convertLosslessRb.Location = new System.Drawing.Point(19, 182); - this.convertLosslessRb.Name = "convertLosslessRb"; - this.convertLosslessRb.Size = new System.Drawing.Size(335, 19); - this.convertLosslessRb.TabIndex = 11; - this.convertLosslessRb.TabStop = true; - this.convertLosslessRb.Text = "Download my books in the original audio format (Lossless)"; - this.convertLosslessRb.UseVisualStyleBackColor = true; - this.convertLosslessRb.CheckedChanged += new System.EventHandler(this.convertFormatRb_CheckedChanged); - // - // inProgressSelectControl - // - this.inProgressSelectControl.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + this.booksLocationDescLbl = new System.Windows.Forms.Label(); + this.inProgressDescLbl = new System.Windows.Forms.Label(); + this.saveBtn = new System.Windows.Forms.Button(); + this.cancelBtn = new System.Windows.Forms.Button(); + this.importEpisodesCb = new System.Windows.Forms.CheckBox(); + this.downloadEpisodesCb = new System.Windows.Forms.CheckBox(); + this.badBookGb = new System.Windows.Forms.GroupBox(); + this.badBookIgnoreRb = new System.Windows.Forms.RadioButton(); + this.badBookRetryRb = new System.Windows.Forms.RadioButton(); + this.badBookAbortRb = new System.Windows.Forms.RadioButton(); + this.badBookAskRb = new System.Windows.Forms.RadioButton(); + this.stripAudibleBrandingCbox = new System.Windows.Forms.CheckBox(); + this.splitFilesByChapterCbox = new System.Windows.Forms.CheckBox(); + this.allowLibationFixupCbox = new System.Windows.Forms.CheckBox(); + this.convertLossyRb = new System.Windows.Forms.RadioButton(); + this.convertLosslessRb = new System.Windows.Forms.RadioButton(); + this.inProgressSelectControl = new LibationWinForms.Dialogs.DirectorySelectControl(); + this.logsBtn = new System.Windows.Forms.Button(); + this.booksSelectControl = new LibationWinForms.Dialogs.DirectoryOrCustomSelectControl(); + this.loggingLevelLbl = new System.Windows.Forms.Label(); + this.loggingLevelCb = new System.Windows.Forms.ComboBox(); + this.tabControl = new System.Windows.Forms.TabControl(); + this.tab1ImportantSettings = new System.Windows.Forms.TabPage(); + this.booksGb = new System.Windows.Forms.GroupBox(); + this.tab2ImportLibrary = new System.Windows.Forms.TabPage(); + this.autoScanCb = new System.Windows.Forms.CheckBox(); + this.showImportedStatsCb = new System.Windows.Forms.CheckBox(); + this.tab3DownloadDecrypt = new System.Windows.Forms.TabPage(); + this.inProgressFilesGb = new System.Windows.Forms.GroupBox(); + this.customFileNamingGb = new System.Windows.Forms.GroupBox(); + this.chapterFileTemplateBtn = new System.Windows.Forms.Button(); + this.chapterFileTemplateTb = new System.Windows.Forms.TextBox(); + this.chapterFileTemplateLbl = new System.Windows.Forms.Label(); + this.fileTemplateBtn = new System.Windows.Forms.Button(); + this.fileTemplateTb = new System.Windows.Forms.TextBox(); + this.fileTemplateLbl = new System.Windows.Forms.Label(); + this.folderTemplateBtn = new System.Windows.Forms.Button(); + this.folderTemplateTb = new System.Windows.Forms.TextBox(); + this.folderTemplateLbl = new System.Windows.Forms.Label(); + this.tab4AudioFileOptions = new System.Windows.Forms.TabPage(); + this.lameOptionsGb = new System.Windows.Forms.GroupBox(); + this.lameDownsampleMonoCbox = new System.Windows.Forms.CheckBox(); + this.lameBitrateGb = new System.Windows.Forms.GroupBox(); + this.LameMatchSourceBRCbox = new System.Windows.Forms.CheckBox(); + this.lameConstantBitrateCbox = new System.Windows.Forms.CheckBox(); + this.label7 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label11 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.lameBitrateTb = new System.Windows.Forms.TrackBar(); + this.label1 = new System.Windows.Forms.Label(); + this.lameQualityGb = new System.Windows.Forms.GroupBox(); + this.label19 = new System.Windows.Forms.Label(); + this.label18 = new System.Windows.Forms.Label(); + this.label17 = new System.Windows.Forms.Label(); + this.label16 = new System.Windows.Forms.Label(); + this.label12 = new System.Windows.Forms.Label(); + this.label15 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.label13 = new System.Windows.Forms.Label(); + this.label10 = new System.Windows.Forms.Label(); + this.label14 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.lameVBRQualityTb = new System.Windows.Forms.TrackBar(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.lameTargetQualityRb = new System.Windows.Forms.RadioButton(); + this.lameTargetBitrateRb = new System.Windows.Forms.RadioButton(); + this.stripUnabridgedCbox = new System.Windows.Forms.CheckBox(); + this.retainAaxFileCbox = new System.Windows.Forms.CheckBox(); + this.createCueSheetCbox = new System.Windows.Forms.CheckBox(); + this.downloadCoverArtCbox = new System.Windows.Forms.CheckBox(); + this.badBookGb.SuspendLayout(); + this.tabControl.SuspendLayout(); + this.tab1ImportantSettings.SuspendLayout(); + this.booksGb.SuspendLayout(); + this.tab2ImportLibrary.SuspendLayout(); + this.tab3DownloadDecrypt.SuspendLayout(); + this.inProgressFilesGb.SuspendLayout(); + this.customFileNamingGb.SuspendLayout(); + this.tab4AudioFileOptions.SuspendLayout(); + this.lameOptionsGb.SuspendLayout(); + this.lameBitrateGb.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.lameBitrateTb)).BeginInit(); + this.lameQualityGb.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.lameVBRQualityTb)).BeginInit(); + this.groupBox2.SuspendLayout(); + this.SuspendLayout(); + // + // booksLocationDescLbl + // + this.booksLocationDescLbl.AutoSize = true; + this.booksLocationDescLbl.Location = new System.Drawing.Point(7, 19); + this.booksLocationDescLbl.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.booksLocationDescLbl.Name = "booksLocationDescLbl"; + this.booksLocationDescLbl.Size = new System.Drawing.Size(69, 15); + this.booksLocationDescLbl.TabIndex = 1; + this.booksLocationDescLbl.Text = "[book desc]"; + // + // inProgressDescLbl + // + this.inProgressDescLbl.AutoSize = true; + this.inProgressDescLbl.Location = new System.Drawing.Point(7, 19); + this.inProgressDescLbl.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.inProgressDescLbl.Name = "inProgressDescLbl"; + this.inProgressDescLbl.Size = new System.Drawing.Size(100, 45); + this.inProgressDescLbl.TabIndex = 18; + this.inProgressDescLbl.Text = "[in progress desc]\r\n[line 2]\r\n[line 3]"; + // + // 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(667, 441); + 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 = 98; + 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(785, 441); + 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 = 99; + this.cancelBtn.Text = "Cancel"; + this.cancelBtn.UseVisualStyleBackColor = true; + this.cancelBtn.Click += new System.EventHandler(this.cancelBtn_Click); + // + // importEpisodesCb + // + this.importEpisodesCb.AutoSize = true; + this.importEpisodesCb.Location = new System.Drawing.Point(6, 56); + this.importEpisodesCb.Name = "importEpisodesCb"; + this.importEpisodesCb.Size = new System.Drawing.Size(146, 19); + this.importEpisodesCb.TabIndex = 3; + this.importEpisodesCb.Text = "[import episodes desc]"; + this.importEpisodesCb.UseVisualStyleBackColor = true; + // + // downloadEpisodesCb + // + this.downloadEpisodesCb.AutoSize = true; + this.downloadEpisodesCb.Location = new System.Drawing.Point(6, 81); + this.downloadEpisodesCb.Name = "downloadEpisodesCb"; + this.downloadEpisodesCb.Size = new System.Drawing.Size(163, 19); + this.downloadEpisodesCb.TabIndex = 4; + this.downloadEpisodesCb.Text = "[download episodes desc]"; + this.downloadEpisodesCb.UseVisualStyleBackColor = true; + // + // badBookGb + // + this.badBookGb.Controls.Add(this.badBookIgnoreRb); + this.badBookGb.Controls.Add(this.badBookRetryRb); + this.badBookGb.Controls.Add(this.badBookAbortRb); + this.badBookGb.Controls.Add(this.badBookAskRb); + this.badBookGb.Location = new System.Drawing.Point(7, 6); + this.badBookGb.Name = "badBookGb"; + this.badBookGb.Size = new System.Drawing.Size(888, 76); + this.badBookGb.TabIndex = 13; + this.badBookGb.TabStop = false; + this.badBookGb.Text = "[bad book desc]"; + // + // badBookIgnoreRb + // + this.badBookIgnoreRb.AutoSize = true; + this.badBookIgnoreRb.Location = new System.Drawing.Point(384, 47); + this.badBookIgnoreRb.Name = "badBookIgnoreRb"; + this.badBookIgnoreRb.Size = new System.Drawing.Size(94, 19); + this.badBookIgnoreRb.TabIndex = 17; + this.badBookIgnoreRb.TabStop = true; + this.badBookIgnoreRb.Text = "[ignore desc]"; + this.badBookIgnoreRb.UseVisualStyleBackColor = true; + // + // badBookRetryRb + // + this.badBookRetryRb.AutoSize = true; + this.badBookRetryRb.Location = new System.Drawing.Point(5, 47); + this.badBookRetryRb.Name = "badBookRetryRb"; + this.badBookRetryRb.Size = new System.Drawing.Size(84, 19); + this.badBookRetryRb.TabIndex = 16; + this.badBookRetryRb.TabStop = true; + this.badBookRetryRb.Text = "[retry desc]"; + this.badBookRetryRb.UseVisualStyleBackColor = true; + // + // badBookAbortRb + // + this.badBookAbortRb.AutoSize = true; + this.badBookAbortRb.Location = new System.Drawing.Point(384, 22); + this.badBookAbortRb.Name = "badBookAbortRb"; + this.badBookAbortRb.Size = new System.Drawing.Size(88, 19); + this.badBookAbortRb.TabIndex = 15; + this.badBookAbortRb.TabStop = true; + this.badBookAbortRb.Text = "[abort desc]"; + this.badBookAbortRb.UseVisualStyleBackColor = true; + // + // badBookAskRb + // + this.badBookAskRb.AutoSize = true; + this.badBookAskRb.Location = new System.Drawing.Point(6, 22); + this.badBookAskRb.Name = "badBookAskRb"; + this.badBookAskRb.Size = new System.Drawing.Size(77, 19); + this.badBookAskRb.TabIndex = 14; + this.badBookAskRb.TabStop = true; + this.badBookAskRb.Text = "[ask desc]"; + this.badBookAskRb.UseVisualStyleBackColor = true; + // + // stripAudibleBrandingCbox + // + this.stripAudibleBrandingCbox.AutoSize = true; + this.stripAudibleBrandingCbox.Location = new System.Drawing.Point(19, 168); + this.stripAudibleBrandingCbox.Name = "stripAudibleBrandingCbox"; + this.stripAudibleBrandingCbox.Size = new System.Drawing.Size(143, 34); + this.stripAudibleBrandingCbox.TabIndex = 13; + this.stripAudibleBrandingCbox.Text = "[StripAudibleBranding\r\ndesc]"; + this.stripAudibleBrandingCbox.UseVisualStyleBackColor = true; + // + // splitFilesByChapterCbox + // + this.splitFilesByChapterCbox.AutoSize = true; + this.splitFilesByChapterCbox.Location = new System.Drawing.Point(19, 118); + this.splitFilesByChapterCbox.Name = "splitFilesByChapterCbox"; + this.splitFilesByChapterCbox.Size = new System.Drawing.Size(162, 19); + this.splitFilesByChapterCbox.TabIndex = 13; + this.splitFilesByChapterCbox.Text = "[SplitFilesByChapter desc]"; + this.splitFilesByChapterCbox.UseVisualStyleBackColor = true; + // + // allowLibationFixupCbox + // + this.allowLibationFixupCbox.AutoSize = true; + this.allowLibationFixupCbox.Checked = true; + this.allowLibationFixupCbox.CheckState = System.Windows.Forms.CheckState.Checked; + this.allowLibationFixupCbox.Location = new System.Drawing.Point(19, 18); + this.allowLibationFixupCbox.Name = "allowLibationFixupCbox"; + this.allowLibationFixupCbox.Size = new System.Drawing.Size(163, 19); + this.allowLibationFixupCbox.TabIndex = 10; + this.allowLibationFixupCbox.Text = "[AllowLibationFixup desc]"; + this.allowLibationFixupCbox.UseVisualStyleBackColor = true; + this.allowLibationFixupCbox.CheckedChanged += new System.EventHandler(this.allowLibationFixupCbox_CheckedChanged); + // + // convertLossyRb + // + this.convertLossyRb.AutoSize = true; + this.convertLossyRb.Location = new System.Drawing.Point(19, 232); + this.convertLossyRb.Name = "convertLossyRb"; + this.convertLossyRb.Size = new System.Drawing.Size(329, 19); + this.convertLossyRb.TabIndex = 12; + this.convertLossyRb.Text = "Download my books as .MP3 files (transcode if necessary)"; + this.convertLossyRb.UseVisualStyleBackColor = true; + this.convertLossyRb.CheckedChanged += new System.EventHandler(this.convertFormatRb_CheckedChanged); + // + // convertLosslessRb + // + this.convertLosslessRb.AutoSize = true; + this.convertLosslessRb.Checked = true; + this.convertLosslessRb.Location = new System.Drawing.Point(19, 207); + this.convertLosslessRb.Name = "convertLosslessRb"; + this.convertLosslessRb.Size = new System.Drawing.Size(335, 19); + this.convertLosslessRb.TabIndex = 11; + this.convertLosslessRb.TabStop = true; + this.convertLosslessRb.Text = "Download my books in the original audio format (Lossless)"; + this.convertLosslessRb.UseVisualStyleBackColor = true; + this.convertLosslessRb.CheckedChanged += new System.EventHandler(this.convertFormatRb_CheckedChanged); + // + // inProgressSelectControl + // + this.inProgressSelectControl.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.inProgressSelectControl.Location = new System.Drawing.Point(7, 68); - this.inProgressSelectControl.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); - this.inProgressSelectControl.Name = "inProgressSelectControl"; - this.inProgressSelectControl.Size = new System.Drawing.Size(828, 52); - this.inProgressSelectControl.TabIndex = 19; - // - // logsBtn - // - this.logsBtn.Location = new System.Drawing.Point(256, 169); - this.logsBtn.Name = "logsBtn"; - this.logsBtn.Size = new System.Drawing.Size(132, 23); - this.logsBtn.TabIndex = 5; - this.logsBtn.Text = "Open log folder"; - this.logsBtn.UseVisualStyleBackColor = true; - this.logsBtn.Click += new System.EventHandler(this.logsBtn_Click); - // - // booksSelectControl - // - this.booksSelectControl.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + this.inProgressSelectControl.Location = new System.Drawing.Point(7, 68); + this.inProgressSelectControl.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.inProgressSelectControl.Name = "inProgressSelectControl"; + this.inProgressSelectControl.Size = new System.Drawing.Size(828, 52); + this.inProgressSelectControl.TabIndex = 19; + // + // logsBtn + // + this.logsBtn.Location = new System.Drawing.Point(256, 169); + this.logsBtn.Name = "logsBtn"; + this.logsBtn.Size = new System.Drawing.Size(132, 23); + this.logsBtn.TabIndex = 5; + this.logsBtn.Text = "Open log folder"; + this.logsBtn.UseVisualStyleBackColor = true; + this.logsBtn.Click += new System.EventHandler(this.logsBtn_Click); + // + // booksSelectControl + // + this.booksSelectControl.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.booksSelectControl.Location = new System.Drawing.Point(7, 37); - this.booksSelectControl.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); - this.booksSelectControl.Name = "booksSelectControl"; - this.booksSelectControl.Size = new System.Drawing.Size(829, 87); - this.booksSelectControl.TabIndex = 2; - // - // loggingLevelLbl - // - this.loggingLevelLbl.AutoSize = true; - this.loggingLevelLbl.Location = new System.Drawing.Point(6, 172); - this.loggingLevelLbl.Name = "loggingLevelLbl"; - this.loggingLevelLbl.Size = new System.Drawing.Size(78, 15); - this.loggingLevelLbl.TabIndex = 3; - this.loggingLevelLbl.Text = "Logging level"; - // - // loggingLevelCb - // - this.loggingLevelCb.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.loggingLevelCb.FormattingEnabled = true; - this.loggingLevelCb.Location = new System.Drawing.Point(90, 169); - this.loggingLevelCb.Name = "loggingLevelCb"; - this.loggingLevelCb.Size = new System.Drawing.Size(129, 23); - this.loggingLevelCb.TabIndex = 4; - // - // tabControl - // - this.tabControl.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + this.booksSelectControl.Location = new System.Drawing.Point(7, 37); + this.booksSelectControl.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.booksSelectControl.Name = "booksSelectControl"; + this.booksSelectControl.Size = new System.Drawing.Size(829, 87); + this.booksSelectControl.TabIndex = 2; + // + // loggingLevelLbl + // + this.loggingLevelLbl.AutoSize = true; + this.loggingLevelLbl.Location = new System.Drawing.Point(6, 172); + this.loggingLevelLbl.Name = "loggingLevelLbl"; + this.loggingLevelLbl.Size = new System.Drawing.Size(78, 15); + this.loggingLevelLbl.TabIndex = 3; + this.loggingLevelLbl.Text = "Logging level"; + // + // loggingLevelCb + // + this.loggingLevelCb.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.loggingLevelCb.FormattingEnabled = true; + this.loggingLevelCb.Location = new System.Drawing.Point(90, 169); + this.loggingLevelCb.Name = "loggingLevelCb"; + this.loggingLevelCb.Size = new System.Drawing.Size(129, 23); + this.loggingLevelCb.TabIndex = 4; + // + // tabControl + // + this.tabControl.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.tabControl.Controls.Add(this.tab1ImportantSettings); - this.tabControl.Controls.Add(this.tab2ImportLibrary); - this.tabControl.Controls.Add(this.tab3DownloadDecrypt); - this.tabControl.Controls.Add(this.tab4AudioFileOptions); - this.tabControl.Location = new System.Drawing.Point(12, 12); - this.tabControl.Name = "tabControl"; - this.tabControl.SelectedIndex = 0; - this.tabControl.Size = new System.Drawing.Size(862, 423); - this.tabControl.TabIndex = 100; - // - // tab1ImportantSettings - // - this.tab1ImportantSettings.Controls.Add(this.booksGb); - this.tab1ImportantSettings.Controls.Add(this.logsBtn); - this.tab1ImportantSettings.Controls.Add(this.loggingLevelCb); - this.tab1ImportantSettings.Controls.Add(this.loggingLevelLbl); - this.tab1ImportantSettings.Location = new System.Drawing.Point(4, 24); - this.tab1ImportantSettings.Name = "tab1ImportantSettings"; - this.tab1ImportantSettings.Padding = new System.Windows.Forms.Padding(3); - this.tab1ImportantSettings.Size = new System.Drawing.Size(854, 395); - this.tab1ImportantSettings.TabIndex = 0; - this.tab1ImportantSettings.Text = "Important settings"; - this.tab1ImportantSettings.UseVisualStyleBackColor = true; - // - // booksGb - // - this.booksGb.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + this.tabControl.Controls.Add(this.tab1ImportantSettings); + this.tabControl.Controls.Add(this.tab2ImportLibrary); + this.tabControl.Controls.Add(this.tab3DownloadDecrypt); + this.tabControl.Controls.Add(this.tab4AudioFileOptions); + this.tabControl.Location = new System.Drawing.Point(12, 12); + this.tabControl.Name = "tabControl"; + this.tabControl.SelectedIndex = 0; + this.tabControl.Size = new System.Drawing.Size(862, 423); + this.tabControl.TabIndex = 100; + // + // tab1ImportantSettings + // + this.tab1ImportantSettings.Controls.Add(this.booksGb); + this.tab1ImportantSettings.Controls.Add(this.logsBtn); + this.tab1ImportantSettings.Controls.Add(this.loggingLevelCb); + this.tab1ImportantSettings.Controls.Add(this.loggingLevelLbl); + this.tab1ImportantSettings.Location = new System.Drawing.Point(4, 24); + this.tab1ImportantSettings.Name = "tab1ImportantSettings"; + this.tab1ImportantSettings.Padding = new System.Windows.Forms.Padding(3); + this.tab1ImportantSettings.Size = new System.Drawing.Size(854, 395); + this.tab1ImportantSettings.TabIndex = 0; + this.tab1ImportantSettings.Text = "Important settings"; + this.tab1ImportantSettings.UseVisualStyleBackColor = true; + // + // booksGb + // + this.booksGb.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.booksGb.Controls.Add(this.booksSelectControl); - this.booksGb.Controls.Add(this.booksLocationDescLbl); - this.booksGb.Location = new System.Drawing.Point(6, 6); - this.booksGb.Name = "booksGb"; - this.booksGb.Size = new System.Drawing.Size(842, 129); - this.booksGb.TabIndex = 0; - this.booksGb.TabStop = false; - this.booksGb.Text = "Books location"; - // - // tab2ImportLibrary - // - this.tab2ImportLibrary.Controls.Add(this.autoScanCb); - this.tab2ImportLibrary.Controls.Add(this.showImportedStatsCb); - this.tab2ImportLibrary.Controls.Add(this.importEpisodesCb); - this.tab2ImportLibrary.Controls.Add(this.downloadEpisodesCb); - this.tab2ImportLibrary.Location = new System.Drawing.Point(4, 24); - this.tab2ImportLibrary.Name = "tab2ImportLibrary"; - this.tab2ImportLibrary.Padding = new System.Windows.Forms.Padding(3); - this.tab2ImportLibrary.Size = new System.Drawing.Size(854, 395); - this.tab2ImportLibrary.TabIndex = 1; - this.tab2ImportLibrary.Text = "Import library"; - this.tab2ImportLibrary.UseVisualStyleBackColor = true; - // - // showImportedStatsCb - // - this.showImportedStatsCb.AutoSize = true; - this.showImportedStatsCb.Location = new System.Drawing.Point(6, 31); - this.showImportedStatsCb.Name = "showImportedStatsCb"; - this.showImportedStatsCb.Size = new System.Drawing.Size(168, 19); - this.showImportedStatsCb.TabIndex = 2; - this.showImportedStatsCb.Text = "[show imported stats desc]"; - this.showImportedStatsCb.UseVisualStyleBackColor = true; - // - // tab3DownloadDecrypt - // - this.tab3DownloadDecrypt.Controls.Add(this.inProgressFilesGb); - this.tab3DownloadDecrypt.Controls.Add(this.customFileNamingGb); - this.tab3DownloadDecrypt.Controls.Add(this.badBookGb); - this.tab3DownloadDecrypt.Location = new System.Drawing.Point(4, 24); - this.tab3DownloadDecrypt.Name = "tab3DownloadDecrypt"; - this.tab3DownloadDecrypt.Padding = new System.Windows.Forms.Padding(3); - this.tab3DownloadDecrypt.Size = new System.Drawing.Size(854, 395); - this.tab3DownloadDecrypt.TabIndex = 2; - this.tab3DownloadDecrypt.Text = "Download/Decrypt"; - this.tab3DownloadDecrypt.UseVisualStyleBackColor = true; - // - // inProgressFilesGb - // - this.inProgressFilesGb.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + this.booksGb.Controls.Add(this.booksSelectControl); + this.booksGb.Controls.Add(this.booksLocationDescLbl); + this.booksGb.Location = new System.Drawing.Point(6, 6); + this.booksGb.Name = "booksGb"; + this.booksGb.Size = new System.Drawing.Size(842, 129); + this.booksGb.TabIndex = 0; + this.booksGb.TabStop = false; + this.booksGb.Text = "Books location"; + // + // tab2ImportLibrary + // + this.tab2ImportLibrary.Controls.Add(this.autoScanCb); + this.tab2ImportLibrary.Controls.Add(this.showImportedStatsCb); + this.tab2ImportLibrary.Controls.Add(this.importEpisodesCb); + this.tab2ImportLibrary.Controls.Add(this.downloadEpisodesCb); + this.tab2ImportLibrary.Location = new System.Drawing.Point(4, 24); + this.tab2ImportLibrary.Name = "tab2ImportLibrary"; + this.tab2ImportLibrary.Padding = new System.Windows.Forms.Padding(3); + this.tab2ImportLibrary.Size = new System.Drawing.Size(854, 395); + this.tab2ImportLibrary.TabIndex = 1; + this.tab2ImportLibrary.Text = "Import library"; + this.tab2ImportLibrary.UseVisualStyleBackColor = true; + // + // autoScanCb + // + this.autoScanCb.AutoSize = true; + this.autoScanCb.Location = new System.Drawing.Point(6, 6); + this.autoScanCb.Name = "autoScanCb"; + this.autoScanCb.Size = new System.Drawing.Size(112, 19); + this.autoScanCb.TabIndex = 1; + this.autoScanCb.Text = "[auto scan desc]"; + this.autoScanCb.UseVisualStyleBackColor = true; + // + // showImportedStatsCb + // + this.showImportedStatsCb.AutoSize = true; + this.showImportedStatsCb.Location = new System.Drawing.Point(6, 31); + this.showImportedStatsCb.Name = "showImportedStatsCb"; + this.showImportedStatsCb.Size = new System.Drawing.Size(168, 19); + this.showImportedStatsCb.TabIndex = 2; + this.showImportedStatsCb.Text = "[show imported stats desc]"; + this.showImportedStatsCb.UseVisualStyleBackColor = true; + // + // tab3DownloadDecrypt + // + this.tab3DownloadDecrypt.Controls.Add(this.inProgressFilesGb); + this.tab3DownloadDecrypt.Controls.Add(this.customFileNamingGb); + this.tab3DownloadDecrypt.Controls.Add(this.badBookGb); + this.tab3DownloadDecrypt.Location = new System.Drawing.Point(4, 24); + this.tab3DownloadDecrypt.Name = "tab3DownloadDecrypt"; + this.tab3DownloadDecrypt.Padding = new System.Windows.Forms.Padding(3); + this.tab3DownloadDecrypt.Size = new System.Drawing.Size(854, 395); + this.tab3DownloadDecrypt.TabIndex = 2; + this.tab3DownloadDecrypt.Text = "Download/Decrypt"; + this.tab3DownloadDecrypt.UseVisualStyleBackColor = true; + // + // inProgressFilesGb + // + this.inProgressFilesGb.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.inProgressFilesGb.Controls.Add(this.inProgressDescLbl); - this.inProgressFilesGb.Controls.Add(this.inProgressSelectControl); - this.inProgressFilesGb.Location = new System.Drawing.Point(7, 251); - this.inProgressFilesGb.Name = "inProgressFilesGb"; - this.inProgressFilesGb.Size = new System.Drawing.Size(841, 128); - this.inProgressFilesGb.TabIndex = 21; - this.inProgressFilesGb.TabStop = false; - this.inProgressFilesGb.Text = "In progress files"; - // - // customFileNamingGb - // - this.customFileNamingGb.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + this.inProgressFilesGb.Controls.Add(this.inProgressDescLbl); + this.inProgressFilesGb.Controls.Add(this.inProgressSelectControl); + this.inProgressFilesGb.Location = new System.Drawing.Point(7, 251); + this.inProgressFilesGb.Name = "inProgressFilesGb"; + this.inProgressFilesGb.Size = new System.Drawing.Size(841, 128); + this.inProgressFilesGb.TabIndex = 21; + this.inProgressFilesGb.TabStop = false; + this.inProgressFilesGb.Text = "In progress files"; + // + // customFileNamingGb + // + this.customFileNamingGb.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.customFileNamingGb.Controls.Add(this.chapterFileTemplateBtn); - this.customFileNamingGb.Controls.Add(this.chapterFileTemplateTb); - this.customFileNamingGb.Controls.Add(this.chapterFileTemplateLbl); - this.customFileNamingGb.Controls.Add(this.fileTemplateBtn); - this.customFileNamingGb.Controls.Add(this.fileTemplateTb); - this.customFileNamingGb.Controls.Add(this.fileTemplateLbl); - this.customFileNamingGb.Controls.Add(this.folderTemplateBtn); - this.customFileNamingGb.Controls.Add(this.folderTemplateTb); - this.customFileNamingGb.Controls.Add(this.folderTemplateLbl); - this.customFileNamingGb.Location = new System.Drawing.Point(7, 88); - this.customFileNamingGb.Name = "customFileNamingGb"; - this.customFileNamingGb.Size = new System.Drawing.Size(841, 157); - this.customFileNamingGb.TabIndex = 20; - this.customFileNamingGb.TabStop = false; - this.customFileNamingGb.Text = "Custom file naming"; - // - // chapterFileTemplateBtn - // - this.chapterFileTemplateBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.chapterFileTemplateBtn.Location = new System.Drawing.Point(761, 124); - this.chapterFileTemplateBtn.Name = "chapterFileTemplateBtn"; - this.chapterFileTemplateBtn.Size = new System.Drawing.Size(75, 23); - this.chapterFileTemplateBtn.TabIndex = 8; - this.chapterFileTemplateBtn.Text = "Edit..."; - this.chapterFileTemplateBtn.UseVisualStyleBackColor = true; - this.chapterFileTemplateBtn.Click += new System.EventHandler(this.chapterFileTemplateBtn_Click); - // - // chapterFileTemplateTb - // - this.chapterFileTemplateTb.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + this.customFileNamingGb.Controls.Add(this.chapterFileTemplateBtn); + this.customFileNamingGb.Controls.Add(this.chapterFileTemplateTb); + this.customFileNamingGb.Controls.Add(this.chapterFileTemplateLbl); + this.customFileNamingGb.Controls.Add(this.fileTemplateBtn); + this.customFileNamingGb.Controls.Add(this.fileTemplateTb); + this.customFileNamingGb.Controls.Add(this.fileTemplateLbl); + this.customFileNamingGb.Controls.Add(this.folderTemplateBtn); + this.customFileNamingGb.Controls.Add(this.folderTemplateTb); + this.customFileNamingGb.Controls.Add(this.folderTemplateLbl); + this.customFileNamingGb.Location = new System.Drawing.Point(7, 88); + this.customFileNamingGb.Name = "customFileNamingGb"; + this.customFileNamingGb.Size = new System.Drawing.Size(841, 157); + this.customFileNamingGb.TabIndex = 20; + this.customFileNamingGb.TabStop = false; + this.customFileNamingGb.Text = "Custom file naming"; + // + // chapterFileTemplateBtn + // + this.chapterFileTemplateBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.chapterFileTemplateBtn.Location = new System.Drawing.Point(761, 124); + this.chapterFileTemplateBtn.Name = "chapterFileTemplateBtn"; + this.chapterFileTemplateBtn.Size = new System.Drawing.Size(75, 23); + this.chapterFileTemplateBtn.TabIndex = 8; + this.chapterFileTemplateBtn.Text = "Edit..."; + this.chapterFileTemplateBtn.UseVisualStyleBackColor = true; + this.chapterFileTemplateBtn.Click += new System.EventHandler(this.chapterFileTemplateBtn_Click); + // + // chapterFileTemplateTb + // + this.chapterFileTemplateTb.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.chapterFileTemplateTb.Location = new System.Drawing.Point(6, 125); - this.chapterFileTemplateTb.Name = "chapterFileTemplateTb"; - this.chapterFileTemplateTb.ReadOnly = true; - this.chapterFileTemplateTb.Size = new System.Drawing.Size(749, 23); - this.chapterFileTemplateTb.TabIndex = 7; - // - // chapterFileTemplateLbl - // - this.chapterFileTemplateLbl.AutoSize = true; - this.chapterFileTemplateLbl.Location = new System.Drawing.Point(6, 107); - this.chapterFileTemplateLbl.Name = "chapterFileTemplateLbl"; - this.chapterFileTemplateLbl.Size = new System.Drawing.Size(123, 15); - this.chapterFileTemplateLbl.TabIndex = 6; - this.chapterFileTemplateLbl.Text = "[folder template desc]"; - // - // fileTemplateBtn - // - this.fileTemplateBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.fileTemplateBtn.Location = new System.Drawing.Point(761, 80); - this.fileTemplateBtn.Name = "fileTemplateBtn"; - this.fileTemplateBtn.Size = new System.Drawing.Size(75, 23); - this.fileTemplateBtn.TabIndex = 5; - this.fileTemplateBtn.Text = "Edit..."; - this.fileTemplateBtn.UseVisualStyleBackColor = true; - this.fileTemplateBtn.Click += new System.EventHandler(this.fileTemplateBtn_Click); - // - // fileTemplateTb - // - this.fileTemplateTb.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + this.chapterFileTemplateTb.Location = new System.Drawing.Point(6, 125); + this.chapterFileTemplateTb.Name = "chapterFileTemplateTb"; + this.chapterFileTemplateTb.ReadOnly = true; + this.chapterFileTemplateTb.Size = new System.Drawing.Size(749, 23); + this.chapterFileTemplateTb.TabIndex = 7; + // + // chapterFileTemplateLbl + // + this.chapterFileTemplateLbl.AutoSize = true; + this.chapterFileTemplateLbl.Location = new System.Drawing.Point(6, 107); + this.chapterFileTemplateLbl.Name = "chapterFileTemplateLbl"; + this.chapterFileTemplateLbl.Size = new System.Drawing.Size(123, 15); + this.chapterFileTemplateLbl.TabIndex = 6; + this.chapterFileTemplateLbl.Text = "[folder template desc]"; + // + // fileTemplateBtn + // + this.fileTemplateBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.fileTemplateBtn.Location = new System.Drawing.Point(761, 80); + this.fileTemplateBtn.Name = "fileTemplateBtn"; + this.fileTemplateBtn.Size = new System.Drawing.Size(75, 23); + this.fileTemplateBtn.TabIndex = 5; + this.fileTemplateBtn.Text = "Edit..."; + this.fileTemplateBtn.UseVisualStyleBackColor = true; + this.fileTemplateBtn.Click += new System.EventHandler(this.fileTemplateBtn_Click); + // + // fileTemplateTb + // + this.fileTemplateTb.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.fileTemplateTb.Location = new System.Drawing.Point(6, 81); - this.fileTemplateTb.Name = "fileTemplateTb"; - this.fileTemplateTb.ReadOnly = true; - this.fileTemplateTb.Size = new System.Drawing.Size(749, 23); - this.fileTemplateTb.TabIndex = 4; - // - // fileTemplateLbl - // - this.fileTemplateLbl.AutoSize = true; - this.fileTemplateLbl.Location = new System.Drawing.Point(6, 63); - this.fileTemplateLbl.Name = "fileTemplateLbl"; - this.fileTemplateLbl.Size = new System.Drawing.Size(123, 15); - this.fileTemplateLbl.TabIndex = 3; - this.fileTemplateLbl.Text = "[folder template desc]"; - // - // folderTemplateBtn - // - this.folderTemplateBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.folderTemplateBtn.Location = new System.Drawing.Point(760, 36); - this.folderTemplateBtn.Name = "folderTemplateBtn"; - this.folderTemplateBtn.Size = new System.Drawing.Size(75, 23); - this.folderTemplateBtn.TabIndex = 2; - this.folderTemplateBtn.Text = "Edit..."; - this.folderTemplateBtn.UseVisualStyleBackColor = true; - this.folderTemplateBtn.Click += new System.EventHandler(this.folderTemplateBtn_Click); - // - // folderTemplateTb - // - this.folderTemplateTb.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + this.fileTemplateTb.Location = new System.Drawing.Point(6, 81); + this.fileTemplateTb.Name = "fileTemplateTb"; + this.fileTemplateTb.ReadOnly = true; + this.fileTemplateTb.Size = new System.Drawing.Size(749, 23); + this.fileTemplateTb.TabIndex = 4; + // + // fileTemplateLbl + // + this.fileTemplateLbl.AutoSize = true; + this.fileTemplateLbl.Location = new System.Drawing.Point(6, 63); + this.fileTemplateLbl.Name = "fileTemplateLbl"; + this.fileTemplateLbl.Size = new System.Drawing.Size(123, 15); + this.fileTemplateLbl.TabIndex = 3; + this.fileTemplateLbl.Text = "[folder template desc]"; + // + // folderTemplateBtn + // + this.folderTemplateBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.folderTemplateBtn.Location = new System.Drawing.Point(760, 36); + this.folderTemplateBtn.Name = "folderTemplateBtn"; + this.folderTemplateBtn.Size = new System.Drawing.Size(75, 23); + this.folderTemplateBtn.TabIndex = 2; + this.folderTemplateBtn.Text = "Edit..."; + this.folderTemplateBtn.UseVisualStyleBackColor = true; + this.folderTemplateBtn.Click += new System.EventHandler(this.folderTemplateBtn_Click); + // + // folderTemplateTb + // + this.folderTemplateTb.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.folderTemplateTb.Location = new System.Drawing.Point(5, 37); - this.folderTemplateTb.Name = "folderTemplateTb"; - this.folderTemplateTb.ReadOnly = true; - this.folderTemplateTb.Size = new System.Drawing.Size(749, 23); - this.folderTemplateTb.TabIndex = 1; - // - // folderTemplateLbl - // - this.folderTemplateLbl.AutoSize = true; - this.folderTemplateLbl.Location = new System.Drawing.Point(5, 19); - this.folderTemplateLbl.Name = "folderTemplateLbl"; - this.folderTemplateLbl.Size = new System.Drawing.Size(123, 15); - this.folderTemplateLbl.TabIndex = 0; - this.folderTemplateLbl.Text = "[folder template desc]"; - // - // tab4AudioFileOptions - // - this.tab4AudioFileOptions.Controls.Add(this.lameOptionsGb); - this.tab4AudioFileOptions.Controls.Add(this.convertLossyRb); - this.tab4AudioFileOptions.Controls.Add(this.stripAudibleBrandingCbox); - this.tab4AudioFileOptions.Controls.Add(this.convertLosslessRb); - this.tab4AudioFileOptions.Controls.Add(this.stripUnabridgedCbox); - this.tab4AudioFileOptions.Controls.Add(this.splitFilesByChapterCbox); - this.tab4AudioFileOptions.Controls.Add(this.retainAaxFileCbox); - this.tab4AudioFileOptions.Controls.Add(this.createCueSheetCbox); - this.tab4AudioFileOptions.Controls.Add(this.allowLibationFixupCbox); - this.tab4AudioFileOptions.Location = new System.Drawing.Point(4, 24); - this.tab4AudioFileOptions.Name = "tab4AudioFileOptions"; - this.tab4AudioFileOptions.Padding = new System.Windows.Forms.Padding(3); - this.tab4AudioFileOptions.Size = new System.Drawing.Size(854, 395); - this.tab4AudioFileOptions.TabIndex = 3; - this.tab4AudioFileOptions.Text = "Audio File Options"; - this.tab4AudioFileOptions.UseVisualStyleBackColor = true; - // - // lameOptionsGb - // - this.lameOptionsGb.Controls.Add(this.lameDownsampleMonoCbox); - this.lameOptionsGb.Controls.Add(this.lameBitrateGb); - this.lameOptionsGb.Controls.Add(this.label1); - this.lameOptionsGb.Controls.Add(this.lameQualityGb); - this.lameOptionsGb.Controls.Add(this.groupBox2); - this.lameOptionsGb.Location = new System.Drawing.Point(415, 18); - this.lameOptionsGb.Name = "lameOptionsGb"; - this.lameOptionsGb.Size = new System.Drawing.Size(433, 371); - this.lameOptionsGb.TabIndex = 14; - this.lameOptionsGb.TabStop = false; - this.lameOptionsGb.Text = "Mp3 Encoding Options"; - // - // lameDownsampleMonoCbox - // - this.lameDownsampleMonoCbox.AutoSize = true; - this.lameDownsampleMonoCbox.Location = new System.Drawing.Point(234, 35); - this.lameDownsampleMonoCbox.Name = "lameDownsampleMonoCbox"; - this.lameDownsampleMonoCbox.Size = new System.Drawing.Size(184, 34); - this.lameDownsampleMonoCbox.TabIndex = 1; - this.lameDownsampleMonoCbox.Text = "Downsample stereo to mono?\r\n(Recommended)\r\n"; - this.lameDownsampleMonoCbox.UseVisualStyleBackColor = true; - // - // lameBitrateGb - // - this.lameBitrateGb.Controls.Add(this.LameMatchSourceBRCbox); - this.lameBitrateGb.Controls.Add(this.lameConstantBitrateCbox); - this.lameBitrateGb.Controls.Add(this.label7); - this.lameBitrateGb.Controls.Add(this.label6); - this.lameBitrateGb.Controls.Add(this.label5); - this.lameBitrateGb.Controls.Add(this.label4); - this.lameBitrateGb.Controls.Add(this.label11); - this.lameBitrateGb.Controls.Add(this.label3); - this.lameBitrateGb.Controls.Add(this.lameBitrateTb); - this.lameBitrateGb.Location = new System.Drawing.Point(6, 84); - this.lameBitrateGb.Name = "lameBitrateGb"; - this.lameBitrateGb.Size = new System.Drawing.Size(421, 112); - this.lameBitrateGb.TabIndex = 0; - this.lameBitrateGb.TabStop = false; - this.lameBitrateGb.Text = "Bitrate"; - // - // LameMatchSourceBRCbox - // - this.LameMatchSourceBRCbox.AutoSize = true; - this.LameMatchSourceBRCbox.Location = new System.Drawing.Point(260, 87); - this.LameMatchSourceBRCbox.Name = "LameMatchSourceBRCbox"; - this.LameMatchSourceBRCbox.Size = new System.Drawing.Size(140, 19); - this.LameMatchSourceBRCbox.TabIndex = 3; - this.LameMatchSourceBRCbox.Text = "Match source bitrate?"; - this.LameMatchSourceBRCbox.UseVisualStyleBackColor = true; - this.LameMatchSourceBRCbox.CheckedChanged += new System.EventHandler(this.LameMatchSourceBRCbox_CheckedChanged); - // - // lameConstantBitrateCbox - // - this.lameConstantBitrateCbox.AutoSize = true; - this.lameConstantBitrateCbox.Location = new System.Drawing.Point(6, 87); - this.lameConstantBitrateCbox.Name = "lameConstantBitrateCbox"; - this.lameConstantBitrateCbox.Size = new System.Drawing.Size(216, 19); - this.lameConstantBitrateCbox.TabIndex = 2; - this.lameConstantBitrateCbox.Text = "Restrict encoder to constant bitrate?"; - this.lameConstantBitrateCbox.UseVisualStyleBackColor = true; - // - // label7 - // - this.label7.AutoSize = true; - this.label7.BackColor = System.Drawing.SystemColors.ControlLightLight; - this.label7.Location = new System.Drawing.Point(390, 52); - this.label7.Name = "label7"; - this.label7.Size = new System.Drawing.Size(25, 15); - this.label7.TabIndex = 1; - this.label7.Text = "320"; - // - // label6 - // - this.label6.AutoSize = true; - this.label6.BackColor = System.Drawing.SystemColors.ControlLightLight; - this.label6.Location = new System.Drawing.Point(309, 52); - this.label6.Name = "label6"; - this.label6.Size = new System.Drawing.Size(25, 15); - this.label6.TabIndex = 1; - this.label6.Text = "256"; - // - // label5 - // - this.label5.AutoSize = true; - this.label5.BackColor = System.Drawing.SystemColors.ControlLightLight; - this.label5.Location = new System.Drawing.Point(228, 52); - this.label5.Name = "label5"; - this.label5.Size = new System.Drawing.Size(25, 15); - this.label5.TabIndex = 1; - this.label5.Text = "192"; - // - // label4 - // - this.label4.AutoSize = true; - this.label4.BackColor = System.Drawing.SystemColors.ControlLightLight; - this.label4.Location = new System.Drawing.Point(147, 52); - this.label4.Name = "label4"; - this.label4.Size = new System.Drawing.Size(25, 15); - this.label4.TabIndex = 1; - this.label4.Text = "128"; - // - // label11 - // - this.label11.AutoSize = true; - this.label11.BackColor = System.Drawing.SystemColors.ControlLightLight; - this.label11.Location = new System.Drawing.Point(10, 52); - this.label11.Name = "label11"; - this.label11.Size = new System.Drawing.Size(19, 15); - this.label11.TabIndex = 1; - this.label11.Text = "16"; - // - // label3 - // - this.label3.AutoSize = true; - this.label3.BackColor = System.Drawing.SystemColors.ControlLightLight; - this.label3.Location = new System.Drawing.Point(71, 52); - this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(19, 15); - this.label3.TabIndex = 1; - this.label3.Text = "64"; - // - // lameBitrateTb - // - this.lameBitrateTb.BackColor = System.Drawing.SystemColors.ControlLightLight; - this.lameBitrateTb.LargeChange = 32; - this.lameBitrateTb.Location = new System.Drawing.Point(6, 22); - this.lameBitrateTb.Maximum = 320; - this.lameBitrateTb.Minimum = 16; - this.lameBitrateTb.Name = "lameBitrateTb"; - this.lameBitrateTb.Size = new System.Drawing.Size(409, 45); - this.lameBitrateTb.SmallChange = 8; - this.lameBitrateTb.TabIndex = 0; - this.lameBitrateTb.TickFrequency = 16; - this.lameBitrateTb.Value = 64; - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Enabled = false; - this.label1.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point); - this.label1.Location = new System.Drawing.Point(6, 353); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(172, 15); - this.label1.TabIndex = 1; - this.label1.Text = "Using L.A.M.E. encoding engine"; - // - // lameQualityGb - // - this.lameQualityGb.Controls.Add(this.label19); - this.lameQualityGb.Controls.Add(this.label18); - this.lameQualityGb.Controls.Add(this.label17); - this.lameQualityGb.Controls.Add(this.label16); - this.lameQualityGb.Controls.Add(this.label12); - this.lameQualityGb.Controls.Add(this.label15); - this.lameQualityGb.Controls.Add(this.label9); - this.lameQualityGb.Controls.Add(this.label8); - this.lameQualityGb.Controls.Add(this.label13); - this.lameQualityGb.Controls.Add(this.label10); - this.lameQualityGb.Controls.Add(this.label14); - this.lameQualityGb.Controls.Add(this.label2); - this.lameQualityGb.Controls.Add(this.lameVBRQualityTb); - this.lameQualityGb.Location = new System.Drawing.Point(6, 202); - this.lameQualityGb.Name = "lameQualityGb"; - this.lameQualityGb.Size = new System.Drawing.Size(421, 109); - this.lameQualityGb.TabIndex = 0; - this.lameQualityGb.TabStop = false; - this.lameQualityGb.Text = "Quality"; - // - // label19 - // - this.label19.AutoSize = true; - this.label19.Location = new System.Drawing.Point(349, 52); - this.label19.Name = "label19"; - this.label19.Size = new System.Drawing.Size(20, 15); - this.label19.TabIndex = 1; - this.label19.Text = "V8"; - // - // label18 - // - this.label18.AutoSize = true; - this.label18.Location = new System.Drawing.Point(307, 52); - this.label18.Name = "label18"; - this.label18.Size = new System.Drawing.Size(20, 15); - this.label18.TabIndex = 1; - this.label18.Text = "V7"; - // - // label17 - // - this.label17.AutoSize = true; - this.label17.Location = new System.Drawing.Point(265, 52); - this.label17.Name = "label17"; - this.label17.Size = new System.Drawing.Size(20, 15); - this.label17.TabIndex = 1; - this.label17.Text = "V6"; - // - // label16 - // - this.label16.AutoSize = true; - this.label16.Location = new System.Drawing.Point(223, 52); - this.label16.Name = "label16"; - this.label16.Size = new System.Drawing.Size(20, 15); - this.label16.TabIndex = 1; - this.label16.Text = "V5"; - // - // label12 - // - this.label12.AutoSize = true; - this.label12.Location = new System.Drawing.Point(182, 52); - this.label12.Name = "label12"; - this.label12.Size = new System.Drawing.Size(20, 15); - this.label12.TabIndex = 1; - this.label12.Text = "V4"; - // - // label15 - // - this.label15.AutoSize = true; - this.label15.Location = new System.Drawing.Point(140, 52); - this.label15.Name = "label15"; - this.label15.Size = new System.Drawing.Size(20, 15); - this.label15.TabIndex = 1; - this.label15.Text = "V3"; - // - // label9 - // - this.label9.AutoSize = true; - this.label9.Location = new System.Drawing.Point(97, 52); - this.label9.Name = "label9"; - this.label9.Size = new System.Drawing.Size(20, 15); - this.label9.TabIndex = 1; - this.label9.Text = "V2"; - // - // label8 - // - this.label8.AutoSize = true; - this.label8.Location = new System.Drawing.Point(391, 52); - this.label8.Name = "label8"; - this.label8.Size = new System.Drawing.Size(20, 15); - this.label8.TabIndex = 1; - this.label8.Text = "V9"; - // - // label13 - // - this.label13.AutoSize = true; - this.label13.Location = new System.Drawing.Point(376, 81); - this.label13.Name = "label13"; - this.label13.Size = new System.Drawing.Size(39, 15); - this.label13.TabIndex = 1; - this.label13.Text = "Lower"; - // - // label10 - // - this.label10.AutoSize = true; - this.label10.Location = new System.Drawing.Point(6, 81); - this.label10.Name = "label10"; - this.label10.Size = new System.Drawing.Size(43, 15); - this.label10.TabIndex = 1; - this.label10.Text = "Higher"; - // - // label14 - // - this.label14.AutoSize = true; - this.label14.Location = new System.Drawing.Point(56, 52); - this.label14.Name = "label14"; - this.label14.Size = new System.Drawing.Size(20, 15); - this.label14.TabIndex = 1; - this.label14.Text = "V1"; - // - // label2 - // - this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(14, 52); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(20, 15); - this.label2.TabIndex = 1; - this.label2.Text = "V0"; - // - // lameVBRQualityTb - // - this.lameVBRQualityTb.BackColor = System.Drawing.SystemColors.ControlLightLight; - this.lameVBRQualityTb.LargeChange = 1; - this.lameVBRQualityTb.Location = new System.Drawing.Point(10, 22); - this.lameVBRQualityTb.Maximum = 9; - this.lameVBRQualityTb.Name = "lameVBRQualityTb"; - this.lameVBRQualityTb.Size = new System.Drawing.Size(405, 45); - this.lameVBRQualityTb.TabIndex = 0; - this.lameVBRQualityTb.Value = 9; - // - // groupBox2 - // - this.groupBox2.Controls.Add(this.lameTargetQualityRb); - this.groupBox2.Controls.Add(this.lameTargetBitrateRb); - this.groupBox2.Location = new System.Drawing.Point(6, 22); - this.groupBox2.Name = "groupBox2"; - this.groupBox2.Size = new System.Drawing.Size(222, 56); - this.groupBox2.TabIndex = 0; - this.groupBox2.TabStop = false; - this.groupBox2.Text = "Target"; - // - // lameTargetQualityRb - // - this.lameTargetQualityRb.AutoSize = true; - this.lameTargetQualityRb.Location = new System.Drawing.Point(138, 23); - this.lameTargetQualityRb.Name = "lameTargetQualityRb"; - this.lameTargetQualityRb.Size = new System.Drawing.Size(63, 19); - this.lameTargetQualityRb.TabIndex = 0; - this.lameTargetQualityRb.TabStop = true; - this.lameTargetQualityRb.Text = "Quality"; - this.lameTargetQualityRb.UseVisualStyleBackColor = true; - this.lameTargetQualityRb.CheckedChanged += new System.EventHandler(this.lameTargetRb_CheckedChanged); - // - // lameTargetBitrateRb - // - this.lameTargetBitrateRb.AutoSize = true; - this.lameTargetBitrateRb.Location = new System.Drawing.Point(6, 23); - this.lameTargetBitrateRb.Name = "lameTargetBitrateRb"; - this.lameTargetBitrateRb.Size = new System.Drawing.Size(59, 19); - this.lameTargetBitrateRb.TabIndex = 0; - this.lameTargetBitrateRb.TabStop = true; - this.lameTargetBitrateRb.Text = "Bitrate"; - this.lameTargetBitrateRb.UseVisualStyleBackColor = true; - this.lameTargetBitrateRb.CheckedChanged += new System.EventHandler(this.lameTargetRb_CheckedChanged); - // - // stripUnabridgedCbox - // - this.stripUnabridgedCbox.AutoSize = true; - this.stripUnabridgedCbox.Location = new System.Drawing.Point(19, 118); - this.stripUnabridgedCbox.Name = "stripUnabridgedCbox"; - this.stripUnabridgedCbox.Size = new System.Drawing.Size(147, 19); - this.stripUnabridgedCbox.TabIndex = 13; - this.stripUnabridgedCbox.Text = "[StripUnabridged desc]"; - this.stripUnabridgedCbox.UseVisualStyleBackColor = true; - // - // retainAaxFileCbox - // - this.retainAaxFileCbox.AutoSize = true; - this.retainAaxFileCbox.Location = new System.Drawing.Point(19, 68); - this.retainAaxFileCbox.Name = "retainAaxFileCbox"; - this.retainAaxFileCbox.Size = new System.Drawing.Size(132, 19); - this.retainAaxFileCbox.TabIndex = 10; - this.retainAaxFileCbox.Text = "[RetainAaxFile desc]"; - this.retainAaxFileCbox.UseVisualStyleBackColor = true; - this.retainAaxFileCbox.CheckedChanged += new System.EventHandler(this.allowLibationFixupCbox_CheckedChanged); - // - // createCueSheetCbox - // - this.createCueSheetCbox.AutoSize = true; - this.createCueSheetCbox.Checked = true; - this.createCueSheetCbox.CheckState = System.Windows.Forms.CheckState.Checked; - this.createCueSheetCbox.Location = new System.Drawing.Point(19, 43); - this.createCueSheetCbox.Name = "createCueSheetCbox"; - this.createCueSheetCbox.Size = new System.Drawing.Size(145, 19); - this.createCueSheetCbox.TabIndex = 10; - this.createCueSheetCbox.Text = "[CreateCueSheet desc]"; - this.createCueSheetCbox.UseVisualStyleBackColor = true; - this.createCueSheetCbox.CheckedChanged += new System.EventHandler(this.allowLibationFixupCbox_CheckedChanged); - // - // autoScanCb - // - this.autoScanCb.AutoSize = true; - this.autoScanCb.Location = new System.Drawing.Point(6, 6); - this.autoScanCb.Name = "autoScanCb"; - this.autoScanCb.Size = new System.Drawing.Size(112, 19); - this.autoScanCb.TabIndex = 1; - this.autoScanCb.Text = "[auto scan desc]"; - this.autoScanCb.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(886, 484); - this.Controls.Add(this.tabControl); - this.Controls.Add(this.cancelBtn); - this.Controls.Add(this.saveBtn); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; - this.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "SettingsDialog"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "Edit Settings"; - this.Load += new System.EventHandler(this.SettingsDialog_Load); - this.badBookGb.ResumeLayout(false); - this.badBookGb.PerformLayout(); - this.tabControl.ResumeLayout(false); - this.tab1ImportantSettings.ResumeLayout(false); - this.tab1ImportantSettings.PerformLayout(); - this.booksGb.ResumeLayout(false); - this.booksGb.PerformLayout(); - this.tab2ImportLibrary.ResumeLayout(false); - this.tab2ImportLibrary.PerformLayout(); - this.tab3DownloadDecrypt.ResumeLayout(false); - this.inProgressFilesGb.ResumeLayout(false); - this.inProgressFilesGb.PerformLayout(); - this.customFileNamingGb.ResumeLayout(false); - this.customFileNamingGb.PerformLayout(); - this.tab4AudioFileOptions.ResumeLayout(false); - this.tab4AudioFileOptions.PerformLayout(); - this.lameOptionsGb.ResumeLayout(false); - this.lameOptionsGb.PerformLayout(); - this.lameBitrateGb.ResumeLayout(false); - this.lameBitrateGb.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.lameBitrateTb)).EndInit(); - this.lameQualityGb.ResumeLayout(false); - this.lameQualityGb.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.lameVBRQualityTb)).EndInit(); - this.groupBox2.ResumeLayout(false); - this.groupBox2.PerformLayout(); - this.ResumeLayout(false); + this.folderTemplateTb.Location = new System.Drawing.Point(5, 37); + this.folderTemplateTb.Name = "folderTemplateTb"; + this.folderTemplateTb.ReadOnly = true; + this.folderTemplateTb.Size = new System.Drawing.Size(749, 23); + this.folderTemplateTb.TabIndex = 1; + // + // folderTemplateLbl + // + this.folderTemplateLbl.AutoSize = true; + this.folderTemplateLbl.Location = new System.Drawing.Point(5, 19); + this.folderTemplateLbl.Name = "folderTemplateLbl"; + this.folderTemplateLbl.Size = new System.Drawing.Size(123, 15); + this.folderTemplateLbl.TabIndex = 0; + this.folderTemplateLbl.Text = "[folder template desc]"; + // + // tab4AudioFileOptions + // + this.tab4AudioFileOptions.Controls.Add(this.lameOptionsGb); + this.tab4AudioFileOptions.Controls.Add(this.convertLossyRb); + this.tab4AudioFileOptions.Controls.Add(this.stripAudibleBrandingCbox); + this.tab4AudioFileOptions.Controls.Add(this.convertLosslessRb); + this.tab4AudioFileOptions.Controls.Add(this.stripUnabridgedCbox); + this.tab4AudioFileOptions.Controls.Add(this.splitFilesByChapterCbox); + this.tab4AudioFileOptions.Controls.Add(this.retainAaxFileCbox); + this.tab4AudioFileOptions.Controls.Add(this.downloadCoverArtCbox); + this.tab4AudioFileOptions.Controls.Add(this.createCueSheetCbox); + this.tab4AudioFileOptions.Controls.Add(this.allowLibationFixupCbox); + this.tab4AudioFileOptions.Location = new System.Drawing.Point(4, 24); + this.tab4AudioFileOptions.Name = "tab4AudioFileOptions"; + this.tab4AudioFileOptions.Padding = new System.Windows.Forms.Padding(3); + this.tab4AudioFileOptions.Size = new System.Drawing.Size(854, 395); + this.tab4AudioFileOptions.TabIndex = 3; + this.tab4AudioFileOptions.Text = "Audio File Options"; + this.tab4AudioFileOptions.UseVisualStyleBackColor = true; + // + // lameOptionsGb + // + this.lameOptionsGb.Controls.Add(this.lameDownsampleMonoCbox); + this.lameOptionsGb.Controls.Add(this.lameBitrateGb); + this.lameOptionsGb.Controls.Add(this.label1); + this.lameOptionsGb.Controls.Add(this.lameQualityGb); + this.lameOptionsGb.Controls.Add(this.groupBox2); + this.lameOptionsGb.Location = new System.Drawing.Point(415, 18); + this.lameOptionsGb.Name = "lameOptionsGb"; + this.lameOptionsGb.Size = new System.Drawing.Size(433, 371); + this.lameOptionsGb.TabIndex = 14; + this.lameOptionsGb.TabStop = false; + this.lameOptionsGb.Text = "Mp3 Encoding Options"; + // + // lameDownsampleMonoCbox + // + this.lameDownsampleMonoCbox.AutoSize = true; + this.lameDownsampleMonoCbox.Location = new System.Drawing.Point(234, 35); + this.lameDownsampleMonoCbox.Name = "lameDownsampleMonoCbox"; + this.lameDownsampleMonoCbox.Size = new System.Drawing.Size(184, 34); + this.lameDownsampleMonoCbox.TabIndex = 1; + this.lameDownsampleMonoCbox.Text = "Downsample stereo to mono?\r\n(Recommended)\r\n"; + this.lameDownsampleMonoCbox.UseVisualStyleBackColor = true; + // + // lameBitrateGb + // + this.lameBitrateGb.Controls.Add(this.LameMatchSourceBRCbox); + this.lameBitrateGb.Controls.Add(this.lameConstantBitrateCbox); + this.lameBitrateGb.Controls.Add(this.label7); + this.lameBitrateGb.Controls.Add(this.label6); + this.lameBitrateGb.Controls.Add(this.label5); + this.lameBitrateGb.Controls.Add(this.label4); + this.lameBitrateGb.Controls.Add(this.label11); + this.lameBitrateGb.Controls.Add(this.label3); + this.lameBitrateGb.Controls.Add(this.lameBitrateTb); + this.lameBitrateGb.Location = new System.Drawing.Point(6, 84); + this.lameBitrateGb.Name = "lameBitrateGb"; + this.lameBitrateGb.Size = new System.Drawing.Size(421, 112); + this.lameBitrateGb.TabIndex = 0; + this.lameBitrateGb.TabStop = false; + this.lameBitrateGb.Text = "Bitrate"; + // + // LameMatchSourceBRCbox + // + this.LameMatchSourceBRCbox.AutoSize = true; + this.LameMatchSourceBRCbox.Location = new System.Drawing.Point(260, 87); + this.LameMatchSourceBRCbox.Name = "LameMatchSourceBRCbox"; + this.LameMatchSourceBRCbox.Size = new System.Drawing.Size(140, 19); + this.LameMatchSourceBRCbox.TabIndex = 3; + this.LameMatchSourceBRCbox.Text = "Match source bitrate?"; + this.LameMatchSourceBRCbox.UseVisualStyleBackColor = true; + this.LameMatchSourceBRCbox.CheckedChanged += new System.EventHandler(this.LameMatchSourceBRCbox_CheckedChanged); + // + // lameConstantBitrateCbox + // + this.lameConstantBitrateCbox.AutoSize = true; + this.lameConstantBitrateCbox.Location = new System.Drawing.Point(6, 87); + this.lameConstantBitrateCbox.Name = "lameConstantBitrateCbox"; + this.lameConstantBitrateCbox.Size = new System.Drawing.Size(216, 19); + this.lameConstantBitrateCbox.TabIndex = 2; + this.lameConstantBitrateCbox.Text = "Restrict encoder to constant bitrate?"; + this.lameConstantBitrateCbox.UseVisualStyleBackColor = true; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.BackColor = System.Drawing.SystemColors.ControlLightLight; + this.label7.Location = new System.Drawing.Point(390, 52); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(25, 15); + this.label7.TabIndex = 1; + this.label7.Text = "320"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.BackColor = System.Drawing.SystemColors.ControlLightLight; + this.label6.Location = new System.Drawing.Point(309, 52); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(25, 15); + this.label6.TabIndex = 1; + this.label6.Text = "256"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.BackColor = System.Drawing.SystemColors.ControlLightLight; + this.label5.Location = new System.Drawing.Point(228, 52); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(25, 15); + this.label5.TabIndex = 1; + this.label5.Text = "192"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.BackColor = System.Drawing.SystemColors.ControlLightLight; + this.label4.Location = new System.Drawing.Point(147, 52); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(25, 15); + this.label4.TabIndex = 1; + this.label4.Text = "128"; + // + // label11 + // + this.label11.AutoSize = true; + this.label11.BackColor = System.Drawing.SystemColors.ControlLightLight; + this.label11.Location = new System.Drawing.Point(10, 52); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(19, 15); + this.label11.TabIndex = 1; + this.label11.Text = "16"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.BackColor = System.Drawing.SystemColors.ControlLightLight; + this.label3.Location = new System.Drawing.Point(71, 52); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(19, 15); + this.label3.TabIndex = 1; + this.label3.Text = "64"; + // + // lameBitrateTb + // + this.lameBitrateTb.BackColor = System.Drawing.SystemColors.ControlLightLight; + this.lameBitrateTb.LargeChange = 32; + this.lameBitrateTb.Location = new System.Drawing.Point(6, 22); + this.lameBitrateTb.Maximum = 320; + this.lameBitrateTb.Minimum = 16; + this.lameBitrateTb.Name = "lameBitrateTb"; + this.lameBitrateTb.Size = new System.Drawing.Size(409, 45); + this.lameBitrateTb.SmallChange = 8; + this.lameBitrateTb.TabIndex = 0; + this.lameBitrateTb.TickFrequency = 16; + this.lameBitrateTb.Value = 64; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Enabled = false; + this.label1.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point); + this.label1.Location = new System.Drawing.Point(6, 353); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(172, 15); + this.label1.TabIndex = 1; + this.label1.Text = "Using L.A.M.E. encoding engine"; + // + // lameQualityGb + // + this.lameQualityGb.Controls.Add(this.label19); + this.lameQualityGb.Controls.Add(this.label18); + this.lameQualityGb.Controls.Add(this.label17); + this.lameQualityGb.Controls.Add(this.label16); + this.lameQualityGb.Controls.Add(this.label12); + this.lameQualityGb.Controls.Add(this.label15); + this.lameQualityGb.Controls.Add(this.label9); + this.lameQualityGb.Controls.Add(this.label8); + this.lameQualityGb.Controls.Add(this.label13); + this.lameQualityGb.Controls.Add(this.label10); + this.lameQualityGb.Controls.Add(this.label14); + this.lameQualityGb.Controls.Add(this.label2); + this.lameQualityGb.Controls.Add(this.lameVBRQualityTb); + this.lameQualityGb.Location = new System.Drawing.Point(6, 202); + this.lameQualityGb.Name = "lameQualityGb"; + this.lameQualityGb.Size = new System.Drawing.Size(421, 109); + this.lameQualityGb.TabIndex = 0; + this.lameQualityGb.TabStop = false; + this.lameQualityGb.Text = "Quality"; + // + // label19 + // + this.label19.AutoSize = true; + this.label19.Location = new System.Drawing.Point(349, 52); + this.label19.Name = "label19"; + this.label19.Size = new System.Drawing.Size(20, 15); + this.label19.TabIndex = 1; + this.label19.Text = "V8"; + // + // label18 + // + this.label18.AutoSize = true; + this.label18.Location = new System.Drawing.Point(307, 52); + this.label18.Name = "label18"; + this.label18.Size = new System.Drawing.Size(20, 15); + this.label18.TabIndex = 1; + this.label18.Text = "V7"; + // + // label17 + // + this.label17.AutoSize = true; + this.label17.Location = new System.Drawing.Point(265, 52); + this.label17.Name = "label17"; + this.label17.Size = new System.Drawing.Size(20, 15); + this.label17.TabIndex = 1; + this.label17.Text = "V6"; + // + // label16 + // + this.label16.AutoSize = true; + this.label16.Location = new System.Drawing.Point(223, 52); + this.label16.Name = "label16"; + this.label16.Size = new System.Drawing.Size(20, 15); + this.label16.TabIndex = 1; + this.label16.Text = "V5"; + // + // label12 + // + this.label12.AutoSize = true; + this.label12.Location = new System.Drawing.Point(182, 52); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(20, 15); + this.label12.TabIndex = 1; + this.label12.Text = "V4"; + // + // label15 + // + this.label15.AutoSize = true; + this.label15.Location = new System.Drawing.Point(140, 52); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(20, 15); + this.label15.TabIndex = 1; + this.label15.Text = "V3"; + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Location = new System.Drawing.Point(97, 52); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(20, 15); + this.label9.TabIndex = 1; + this.label9.Text = "V2"; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(391, 52); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(20, 15); + this.label8.TabIndex = 1; + this.label8.Text = "V9"; + // + // label13 + // + this.label13.AutoSize = true; + this.label13.Location = new System.Drawing.Point(376, 81); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(39, 15); + this.label13.TabIndex = 1; + this.label13.Text = "Lower"; + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Location = new System.Drawing.Point(6, 81); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(43, 15); + this.label10.TabIndex = 1; + this.label10.Text = "Higher"; + // + // label14 + // + this.label14.AutoSize = true; + this.label14.Location = new System.Drawing.Point(56, 52); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(20, 15); + this.label14.TabIndex = 1; + this.label14.Text = "V1"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(14, 52); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(20, 15); + this.label2.TabIndex = 1; + this.label2.Text = "V0"; + // + // lameVBRQualityTb + // + this.lameVBRQualityTb.BackColor = System.Drawing.SystemColors.ControlLightLight; + this.lameVBRQualityTb.LargeChange = 1; + this.lameVBRQualityTb.Location = new System.Drawing.Point(10, 22); + this.lameVBRQualityTb.Maximum = 9; + this.lameVBRQualityTb.Name = "lameVBRQualityTb"; + this.lameVBRQualityTb.Size = new System.Drawing.Size(405, 45); + this.lameVBRQualityTb.TabIndex = 0; + this.lameVBRQualityTb.Value = 9; + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.lameTargetQualityRb); + this.groupBox2.Controls.Add(this.lameTargetBitrateRb); + this.groupBox2.Location = new System.Drawing.Point(6, 22); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(222, 56); + this.groupBox2.TabIndex = 0; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "Target"; + // + // lameTargetQualityRb + // + this.lameTargetQualityRb.AutoSize = true; + this.lameTargetQualityRb.Location = new System.Drawing.Point(138, 23); + this.lameTargetQualityRb.Name = "lameTargetQualityRb"; + this.lameTargetQualityRb.Size = new System.Drawing.Size(63, 19); + this.lameTargetQualityRb.TabIndex = 0; + this.lameTargetQualityRb.TabStop = true; + this.lameTargetQualityRb.Text = "Quality"; + this.lameTargetQualityRb.UseVisualStyleBackColor = true; + this.lameTargetQualityRb.CheckedChanged += new System.EventHandler(this.lameTargetRb_CheckedChanged); + // + // lameTargetBitrateRb + // + this.lameTargetBitrateRb.AutoSize = true; + this.lameTargetBitrateRb.Location = new System.Drawing.Point(6, 23); + this.lameTargetBitrateRb.Name = "lameTargetBitrateRb"; + this.lameTargetBitrateRb.Size = new System.Drawing.Size(59, 19); + this.lameTargetBitrateRb.TabIndex = 0; + this.lameTargetBitrateRb.TabStop = true; + this.lameTargetBitrateRb.Text = "Bitrate"; + this.lameTargetBitrateRb.UseVisualStyleBackColor = true; + this.lameTargetBitrateRb.CheckedChanged += new System.EventHandler(this.lameTargetRb_CheckedChanged); + // + // stripUnabridgedCbox + // + this.stripUnabridgedCbox.AutoSize = true; + this.stripUnabridgedCbox.Location = new System.Drawing.Point(19, 143); + this.stripUnabridgedCbox.Name = "stripUnabridgedCbox"; + this.stripUnabridgedCbox.Size = new System.Drawing.Size(147, 19); + this.stripUnabridgedCbox.TabIndex = 13; + this.stripUnabridgedCbox.Text = "[StripUnabridged desc]"; + this.stripUnabridgedCbox.UseVisualStyleBackColor = true; + // + // retainAaxFileCbox + // + this.retainAaxFileCbox.AutoSize = true; + this.retainAaxFileCbox.Location = new System.Drawing.Point(19, 93); + this.retainAaxFileCbox.Name = "retainAaxFileCbox"; + this.retainAaxFileCbox.Size = new System.Drawing.Size(132, 19); + this.retainAaxFileCbox.TabIndex = 10; + this.retainAaxFileCbox.Text = "[RetainAaxFile desc]"; + this.retainAaxFileCbox.UseVisualStyleBackColor = true; + this.retainAaxFileCbox.CheckedChanged += new System.EventHandler(this.allowLibationFixupCbox_CheckedChanged); + // + // createCueSheetCbox + // + this.createCueSheetCbox.AutoSize = true; + this.createCueSheetCbox.Checked = true; + this.createCueSheetCbox.CheckState = System.Windows.Forms.CheckState.Checked; + this.createCueSheetCbox.Location = new System.Drawing.Point(19, 43); + this.createCueSheetCbox.Name = "createCueSheetCbox"; + this.createCueSheetCbox.Size = new System.Drawing.Size(145, 19); + this.createCueSheetCbox.TabIndex = 10; + this.createCueSheetCbox.Text = "[CreateCueSheet desc]"; + this.createCueSheetCbox.UseVisualStyleBackColor = true; + this.createCueSheetCbox.CheckedChanged += new System.EventHandler(this.allowLibationFixupCbox_CheckedChanged); + // + // downloadCoverArtCbox + // + this.downloadCoverArtCbox.AutoSize = true; + this.downloadCoverArtCbox.Checked = true; + this.downloadCoverArtCbox.CheckState = System.Windows.Forms.CheckState.Checked; + this.downloadCoverArtCbox.Location = new System.Drawing.Point(19, 68); + this.downloadCoverArtCbox.Name = "downloadCoverArtCbox"; + this.downloadCoverArtCbox.Size = new System.Drawing.Size(162, 19); + this.downloadCoverArtCbox.TabIndex = 10; + this.downloadCoverArtCbox.Text = "[DownloadCoverArt desc]"; + this.downloadCoverArtCbox.UseVisualStyleBackColor = true; + this.downloadCoverArtCbox.CheckedChanged += new System.EventHandler(this.allowLibationFixupCbox_CheckedChanged); + // + // 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(886, 484); + this.Controls.Add(this.tabControl); + this.Controls.Add(this.cancelBtn); + this.Controls.Add(this.saveBtn); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "SettingsDialog"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "Edit Settings"; + this.Load += new System.EventHandler(this.SettingsDialog_Load); + this.badBookGb.ResumeLayout(false); + this.badBookGb.PerformLayout(); + this.tabControl.ResumeLayout(false); + this.tab1ImportantSettings.ResumeLayout(false); + this.tab1ImportantSettings.PerformLayout(); + this.booksGb.ResumeLayout(false); + this.booksGb.PerformLayout(); + this.tab2ImportLibrary.ResumeLayout(false); + this.tab2ImportLibrary.PerformLayout(); + this.tab3DownloadDecrypt.ResumeLayout(false); + this.inProgressFilesGb.ResumeLayout(false); + this.inProgressFilesGb.PerformLayout(); + this.customFileNamingGb.ResumeLayout(false); + this.customFileNamingGb.PerformLayout(); + this.tab4AudioFileOptions.ResumeLayout(false); + this.tab4AudioFileOptions.PerformLayout(); + this.lameOptionsGb.ResumeLayout(false); + this.lameOptionsGb.PerformLayout(); + this.lameBitrateGb.ResumeLayout(false); + this.lameBitrateGb.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.lameBitrateTb)).EndInit(); + this.lameQualityGb.ResumeLayout(false); + this.lameQualityGb.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.lameVBRQualityTb)).EndInit(); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.ResumeLayout(false); } @@ -1056,5 +1071,6 @@ private System.Windows.Forms.Label label16; private System.Windows.Forms.CheckBox createCueSheetCbox; private System.Windows.Forms.CheckBox autoScanCb; - } + private System.Windows.Forms.CheckBox downloadCoverArtCbox; + } } \ No newline at end of file diff --git a/Source/LibationWinForms/Dialogs/SettingsDialog.cs b/Source/LibationWinForms/Dialogs/SettingsDialog.cs index 6d106411..0741a0f3 100644 --- a/Source/LibationWinForms/Dialogs/SettingsDialog.cs +++ b/Source/LibationWinForms/Dialogs/SettingsDialog.cs @@ -44,6 +44,7 @@ namespace LibationWinForms.Dialogs this.retainAaxFileCbox.Text = desc(nameof(config.RetainAaxFile)); this.stripUnabridgedCbox.Text = desc(nameof(config.StripUnabridged)); this.createCueSheetCbox.Text = desc(nameof(config.CreateCueSheet)); + this.downloadCoverArtCbox.Text = desc(nameof(config.DownloadCoverArt)); booksSelectControl.SetSearchTitle("books location"); booksSelectControl.SetDirectoryItems( @@ -73,6 +74,7 @@ namespace LibationWinForms.Dialogs lameConstantBitrateCbox.Checked = config.LameConstantBitrate; LameMatchSourceBRCbox.Checked = config.LameMatchSourceBR; lameVBRQualityTb.Value = config.LameVBRQuality; + downloadCoverArtCbox.Checked = config.DownloadCoverArt; autoScanCb.Checked = config.AutoScan; showImportedStatsCb.Checked = config.ShowImportedStats; @@ -196,6 +198,7 @@ namespace LibationWinForms.Dialogs config.LameConstantBitrate = lameConstantBitrateCbox.Checked; config.LameMatchSourceBR = LameMatchSourceBRCbox.Checked; config.LameVBRQuality = lameVBRQualityTb.Value; + config.DownloadCoverArt = downloadCoverArtCbox.Checked; config.AutoScan = autoScanCb.Checked; config.ShowImportedStats = showImportedStatsCb.Checked; From 59aeaf24e4eeaff757d626e341171cb7f9aa6a51 Mon Sep 17 00:00:00 2001 From: Michael Bucari-Tovo Date: Tue, 10 May 2022 16:03:02 -0600 Subject: [PATCH 3/6] Full-size cover picture viewer --- Source/FileManager/BackgroundFileSystem.cs | 1 + .../grid/ImageDisplay.Designer.cs | 86 +++++++++++++ Source/LibationWinForms/grid/ImageDisplay.cs | 118 ++++++++++++++++++ .../LibationWinForms/grid/ImageDisplay.resx | 63 ++++++++++ Source/LibationWinForms/grid/ProductsGrid.cs | 114 +++++++++++------ 5 files changed, 342 insertions(+), 40 deletions(-) create mode 100644 Source/LibationWinForms/grid/ImageDisplay.Designer.cs create mode 100644 Source/LibationWinForms/grid/ImageDisplay.cs create mode 100644 Source/LibationWinForms/grid/ImageDisplay.resx diff --git a/Source/FileManager/BackgroundFileSystem.cs b/Source/FileManager/BackgroundFileSystem.cs index 4dbf1f93..f44c2274 100644 --- a/Source/FileManager/BackgroundFileSystem.cs +++ b/Source/FileManager/BackgroundFileSystem.cs @@ -134,6 +134,7 @@ namespace FileManager private void AddPath(string path) { + if (!File.Exists(path)) return; if (File.GetAttributes(path).HasFlag(FileAttributes.Directory)) AddUniqueFiles(FileUtility.SaferEnumerateFiles(path, SearchPattern, SearchOption)); else diff --git a/Source/LibationWinForms/grid/ImageDisplay.Designer.cs b/Source/LibationWinForms/grid/ImageDisplay.Designer.cs new file mode 100644 index 00000000..ec1dbdf0 --- /dev/null +++ b/Source/LibationWinForms/grid/ImageDisplay.Designer.cs @@ -0,0 +1,86 @@ +namespace LibationWinForms +{ + partial class ImageDisplay + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components); + this.savePictureToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.contextMenuStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // pictureBox1 + // + this.pictureBox1.ContextMenuStrip = this.contextMenuStrip1; + this.pictureBox1.Dock = System.Windows.Forms.DockStyle.Fill; + this.pictureBox1.Location = new System.Drawing.Point(0, 0); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(522, 450); + this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pictureBox1.TabIndex = 0; + this.pictureBox1.TabStop = false; + // + // contextMenuStrip1 + // + this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.savePictureToolStripMenuItem}); + this.contextMenuStrip1.Name = "contextMenuStrip1"; + this.contextMenuStrip1.Size = new System.Drawing.Size(139, 26); + // + // savePictureToolStripMenuItem + // + this.savePictureToolStripMenuItem.Name = "savePictureToolStripMenuItem"; + this.savePictureToolStripMenuItem.Size = new System.Drawing.Size(138, 22); + this.savePictureToolStripMenuItem.Text = "Save Picture"; + this.savePictureToolStripMenuItem.Click += new System.EventHandler(this.savePictureToolStripMenuItem_Click); + // + // ImageDisplay + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(522, 450); + this.Controls.Add(this.pictureBox1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow; + this.Name = "ImageDisplay"; + this.Text = "ImageDisplay"; + this.Shown += new System.EventHandler(this.ImageDisplay_Shown); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.contextMenuStrip1.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + public System.Windows.Forms.PictureBox pictureBox1; + private System.Windows.Forms.ContextMenuStrip contextMenuStrip1; + private System.Windows.Forms.ToolStripMenuItem savePictureToolStripMenuItem; + } +} \ No newline at end of file diff --git a/Source/LibationWinForms/grid/ImageDisplay.cs b/Source/LibationWinForms/grid/ImageDisplay.cs new file mode 100644 index 00000000..09fa2481 --- /dev/null +++ b/Source/LibationWinForms/grid/ImageDisplay.cs @@ -0,0 +1,118 @@ +using FileLiberator; +using LibationFileManager; +using System; +using System.Drawing; +using System.IO; +using System.Windows.Forms; + +namespace LibationWinForms +{ + public partial class ImageDisplay : Form + { + public string PictureFileName { get; set; } + public string BookSaveDirectory { get; set; } + public byte[] CoverPicture { get => _coverBytes; set => pictureBox1.Image = Dinah.Core.Drawing.ImageReader.ToImage(_coverBytes = value); } + + + + private byte[] _coverBytes; + + private bool detectedResizeDirection = false; + private bool resizingWidth = false; + private bool resizingHeight = false; + + private int lastWidth; + private int lastHeight; + private int formExtraWidth; + private int formExtraHeight; + + private double pictureAR = 1; + + public ImageDisplay() + { + InitializeComponent(); + lastWidth = Width; + lastHeight = Height; + } + + protected override void OnResizeBegin(EventArgs e) + { + detectedResizeDirection = false; + base.OnResizeBegin(e); + } + + protected override void OnResizeEnd(EventArgs e) + { + base.OnResize(e); + base.OnResizeEnd(e); + } + + protected override void OnResize(EventArgs e) + { + if (WindowState != FormWindowState.Normal) + { + base.OnResize(e); + return; + } + + int width = this.Width, height = this.Height; + + if (!detectedResizeDirection) + { + resizingWidth = lastWidth != width; + resizingHeight = lastHeight != height; + detectedResizeDirection = true; + } + + if (resizingWidth && !resizingHeight) + height = CalculateARHeight(width); + else + width = CalculateARWidth(height); + + pictureBox1.Size = new Size(width - formExtraWidth, height - formExtraHeight); + + lastWidth = width; + lastHeight = height; + + SetBoundsCore(Location.X, Location.Y, width, height, BoundsSpecified.Width | BoundsSpecified.Height); + } + + private int CalculateARHeight(int width) + { + return (int)((width - formExtraWidth) * pictureAR) + formExtraHeight; + } + + private int CalculateARWidth(int height) + { + return (int)((height - formExtraHeight) * pictureAR) + formExtraWidth; + } + + private void ImageDisplay_Shown(object sender, EventArgs e) + { + formExtraWidth = Width - pictureBox1.Width; + formExtraHeight = Height - pictureBox1.Height; + OnResize(e); + } + + private void savePictureToolStripMenuItem_Click(object sender, EventArgs e) + { + SaveFileDialog saveFileDialog = new(); + saveFileDialog.Filter = "jpeg|*.jpg"; + saveFileDialog.InitialDirectory = Directory.Exists(BookSaveDirectory) ? BookSaveDirectory : Path.GetDirectoryName(BookSaveDirectory); + saveFileDialog.FileName = PictureFileName; + + if (saveFileDialog.ShowDialog() != DialogResult.OK) + return; + + try + { + File.WriteAllBytes(saveFileDialog.FileName, CoverPicture); + } + catch (Exception ex) + { + Serilog.Log.Logger.Error(ex.Message); + MessageBox.Show(this, $"An error was encountered while trying to save the picture\r\n\r\n{ex.Message}", "Sailed to save picture", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); + } + } + } +} diff --git a/Source/LibationWinForms/grid/ImageDisplay.resx b/Source/LibationWinForms/grid/ImageDisplay.resx new file mode 100644 index 00000000..2a349cc7 --- /dev/null +++ b/Source/LibationWinForms/grid/ImageDisplay.resx @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/Source/LibationWinForms/grid/ProductsGrid.cs b/Source/LibationWinForms/grid/ProductsGrid.cs index 239288b6..3bcc2a7f 100644 --- a/Source/LibationWinForms/grid/ProductsGrid.cs +++ b/Source/LibationWinForms/grid/ProductsGrid.cs @@ -9,6 +9,7 @@ using Dinah.Core; using Dinah.Core.DataBinding; using Dinah.Core.Threading; using Dinah.Core.Windows.Forms; +using FileLiberator; using LibationFileManager; using LibationWinForms.Dialogs; @@ -31,6 +32,8 @@ namespace LibationWinForms public partial class ProductsGrid : UserControl { + + ImageDisplay imageDisplay; public event EventHandler VisibleCountChanged; // alias @@ -62,14 +65,43 @@ namespace LibationWinForms if (e.RowIndex < 0) return; - var clickedColumn = _dataGridView.Columns[e.ColumnIndex]; - - if (clickedColumn == liberateGVColumn) + if (e.ColumnIndex == liberateGVColumn.Index) await Liberate_Click(getGridEntry(e.RowIndex)); - else if (clickedColumn == tagAndDetailsGVColumn) + else if (e.ColumnIndex == tagAndDetailsGVColumn.Index) Details_Click(getGridEntry(e.RowIndex)); - else if (clickedColumn == descriptionGVColumn) + else if (e.ColumnIndex == descriptionGVColumn.Index) Description_Click(getGridEntry(e.RowIndex), _dataGridView.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, false)); + else if (e.ColumnIndex == coverGVColumn.Index) + await Cover_Click(getGridEntry(e.RowIndex)); + } + + private async Task Cover_Click(GridEntry liveGridEntry) + { + var picDefinition = new PictureDefinition(liveGridEntry.LibraryBook.Book.PictureLarge, PictureSize.Native); + (_, byte[] initialImageBts) = PictureStorage.GetPicture(new PictureDefinition(liveGridEntry.LibraryBook.Book.PictureId, PictureSize._80x80)); + + var windowTitle = $"{liveGridEntry.Title} - Cover"; + + var picDlTask = Task.Run(() => + { + return PictureStorage.GetPictureSynchronously(picDefinition); + }); + + if (imageDisplay is null || imageDisplay.IsDisposed || !imageDisplay.Visible) + { + imageDisplay = new ImageDisplay(); + imageDisplay.RestoreSizeAndLocation(Configuration.Instance); + imageDisplay.FormClosed += (_, _) => imageDisplay.SaveSizeAndLocation(Configuration.Instance); + imageDisplay.Show(this); + } + + imageDisplay.BookSaveDirectory = AudibleFileStorage.Audio.GetDestinationDirectory(liveGridEntry.LibraryBook); + imageDisplay.PictureFileName = System.IO.Path.GetFileName(AudibleFileStorage.Audio.GetBooksDirectoryFilename(liveGridEntry.LibraryBook, ".jpg")); + imageDisplay.Text = windowTitle; + imageDisplay.CoverPicture = initialImageBts; + imageDisplay.CoverPicture = await picDlTask; + + } private void Description_Click(GridEntry liveGridEntry, Rectangle cellDisplay) @@ -81,13 +113,13 @@ namespace LibationWinForms BorderThickness = 2, }; - void CloseWindow (object o, EventArgs e) + void CloseWindow(object o, EventArgs e) { displayWindow.Close(); } _dataGridView.Scroll += CloseWindow; - displayWindow.FormClosed += (_,_) => _dataGridView.Scroll -= CloseWindow; + displayWindow.FormClosed += (_, _) => _dataGridView.Scroll -= CloseWindow; displayWindow.Show(this); } @@ -166,40 +198,40 @@ namespace LibationWinForms Filter(); } - private void bindToGrid(List orderedBooks) - { - bindingList = new SortableBindingList(orderedBooks.Select(lb => toGridEntry(lb))); - gridEntryBindingSource.DataSource = bindingList; - } + private void bindToGrid(List orderedBooks) + { + bindingList = new SortableBindingList(orderedBooks.Select(lb => toGridEntry(lb))); + gridEntryBindingSource.DataSource = bindingList; + } - private void updateGrid(List orderedBooks) - { - for (var i = orderedBooks.Count - 1; i >= 0; i--) - { - var libraryBook = orderedBooks[i]; - var existingItem = bindingList.FirstOrDefault(i => i.AudibleProductId == libraryBook.Book.AudibleProductId); + private void updateGrid(List orderedBooks) + { + for (var i = orderedBooks.Count - 1; i >= 0; i--) + { + var libraryBook = orderedBooks[i]; + var existingItem = bindingList.FirstOrDefault(i => i.AudibleProductId == libraryBook.Book.AudibleProductId); - // add new to top - if (existingItem is null) - bindingList.Insert(0, toGridEntry(libraryBook)); - // update existing - else - existingItem.UpdateLibraryBook(libraryBook); - } + // add new to top + if (existingItem is null) + bindingList.Insert(0, toGridEntry(libraryBook)); + // update existing + else + existingItem.UpdateLibraryBook(libraryBook); + } - // remove deleted from grid. note: actual deletion from db must still occur via the RemoveBook feature. deleting from audible will not trigger this - var oldIds = bindingList.Select(ge => ge.AudibleProductId).ToList(); - var newIds = orderedBooks.Select(lb => lb.Book.AudibleProductId).ToList(); - var remove = oldIds.Except(newIds).ToList(); - foreach (var id in remove) - { - var oldItem = bindingList.FirstOrDefault(ge => ge.AudibleProductId == id); - if (oldItem is not null) - bindingList.Remove(oldItem); - } - } + // remove deleted from grid. note: actual deletion from db must still occur via the RemoveBook feature. deleting from audible will not trigger this + var oldIds = bindingList.Select(ge => ge.AudibleProductId).ToList(); + var newIds = orderedBooks.Select(lb => lb.Book.AudibleProductId).ToList(); + var remove = oldIds.Except(newIds).ToList(); + foreach (var id in remove) + { + var oldItem = bindingList.FirstOrDefault(ge => ge.AudibleProductId == id); + if (oldItem is not null) + bindingList.Remove(oldItem); + } + } - private GridEntry toGridEntry(DataLayer.LibraryBook libraryBook) + private GridEntry toGridEntry(DataLayer.LibraryBook libraryBook) { var entry = new GridEntry(libraryBook); entry.Committed += Filter; @@ -207,11 +239,11 @@ namespace LibationWinForms return entry; } - #endregion + #endregion - #region Filter + #region Filter - private string _filterSearchString; + private string _filterSearchString; private void Filter(object _ = null, EventArgs __ = null) => Filter(_filterSearchString); public void Filter(string searchString) { @@ -344,6 +376,8 @@ namespace LibationWinForms { if (e.ColumnIndex == descriptionGVColumn.Index) e.ToolTipText = "Click to see full description"; + else if (e.ColumnIndex == coverGVColumn.Index) + e.ToolTipText = "Click to see full size"; } #endregion From 7cba28019c304a69d2b82b16eed036b3530a1e2c Mon Sep 17 00:00:00 2001 From: Michael Bucari-Tovo Date: Tue, 10 May 2022 16:10:17 -0600 Subject: [PATCH 4/6] Remove lambda body --- Source/LibationWinForms/grid/ProductsGrid.cs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Source/LibationWinForms/grid/ProductsGrid.cs b/Source/LibationWinForms/grid/ProductsGrid.cs index 3bcc2a7f..dfb73563 100644 --- a/Source/LibationWinForms/grid/ProductsGrid.cs +++ b/Source/LibationWinForms/grid/ProductsGrid.cs @@ -82,10 +82,7 @@ namespace LibationWinForms var windowTitle = $"{liveGridEntry.Title} - Cover"; - var picDlTask = Task.Run(() => - { - return PictureStorage.GetPictureSynchronously(picDefinition); - }); + var picDlTask = Task.Run(() => PictureStorage.GetPictureSynchronously(picDefinition)); if (imageDisplay is null || imageDisplay.IsDisposed || !imageDisplay.Visible) { From 9a50aa4c7c92adc5b6078cb5f0edb500d437f7bd Mon Sep 17 00:00:00 2001 From: Michael Bucari-Tovo Date: Tue, 10 May 2022 16:11:44 -0600 Subject: [PATCH 5/6] Start task earlier. --- Source/LibationWinForms/grid/ProductsGrid.cs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/Source/LibationWinForms/grid/ProductsGrid.cs b/Source/LibationWinForms/grid/ProductsGrid.cs index 9f293658..e396bd00 100644 --- a/Source/LibationWinForms/grid/ProductsGrid.cs +++ b/Source/LibationWinForms/grid/ProductsGrid.cs @@ -78,12 +78,11 @@ namespace LibationWinForms private async Task Cover_Click(GridEntry liveGridEntry) { var picDefinition = new PictureDefinition(liveGridEntry.LibraryBook.Book.PictureLarge, PictureSize.Native); - (_, byte[] initialImageBts) = PictureStorage.GetPicture(new PictureDefinition(liveGridEntry.LibraryBook.Book.PictureId, PictureSize._80x80)); - - var windowTitle = $"{liveGridEntry.Title} - Cover"; - var picDlTask = Task.Run(() => PictureStorage.GetPictureSynchronously(picDefinition)); + (_, byte[] initialImageBts) = PictureStorage.GetPicture(new PictureDefinition(liveGridEntry.LibraryBook.Book.PictureId, PictureSize._80x80)); + var windowTitle = $"{liveGridEntry.Title} - Cover"; + if (imageDisplay is null || imageDisplay.IsDisposed || !imageDisplay.Visible) { imageDisplay = new ImageDisplay(); @@ -97,8 +96,6 @@ namespace LibationWinForms imageDisplay.Text = windowTitle; imageDisplay.CoverPicture = initialImageBts; imageDisplay.CoverPicture = await picDlTask; - - } private void Description_Click(GridEntry liveGridEntry, Rectangle cellDisplay) From dd8b0783a9328c1fbf2c714911e88d9b0e4fa143 Mon Sep 17 00:00:00 2001 From: Michael Bucari-Tovo Date: Tue, 10 May 2022 20:43:07 -0600 Subject: [PATCH 6/6] Address comments --- Source/FileLiberator/DownloadDecryptBook.cs | 4 +-- Source/LibationWinForms/grid/ImageDisplay.cs | 26 +++++++++++--------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/Source/FileLiberator/DownloadDecryptBook.cs b/Source/FileLiberator/DownloadDecryptBook.cs index bea2e358..0717ddc4 100644 --- a/Source/FileLiberator/DownloadDecryptBook.cs +++ b/Source/FileLiberator/DownloadDecryptBook.cs @@ -295,7 +295,7 @@ namespace FileLiberator (libraryBook.Book.PictureLarge, PictureSize.Native); var picBytes = PictureStorage.GetPictureSynchronously(new PictureDefinition(picId, size)); - + if (picBytes.Length > 0) File.WriteAllBytes(coverPath, picBytes); } @@ -303,7 +303,7 @@ namespace FileLiberator { //Failure to download cover art should not be //considered a failure to download the book - Serilog.Log.Logger.Error(ex.Message); + Serilog.Log.Logger.Error(ex, $"Error downloading cover art of {libraryBook.Book.AudibleProductId} to {coverPath} catalog product."); } } diff --git a/Source/LibationWinForms/grid/ImageDisplay.cs b/Source/LibationWinForms/grid/ImageDisplay.cs index 09fa2481..53f75987 100644 --- a/Source/LibationWinForms/grid/ImageDisplay.cs +++ b/Source/LibationWinForms/grid/ImageDisplay.cs @@ -13,10 +13,18 @@ namespace LibationWinForms public string BookSaveDirectory { get; set; } public byte[] CoverPicture { get => _coverBytes; set => pictureBox1.Image = Dinah.Core.Drawing.ImageReader.ToImage(_coverBytes = value); } - - private byte[] _coverBytes; + + public ImageDisplay() + { + InitializeComponent(); + lastWidth = Width; + lastHeight = Height; + } + + #region Make the form's aspect ratio always match the picture's aspect ratio. + private bool detectedResizeDirection = false; private bool resizingWidth = false; private bool resizingHeight = false; @@ -27,14 +35,6 @@ namespace LibationWinForms private int formExtraHeight; private double pictureAR = 1; - - public ImageDisplay() - { - InitializeComponent(); - lastWidth = Width; - lastHeight = Height; - } - protected override void OnResizeBegin(EventArgs e) { detectedResizeDirection = false; @@ -87,6 +87,8 @@ namespace LibationWinForms return (int)((height - formExtraHeight) * pictureAR) + formExtraWidth; } + #endregion + private void ImageDisplay_Shown(object sender, EventArgs e) { formExtraWidth = Width - pictureBox1.Width; @@ -110,8 +112,8 @@ namespace LibationWinForms } catch (Exception ex) { - Serilog.Log.Logger.Error(ex.Message); - MessageBox.Show(this, $"An error was encountered while trying to save the picture\r\n\r\n{ex.Message}", "Sailed to save picture", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); + Serilog.Log.Logger.Error(ex, $"Failed to save picture to {saveFileDialog.FileName}"); + MessageBox.Show(this, $"An error was encountered while trying to save the picture\r\n\r\n{ex.Message}", "Failed to save picture", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); } } }