diff --git a/AaxDecrypter/AaxDecrypter.csproj b/AaxDecrypter/AaxDecrypter.csproj
index bac3fdc6..3fb848a9 100644
--- a/AaxDecrypter/AaxDecrypter.csproj
+++ b/AaxDecrypter/AaxDecrypter.csproj
@@ -5,8 +5,8 @@
-
-
+
+
diff --git a/AppScaffolding/AppScaffolding.csproj b/AppScaffolding/AppScaffolding.csproj
index 22abde40..c1fd33b4 100644
--- a/AppScaffolding/AppScaffolding.csproj
+++ b/AppScaffolding/AppScaffolding.csproj
@@ -3,7 +3,7 @@
net6.0-windows
- 7.0.0.1
+ 7.0.1.1
diff --git a/LibationWinForms/Form1.Designer.cs b/LibationWinForms/Form1.Designer.cs
index 7c1c0ec9..67f1d0cb 100644
--- a/LibationWinForms/Form1.Designer.cs
+++ b/LibationWinForms/Form1.Designer.cs
@@ -28,338 +28,354 @@
///
private void InitializeComponent()
{
- System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
- this.gridPanel = new System.Windows.Forms.Panel();
- this.filterHelpBtn = new System.Windows.Forms.Button();
- this.filterBtn = new System.Windows.Forms.Button();
- this.filterSearchTb = new System.Windows.Forms.TextBox();
- this.menuStrip1 = new System.Windows.Forms.MenuStrip();
- this.importToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.noAccountsYetAddAccountToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.scanLibraryToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.scanLibraryOfAllAccountsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.scanLibraryOfSomeAccountsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.removeLibraryBooksToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.removeAllAccountsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.removeSomeAccountsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.liberateToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.beginBookBackupsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.beginPdfBackupsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.convertAllM4bToMp3ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.exportToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.exportLibraryToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.quickFiltersToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.firstFilterIsDefaultToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.editQuickFiltersToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
- this.settingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.accountsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.basicSettingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.statusStrip1 = new System.Windows.Forms.StatusStrip();
- this.visibleCountLbl = new System.Windows.Forms.ToolStripStatusLabel();
- this.springLbl = new System.Windows.Forms.ToolStripStatusLabel();
- this.backupsCountsLbl = new System.Windows.Forms.ToolStripStatusLabel();
- this.pdfsCountsLbl = new System.Windows.Forms.ToolStripStatusLabel();
- this.addFilterBtn = new System.Windows.Forms.Button();
- this.menuStrip1.SuspendLayout();
- this.statusStrip1.SuspendLayout();
- this.SuspendLayout();
- //
- // gridPanel
- //
- this.gridPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
+ this.gridPanel = new System.Windows.Forms.Panel();
+ this.filterHelpBtn = new System.Windows.Forms.Button();
+ this.filterBtn = new System.Windows.Forms.Button();
+ this.filterSearchTb = new System.Windows.Forms.TextBox();
+ this.menuStrip1 = new System.Windows.Forms.MenuStrip();
+ this.importToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.noAccountsYetAddAccountToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.scanLibraryToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.scanLibraryOfAllAccountsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.scanLibraryOfSomeAccountsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.removeLibraryBooksToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.removeAllAccountsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.removeSomeAccountsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.liberateToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.beginBookBackupsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.beginPdfBackupsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.convertAllM4bToMp3ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.exportToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.exportLibraryToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.quickFiltersToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.firstFilterIsDefaultToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.editQuickFiltersToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
+ this.settingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.accountsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.basicSettingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.statusStrip1 = new System.Windows.Forms.StatusStrip();
+ this.visibleCountLbl = new System.Windows.Forms.ToolStripStatusLabel();
+ this.springLbl = new System.Windows.Forms.ToolStripStatusLabel();
+ this.backupsCountsLbl = new System.Windows.Forms.ToolStripStatusLabel();
+ this.pdfsCountsLbl = new System.Windows.Forms.ToolStripStatusLabel();
+ this.addFilterBtn = new System.Windows.Forms.Button();
+ this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
+ this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.menuStrip1.SuspendLayout();
+ this.statusStrip1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // gridPanel
+ //
+ this.gridPanel.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.gridPanel.Location = new System.Drawing.Point(14, 65);
- this.gridPanel.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
- this.gridPanel.Name = "gridPanel";
- this.gridPanel.Size = new System.Drawing.Size(979, 445);
- this.gridPanel.TabIndex = 5;
- //
- // filterHelpBtn
- //
- this.filterHelpBtn.Location = new System.Drawing.Point(14, 31);
- this.filterHelpBtn.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
- this.filterHelpBtn.Name = "filterHelpBtn";
- this.filterHelpBtn.Size = new System.Drawing.Size(26, 27);
- this.filterHelpBtn.TabIndex = 3;
- this.filterHelpBtn.Text = "?";
- this.filterHelpBtn.UseVisualStyleBackColor = true;
- this.filterHelpBtn.Click += new System.EventHandler(this.filterHelpBtn_Click);
- //
- // filterBtn
- //
- this.filterBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
- this.filterBtn.Location = new System.Drawing.Point(905, 31);
- this.filterBtn.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
- this.filterBtn.Name = "filterBtn";
- this.filterBtn.Size = new System.Drawing.Size(88, 27);
- this.filterBtn.TabIndex = 2;
- this.filterBtn.Text = "Filter";
- this.filterBtn.UseVisualStyleBackColor = true;
- this.filterBtn.Click += new System.EventHandler(this.filterBtn_Click);
- //
- // filterSearchTb
- //
- this.filterSearchTb.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ this.gridPanel.Location = new System.Drawing.Point(14, 65);
+ this.gridPanel.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
+ this.gridPanel.Name = "gridPanel";
+ this.gridPanel.Size = new System.Drawing.Size(979, 445);
+ this.gridPanel.TabIndex = 5;
+ //
+ // filterHelpBtn
+ //
+ this.filterHelpBtn.Location = new System.Drawing.Point(14, 31);
+ this.filterHelpBtn.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
+ this.filterHelpBtn.Name = "filterHelpBtn";
+ this.filterHelpBtn.Size = new System.Drawing.Size(26, 27);
+ this.filterHelpBtn.TabIndex = 3;
+ this.filterHelpBtn.Text = "?";
+ this.filterHelpBtn.UseVisualStyleBackColor = true;
+ this.filterHelpBtn.Click += new System.EventHandler(this.filterHelpBtn_Click);
+ //
+ // filterBtn
+ //
+ this.filterBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.filterBtn.Location = new System.Drawing.Point(905, 31);
+ this.filterBtn.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
+ this.filterBtn.Name = "filterBtn";
+ this.filterBtn.Size = new System.Drawing.Size(88, 27);
+ this.filterBtn.TabIndex = 2;
+ this.filterBtn.Text = "Filter";
+ this.filterBtn.UseVisualStyleBackColor = true;
+ this.filterBtn.Click += new System.EventHandler(this.filterBtn_Click);
+ //
+ // filterSearchTb
+ //
+ this.filterSearchTb.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
- this.filterSearchTb.Location = new System.Drawing.Point(217, 33);
- this.filterSearchTb.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
- this.filterSearchTb.Name = "filterSearchTb";
- this.filterSearchTb.Size = new System.Drawing.Size(681, 23);
- this.filterSearchTb.TabIndex = 1;
- this.filterSearchTb.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.filterSearchTb_KeyPress);
- //
- // menuStrip1
- //
- this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.filterSearchTb.Location = new System.Drawing.Point(217, 33);
+ this.filterSearchTb.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
+ this.filterSearchTb.Name = "filterSearchTb";
+ this.filterSearchTb.Size = new System.Drawing.Size(681, 23);
+ this.filterSearchTb.TabIndex = 1;
+ this.filterSearchTb.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.filterSearchTb_KeyPress);
+ //
+ // menuStrip1
+ //
+ this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.importToolStripMenuItem,
this.liberateToolStripMenuItem,
this.exportToolStripMenuItem,
this.quickFiltersToolStripMenuItem,
this.settingsToolStripMenuItem});
- this.menuStrip1.Location = new System.Drawing.Point(0, 0);
- this.menuStrip1.Name = "menuStrip1";
- this.menuStrip1.Padding = new System.Windows.Forms.Padding(7, 2, 0, 2);
- this.menuStrip1.Size = new System.Drawing.Size(1007, 24);
- this.menuStrip1.TabIndex = 0;
- this.menuStrip1.Text = "menuStrip1";
- //
- // importToolStripMenuItem
- //
- this.importToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.menuStrip1.Location = new System.Drawing.Point(0, 0);
+ this.menuStrip1.Name = "menuStrip1";
+ this.menuStrip1.Padding = new System.Windows.Forms.Padding(7, 2, 0, 2);
+ this.menuStrip1.Size = new System.Drawing.Size(1007, 24);
+ this.menuStrip1.TabIndex = 0;
+ this.menuStrip1.Text = "menuStrip1";
+ //
+ // importToolStripMenuItem
+ //
+ this.importToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.noAccountsYetAddAccountToolStripMenuItem,
this.scanLibraryToolStripMenuItem,
this.scanLibraryOfAllAccountsToolStripMenuItem,
this.scanLibraryOfSomeAccountsToolStripMenuItem,
this.removeLibraryBooksToolStripMenuItem});
- this.importToolStripMenuItem.Name = "importToolStripMenuItem";
- this.importToolStripMenuItem.Size = new System.Drawing.Size(55, 20);
- this.importToolStripMenuItem.Text = "&Import";
- //
- // noAccountsYetAddAccountToolStripMenuItem
- //
- this.noAccountsYetAddAccountToolStripMenuItem.Name = "noAccountsYetAddAccountToolStripMenuItem";
- this.noAccountsYetAddAccountToolStripMenuItem.Size = new System.Drawing.Size(247, 22);
- this.noAccountsYetAddAccountToolStripMenuItem.Text = "No accounts yet. A&dd Account...";
- this.noAccountsYetAddAccountToolStripMenuItem.Click += new System.EventHandler(this.noAccountsYetAddAccountToolStripMenuItem_Click);
- //
- // scanLibraryToolStripMenuItem
- //
- this.scanLibraryToolStripMenuItem.Name = "scanLibraryToolStripMenuItem";
- this.scanLibraryToolStripMenuItem.Size = new System.Drawing.Size(247, 22);
- this.scanLibraryToolStripMenuItem.Text = "Scan &Library";
- this.scanLibraryToolStripMenuItem.Click += new System.EventHandler(this.scanLibraryToolStripMenuItem_Click);
- //
- // scanLibraryOfAllAccountsToolStripMenuItem
- //
- this.scanLibraryOfAllAccountsToolStripMenuItem.Name = "scanLibraryOfAllAccountsToolStripMenuItem";
- this.scanLibraryOfAllAccountsToolStripMenuItem.Size = new System.Drawing.Size(247, 22);
- this.scanLibraryOfAllAccountsToolStripMenuItem.Text = "Scan Library of &All Accounts";
- this.scanLibraryOfAllAccountsToolStripMenuItem.Click += new System.EventHandler(this.scanLibraryOfAllAccountsToolStripMenuItem_Click);
- //
- // scanLibraryOfSomeAccountsToolStripMenuItem
- //
- this.scanLibraryOfSomeAccountsToolStripMenuItem.Name = "scanLibraryOfSomeAccountsToolStripMenuItem";
- this.scanLibraryOfSomeAccountsToolStripMenuItem.Size = new System.Drawing.Size(247, 22);
- this.scanLibraryOfSomeAccountsToolStripMenuItem.Text = "Scan Library of &Some Accounts...";
- this.scanLibraryOfSomeAccountsToolStripMenuItem.Click += new System.EventHandler(this.scanLibraryOfSomeAccountsToolStripMenuItem_Click);
- //
- // removeLibraryBooksToolStripMenuItem
- //
- this.removeLibraryBooksToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.importToolStripMenuItem.Name = "importToolStripMenuItem";
+ this.importToolStripMenuItem.Size = new System.Drawing.Size(55, 20);
+ this.importToolStripMenuItem.Text = "&Import";
+ //
+ // noAccountsYetAddAccountToolStripMenuItem
+ //
+ this.noAccountsYetAddAccountToolStripMenuItem.Name = "noAccountsYetAddAccountToolStripMenuItem";
+ this.noAccountsYetAddAccountToolStripMenuItem.Size = new System.Drawing.Size(247, 22);
+ this.noAccountsYetAddAccountToolStripMenuItem.Text = "No accounts yet. A&dd Account...";
+ this.noAccountsYetAddAccountToolStripMenuItem.Click += new System.EventHandler(this.noAccountsYetAddAccountToolStripMenuItem_Click);
+ //
+ // scanLibraryToolStripMenuItem
+ //
+ this.scanLibraryToolStripMenuItem.Name = "scanLibraryToolStripMenuItem";
+ this.scanLibraryToolStripMenuItem.Size = new System.Drawing.Size(247, 22);
+ this.scanLibraryToolStripMenuItem.Text = "Scan &Library";
+ this.scanLibraryToolStripMenuItem.Click += new System.EventHandler(this.scanLibraryToolStripMenuItem_Click);
+ //
+ // scanLibraryOfAllAccountsToolStripMenuItem
+ //
+ this.scanLibraryOfAllAccountsToolStripMenuItem.Name = "scanLibraryOfAllAccountsToolStripMenuItem";
+ this.scanLibraryOfAllAccountsToolStripMenuItem.Size = new System.Drawing.Size(247, 22);
+ this.scanLibraryOfAllAccountsToolStripMenuItem.Text = "Scan Library of &All Accounts";
+ this.scanLibraryOfAllAccountsToolStripMenuItem.Click += new System.EventHandler(this.scanLibraryOfAllAccountsToolStripMenuItem_Click);
+ //
+ // scanLibraryOfSomeAccountsToolStripMenuItem
+ //
+ this.scanLibraryOfSomeAccountsToolStripMenuItem.Name = "scanLibraryOfSomeAccountsToolStripMenuItem";
+ this.scanLibraryOfSomeAccountsToolStripMenuItem.Size = new System.Drawing.Size(247, 22);
+ this.scanLibraryOfSomeAccountsToolStripMenuItem.Text = "Scan Library of &Some Accounts...";
+ this.scanLibraryOfSomeAccountsToolStripMenuItem.Click += new System.EventHandler(this.scanLibraryOfSomeAccountsToolStripMenuItem_Click);
+ //
+ // removeLibraryBooksToolStripMenuItem
+ //
+ this.removeLibraryBooksToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.removeAllAccountsToolStripMenuItem,
this.removeSomeAccountsToolStripMenuItem});
- this.removeLibraryBooksToolStripMenuItem.Name = "removeLibraryBooksToolStripMenuItem";
- this.removeLibraryBooksToolStripMenuItem.Size = new System.Drawing.Size(247, 22);
- this.removeLibraryBooksToolStripMenuItem.Text = "Remove Library Books";
- this.removeLibraryBooksToolStripMenuItem.Click += new System.EventHandler(this.removeLibraryBooksToolStripMenuItem_Click);
- //
- // removeAllAccountsToolStripMenuItem
- //
- this.removeAllAccountsToolStripMenuItem.Name = "removeAllAccountsToolStripMenuItem";
- this.removeAllAccountsToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
- this.removeAllAccountsToolStripMenuItem.Text = "All Accounts";
- this.removeAllAccountsToolStripMenuItem.Click += new System.EventHandler(this.removeAllAccountsToolStripMenuItem_Click);
- //
- // removeSomeAccountsToolStripMenuItem
- //
- this.removeSomeAccountsToolStripMenuItem.Name = "removeSomeAccountsToolStripMenuItem";
- this.removeSomeAccountsToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
- this.removeSomeAccountsToolStripMenuItem.Text = "Some Accounts";
- this.removeSomeAccountsToolStripMenuItem.Click += new System.EventHandler(this.removeSomeAccountsToolStripMenuItem_Click);
- //
- // liberateToolStripMenuItem
- //
- this.liberateToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.removeLibraryBooksToolStripMenuItem.Name = "removeLibraryBooksToolStripMenuItem";
+ this.removeLibraryBooksToolStripMenuItem.Size = new System.Drawing.Size(247, 22);
+ this.removeLibraryBooksToolStripMenuItem.Text = "Remove Library Books";
+ this.removeLibraryBooksToolStripMenuItem.Click += new System.EventHandler(this.removeLibraryBooksToolStripMenuItem_Click);
+ //
+ // removeAllAccountsToolStripMenuItem
+ //
+ this.removeAllAccountsToolStripMenuItem.Name = "removeAllAccountsToolStripMenuItem";
+ this.removeAllAccountsToolStripMenuItem.Size = new System.Drawing.Size(157, 22);
+ this.removeAllAccountsToolStripMenuItem.Text = "All Accounts";
+ this.removeAllAccountsToolStripMenuItem.Click += new System.EventHandler(this.removeAllAccountsToolStripMenuItem_Click);
+ //
+ // removeSomeAccountsToolStripMenuItem
+ //
+ this.removeSomeAccountsToolStripMenuItem.Name = "removeSomeAccountsToolStripMenuItem";
+ this.removeSomeAccountsToolStripMenuItem.Size = new System.Drawing.Size(157, 22);
+ this.removeSomeAccountsToolStripMenuItem.Text = "Some Accounts";
+ this.removeSomeAccountsToolStripMenuItem.Click += new System.EventHandler(this.removeSomeAccountsToolStripMenuItem_Click);
+ //
+ // liberateToolStripMenuItem
+ //
+ this.liberateToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.beginBookBackupsToolStripMenuItem,
this.beginPdfBackupsToolStripMenuItem,
this.convertAllM4bToMp3ToolStripMenuItem});
- this.liberateToolStripMenuItem.Name = "liberateToolStripMenuItem";
- this.liberateToolStripMenuItem.Size = new System.Drawing.Size(61, 20);
- this.liberateToolStripMenuItem.Text = "&Liberate";
- //
- // beginBookBackupsToolStripMenuItem
- //
- this.beginBookBackupsToolStripMenuItem.Name = "beginBookBackupsToolStripMenuItem";
- this.beginBookBackupsToolStripMenuItem.Size = new System.Drawing.Size(293, 22);
- this.beginBookBackupsToolStripMenuItem.Text = "Begin &Book and PDF Backups: {0}";
- this.beginBookBackupsToolStripMenuItem.Click += new System.EventHandler(this.beginBookBackupsToolStripMenuItem_Click);
- //
- // beginPdfBackupsToolStripMenuItem
- //
- this.beginPdfBackupsToolStripMenuItem.Name = "beginPdfBackupsToolStripMenuItem";
- this.beginPdfBackupsToolStripMenuItem.Size = new System.Drawing.Size(293, 22);
- this.beginPdfBackupsToolStripMenuItem.Text = "Begin &PDF Only Backups: {0}";
- this.beginPdfBackupsToolStripMenuItem.Click += new System.EventHandler(this.beginPdfBackupsToolStripMenuItem_Click);
- //
- // convertAllM4bToMp3ToolStripMenuItem
- //
- this.convertAllM4bToMp3ToolStripMenuItem.Name = "convertAllM4bToMp3ToolStripMenuItem";
- this.convertAllM4bToMp3ToolStripMenuItem.Size = new System.Drawing.Size(293, 22);
- this.convertAllM4bToMp3ToolStripMenuItem.Text = "Convert all M4b to Mp3 [Long-running]...";
- this.convertAllM4bToMp3ToolStripMenuItem.Click += new System.EventHandler(this.convertAllM4bToMp3ToolStripMenuItem_Click);
- //
- // exportToolStripMenuItem
- //
- this.exportToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.liberateToolStripMenuItem.Name = "liberateToolStripMenuItem";
+ this.liberateToolStripMenuItem.Size = new System.Drawing.Size(61, 20);
+ this.liberateToolStripMenuItem.Text = "&Liberate";
+ //
+ // beginBookBackupsToolStripMenuItem
+ //
+ this.beginBookBackupsToolStripMenuItem.Name = "beginBookBackupsToolStripMenuItem";
+ this.beginBookBackupsToolStripMenuItem.Size = new System.Drawing.Size(293, 22);
+ this.beginBookBackupsToolStripMenuItem.Text = "Begin &Book and PDF Backups: {0}";
+ this.beginBookBackupsToolStripMenuItem.Click += new System.EventHandler(this.beginBookBackupsToolStripMenuItem_Click);
+ //
+ // beginPdfBackupsToolStripMenuItem
+ //
+ this.beginPdfBackupsToolStripMenuItem.Name = "beginPdfBackupsToolStripMenuItem";
+ this.beginPdfBackupsToolStripMenuItem.Size = new System.Drawing.Size(293, 22);
+ this.beginPdfBackupsToolStripMenuItem.Text = "Begin &PDF Only Backups: {0}";
+ this.beginPdfBackupsToolStripMenuItem.Click += new System.EventHandler(this.beginPdfBackupsToolStripMenuItem_Click);
+ //
+ // convertAllM4bToMp3ToolStripMenuItem
+ //
+ this.convertAllM4bToMp3ToolStripMenuItem.Name = "convertAllM4bToMp3ToolStripMenuItem";
+ this.convertAllM4bToMp3ToolStripMenuItem.Size = new System.Drawing.Size(293, 22);
+ this.convertAllM4bToMp3ToolStripMenuItem.Text = "Convert all M4b to Mp3 [Long-running]...";
+ this.convertAllM4bToMp3ToolStripMenuItem.Click += new System.EventHandler(this.convertAllM4bToMp3ToolStripMenuItem_Click);
+ //
+ // exportToolStripMenuItem
+ //
+ this.exportToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.exportLibraryToolStripMenuItem});
- this.exportToolStripMenuItem.Name = "exportToolStripMenuItem";
- this.exportToolStripMenuItem.Size = new System.Drawing.Size(53, 20);
- this.exportToolStripMenuItem.Text = "E&xport";
- //
- // exportLibraryToolStripMenuItem
- //
- this.exportLibraryToolStripMenuItem.Name = "exportLibraryToolStripMenuItem";
- this.exportLibraryToolStripMenuItem.Size = new System.Drawing.Size(156, 22);
- this.exportLibraryToolStripMenuItem.Text = "E&xport Library...";
- this.exportLibraryToolStripMenuItem.Click += new System.EventHandler(this.exportLibraryToolStripMenuItem_Click);
- //
- // quickFiltersToolStripMenuItem
- //
- this.quickFiltersToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.exportToolStripMenuItem.Name = "exportToolStripMenuItem";
+ this.exportToolStripMenuItem.Size = new System.Drawing.Size(53, 20);
+ this.exportToolStripMenuItem.Text = "E&xport";
+ //
+ // exportLibraryToolStripMenuItem
+ //
+ this.exportLibraryToolStripMenuItem.Name = "exportLibraryToolStripMenuItem";
+ this.exportLibraryToolStripMenuItem.Size = new System.Drawing.Size(156, 22);
+ this.exportLibraryToolStripMenuItem.Text = "E&xport Library...";
+ this.exportLibraryToolStripMenuItem.Click += new System.EventHandler(this.exportLibraryToolStripMenuItem_Click);
+ //
+ // quickFiltersToolStripMenuItem
+ //
+ this.quickFiltersToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.firstFilterIsDefaultToolStripMenuItem,
this.editQuickFiltersToolStripMenuItem,
this.toolStripSeparator1});
- this.quickFiltersToolStripMenuItem.Name = "quickFiltersToolStripMenuItem";
- this.quickFiltersToolStripMenuItem.Size = new System.Drawing.Size(84, 20);
- this.quickFiltersToolStripMenuItem.Text = "Quick &Filters";
- //
- // firstFilterIsDefaultToolStripMenuItem
- //
- this.firstFilterIsDefaultToolStripMenuItem.Name = "firstFilterIsDefaultToolStripMenuItem";
- this.firstFilterIsDefaultToolStripMenuItem.Size = new System.Drawing.Size(256, 22);
- this.firstFilterIsDefaultToolStripMenuItem.Text = "Start Libation with 1st filter &Default";
- this.firstFilterIsDefaultToolStripMenuItem.Click += new System.EventHandler(this.FirstFilterIsDefaultToolStripMenuItem_Click);
- //
- // editQuickFiltersToolStripMenuItem
- //
- this.editQuickFiltersToolStripMenuItem.Name = "editQuickFiltersToolStripMenuItem";
- this.editQuickFiltersToolStripMenuItem.Size = new System.Drawing.Size(256, 22);
- this.editQuickFiltersToolStripMenuItem.Text = "&Edit quick filters...";
- this.editQuickFiltersToolStripMenuItem.Click += new System.EventHandler(this.EditQuickFiltersToolStripMenuItem_Click);
- //
- // toolStripSeparator1
- //
- this.toolStripSeparator1.Name = "toolStripSeparator1";
- this.toolStripSeparator1.Size = new System.Drawing.Size(253, 6);
- //
- // settingsToolStripMenuItem
- //
- this.settingsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.quickFiltersToolStripMenuItem.Name = "quickFiltersToolStripMenuItem";
+ this.quickFiltersToolStripMenuItem.Size = new System.Drawing.Size(84, 20);
+ this.quickFiltersToolStripMenuItem.Text = "Quick &Filters";
+ //
+ // firstFilterIsDefaultToolStripMenuItem
+ //
+ this.firstFilterIsDefaultToolStripMenuItem.Name = "firstFilterIsDefaultToolStripMenuItem";
+ this.firstFilterIsDefaultToolStripMenuItem.Size = new System.Drawing.Size(256, 22);
+ this.firstFilterIsDefaultToolStripMenuItem.Text = "Start Libation with 1st filter &Default";
+ this.firstFilterIsDefaultToolStripMenuItem.Click += new System.EventHandler(this.FirstFilterIsDefaultToolStripMenuItem_Click);
+ //
+ // editQuickFiltersToolStripMenuItem
+ //
+ this.editQuickFiltersToolStripMenuItem.Name = "editQuickFiltersToolStripMenuItem";
+ this.editQuickFiltersToolStripMenuItem.Size = new System.Drawing.Size(256, 22);
+ this.editQuickFiltersToolStripMenuItem.Text = "&Edit quick filters...";
+ this.editQuickFiltersToolStripMenuItem.Click += new System.EventHandler(this.EditQuickFiltersToolStripMenuItem_Click);
+ //
+ // toolStripSeparator1
+ //
+ this.toolStripSeparator1.Name = "toolStripSeparator1";
+ this.toolStripSeparator1.Size = new System.Drawing.Size(253, 6);
+ //
+ // settingsToolStripMenuItem
+ //
+ this.settingsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.accountsToolStripMenuItem,
- this.basicSettingsToolStripMenuItem});
- this.settingsToolStripMenuItem.Name = "settingsToolStripMenuItem";
- this.settingsToolStripMenuItem.Size = new System.Drawing.Size(61, 20);
- this.settingsToolStripMenuItem.Text = "&Settings";
- //
- // accountsToolStripMenuItem
- //
- this.accountsToolStripMenuItem.Name = "accountsToolStripMenuItem";
- this.accountsToolStripMenuItem.Size = new System.Drawing.Size(133, 22);
- this.accountsToolStripMenuItem.Text = "&Accounts...";
- this.accountsToolStripMenuItem.Click += new System.EventHandler(this.accountsToolStripMenuItem_Click);
- //
- // basicSettingsToolStripMenuItem
- //
- this.basicSettingsToolStripMenuItem.Name = "basicSettingsToolStripMenuItem";
- this.basicSettingsToolStripMenuItem.Size = new System.Drawing.Size(133, 22);
- this.basicSettingsToolStripMenuItem.Text = "&Settings...";
- this.basicSettingsToolStripMenuItem.Click += new System.EventHandler(this.basicSettingsToolStripMenuItem_Click);
- //
- // statusStrip1
- //
- this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.basicSettingsToolStripMenuItem,
+ this.toolStripSeparator2,
+ this.aboutToolStripMenuItem});
+ this.settingsToolStripMenuItem.Name = "settingsToolStripMenuItem";
+ this.settingsToolStripMenuItem.Size = new System.Drawing.Size(61, 20);
+ this.settingsToolStripMenuItem.Text = "&Settings";
+ //
+ // accountsToolStripMenuItem
+ //
+ this.accountsToolStripMenuItem.Name = "accountsToolStripMenuItem";
+ this.accountsToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
+ this.accountsToolStripMenuItem.Text = "&Accounts...";
+ this.accountsToolStripMenuItem.Click += new System.EventHandler(this.accountsToolStripMenuItem_Click);
+ //
+ // basicSettingsToolStripMenuItem
+ //
+ this.basicSettingsToolStripMenuItem.Name = "basicSettingsToolStripMenuItem";
+ this.basicSettingsToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
+ this.basicSettingsToolStripMenuItem.Text = "&Settings...";
+ this.basicSettingsToolStripMenuItem.Click += new System.EventHandler(this.basicSettingsToolStripMenuItem_Click);
+ //
+ // statusStrip1
+ //
+ this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.visibleCountLbl,
this.springLbl,
this.backupsCountsLbl,
this.pdfsCountsLbl});
- this.statusStrip1.Location = new System.Drawing.Point(0, 517);
- this.statusStrip1.Name = "statusStrip1";
- this.statusStrip1.Padding = new System.Windows.Forms.Padding(1, 0, 16, 0);
- this.statusStrip1.Size = new System.Drawing.Size(1007, 22);
- this.statusStrip1.TabIndex = 6;
- this.statusStrip1.Text = "statusStrip1";
- //
- // visibleCountLbl
- //
- this.visibleCountLbl.Name = "visibleCountLbl";
- this.visibleCountLbl.Size = new System.Drawing.Size(53, 17);
- this.visibleCountLbl.Text = "Visible: 0";
- //
- // springLbl
- //
- this.springLbl.Name = "springLbl";
- this.springLbl.Size = new System.Drawing.Size(548, 17);
- this.springLbl.Spring = true;
- //
- // backupsCountsLbl
- //
- this.backupsCountsLbl.Name = "backupsCountsLbl";
- this.backupsCountsLbl.Size = new System.Drawing.Size(218, 17);
- this.backupsCountsLbl.Text = "[Calculating backed up book quantities]";
- //
- // pdfsCountsLbl
- //
- this.pdfsCountsLbl.Name = "pdfsCountsLbl";
- this.pdfsCountsLbl.Size = new System.Drawing.Size(171, 17);
- this.pdfsCountsLbl.Text = "| [Calculating backed up PDFs]";
- //
- // addFilterBtn
- //
- this.addFilterBtn.Location = new System.Drawing.Point(47, 31);
- this.addFilterBtn.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
- this.addFilterBtn.Name = "addFilterBtn";
- this.addFilterBtn.Size = new System.Drawing.Size(163, 27);
- this.addFilterBtn.TabIndex = 4;
- this.addFilterBtn.Text = "Add To Quick Filters";
- this.addFilterBtn.UseVisualStyleBackColor = true;
- this.addFilterBtn.Click += new System.EventHandler(this.AddFilterBtn_Click);
- //
- // Form1
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(1007, 539);
- this.Controls.Add(this.filterBtn);
- this.Controls.Add(this.addFilterBtn);
- this.Controls.Add(this.filterSearchTb);
- this.Controls.Add(this.filterHelpBtn);
- this.Controls.Add(this.statusStrip1);
- this.Controls.Add(this.gridPanel);
- this.Controls.Add(this.menuStrip1);
- this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
- this.MainMenuStrip = this.menuStrip1;
- this.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
- this.Name = "Form1";
- this.Text = "Libation: Liberate your Library";
- this.Load += new System.EventHandler(this.Form1_Load);
- this.menuStrip1.ResumeLayout(false);
- this.menuStrip1.PerformLayout();
- this.statusStrip1.ResumeLayout(false);
- this.statusStrip1.PerformLayout();
- this.ResumeLayout(false);
- this.PerformLayout();
+ this.statusStrip1.Location = new System.Drawing.Point(0, 517);
+ this.statusStrip1.Name = "statusStrip1";
+ this.statusStrip1.Padding = new System.Windows.Forms.Padding(1, 0, 16, 0);
+ this.statusStrip1.Size = new System.Drawing.Size(1007, 22);
+ this.statusStrip1.TabIndex = 6;
+ this.statusStrip1.Text = "statusStrip1";
+ //
+ // visibleCountLbl
+ //
+ this.visibleCountLbl.Name = "visibleCountLbl";
+ this.visibleCountLbl.Size = new System.Drawing.Size(53, 17);
+ this.visibleCountLbl.Text = "Visible: 0";
+ //
+ // springLbl
+ //
+ this.springLbl.Name = "springLbl";
+ this.springLbl.Size = new System.Drawing.Size(548, 17);
+ this.springLbl.Spring = true;
+ //
+ // backupsCountsLbl
+ //
+ this.backupsCountsLbl.Name = "backupsCountsLbl";
+ this.backupsCountsLbl.Size = new System.Drawing.Size(218, 17);
+ this.backupsCountsLbl.Text = "[Calculating backed up book quantities]";
+ //
+ // pdfsCountsLbl
+ //
+ this.pdfsCountsLbl.Name = "pdfsCountsLbl";
+ this.pdfsCountsLbl.Size = new System.Drawing.Size(171, 17);
+ this.pdfsCountsLbl.Text = "| [Calculating backed up PDFs]";
+ //
+ // addFilterBtn
+ //
+ this.addFilterBtn.Location = new System.Drawing.Point(47, 31);
+ this.addFilterBtn.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
+ this.addFilterBtn.Name = "addFilterBtn";
+ this.addFilterBtn.Size = new System.Drawing.Size(163, 27);
+ this.addFilterBtn.TabIndex = 4;
+ this.addFilterBtn.Text = "Add To Quick Filters";
+ this.addFilterBtn.UseVisualStyleBackColor = true;
+ this.addFilterBtn.Click += new System.EventHandler(this.AddFilterBtn_Click);
+ //
+ // toolStripSeparator2
+ //
+ this.toolStripSeparator2.Name = "toolStripSeparator2";
+ this.toolStripSeparator2.Size = new System.Drawing.Size(177, 6);
+ //
+ // aboutToolStripMenuItem
+ //
+ this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem";
+ this.aboutToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
+ this.aboutToolStripMenuItem.Text = "A&bout...";
+ this.aboutToolStripMenuItem.Click += new System.EventHandler(this.aboutToolStripMenuItem_Click);
+ //
+ // Form1
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(1007, 539);
+ this.Controls.Add(this.filterBtn);
+ this.Controls.Add(this.addFilterBtn);
+ this.Controls.Add(this.filterSearchTb);
+ this.Controls.Add(this.filterHelpBtn);
+ this.Controls.Add(this.statusStrip1);
+ this.Controls.Add(this.gridPanel);
+ this.Controls.Add(this.menuStrip1);
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.MainMenuStrip = this.menuStrip1;
+ this.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
+ this.Name = "Form1";
+ this.Text = "Libation: Liberate your Library";
+ this.Load += new System.EventHandler(this.Form1_Load);
+ this.menuStrip1.ResumeLayout(false);
+ this.menuStrip1.PerformLayout();
+ this.statusStrip1.ResumeLayout(false);
+ this.statusStrip1.PerformLayout();
+ this.ResumeLayout(false);
+ this.PerformLayout();
}
@@ -397,5 +413,7 @@
private System.Windows.Forms.ToolStripMenuItem removeLibraryBooksToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem removeAllAccountsToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem removeSomeAccountsToolStripMenuItem;
- }
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
+ private System.Windows.Forms.ToolStripMenuItem aboutToolStripMenuItem;
+ }
}
diff --git a/LibationWinForms/Form1.cs b/LibationWinForms/Form1.cs
index e8108614..8306ded9 100644
--- a/LibationWinForms/Form1.cs
+++ b/LibationWinForms/Form1.cs
@@ -452,6 +452,9 @@ namespace LibationWinForms
private void accountsToolStripMenuItem_Click(object sender, EventArgs e) => new AccountsDialog(this).ShowDialog();
private void basicSettingsToolStripMenuItem_Click(object sender, EventArgs e) => new SettingsDialog().ShowDialog();
+
+ private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
+ => MessageBox.Show($"Running Libation version {AppScaffolding.LibationScaffolding.BuildVersion}", $"Libation v{AppScaffolding.LibationScaffolding.BuildVersion}");
#endregion
}
}
diff --git a/LibationWinForms/LibationWinForms.csproj b/LibationWinForms/LibationWinForms.csproj
index 58b0df72..d386871a 100644
--- a/LibationWinForms/LibationWinForms.csproj
+++ b/LibationWinForms/LibationWinForms.csproj
@@ -28,7 +28,7 @@
-
+
diff --git a/LibationWinForms/AsyncNotifyPropertyChanged.cs b/LibationWinForms/grid/AsyncNotifyPropertyChanged.cs
similarity index 100%
rename from LibationWinForms/AsyncNotifyPropertyChanged.cs
rename to LibationWinForms/grid/AsyncNotifyPropertyChanged.cs
diff --git a/LibationWinForms/DataGridViewImageButtonCell.cs b/LibationWinForms/grid/DataGridViewImageButtonCell.cs
similarity index 100%
rename from LibationWinForms/DataGridViewImageButtonCell.cs
rename to LibationWinForms/grid/DataGridViewImageButtonCell.cs
diff --git a/LibationWinForms/EditTagsDataGridViewImageButtonColumn.cs b/LibationWinForms/grid/EditTagsDataGridViewImageButtonColumn.cs
similarity index 91%
rename from LibationWinForms/EditTagsDataGridViewImageButtonColumn.cs
rename to LibationWinForms/grid/EditTagsDataGridViewImageButtonColumn.cs
index 46ee85bd..1349325a 100644
--- a/LibationWinForms/EditTagsDataGridViewImageButtonColumn.cs
+++ b/LibationWinForms/grid/EditTagsDataGridViewImageButtonColumn.cs
@@ -13,8 +13,8 @@ namespace LibationWinForms
internal class EditTagsDataGridViewImageButtonCell : DataGridViewImageButtonCell
{
- private static readonly Image ButtonImage = Properties.Resources.edit_25x25;
- private static readonly Color HiddenForeColor = Color.LightGray;
+ private static Image ButtonImage { get; } = Properties.Resources.edit_25x25;
+ private static Color HiddenForeColor { get; } = Color.LightGray;
protected override void Paint(Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, int rowIndex, DataGridViewElementStates elementState, object value, object formattedValue, string errorText, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts)
{
diff --git a/LibationWinForms/GridEntry.cs b/LibationWinForms/grid/GridEntry.cs
similarity index 83%
rename from LibationWinForms/GridEntry.cs
rename to LibationWinForms/grid/GridEntry.cs
index 822b4b2a..817c7657 100644
--- a/LibationWinForms/GridEntry.cs
+++ b/LibationWinForms/grid/GridEntry.cs
@@ -24,8 +24,7 @@ namespace LibationWinForms
[Browsable(false)]
public string AudibleProductId => Book.AudibleProductId;
[Browsable(false)]
- public LibraryBook LibraryBook { get; }
-
+ public LibraryBook LibraryBook { get; private set; }
#endregion
#region Model properties exposed to the view
@@ -40,17 +39,17 @@ namespace LibationWinForms
}
}
- public string ProductRating { get; }
- public string PurchaseDate { get; }
- public string MyRating { get; }
- public string Series { get; }
- public string Title { get; }
- public string Length { get; }
- public string Authors { get; }
- public string Narrators { get; }
- public string Category { get; }
- public string Misc { get; }
- public string Description { get; }
+ public string ProductRating { get; private set; }
+ public string PurchaseDate { get; private set; }
+ public string MyRating { get; private set; }
+ public string Series { get; private set; }
+ public string Title { get; private set; }
+ public string Length { get; private set; }
+ public string Authors { get; private set; }
+ public string Narrators { get; private set; }
+ public string Category { get; private set; }
+ public string Misc { get; private set; }
+ public string Description { get; private set; }
public string DisplayTags
{
get => string.Join("\r\n", Book.UserDefinedItem.TagsEnumerated);
@@ -68,30 +67,41 @@ namespace LibationWinForms
LibraryBook.Book.UserDefinedItem.PdfStatus = value.PdfStatus;
}
}
-
#endregion
+ public event EventHandler LibraryBookUpdated;
public event EventHandler Committed;
+ // alias
private Book Book => LibraryBook.Book;
- public GridEntry(LibraryBook libraryBook)
+ public GridEntry(LibraryBook libraryBook) => setLibraryBook(libraryBook);
+
+ public void UpdateLibraryBook(LibraryBook libraryBook)
+ {
+ if (AudibleProductId != libraryBook.Book.AudibleProductId)
+ throw new Exception("Invalid grid entry update. IDs must match");
+
+ setLibraryBook(libraryBook);
+ }
+
+ private void setLibraryBook(LibraryBook libraryBook)
{
LibraryBook = libraryBook;
_memberValues = CreateMemberValueDictionary();
- //Get cover art. If it's default, subscribe to PictureCached
+ // Get cover art. If it's default, subscribe to PictureCached
{
(bool isDefault, byte[] picture) = PictureStorage.GetPicture(new PictureDefinition(Book.PictureId, PictureSize._80x80));
if (isDefault)
PictureStorage.PictureCached += PictureStorage_PictureCached;
- //Mutable property. Set the field so PropertyChanged isn't fired.
+ // Mutable property. Set the field so PropertyChanged isn't fired.
_cover = ImageReader.ToImage(picture);
}
- //Immutable properties
+ // Immutable properties
{
Title = Book.Title;
Series = Book.SeriesNames;
@@ -107,6 +117,9 @@ namespace LibationWinForms
}
UserDefinedItem.ItemChanged += UserDefinedItem_ItemChanged;
+
+ // this will never have a value when triggered by ctor b/c nothing can subscribe to the event until after ctor is complete
+ LibraryBookUpdated?.Invoke(this, AudibleProductId);
}
private void PictureStorage_PictureCached(object sender, PictureCachedEventArgs e)
@@ -134,22 +147,16 @@ namespace LibationWinForms
switch (itemName)
{
case nameof(udi.Tags):
- {
- Book.UserDefinedItem.Tags = udi.Tags;
- NotifyPropertyChanged(nameof(DisplayTags));
- }
+ Book.UserDefinedItem.Tags = udi.Tags;
+ NotifyPropertyChanged(nameof(DisplayTags));
break;
case nameof(udi.BookStatus):
- {
- Book.UserDefinedItem.BookStatus = udi.BookStatus;
- NotifyPropertyChanged(nameof(Liberate));
- }
+ Book.UserDefinedItem.BookStatus = udi.BookStatus;
+ NotifyPropertyChanged(nameof(Liberate));
break;
case nameof(udi.PdfStatus):
- {
- Book.UserDefinedItem.PdfStatus = udi.PdfStatus;
- NotifyPropertyChanged(nameof(Liberate));
- }
+ Book.UserDefinedItem.PdfStatus = udi.PdfStatus;
+ NotifyPropertyChanged(nameof(Liberate));
break;
}
@@ -195,7 +202,7 @@ namespace LibationWinForms
public virtual object GetMemberValue(string memberName) => _memberValues[memberName]();
public virtual IComparer GetMemberComparer(Type memberType) => _memberTypeComparers[memberType];
- private Dictionary> _memberValues { get; }
+ private Dictionary> _memberValues { get; set; }
///
/// Create getters for all member object values by name
diff --git a/LibationWinForms/LiberateDataGridViewImageButtonColumn.cs b/LibationWinForms/grid/LiberateDataGridViewImageButtonColumn.cs
similarity index 98%
rename from LibationWinForms/LiberateDataGridViewImageButtonColumn.cs
rename to LibationWinForms/grid/LiberateDataGridViewImageButtonColumn.cs
index 62d6d2db..e5ab82b8 100644
--- a/LibationWinForms/LiberateDataGridViewImageButtonColumn.cs
+++ b/LibationWinForms/grid/LiberateDataGridViewImageButtonColumn.cs
@@ -1,5 +1,4 @@
-using ApplicationServices;
-using System;
+using System;
using System.Drawing;
using System.Windows.Forms;
using System.Linq;
diff --git a/LibationWinForms/ProductsGrid.Designer.cs b/LibationWinForms/grid/ProductsGrid.Designer.cs
similarity index 100%
rename from LibationWinForms/ProductsGrid.Designer.cs
rename to LibationWinForms/grid/ProductsGrid.Designer.cs
diff --git a/LibationWinForms/ProductsGrid.cs b/LibationWinForms/grid/ProductsGrid.cs
similarity index 88%
rename from LibationWinForms/ProductsGrid.cs
rename to LibationWinForms/grid/ProductsGrid.cs
index 0cb7d96b..ba02d430 100644
--- a/LibationWinForms/ProductsGrid.cs
+++ b/LibationWinForms/grid/ProductsGrid.cs
@@ -38,7 +38,7 @@ namespace LibationWinForms
InitializeComponent();
// sorting breaks filters. must reapply filters after sorting
- _dataGridView.Sorted += (_, __) => Filter();
+ _dataGridView.Sorted += Filter;
_dataGridView.CellContentClick += DataGridView_CellContentClick;
EnableDoubleBuffering();
@@ -110,7 +110,7 @@ namespace LibationWinForms
private SortableBindingList bindingList;
/// Insert ad hoc library books to top of grid
- public void AddToTop(DataLayer.LibraryBook libraryBook) => bindingList.Insert(0, new GridEntry(libraryBook));
+ public void AddToTop(DataLayer.LibraryBook libraryBook) => bindingList.Insert(0, libraryBookToGridEntry(libraryBook));
#region UI display functions
@@ -135,12 +135,7 @@ namespace LibationWinForms
}
var orderedGridEntries = lib
- .Select(lb =>
- {
- var entry = new GridEntry(lb);
- entry.Committed += (_, __) => Filter();
- return entry;
- }).ToList()
+ .Select(lb => libraryBookToGridEntry(lb))
// default load order
.OrderByDescending(ge => (DateTime)ge.GetMemberValue(nameof(ge.PurchaseDate)))
//// more advanced example: sort by author, then series, then title
@@ -157,12 +152,20 @@ namespace LibationWinForms
Filter();
}
- #endregion
+ private GridEntry libraryBookToGridEntry(DataLayer.LibraryBook libraryBook)
+ {
+ var entry = new GridEntry(libraryBook);
+ entry.Committed += Filter;
+ entry.LibraryBookUpdated += (sender, productId) => _dataGridView.InvalidateRow(_dataGridView.GetRowIdOfBoundItem((GridEntry)sender));
+ return entry;
+ }
- #region Filter
+ #endregion
- private string _filterSearchString;
- private void Filter() => Filter(_filterSearchString);
+ #region Filter
+
+ private string _filterSearchString;
+ private void Filter(object _ = null, EventArgs __ = null) => Filter(_filterSearchString);
public void Filter(string searchString)
{
_filterSearchString = searchString;
@@ -184,7 +187,7 @@ namespace LibationWinForms
});
}
- //Causes repainting of the DataGridView
+ // Causes repainting of the DataGridView
bindingContext.ResumeBinding();
VisibleCountChanged?.Invoke(this, _dataGridView.AsEnumerable().Count(r => r.Visible));
}
diff --git a/LibationWinForms/ProductsGrid.resx b/LibationWinForms/grid/ProductsGrid.resx
similarity index 100%
rename from LibationWinForms/ProductsGrid.resx
rename to LibationWinForms/grid/ProductsGrid.resx