73 lines
2.0 KiB
C#
73 lines
2.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Windows.Forms;
|
|
using DataLayer;
|
|
using Dinah.Core;
|
|
|
|
namespace LibationWinForms.Dialogs
|
|
{
|
|
public partial class BookDetailsDialog : Form
|
|
{
|
|
public string NewTags { get; private set; }
|
|
|
|
private LibraryBook _libraryBook { get; }
|
|
private Book Book => _libraryBook.Book;
|
|
|
|
public BookDetailsDialog()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
public BookDetailsDialog(LibraryBook libraryBook) : this()
|
|
{
|
|
_libraryBook = ArgumentValidator.EnsureNotNull(libraryBook, nameof(libraryBook));
|
|
initDetails();
|
|
initTags();
|
|
//initLiberated();
|
|
}
|
|
// 1st draft: lazily cribbed from GridEntry.ctor()
|
|
private void initDetails()
|
|
{
|
|
this.Text = Book.Title;
|
|
|
|
(var isDefault, var picture) = FileManager.PictureStorage.GetPicture(new FileManager.PictureDefinition(Book.PictureId, FileManager.PictureSize._80x80));
|
|
this.coverPb.Image = Dinah.Core.Drawing.ImageReader.ToImage(picture);
|
|
|
|
var t = @$"
|
|
Title: {Book.Title}
|
|
Author(s): {Book.AuthorNames}
|
|
Narrator(s): {Book.NarratorNames}
|
|
Length: {(Book.LengthInMinutes == 0 ? "" : $"{Book.LengthInMinutes / 60} hr {Book.LengthInMinutes % 60} min")}
|
|
Category: {string.Join(" > ", Book.CategoriesNames)}
|
|
Purchase Date: {_libraryBook.DateAdded.ToString("d")}
|
|
".Trim();
|
|
|
|
if (!string.IsNullOrWhiteSpace(Book.SeriesNames))
|
|
t += $"\r\nSeries: {Book.SeriesNames}";
|
|
|
|
var bookRating = Book.Rating?.ToStarString();
|
|
if (!string.IsNullOrWhiteSpace(bookRating))
|
|
t += $"\r\nBook Rating:\r\n{bookRating}";
|
|
|
|
var myRating = Book.UserDefinedItem.Rating?.ToStarString();
|
|
if (!string.IsNullOrWhiteSpace(myRating))
|
|
t += $"\r\nMy Rating:\r\n{myRating}";
|
|
|
|
this.detailsTb.Text = t;
|
|
}
|
|
private void initTags() => this.newTagsTb.Text = Book.UserDefinedItem.Tags;
|
|
|
|
private void saveBtn_Click(object sender, EventArgs e)
|
|
{
|
|
NewTags = this.newTagsTb.Text;
|
|
this.DialogResult = DialogResult.OK;
|
|
}
|
|
|
|
private void cancelBtn_Click(object sender, EventArgs e)
|
|
{
|
|
this.DialogResult = DialogResult.Cancel;
|
|
this.Close();
|
|
}
|
|
}
|
|
}
|