New feature #430 : bulk set pdf-downloaded status

This commit is contained in:
Robert McRackan 2022-12-29 09:33:32 -05:00
parent c98664d584
commit 83fb2cd1d0
10 changed files with 441 additions and 371 deletions

View File

@ -427,15 +427,14 @@ namespace ApplicationServices
books, books,
udi => { udi => {
// blank tags are expected. null tags are not // blank tags are expected. null tags are not
if (tags is not null && udi.Tags != tags) if (tags is not null)
udi.Tags = tags; udi.Tags = tags;
if (bookStatus is not null && udi.BookStatus != bookStatus.Value) if (bookStatus.HasValue)
udi.BookStatus = bookStatus.Value; udi.BookStatus = bookStatus.Value;
// even though PdfStatus is nullable, there's no case where we'd actually overwrite with null // method handles null logic
if (pdfStatus is not null && udi.PdfStatus != pdfStatus.Value) udi.SetPdfStatus(pdfStatus);
udi.PdfStatus = pdfStatus.Value;
}); });
public static int UpdateBookStatus(this Book book, LiberatedStatus bookStatus) public static int UpdateBookStatus(this Book book, LiberatedStatus bookStatus)
@ -448,13 +447,13 @@ namespace ApplicationServices
=> libraryBooks.UpdateUserDefinedItem(udi => udi.BookStatus = bookStatus); => libraryBooks.UpdateUserDefinedItem(udi => udi.BookStatus = bookStatus);
public static int UpdatePdfStatus(this Book book, LiberatedStatus pdfStatus) public static int UpdatePdfStatus(this Book book, LiberatedStatus pdfStatus)
=> book.UpdateUserDefinedItem(udi => udi.PdfStatus = pdfStatus); => book.UpdateUserDefinedItem(udi => udi.SetPdfStatus(pdfStatus));
public static int UpdatePdfStatus(this IEnumerable<Book> books, LiberatedStatus pdfStatus) public static int UpdatePdfStatus(this IEnumerable<Book> books, LiberatedStatus pdfStatus)
=> books.UpdateUserDefinedItem(udi => udi.PdfStatus = pdfStatus); => books.UpdateUserDefinedItem(udi => udi.SetPdfStatus(pdfStatus));
public static int UpdatePdfStatus(this LibraryBook libraryBook, LiberatedStatus pdfStatus) public static int UpdatePdfStatus(this LibraryBook libraryBook, LiberatedStatus pdfStatus)
=> libraryBook.UpdateUserDefinedItem(udi => udi.PdfStatus = pdfStatus); => libraryBook.UpdateUserDefinedItem(udi => udi.SetPdfStatus(pdfStatus));
public static int UpdatePdfStatus(this IEnumerable<LibraryBook> libraryBooks, LiberatedStatus pdfStatus) public static int UpdatePdfStatus(this IEnumerable<LibraryBook> libraryBooks, LiberatedStatus pdfStatus)
=> libraryBooks.UpdateUserDefinedItem(udi => udi.PdfStatus = pdfStatus); => libraryBooks.UpdateUserDefinedItem(udi => udi.SetPdfStatus(pdfStatus));
public static int UpdateTags(this Book book, string tags) public static int UpdateTags(this Book book, string tags)
=> book.UpdateUserDefinedItem(udi => udi.Tags = tags); => book.UpdateUserDefinedItem(udi => udi.Tags = tags);

View File

@ -146,10 +146,19 @@ namespace DataLayer
} }
} }
} }
public void SetPdfStatus(LiberatedStatus? pdfStatus)
{
// don't change whether pdf is actually available. if null, leave as null. if not null, only assign non-null
// null => non-null : only when adding a supplement
if (pdfStatus.HasValue && PdfStatus.HasValue)
PdfStatus = pdfStatus;
}
public LiberatedStatus? PdfStatus public LiberatedStatus? PdfStatus
{ {
get => _pdfStatus; get => _pdfStatus;
set internal set
{ {
if (_pdfStatus != value) if (_pdfStatus != value)
{ {

View File

@ -34,6 +34,12 @@ namespace LibationAvalonia.Dialogs
new liberatedComboBoxItem { Status = LiberatedStatus.NotLiberated, Text = "Not Downloaded" }, new liberatedComboBoxItem { Status = LiberatedStatus.NotLiberated, Text = "Not Downloaded" },
}; };
public LiberatedStatusBatchManualDialog(bool isPdf) : this()
{
if (isPdf)
this.Title = this.Title.Replace("book", "PDF");
}
public LiberatedStatusBatchManualDialog() public LiberatedStatusBatchManualDialog()
{ {
InitializeComponent(); InitializeComponent();

View File

@ -108,7 +108,7 @@ namespace LibationAvalonia.ViewModels
this.RaisePropertyChanged(nameof(Liberate)); this.RaisePropertyChanged(nameof(Liberate));
break; break;
case nameof(udi.PdfStatus): case nameof(udi.PdfStatus):
Book.UserDefinedItem.PdfStatus = udi.PdfStatus; Book.UserDefinedItem.SetPdfStatus(udi.PdfStatus);
_pdfStatus = udi.PdfStatus; _pdfStatus = udi.PdfStatus;
this.RaisePropertyChanged(nameof(Liberate)); this.RaisePropertyChanged(nameof(Liberate));
break; break;

View File

@ -62,7 +62,7 @@ namespace LibationAvalonia.Views
visibleLibraryBooks.UpdateTags(dialog.NewTags); visibleLibraryBooks.UpdateTags(dialog.NewTags);
} }
public async void setDownloadedManualToolStripMenuItem_Click(object sender, Avalonia.Interactivity.RoutedEventArgs args) public async void setBookDownloadedManualToolStripMenuItem_Click(object sender, Avalonia.Interactivity.RoutedEventArgs args)
{ {
var dialog = new Dialogs.LiberatedStatusBatchManualDialog(); var dialog = new Dialogs.LiberatedStatusBatchManualDialog();
var result = await dialog.ShowDialog<DialogResult>(this); var result = await dialog.ShowDialog<DialogResult>(this);
@ -75,7 +75,7 @@ namespace LibationAvalonia.Views
this, this,
visibleLibraryBooks, visibleLibraryBooks,
// do not use `$` string interpolation. See impl. // do not use `$` string interpolation. See impl.
"Are you sure you want to replace downloaded status in {0}?", "Are you sure you want to replace book downloaded status in {0}?",
"Replace downloaded status?"); "Replace downloaded status?");
if (confirmationResult != DialogResult.Yes) if (confirmationResult != DialogResult.Yes)
@ -84,6 +84,28 @@ namespace LibationAvalonia.Views
visibleLibraryBooks.UpdateBookStatus(dialog.BookLiberatedStatus); visibleLibraryBooks.UpdateBookStatus(dialog.BookLiberatedStatus);
} }
public async void setPdfDownloadedManualToolStripMenuItem_Click(object sender, Avalonia.Interactivity.RoutedEventArgs args)
{
var dialog = new Dialogs.LiberatedStatusBatchManualDialog(isPdf: true);
var result = await dialog.ShowDialog<DialogResult>(this);
if (result != DialogResult.OK)
return;
var visibleLibraryBooks = _viewModel.ProductsDisplay.GetVisibleBookEntries();
var confirmationResult = await MessageBox.ShowConfirmationDialog(
this,
visibleLibraryBooks,
// do not use `$` string interpolation. See impl.
"Are you sure you want to replace PDF downloaded status in {0}?",
"Replace downloaded status?");
if (confirmationResult != DialogResult.Yes)
return;
visibleLibraryBooks.UpdatePdfStatus(dialog.BookLiberatedStatus);
}
public async void setDownloadedAutoToolStripMenuItem_Click(object sender, Avalonia.Interactivity.RoutedEventArgs args) public async void setDownloadedAutoToolStripMenuItem_Click(object sender, Avalonia.Interactivity.RoutedEventArgs args)
{ {
var dialog = new Dialogs.LiberatedStatusBatchAutoDialog(); var dialog = new Dialogs.LiberatedStatusBatchAutoDialog();

View File

@ -110,7 +110,8 @@
</MenuItem.Styles> </MenuItem.Styles>
<MenuItem Click="liberateVisible" Header="{Binding LiberateVisibleToolStripText_2}" IsEnabled="{Binding AnyVisibleNotLiberated}" /> <MenuItem Click="liberateVisible" Header="{Binding LiberateVisibleToolStripText_2}" IsEnabled="{Binding AnyVisibleNotLiberated}" />
<MenuItem Click="replaceTagsToolStripMenuItem_Click" Header="Replace _Tags..." /> <MenuItem Click="replaceTagsToolStripMenuItem_Click" Header="Replace _Tags..." />
<MenuItem Click="setDownloadedManualToolStripMenuItem_Click" Header="Set '_Downloaded' status manually..." /> <MenuItem Click="setBookDownloadedManualToolStripMenuItem_Click" Header="Set book '_Downloaded' status manually..." />
<MenuItem Click="setPdfDownloadedManualToolStripMenuItem_Click" Header="Set _PDF 'Downloaded' status manually..." />
<MenuItem Click="setDownloadedAutoToolStripMenuItem_Click" Header="Set '_Downloaded' status automatically..." /> <MenuItem Click="setDownloadedAutoToolStripMenuItem_Click" Header="Set '_Downloaded' status automatically..." />
<MenuItem Click="removeToolStripMenuItem_Click" Header="_Remove from library..." /> <MenuItem Click="removeToolStripMenuItem_Click" Header="_Remove from library..." />
</MenuItem> </MenuItem>

View File

@ -1,10 +1,6 @@
using System; using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms; using System.Windows.Forms;
using DataLayer; using DataLayer;
using Dinah.Core;
using LibationFileManager;
namespace LibationWinForms.Dialogs namespace LibationWinForms.Dialogs
{ {
@ -19,6 +15,12 @@ namespace LibationWinForms.Dialogs
public override string ToString() => Text; public override string ToString() => Text;
} }
public LiberatedStatusBatchManualDialog(bool isPdf) : this()
{
if (isPdf)
this.Text = this.Text.Replace("book", "PDF");
}
public LiberatedStatusBatchManualDialog() public LiberatedStatusBatchManualDialog()
{ {
InitializeComponent(); InitializeComponent();

View File

@ -57,7 +57,9 @@
this.visibleBooksToolStripMenuItem = new LibationWinForms.FormattableToolStripMenuItem(); this.visibleBooksToolStripMenuItem = new LibationWinForms.FormattableToolStripMenuItem();
this.liberateVisibleToolStripMenuItem_VisibleBooksMenu = new LibationWinForms.FormattableToolStripMenuItem(); this.liberateVisibleToolStripMenuItem_VisibleBooksMenu = new LibationWinForms.FormattableToolStripMenuItem();
this.replaceTagsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.replaceTagsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.setDownloadedManualToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.setBookDownloadedManualToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.setPdfDownloadedManualToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.setDownloadedAutoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.removeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.removeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.settingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.settingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.accountsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.accountsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@ -77,7 +79,6 @@
this.doneRemovingBtn = new System.Windows.Forms.Button(); this.doneRemovingBtn = new System.Windows.Forms.Button();
this.removeBooksBtn = new System.Windows.Forms.Button(); this.removeBooksBtn = new System.Windows.Forms.Button();
this.processBookQueue1 = new LibationWinForms.ProcessQueue.ProcessQueueControl(); this.processBookQueue1 = new LibationWinForms.ProcessQueue.ProcessQueueControl();
this.setDownloadedAutoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.menuStrip1.SuspendLayout(); this.menuStrip1.SuspendLayout();
this.statusStrip1.SuspendLayout(); this.statusStrip1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
@ -101,7 +102,7 @@
// filterBtn // filterBtn
// //
this.filterBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.filterBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.filterBtn.Location = new System.Drawing.Point(892, 3); this.filterBtn.Location = new System.Drawing.Point(884, 3);
this.filterBtn.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); this.filterBtn.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
this.filterBtn.Name = "filterBtn"; this.filterBtn.Name = "filterBtn";
this.filterBtn.Size = new System.Drawing.Size(88, 27); this.filterBtn.Size = new System.Drawing.Size(88, 27);
@ -118,7 +119,7 @@
this.filterSearchTb.Location = new System.Drawing.Point(195, 5); this.filterSearchTb.Location = new System.Drawing.Point(195, 5);
this.filterSearchTb.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); this.filterSearchTb.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
this.filterSearchTb.Name = "filterSearchTb"; this.filterSearchTb.Name = "filterSearchTb";
this.filterSearchTb.Size = new System.Drawing.Size(689, 25); this.filterSearchTb.Size = new System.Drawing.Size(681, 25);
this.filterSearchTb.TabIndex = 1; this.filterSearchTb.TabIndex = 1;
this.filterSearchTb.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.filterSearchTb_KeyPress); this.filterSearchTb.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.filterSearchTb_KeyPress);
// //
@ -136,7 +137,7 @@
this.menuStrip1.Location = new System.Drawing.Point(0, 0); this.menuStrip1.Location = new System.Drawing.Point(0, 0);
this.menuStrip1.Name = "menuStrip1"; this.menuStrip1.Name = "menuStrip1";
this.menuStrip1.Padding = new System.Windows.Forms.Padding(7, 2, 0, 2); this.menuStrip1.Padding = new System.Windows.Forms.Padding(7, 2, 0, 2);
this.menuStrip1.Size = new System.Drawing.Size(1037, 24); this.menuStrip1.Size = new System.Drawing.Size(1025, 24);
this.menuStrip1.TabIndex = 0; this.menuStrip1.TabIndex = 0;
this.menuStrip1.Text = "menuStrip1"; this.menuStrip1.Text = "menuStrip1";
// //
@ -316,7 +317,8 @@
this.visibleBooksToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.visibleBooksToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.liberateVisibleToolStripMenuItem_VisibleBooksMenu, this.liberateVisibleToolStripMenuItem_VisibleBooksMenu,
this.replaceTagsToolStripMenuItem, this.replaceTagsToolStripMenuItem,
this.setDownloadedManualToolStripMenuItem, this.setBookDownloadedManualToolStripMenuItem,
this.setPdfDownloadedManualToolStripMenuItem,
this.setDownloadedAutoToolStripMenuItem, this.setDownloadedAutoToolStripMenuItem,
this.removeToolStripMenuItem}); this.removeToolStripMenuItem});
this.visibleBooksToolStripMenuItem.FormatText = "&Visible Books: {0}"; this.visibleBooksToolStripMenuItem.FormatText = "&Visible Books: {0}";
@ -328,28 +330,42 @@
// //
this.liberateVisibleToolStripMenuItem_VisibleBooksMenu.FormatText = "&Liberate: {0}"; this.liberateVisibleToolStripMenuItem_VisibleBooksMenu.FormatText = "&Liberate: {0}";
this.liberateVisibleToolStripMenuItem_VisibleBooksMenu.Name = "liberateVisibleToolStripMenuItem_VisibleBooksMenu"; this.liberateVisibleToolStripMenuItem_VisibleBooksMenu.Name = "liberateVisibleToolStripMenuItem_VisibleBooksMenu";
this.liberateVisibleToolStripMenuItem_VisibleBooksMenu.Size = new System.Drawing.Size(284, 22); this.liberateVisibleToolStripMenuItem_VisibleBooksMenu.Size = new System.Drawing.Size(314, 22);
this.liberateVisibleToolStripMenuItem_VisibleBooksMenu.Text = "&Liberate: {0}"; this.liberateVisibleToolStripMenuItem_VisibleBooksMenu.Text = "&Liberate: {0}";
this.liberateVisibleToolStripMenuItem_VisibleBooksMenu.Click += new System.EventHandler(this.liberateVisible); this.liberateVisibleToolStripMenuItem_VisibleBooksMenu.Click += new System.EventHandler(this.liberateVisible);
// //
// replaceTagsToolStripMenuItem // replaceTagsToolStripMenuItem
// //
this.replaceTagsToolStripMenuItem.Name = "replaceTagsToolStripMenuItem"; this.replaceTagsToolStripMenuItem.Name = "replaceTagsToolStripMenuItem";
this.replaceTagsToolStripMenuItem.Size = new System.Drawing.Size(284, 22); this.replaceTagsToolStripMenuItem.Size = new System.Drawing.Size(314, 22);
this.replaceTagsToolStripMenuItem.Text = "Replace &Tags..."; this.replaceTagsToolStripMenuItem.Text = "Replace &Tags...";
this.replaceTagsToolStripMenuItem.Click += new System.EventHandler(this.replaceTagsToolStripMenuItem_Click); this.replaceTagsToolStripMenuItem.Click += new System.EventHandler(this.replaceTagsToolStripMenuItem_Click);
// //
// setDownloadedManualToolStripMenuItem // setBookDownloadedManualToolStripMenuItem
// //
this.setDownloadedManualToolStripMenuItem.Name = "setDownloadedManualToolStripMenuItem"; this.setBookDownloadedManualToolStripMenuItem.Name = "setBookDownloadedManualToolStripMenuItem";
this.setDownloadedManualToolStripMenuItem.Size = new System.Drawing.Size(284, 22); this.setBookDownloadedManualToolStripMenuItem.Size = new System.Drawing.Size(314, 22);
this.setDownloadedManualToolStripMenuItem.Text = "Set \'&Downloaded\' status manually..."; this.setBookDownloadedManualToolStripMenuItem.Text = "Set book \'&Downloaded\' status manually...";
this.setDownloadedManualToolStripMenuItem.Click += new System.EventHandler(this.setDownloadedManualToolStripMenuItem_Click); this.setBookDownloadedManualToolStripMenuItem.Click += new System.EventHandler(this.setBookDownloadedManualToolStripMenuItem_Click);
//
// setPdfDownloadedManualToolStripMenuItem
//
this.setPdfDownloadedManualToolStripMenuItem.Name = "setPdfDownloadedManualToolStripMenuItem";
this.setPdfDownloadedManualToolStripMenuItem.Size = new System.Drawing.Size(314, 22);
this.setPdfDownloadedManualToolStripMenuItem.Text = "Set &PDF \'Downloaded\' status manually...";
this.setPdfDownloadedManualToolStripMenuItem.Click += new System.EventHandler(this.setPdfDownloadedManualToolStripMenuItem_Click);
//
// setDownloadedAutoToolStripMenuItem
//
this.setDownloadedAutoToolStripMenuItem.Name = "setDownloadedAutoToolStripMenuItem";
this.setDownloadedAutoToolStripMenuItem.Size = new System.Drawing.Size(314, 22);
this.setDownloadedAutoToolStripMenuItem.Text = "Set book \'Downloaded\' status &automatically...";
this.setDownloadedAutoToolStripMenuItem.Click += new System.EventHandler(this.setDownloadedAutoToolStripMenuItem_Click);
// //
// removeToolStripMenuItem // removeToolStripMenuItem
// //
this.removeToolStripMenuItem.Name = "removeToolStripMenuItem"; this.removeToolStripMenuItem.Name = "removeToolStripMenuItem";
this.removeToolStripMenuItem.Size = new System.Drawing.Size(284, 22); this.removeToolStripMenuItem.Size = new System.Drawing.Size(314, 22);
this.removeToolStripMenuItem.Text = "&Remove from library..."; this.removeToolStripMenuItem.Text = "&Remove from library...";
this.removeToolStripMenuItem.Click += new System.EventHandler(this.removeToolStripMenuItem_Click); this.removeToolStripMenuItem.Click += new System.EventHandler(this.removeToolStripMenuItem_Click);
// //
@ -402,7 +418,7 @@
this.statusStrip1.Name = "statusStrip1"; this.statusStrip1.Name = "statusStrip1";
this.statusStrip1.Padding = new System.Windows.Forms.Padding(1, 0, 16, 0); this.statusStrip1.Padding = new System.Windows.Forms.Padding(1, 0, 16, 0);
this.statusStrip1.ShowItemToolTips = true; this.statusStrip1.ShowItemToolTips = true;
this.statusStrip1.Size = new System.Drawing.Size(1033, 22); this.statusStrip1.Size = new System.Drawing.Size(1025, 22);
this.statusStrip1.TabIndex = 6; this.statusStrip1.TabIndex = 6;
this.statusStrip1.Text = "statusStrip1"; this.statusStrip1.Text = "statusStrip1";
// //
@ -416,7 +432,7 @@
// springLbl // springLbl
// //
this.springLbl.Name = "springLbl"; this.springLbl.Name = "springLbl";
this.springLbl.Size = new System.Drawing.Size(519, 17); this.springLbl.Size = new System.Drawing.Size(511, 17);
this.springLbl.Spring = true; this.springLbl.Spring = true;
// //
// backupsCountsLbl // backupsCountsLbl
@ -460,7 +476,7 @@
// //
this.splitContainer1.Panel2.Controls.Add(this.processBookQueue1); this.splitContainer1.Panel2.Controls.Add(this.processBookQueue1);
this.splitContainer1.Size = new System.Drawing.Size(1463, 640); this.splitContainer1.Size = new System.Drawing.Size(1463, 640);
this.splitContainer1.SplitterDistance = 1033; this.splitContainer1.SplitterDistance = 1025;
this.splitContainer1.SplitterWidth = 8; this.splitContainer1.SplitterWidth = 8;
this.splitContainer1.TabIndex = 7; this.splitContainer1.TabIndex = 7;
// //
@ -479,7 +495,7 @@
this.panel1.Location = new System.Drawing.Point(0, 24); this.panel1.Location = new System.Drawing.Point(0, 24);
this.panel1.Margin = new System.Windows.Forms.Padding(0); this.panel1.Margin = new System.Windows.Forms.Padding(0);
this.panel1.Name = "panel1"; this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(1033, 594); this.panel1.Size = new System.Drawing.Size(1025, 594);
this.panel1.TabIndex = 7; this.panel1.TabIndex = 7;
// //
// productsDisplay // productsDisplay
@ -491,7 +507,7 @@
this.productsDisplay.Location = new System.Drawing.Point(15, 36); this.productsDisplay.Location = new System.Drawing.Point(15, 36);
this.productsDisplay.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); this.productsDisplay.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
this.productsDisplay.Name = "productsDisplay"; this.productsDisplay.Name = "productsDisplay";
this.productsDisplay.Size = new System.Drawing.Size(1007, 555); this.productsDisplay.Size = new System.Drawing.Size(999, 555);
this.productsDisplay.TabIndex = 9; this.productsDisplay.TabIndex = 9;
this.productsDisplay.VisibleCountChanged += new System.EventHandler<int>(this.productsDisplay_VisibleCountChanged); this.productsDisplay.VisibleCountChanged += new System.EventHandler<int>(this.productsDisplay_VisibleCountChanged);
this.productsDisplay.RemovableCountChanged += new System.EventHandler<int>(this.productsDisplay_RemovableCountChanged); this.productsDisplay.RemovableCountChanged += new System.EventHandler<int>(this.productsDisplay_RemovableCountChanged);
@ -501,7 +517,7 @@
// toggleQueueHideBtn // toggleQueueHideBtn
// //
this.toggleQueueHideBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.toggleQueueHideBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.toggleQueueHideBtn.Location = new System.Drawing.Point(985, 3); this.toggleQueueHideBtn.Location = new System.Drawing.Point(977, 3);
this.toggleQueueHideBtn.Margin = new System.Windows.Forms.Padding(4, 3, 15, 3); this.toggleQueueHideBtn.Margin = new System.Windows.Forms.Padding(4, 3, 15, 3);
this.toggleQueueHideBtn.Name = "toggleQueueHideBtn"; this.toggleQueueHideBtn.Name = "toggleQueueHideBtn";
this.toggleQueueHideBtn.Size = new System.Drawing.Size(33, 27); this.toggleQueueHideBtn.Size = new System.Drawing.Size(33, 27);
@ -542,16 +558,9 @@
this.processBookQueue1.Location = new System.Drawing.Point(0, 0); this.processBookQueue1.Location = new System.Drawing.Point(0, 0);
this.processBookQueue1.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); this.processBookQueue1.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.processBookQueue1.Name = "processBookQueue1"; this.processBookQueue1.Name = "processBookQueue1";
this.processBookQueue1.Size = new System.Drawing.Size(422, 640); this.processBookQueue1.Size = new System.Drawing.Size(430, 640);
this.processBookQueue1.TabIndex = 0; this.processBookQueue1.TabIndex = 0;
// //
// setDownloadedAutoToolStripMenuItem
//
this.setDownloadedAutoToolStripMenuItem.Name = "setDownloadedAutoToolStripMenuItem";
this.setDownloadedAutoToolStripMenuItem.Size = new System.Drawing.Size(284, 22);
this.setDownloadedAutoToolStripMenuItem.Text = "Set \'&Downloaded\' status automatically...";
this.setDownloadedAutoToolStripMenuItem.Click += new System.EventHandler(this.setDownloadedAutoToolStripMenuItem_Click);
//
// Form1 // Form1
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
@ -618,7 +627,7 @@
private LibationWinForms.FormattableToolStripMenuItem visibleBooksToolStripMenuItem; private LibationWinForms.FormattableToolStripMenuItem visibleBooksToolStripMenuItem;
private LibationWinForms.FormattableToolStripMenuItem liberateVisibleToolStripMenuItem_VisibleBooksMenu; private LibationWinForms.FormattableToolStripMenuItem liberateVisibleToolStripMenuItem_VisibleBooksMenu;
private System.Windows.Forms.ToolStripMenuItem replaceTagsToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem replaceTagsToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem setDownloadedManualToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem setBookDownloadedManualToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem setDownloadedAutoToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem setDownloadedAutoToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem removeToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem removeToolStripMenuItem;
private LibationWinForms.FormattableToolStripMenuItem liberateVisibleToolStripMenuItem_LiberateMenu; private LibationWinForms.FormattableToolStripMenuItem liberateVisibleToolStripMenuItem_LiberateMenu;
@ -629,5 +638,6 @@
private LibationWinForms.GridView.ProductsDisplay productsDisplay; private LibationWinForms.GridView.ProductsDisplay productsDisplay;
private System.Windows.Forms.Button removeBooksBtn; private System.Windows.Forms.Button removeBooksBtn;
private System.Windows.Forms.Button doneRemovingBtn; private System.Windows.Forms.Button doneRemovingBtn;
private System.Windows.Forms.ToolStripMenuItem setPdfDownloadedManualToolStripMenuItem;
} }
} }

View File

@ -90,7 +90,7 @@ namespace LibationWinForms
visibleLibraryBooks.UpdateTags(dialog.NewTags); visibleLibraryBooks.UpdateTags(dialog.NewTags);
} }
private void setDownloadedManualToolStripMenuItem_Click(object sender, EventArgs e) private void setBookDownloadedManualToolStripMenuItem_Click(object sender, EventArgs e)
{ {
var dialog = new LiberatedStatusBatchManualDialog(); var dialog = new LiberatedStatusBatchManualDialog();
var result = dialog.ShowDialog(); var result = dialog.ShowDialog();
@ -102,7 +102,7 @@ namespace LibationWinForms
var confirmationResult = MessageBoxLib.ShowConfirmationDialog( var confirmationResult = MessageBoxLib.ShowConfirmationDialog(
visibleLibraryBooks, visibleLibraryBooks,
// do not use `$` string interpolation. See impl. // do not use `$` string interpolation. See impl.
"Are you sure you want to replace downloaded status in {0}?", "Are you sure you want to replace book downloaded status in {0}?",
"Replace downloaded status?"); "Replace downloaded status?");
if (confirmationResult != DialogResult.Yes) if (confirmationResult != DialogResult.Yes)
@ -111,6 +111,27 @@ namespace LibationWinForms
visibleLibraryBooks.UpdateBookStatus(dialog.BookLiberatedStatus); visibleLibraryBooks.UpdateBookStatus(dialog.BookLiberatedStatus);
} }
private void setPdfDownloadedManualToolStripMenuItem_Click(object sender, EventArgs e)
{
var dialog = new LiberatedStatusBatchManualDialog(isPdf: true);
var result = dialog.ShowDialog();
if (result != DialogResult.OK)
return;
var visibleLibraryBooks = productsDisplay.GetVisible();
var confirmationResult = MessageBoxLib.ShowConfirmationDialog(
visibleLibraryBooks,
// do not use `$` string interpolation. See impl.
"Are you sure you want to replace PDF downloaded status in {0}?",
"Replace downloaded status?");
if (confirmationResult != DialogResult.Yes)
return;
visibleLibraryBooks.UpdatePdfStatus(dialog.BookLiberatedStatus);
}
private async void setDownloadedAutoToolStripMenuItem_Click(object sender, EventArgs e) private async void setDownloadedAutoToolStripMenuItem_Click(object sender, EventArgs e)
{ {
var dialog = new LiberatedStatusBatchAutoDialog(); var dialog = new LiberatedStatusBatchAutoDialog();

View File

@ -122,7 +122,7 @@ namespace LibationWinForms.GridView
NotifyPropertyChanged(nameof(Liberate)); NotifyPropertyChanged(nameof(Liberate));
break; break;
case nameof(udi.PdfStatus): case nameof(udi.PdfStatus):
Book.UserDefinedItem.PdfStatus = udi.PdfStatus; Book.UserDefinedItem.SetPdfStatus(udi.PdfStatus);
_pdfStatus = udi.PdfStatus; _pdfStatus = udi.PdfStatus;
NotifyPropertyChanged(nameof(Liberate)); NotifyPropertyChanged(nameof(Liberate));
break; break;