diff --git a/Source/LibationAvalonia/Views/ProductsDisplay.axaml b/Source/LibationAvalonia/Views/ProductsDisplay.axaml index 640391e4..4c7e8804 100644 --- a/Source/LibationAvalonia/Views/ProductsDisplay.axaml +++ b/Source/LibationAvalonia/Views/ProductsDisplay.axaml @@ -148,7 +148,7 @@ - + diff --git a/Source/LibationAvalonia/Views/ProductsDisplay.axaml.cs b/Source/LibationAvalonia/Views/ProductsDisplay.axaml.cs index 00a3eb95..4ba3516d 100644 --- a/Source/LibationAvalonia/Views/ProductsDisplay.axaml.cs +++ b/Source/LibationAvalonia/Views/ProductsDisplay.axaml.cs @@ -536,7 +536,7 @@ namespace LibationAvalonia.Views var displayWindow = new DescriptionDisplayDialog { SpawnLocation = new Point(pt.X, pt.Y), - DescriptionText = gEntry.LongDescription, + DescriptionText = gEntry.Description, }; void CloseWindow(object o, DataGridRowEventArgs e) diff --git a/Source/LibationUiBase/GridView/GridEntry[TStatus].cs b/Source/LibationUiBase/GridView/GridEntry[TStatus].cs index 9166c326..11e845f5 100644 --- a/Source/LibationUiBase/GridView/GridEntry[TStatus].cs +++ b/Source/LibationUiBase/GridView/GridEntry[TStatus].cs @@ -27,7 +27,6 @@ namespace LibationUiBase.GridView [Browsable(false)] public string AudibleProductId => Book.AudibleProductId; [Browsable(false)] public LibraryBook LibraryBook { get; protected set; } [Browsable(false)] public float SeriesIndex { get; protected set; } - [Browsable(false)] public string LongDescription { get; protected set; } [Browsable(false)] public abstract DateTime DateAdded { get; } [Browsable(false)] public Book Book => LibraryBook.Book; @@ -109,9 +108,7 @@ namespace LibationUiBase.GridView Series = Book.SeriesNames(includeIndex: true); SeriesOrder = new SeriesOrder(Book.SeriesLink); Length = GetBookLengthString(); - //Ratings are changed using Update(), which is a problem for Avalonia data bindings because - //the reference doesn't change. Clone the rating so that it updates within Avalonia properly. - _myRating = new Rating(Book.UserDefinedItem.Rating.OverallRating, Book.UserDefinedItem.Rating.PerformanceRating, Book.UserDefinedItem.Rating.StoryRating); + RaiseAndSetIfChanged(ref _myRating, Book.UserDefinedItem.Rating, nameof(MyRating)); PurchaseDate = GetPurchaseDateString(); ProductRating = Book.Rating ?? new Rating(0, 0, 0); Authors = Book.AuthorNames(); @@ -119,13 +116,10 @@ namespace LibationUiBase.GridView Category = string.Join(", ", Book.LowestCategoryNames()); Misc = GetMiscDisplay(libraryBook); LastDownload = new(Book.UserDefinedItem); - LongDescription = GetDescriptionDisplay(Book); - Description = LongDescription;// TrimTextToWord(LongDescription, 62); + Description = GetDescriptionDisplay(Book); SeriesIndex = Book.SeriesLink.FirstOrDefault()?.Index ?? 0; BookTags = GetBookTags(); - RaisePropertyChanged(nameof(MyRating)); - UserDefinedItem.ItemChanged += UserDefinedItem_ItemChanged; } @@ -182,6 +176,8 @@ namespace LibationUiBase.GridView break; case nameof(udi.Rating): _myRating = udi.Rating; + //Ratings are changed using Update(), which is a problem for Avalonia data bindings because + //the reference doesn't change. Must call RaisePropertyChanged instead of RaiseAndSetIfChanged RaisePropertyChanged(nameof(MyRating)); break; } diff --git a/Source/LibationUiBase/GridView/IGridEntry.cs b/Source/LibationUiBase/GridView/IGridEntry.cs index f9aaacb5..ed3ebb9a 100644 --- a/Source/LibationUiBase/GridView/IGridEntry.cs +++ b/Source/LibationUiBase/GridView/IGridEntry.cs @@ -10,7 +10,6 @@ namespace LibationUiBase.GridView EntryStatus Liberate { get; } float SeriesIndex { get; } string AudibleProductId { get; } - string LongDescription { get; } LibraryBook LibraryBook { get; } Book Book { get; } DateTime DateAdded { get; } diff --git a/Source/LibationWinForms/GridView/ProductsDisplay.cs b/Source/LibationWinForms/GridView/ProductsDisplay.cs index dc1460c7..9b02d38d 100644 --- a/Source/LibationWinForms/GridView/ProductsDisplay.cs +++ b/Source/LibationWinForms/GridView/ProductsDisplay.cs @@ -75,7 +75,7 @@ namespace LibationWinForms.GridView var displayWindow = new DescriptionDisplay { SpawnLocation = PointToScreen(cellRectangle.Location + new Size(cellRectangle.Width, 0)), - DescriptionText = liveGridEntry.LongDescription, + DescriptionText = liveGridEntry.Description, BorderThickness = 2, };