More migrations to Avalonia 11.0.0-preview6

This commit is contained in:
Michael Bucari-Tovo 2023-03-26 22:16:58 -06:00 committed by Mbucari
parent 68af6a5ebb
commit 090871f50d
81 changed files with 380 additions and 469 deletions

View File

@ -1,5 +1,4 @@
using NPOI.XWPF.UserModel; using System;
using System;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
namespace AppScaffolding namespace AppScaffolding

View File

@ -12,7 +12,6 @@ using DtoImporterService;
using FileManager; using FileManager;
using LibationFileManager; using LibationFileManager;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using NPOI.OpenXmlFormats.Spreadsheet;
using Serilog; using Serilog;
using static DtoImporterService.PerfLogger; using static DtoImporterService.PerfLogger;

View File

@ -1,18 +1,18 @@
using Avalonia; using ApplicationServices;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes; using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Markup.Xaml; using Avalonia.Markup.Xaml;
using Avalonia.Media; using Avalonia.Media;
using LibationFileManager;
using LibationAvalonia.Views;
using System;
using Avalonia.Platform; using Avalonia.Platform;
using Avalonia.Styling;
using LibationAvalonia.Dialogs; using LibationAvalonia.Dialogs;
using System.Threading.Tasks; using LibationAvalonia.Views;
using LibationFileManager;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using ApplicationServices; using System.Threading.Tasks;
using Avalonia.Controls;
using Avalonia.Styling;
namespace LibationAvalonia namespace LibationAvalonia
{ {

View File

@ -3,9 +3,6 @@ using Avalonia.Collections;
using Avalonia.Controls; using Avalonia.Controls;
using LibationAvalonia.ViewModels; using LibationAvalonia.ViewModels;
using ReactiveUI; using ReactiveUI;
using System;
using System.Collections.Generic;
using System.Linq;
namespace LibationAvalonia.Controls namespace LibationAvalonia.Controls
{ {

View File

@ -15,7 +15,7 @@ namespace LibationAvalonia.Controls
static DataGridContextMenus() static DataGridContextMenus()
{ {
ContextMenu.Items = MenuItems; ContextMenu.ItemsSource = MenuItems;
OwningColumnProperty = typeof(DataGridCell).GetProperty("OwningColumn", BindingFlags.Instance | BindingFlags.NonPublic); OwningColumnProperty = typeof(DataGridCell).GetProperty("OwningColumn", BindingFlags.Instance | BindingFlags.NonPublic);
} }

View File

@ -4,7 +4,6 @@ using Avalonia.Data;
using Avalonia.Interactivity; using Avalonia.Interactivity;
using DataLayer; using DataLayer;
using ReactiveUI; using ReactiveUI;
using System;
namespace LibationAvalonia.Controls namespace LibationAvalonia.Controls
{ {

View File

@ -1,6 +1,4 @@
using Avalonia.Controls; using Avalonia.Controls;
using System;
using System.Linq;
namespace LibationAvalonia.Controls namespace LibationAvalonia.Controls
{ {

View File

@ -1,10 +1,9 @@
using Avalonia; using Avalonia;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using Dinah.Core; using Dinah.Core;
using LibationFileManager; using LibationFileManager;
using System.Collections.Generic;
using ReactiveUI; using ReactiveUI;
using System.Collections.Generic;
using System.Linq; using System.Linq;
namespace LibationAvalonia.Controls namespace LibationAvalonia.Controls

View File

@ -1,13 +1,12 @@
using Avalonia; using Avalonia;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Markup.Xaml; using Avalonia.Data;
using Avalonia.Data.Converters;
using Dinah.Core; using Dinah.Core;
using LibationFileManager; using LibationFileManager;
using System.Collections.Generic;
using Avalonia.Data.Converters;
using System; using System;
using System.Collections.Generic;
using System.Globalization; using System.Globalization;
using Avalonia.Data;
using System.IO; using System.IO;
using System.Reactive.Subjects; using System.Reactive.Subjects;

View File

@ -1,6 +1,5 @@
using Avalonia; using Avalonia;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace LibationAvalonia.Controls namespace LibationAvalonia.Controls
{ {

View File

@ -1,8 +1,5 @@
using Avalonia;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Input; using Avalonia.Input;
using Avalonia.Markup.Xaml;
using Avalonia.Media;
using Avalonia.Styling; using Avalonia.Styling;
using System; using System;

View File

@ -1,11 +1,7 @@
using Avalonia;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Input; using Avalonia.Input;
using Avalonia.Markup.Xaml;
using Avalonia.Styling; using Avalonia.Styling;
using System; using System;
using System.Collections;
using System.Linq;
namespace LibationAvalonia.Controls namespace LibationAvalonia.Controls
{ {

View File

@ -1,17 +1,14 @@
using AudibleApi;
using AudibleUtilities; using AudibleUtilities;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Markup.Xaml; using Avalonia.Platform.Storage;
using ReactiveUI;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using ReactiveUI;
using AudibleApi;
using Avalonia.Platform.Storage;
using LibationFileManager;
using Avalonia.Platform.Storage.FileIO;
namespace LibationAvalonia.Dialogs namespace LibationAvalonia.Dialogs
{ {

View File

@ -1,11 +1,10 @@
using ApplicationServices; using ApplicationServices;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using Avalonia.Media.Imaging; using Avalonia.Media.Imaging;
using DataLayer; using DataLayer;
using Dinah.Core; using Dinah.Core;
using LibationFileManager;
using LibationAvalonia.ViewModels; using LibationAvalonia.ViewModels;
using LibationFileManager;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Linq; using System.Linq;

View File

@ -1,6 +1,5 @@
using Avalonia; using Avalonia;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using System; using System;
namespace LibationAvalonia.Dialogs namespace LibationAvalonia.Dialogs
@ -12,9 +11,7 @@ namespace LibationAvalonia.Dialogs
public DescriptionDisplayDialog() public DescriptionDisplayDialog()
{ {
InitializeComponent(); InitializeComponent();
#if DEBUG
this.AttachDevTools();
#endif
DescriptionTextBox = this.FindControl<TextBox>(nameof(DescriptionTextBox)); DescriptionTextBox = this.FindControl<TextBox>(nameof(DescriptionTextBox));
this.Activated += DescriptionDisplay_Activated; this.Activated += DescriptionDisplay_Activated;
Opened += DescriptionDisplay_Opened; Opened += DescriptionDisplay_Opened;

View File

@ -1,5 +1,4 @@
using Avalonia; using Avalonia.Controls;
using Avalonia.Controls;
using LibationFileManager; using LibationFileManager;
using System; using System;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -17,10 +16,6 @@ namespace LibationAvalonia.Dialogs
this.Initialized += DialogWindow_Initialized; this.Initialized += DialogWindow_Initialized;
this.Opened += DialogWindow_Opened; this.Opened += DialogWindow_Opened;
this.Closing += DialogWindow_Closing; this.Closing += DialogWindow_Closing;
#if DEBUG
this.AttachDevTools();
#endif
} }
public DialogWindow(bool saveAndRestorePosition) : this() public DialogWindow(bool saveAndRestorePosition) : this()
{ {

View File

@ -1,9 +1,9 @@
using AudibleUtilities; using AudibleUtilities;
using Avalonia.Controls; using Avalonia.Controls;
using LibationFileManager; using LibationFileManager;
using ReactiveUI;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Linq; using System.Linq;
using ReactiveUI;
namespace LibationAvalonia.Dialogs namespace LibationAvalonia.Dialogs
{ {

View File

@ -1,12 +1,11 @@
using Avalonia.Collections;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Markup.Xaml; using Avalonia.Data;
using FileManager; using FileManager;
using LibationFileManager; using LibationFileManager;
using System.Collections.Generic;
using ReactiveUI; using ReactiveUI;
using System.Collections.Generic;
using System.Linq; using System.Linq;
using Avalonia.Collections;
using Avalonia.Data;
namespace LibationAvalonia.Dialogs namespace LibationAvalonia.Dialogs
{ {

View File

@ -1,17 +1,15 @@
using Avalonia.Markup.Xaml; using Avalonia.Collections;
using Avalonia.Controls;
using Avalonia.Controls.Documents;
using Avalonia.Markup.Xaml;
using Avalonia.Media; using Avalonia.Media;
using Dinah.Core; using Dinah.Core;
using LibationFileManager; using LibationFileManager;
using ReactiveUI;
using System; using System;
using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using ReactiveUI;
using Avalonia.Controls.Documents;
using Avalonia.Collections;
using Avalonia.Controls;
using Avalonia.Markup.Xaml.Templates;
namespace LibationAvalonia.Dialogs namespace LibationAvalonia.Dialogs
{ {

View File

@ -1,9 +1,8 @@
using Avalonia.Markup.Xaml;
using Avalonia.Media.Imaging; using Avalonia.Media.Imaging;
using Avalonia.Platform.Storage;
using ReactiveUI;
using System; using System;
using System.ComponentModel; using System.ComponentModel;
using ReactiveUI;
using Avalonia.Platform.Storage;
namespace LibationAvalonia.Dialogs namespace LibationAvalonia.Dialogs
{ {

View File

@ -1,10 +1,6 @@
using Avalonia;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using LibationFileManager; using LibationFileManager;
using LibationAvalonia.Controls;
using System.Collections.Generic; using System.Collections.Generic;
using System.Threading.Tasks;
namespace LibationAvalonia.Dialogs namespace LibationAvalonia.Dialogs
{ {
@ -28,9 +24,6 @@ namespace LibationAvalonia.Dialogs
{ {
InitializeComponent(); InitializeComponent();
#if DEBUG
this.AttachDevTools();
#endif
DataContext = dirSelectOptions = new(); DataContext = dirSelectOptions = new();
} }

View File

@ -1,5 +1,3 @@
using Avalonia.Markup.Xaml;
namespace LibationAvalonia.Dialogs namespace LibationAvalonia.Dialogs
{ {
public partial class LiberatedStatusBatchAutoDialog : DialogWindow public partial class LiberatedStatusBatchAutoDialog : DialogWindow

View File

@ -1,4 +1,3 @@
using Avalonia.Markup.Xaml;
using DataLayer; using DataLayer;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;

View File

@ -2,7 +2,6 @@ using ApplicationServices;
using Avalonia.Collections; using Avalonia.Collections;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Platform.Storage; using Avalonia.Platform.Storage;
using Avalonia.Platform.Storage.FileIO;
using DataLayer; using DataLayer;
using LibationAvalonia.ViewModels; using LibationAvalonia.ViewModels;
using LibationFileManager; using LibationFileManager;

View File

@ -1,6 +1,3 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace LibationAvalonia.Dialogs.Login namespace LibationAvalonia.Dialogs.Login

View File

@ -1,7 +1,6 @@
using System; using AudibleApi;
using System.Threading.Tasks;
using AudibleApi;
using AudibleUtilities; using AudibleUtilities;
using System.Threading.Tasks;
namespace LibationAvalonia.Dialogs.Login namespace LibationAvalonia.Dialogs.Login
{ {

View File

@ -1,7 +1,7 @@
using System; using AudibleApi;
using System.Threading.Tasks;
using AudibleApi;
using AudibleUtilities; using AudibleUtilities;
using System;
using System.Threading.Tasks;
namespace LibationAvalonia.Dialogs.Login namespace LibationAvalonia.Dialogs.Login
{ {

View File

@ -1,5 +1,4 @@
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using Avalonia.Media.Imaging; using Avalonia.Media.Imaging;
using LibationAvalonia.ViewModels; using LibationAvalonia.ViewModels;
using ReactiveUI; using ReactiveUI;

View File

@ -1,7 +1,5 @@
using AudibleUtilities; using AudibleUtilities;
using Avalonia;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using Dinah.Core; using Dinah.Core;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;

View File

@ -1,8 +1,6 @@
using AudibleApi; using AudibleApi;
using AudibleUtilities; using AudibleUtilities;
using Avalonia;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;

View File

@ -1,7 +1,6 @@
using AudibleUtilities; using AudibleUtilities;
using Avalonia; using Avalonia;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using Dinah.Core; using Dinah.Core;
using System; using System;
using System.Linq; using System.Linq;

View File

@ -1,11 +1,10 @@
using Avalonia; using Avalonia;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Markup.Xaml; using Avalonia.Data;
using System.Threading.Tasks;
using ReactiveUI; using ReactiveUI;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using Avalonia.Data; using System.Threading.Tasks;
namespace LibationAvalonia.Dialogs.Login namespace LibationAvalonia.Dialogs.Login
{ {

View File

@ -1,5 +1,4 @@
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace LibationAvalonia.Dialogs.Login namespace LibationAvalonia.Dialogs.Login
@ -12,7 +11,7 @@ namespace LibationAvalonia.Dialogs.Login
public _2faCodeDialog() public _2faCodeDialog()
{ {
AvaloniaXamlLoader.Load(this); InitializeComponent();
_2FABox = this.FindControl<TextBox>(nameof(_2FABox)); _2FABox = this.FindControl<TextBox>(nameof(_2FABox));
} }

View File

@ -1,5 +1,4 @@
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using Dinah.Core; using Dinah.Core;
using FileManager; using FileManager;
using System; using System;

View File

@ -1,6 +1,3 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using LibationAvalonia.ViewModels.Dialogs; using LibationAvalonia.ViewModels.Dialogs;
namespace LibationAvalonia.Dialogs namespace LibationAvalonia.Dialogs

View File

@ -1,12 +1,9 @@
using AudibleUtilities; using AudibleUtilities;
using Avalonia;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Interactivity; using Avalonia.Interactivity;
using Avalonia.Markup.Xaml;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading.Tasks;
namespace LibationAvalonia.Dialogs namespace LibationAvalonia.Dialogs
{ {

View File

@ -1,5 +1,3 @@
using Avalonia.Markup.Xaml;
namespace LibationAvalonia.Dialogs namespace LibationAvalonia.Dialogs
{ {
public partial class SearchSyntaxDialog : DialogWindow public partial class SearchSyntaxDialog : DialogWindow

View File

@ -1,14 +1,14 @@
using Avalonia.Collections;
using Avalonia.Controls; using Avalonia.Controls;
using Dinah.Core;
using FileManager;
using LibationFileManager; using LibationFileManager;
using LibationUiBase;
using ReactiveUI;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Threading.Tasks;
using ReactiveUI;
using Dinah.Core;
using System.Linq; using System.Linq;
using FileManager; using System.Threading.Tasks;
using Avalonia.Collections;
using LibationUiBase;
namespace LibationAvalonia.Dialogs namespace LibationAvalonia.Dialogs
{ {

View File

@ -1,6 +1,4 @@
using Avalonia;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using LibationFileManager; using LibationFileManager;
namespace LibationAvalonia.Dialogs namespace LibationAvalonia.Dialogs
@ -13,10 +11,6 @@ namespace LibationAvalonia.Dialogs
public SetupDialog() public SetupDialog()
{ {
InitializeComponent(); InitializeComponent();
#if DEBUG
this.AttachDevTools();
#endif
} }
public void NewUser_Click(object sender, Avalonia.Interactivity.RoutedEventArgs e) public void NewUser_Click(object sender, Avalonia.Interactivity.RoutedEventArgs e)

View File

@ -1,6 +1,4 @@
using Avalonia;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace LibationAvalonia.Dialogs namespace LibationAvalonia.Dialogs
{ {

View File

@ -1,7 +1,6 @@
using ApplicationServices; using ApplicationServices;
using Avalonia.Collections; using Avalonia.Collections;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Threading;
using DataLayer; using DataLayer;
using LibationAvalonia.Controls; using LibationAvalonia.Controls;
using LibationAvalonia.ViewModels; using LibationAvalonia.ViewModels;

View File

@ -1,7 +1,6 @@
using AppScaffolding; using AppScaffolding;
using Avalonia.Controls; using Avalonia.Controls;
using Dinah.Core; using Dinah.Core;
using System;
namespace LibationAvalonia.Dialogs namespace LibationAvalonia.Dialogs
{ {

View File

@ -1,9 +1,9 @@
using System; using Avalonia;
using System.Linq;
using Avalonia;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes; using Avalonia.Controls.ApplicationLifetimes;
using LibationFileManager; using LibationFileManager;
using System;
using System.Linq;
namespace LibationAvalonia namespace LibationAvalonia
{ {

View File

@ -1,16 +1,15 @@
using Avalonia; using Avalonia;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes; using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Threading;
using DataLayer; using DataLayer;
using Dinah.Core.Logging; using Dinah.Core.Logging;
using LibationAvalonia.ViewModels.Dialogs;
using LibationAvalonia.Dialogs; using LibationAvalonia.Dialogs;
using LibationAvalonia.ViewModels.Dialogs;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Threading;
using Avalonia.Threading;
namespace LibationAvalonia namespace LibationAvalonia
{ {

View File

@ -1,4 +1,6 @@
using ApplicationServices; using ApplicationServices;
using Avalonia.Collections;
using Avalonia.Controls;
using LibationFileManager; using LibationFileManager;
using ReactiveUI; using ReactiveUI;
@ -52,6 +54,7 @@ namespace LibationAvalonia.ViewModels
} }
} }
public AvaloniaList<Control> QuickFilterMenuItems { get; } = new();
/// <summary> Indicates if the first quick filter is the default filter </summary> /// <summary> Indicates if the first quick filter is the default filter </summary>
public bool FirstFilterIsDefault public bool FirstFilterIsDefault

View File

@ -1,8 +1,4 @@
using System; using ApplicationServices;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using ApplicationServices;
using AudibleApi; using AudibleApi;
using AudibleApi.Common; using AudibleApi.Common;
using Avalonia.Media; using Avalonia.Media;
@ -15,6 +11,10 @@ using FileLiberator;
using LibationFileManager; using LibationFileManager;
using LibationUiBase; using LibationUiBase;
using ReactiveUI; using ReactiveUI;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace LibationAvalonia.ViewModels namespace LibationAvalonia.ViewModels
{ {

View File

@ -1,8 +1,4 @@
using Avalonia.Controls;
using ReactiveUI; using ReactiveUI;
using System;
using System.Collections.Generic;
using System.Text;
namespace LibationAvalonia.ViewModels namespace LibationAvalonia.ViewModels
{ {

View File

@ -35,7 +35,7 @@
Name="button" Name="button"
HorizontalAlignment="Stretch" HorizontalAlignment="Stretch"
VerticalAlignment="Stretch" VerticalAlignment="Stretch"
IsEnabled="{Binding IsButtonEnabled}" Padding="0" Click="Button_Click" > IsEnabled="{CompiledBinding IsButtonEnabled}" Padding="0" Click="Button_Click" >
<Panel> <Panel>
<Panel <Panel

View File

@ -1,11 +1,9 @@
using Avalonia; using Avalonia;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Interactivity; using Avalonia.Interactivity;
using Avalonia.Media;
using DataLayer; using DataLayer;
using LibationAvalonia.ViewModels; using LibationAvalonia.ViewModels;
using LibationUiBase.GridView; using LibationUiBase.GridView;
using NPOI.HSSF.Record.PivotTable;
using System; using System;
namespace LibationAvalonia.Views namespace LibationAvalonia.Views

View File

@ -1,6 +1,4 @@
using ApplicationServices; using ApplicationServices;
using System;
using System.Linq;
using Avalonia.Threading; using Avalonia.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;

View File

@ -1,14 +1,11 @@
using ApplicationServices; using ApplicationServices;
using Avalonia.Controls;
using Avalonia.Platform.Storage; using Avalonia.Platform.Storage;
using FileManager; using FileManager;
using LibationFileManager; using LibationFileManager;
using System; using System;
using System.Linq;
namespace LibationAvalonia.Views namespace LibationAvalonia.Views
{ {
//DONE
public partial class MainWindow public partial class MainWindow
{ {
private void Configure_Export() { } private void Configure_Export() { }

View File

@ -1,11 +1,9 @@
using Avalonia.Input; using Avalonia.Input;
using System; using System;
using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace LibationAvalonia.Views namespace LibationAvalonia.Views
{ {
//DONE
public partial class MainWindow public partial class MainWindow
{ {
protected void Configure_Filter() { } protected void Configure_Filter() { }

View File

@ -5,7 +5,6 @@ using System.Threading.Tasks;
namespace LibationAvalonia.Views namespace LibationAvalonia.Views
{ {
//DONE
public partial class MainWindow public partial class MainWindow
{ {
private void Configure_Liberate() { } private void Configure_Liberate() { }

View File

@ -1,8 +1,6 @@
using LibationFileManager; using LibationFileManager;
using LibationUiBase; using LibationUiBase;
using System;
using System.IO; using System.IO;
using System.Linq;
namespace LibationAvalonia.Views namespace LibationAvalonia.Views
{ {

View File

@ -3,7 +3,6 @@ using Dinah.Core;
using LibationFileManager; using LibationFileManager;
using LibationUiBase.GridView; using LibationUiBase.GridView;
using System; using System;
using System.Collections.Generic;
using System.Linq; using System.Linq;
namespace LibationAvalonia.Views namespace LibationAvalonia.Views

View File

@ -1,11 +1,11 @@
using Avalonia.Controls; using Avalonia;
using Avalonia.Controls;
using LibationFileManager; using LibationFileManager;
using System;
using System.Linq; using System.Linq;
using Avalonia.Data;
namespace LibationAvalonia.Views namespace LibationAvalonia.Views
{ {
//DONE
public partial class MainWindow public partial class MainWindow
{ {
private void Configure_QuickFilters() private void Configure_QuickFilters()
@ -13,24 +13,54 @@ namespace LibationAvalonia.Views
_viewModel.FirstFilterIsDefault = QuickFilters.UseDefault; _viewModel.FirstFilterIsDefault = QuickFilters.UseDefault;
Load += updateFiltersMenu; Load += updateFiltersMenu;
QuickFilters.Updated += updateFiltersMenu; QuickFilters.Updated += updateFiltersMenu;
//We need to be able to dynamically add and remove menu items from the Quick Filters menu.
//To do that, we need quick filter's menu items source to be writable, which we can only
//achieve by creating the list ourselves (instead of allowing Avalonia to create it from the xaml)
var startWithFilterMenuItem = new MenuItem
{
Header = "Start Libation with 1st filter _Default",
Icon = new CheckBox
{
BorderThickness = new Thickness(0),
IsHitTestVisible = false,
[!CheckBox.IsCheckedProperty] = new Binding(nameof(_viewModel.FirstFilterIsDefault))
}
};
var editFiltersMenuItem = new MenuItem { Header = "_Edit quick filters..." };
startWithFilterMenuItem.Click += firstFilterIsDefaultToolStripMenuItem_Click;
editFiltersMenuItem.Click += editQuickFiltersToolStripMenuItem_Click;
_viewModel.QuickFilterMenuItems.Add(startWithFilterMenuItem);
_viewModel.QuickFilterMenuItems.Add(editFiltersMenuItem);
_viewModel.QuickFilterMenuItems.Add(new Separator());
}
private async void QuickFiltersMenuItem_KeyDown(object sender, Avalonia.Input.KeyEventArgs e)
{
int keyNum = (int)e.Key - 34;
if (keyNum <=9 && keyNum >= 1)
{
var menuItem = _viewModel.QuickFilterMenuItems
.OfType<MenuItem>()
.FirstOrDefault(i => i.Header is string h && h.StartsWith($"_{keyNum}"));
if (menuItem is not null)
{
await performFilter(menuItem.Tag as string);
e.Handled = true;
}
}
} }
private object quickFilterTag { get; } = new();
private void updateFiltersMenu(object _ = null, object __ = null) private void updateFiltersMenu(object _ = null, object __ = null)
{ {
var allItems = quickFiltersToolStripMenuItem //Clear all filters
.Items _viewModel.QuickFilterMenuItems.RemoveAll(_viewModel.QuickFilterMenuItems.Where(i => i.Tag is string).ToList());
.Cast<Control>()
.ToList();
var toRemove = allItems
.OfType<MenuItem>()
.Where(mi => mi.Tag == quickFilterTag)
.ToList();
allItems = allItems
.Except(toRemove)
.ToList();
// re-populate // re-populate
var index = 0; var index = 0;
@ -38,27 +68,23 @@ namespace LibationAvalonia.Views
{ {
var quickFilterMenuItem = new MenuItem var quickFilterMenuItem = new MenuItem
{ {
Tag = quickFilterTag, Tag = filter,
Header = $"_{++index}: {filter}" Header = $"_{++index}: {filter}"
}; };
quickFilterMenuItem.Click += async (_, __) => await performFilter(filter); quickFilterMenuItem.Click += async (_, __) => await performFilter(filter);
allItems.Add(quickFilterMenuItem); _viewModel.QuickFilterMenuItems.Add(quickFilterMenuItem);
}
quickFiltersToolStripMenuItem.Items = allItems;
}
public void firstFilterIsDefaultToolStripMenuItem_Click(object sender, Avalonia.Interactivity.RoutedEventArgs e)
{
if (sender is MenuItem mi && mi.Icon is CheckBox checkBox)
{
checkBox.IsChecked = !(checkBox.IsChecked ?? false);
} }
} }
public void addQuickFilterBtn_Click(object sender, Avalonia.Interactivity.RoutedEventArgs e) private void firstFilterIsDefaultToolStripMenuItem_Click(object sender, Avalonia.Interactivity.RoutedEventArgs e)
{
_viewModel.FirstFilterIsDefault = !_viewModel.FirstFilterIsDefault;
}
private void addQuickFilterBtn_Click(object sender, Avalonia.Interactivity.RoutedEventArgs e)
=> QuickFilters.Add(_viewModel.FilterString); => QuickFilters.Add(_viewModel.FilterString);
public async void editQuickFiltersToolStripMenuItem_Click(object sender, Avalonia.Interactivity.RoutedEventArgs e) private async void editQuickFiltersToolStripMenuItem_Click(object sender, Avalonia.Interactivity.RoutedEventArgs e)
=> await new Dialogs.EditQuickFilters().ShowDialog(this); => await new Dialogs.EditQuickFilters().ShowDialog(this);
} }
} }

View File

@ -1,11 +1,9 @@
using AudibleUtilities; using AudibleUtilities;
using LibationAvalonia.Dialogs; using LibationAvalonia.Dialogs;
using System;
using System.Linq; using System.Linq;
namespace LibationAvalonia.Views namespace LibationAvalonia.Views
{ {
//DONE
public partial class MainWindow public partial class MainWindow
{ {
private void Configure_RemoveBooks() private void Configure_RemoveBooks()

View File

@ -1,6 +1,5 @@
using ApplicationServices; using ApplicationServices;
using AudibleUtilities; using AudibleUtilities;
using Avalonia.Controls;
using LibationAvalonia.Dialogs; using LibationAvalonia.Dialogs;
using LibationFileManager; using LibationFileManager;
using System; using System;
@ -10,7 +9,6 @@ using System.Threading.Tasks;
namespace LibationAvalonia.Views namespace LibationAvalonia.Views
{ {
//DONE
public partial class MainWindow public partial class MainWindow
{ {
private void Configure_ScanManual() private void Configure_ScanManual()

View File

@ -1,10 +1,8 @@
using ApplicationServices; using ApplicationServices;
using System; using System;
using System.Linq;
namespace LibationAvalonia.Views namespace LibationAvalonia.Views
{ {
//DONE
public partial class MainWindow public partial class MainWindow
{ {
private void Configure_ScanNotification() private void Configure_ScanNotification()

View File

@ -3,7 +3,6 @@ using System;
namespace LibationAvalonia.Views namespace LibationAvalonia.Views
{ {
//DONE
public partial class MainWindow public partial class MainWindow
{ {
private void Configure_Settings() { } private void Configure_Settings() { }

View File

@ -1,9 +1,4 @@
using Avalonia.Threading; namespace LibationAvalonia.Views
using LibationAvalonia.Dialogs;
using LibationUiBase;
using System.Threading.Tasks;
namespace LibationAvalonia.Views
{ {
public partial class MainWindow public partial class MainWindow
{ {

View File

@ -1,15 +1,11 @@
using ApplicationServices; using ApplicationServices;
using Avalonia.Threading; using Avalonia.Threading;
using DataLayer; using DataLayer;
using Dinah.Core;
using LibationFileManager;
using System; using System;
using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace LibationAvalonia.Views namespace LibationAvalonia.Views
{ {
//DONE
public partial class MainWindow public partial class MainWindow
{ {
private void Configure_VisibleBooks() private void Configure_VisibleBooks()

View File

@ -86,20 +86,13 @@
<!-- Quick Filters Menu --> <!-- Quick Filters Menu -->
<MenuItem Name="quickFiltersToolStripMenuItem" Header="Quick _Filters"> <MenuItem Header="Quick _Filters" ItemsSource="{Binding QuickFilterMenuItems}" KeyDown="QuickFiltersMenuItem_KeyDown">
<!-- Remove height style property for menu item --> <!-- Remove height style property for menu item -->
<MenuItem.Styles> <MenuItem.Styles>
<Style Selector="ItemsPresenter#PART_ItemsPresenter"> <Style Selector="ItemsPresenter#PART_ItemsPresenter">
<Setter Property="Height" Value="NaN"/> <Setter Property="Height" Value="NaN"/>
</Style> </Style>
</MenuItem.Styles> </MenuItem.Styles>
<MenuItem Click="firstFilterIsDefaultToolStripMenuItem_Click" Header="Start Libation with 1st filter _Default">
<MenuItem.Icon>
<CheckBox BorderThickness="0" IsChecked="{Binding FirstFilterIsDefault, Mode=TwoWay}" IsHitTestVisible="False" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Click="editQuickFiltersToolStripMenuItem_Click" Header="_Edit quick filters..." />
<Separator />
</MenuItem> </MenuItem>
<!-- Visible Books Menu --> <!-- Visible Books Menu -->

View File

@ -1,11 +1,11 @@
using System;
using System.Collections.Generic;
using System.Linq;
using ApplicationServices; using ApplicationServices;
using Avalonia.ReactiveUI; using Avalonia.ReactiveUI;
using DataLayer; using DataLayer;
using LibationAvalonia.ViewModels; using LibationAvalonia.ViewModels;
using LibationFileManager; using LibationFileManager;
using System;
using System.Collections.Generic;
using System.Linq;
namespace LibationAvalonia.Views namespace LibationAvalonia.Views
{ {

View File

@ -2,20 +2,22 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:vm="clr-namespace:LibationAvalonia.ViewModels"
x:DataType="vm:ProcessBookViewModel"
mc:Ignorable="d" d:DesignWidth="400" d:DesignHeight="87" MaxHeight="87" MinHeight="87" MinWidth="300" mc:Ignorable="d" d:DesignWidth="400" d:DesignHeight="87" MaxHeight="87" MinHeight="87" MinWidth="300"
x:Class="LibationAvalonia.Views.ProcessBookControl" Background="{Binding BackgroundColor}"> x:Class="LibationAvalonia.Views.ProcessBookControl" Background="{CompiledBinding BackgroundColor}">
<Border BorderBrush="{DynamicResource SystemControlForegroundBaseMediumBrush}" BorderThickness="0,0,0,1"> <Border BorderBrush="{DynamicResource SystemControlForegroundBaseMediumBrush}" BorderThickness="0,0,0,1">
<Grid ColumnDefinitions="Auto,*,Auto"> <Grid ColumnDefinitions="Auto,*,Auto">
<Panel Grid.Column="0" Margin="3" Width="80" Height="80" HorizontalAlignment="Left"> <Panel Grid.Column="0" Margin="3" Width="80" Height="80" HorizontalAlignment="Left">
<Image Width="80" Height="80" Source="{Binding Cover}" Stretch="Uniform" /> <Image Width="80" Height="80" Source="{CompiledBinding Cover}" Stretch="Uniform" />
</Panel> </Panel>
<Grid Margin="0,3,0,3" Grid.Column="1" ColumnDefinitions="*" RowDefinitions="*,16"> <Grid Margin="0,3,0,3" Grid.Column="1" ColumnDefinitions="*" RowDefinitions="*,16">
<StackPanel Grid.Column="0" Grid.Row="0" Orientation="Vertical"> <StackPanel Grid.Column="0" Grid.Row="0" Orientation="Vertical">
<TextBlock ClipToBounds="True" TextWrapping="Wrap" FontSize="11" Text="{Binding Title}" /> <TextBlock ClipToBounds="True" TextWrapping="Wrap" FontSize="11" Text="{CompiledBinding Title}" />
<TextBlock FontSize="10" TextWrapping="NoWrap" Text="{Binding Author}" /> <TextBlock FontSize="10" TextWrapping="NoWrap" Text="{CompiledBinding Author}" />
<TextBlock FontSize="10" TextWrapping="NoWrap" Text="{Binding Narrator}" /> <TextBlock FontSize="10" TextWrapping="NoWrap" Text="{CompiledBinding Narrator}" />
</StackPanel> </StackPanel>
<Panel Grid.Column="0" Grid.Row="1"> <Panel Grid.Column="0" Grid.Row="1">
<Panel.Styles> <Panel.Styles>
@ -23,8 +25,8 @@
<Setter Property="MinWidth" Value="20" /> <Setter Property="MinWidth" Value="20" />
</Style> </Style>
</Panel.Styles> </Panel.Styles>
<ProgressBar IsVisible="{Binding IsDownloading}" Value="{Binding Progress}" ShowProgressText="True" FontSize="12" /> <ProgressBar IsVisible="{CompiledBinding IsDownloading}" Value="{CompiledBinding Progress}" ShowProgressText="True" FontSize="12" />
<TextBlock IsVisible="{Binding !IsDownloading}" Text="{Binding StatusText}"/> <TextBlock IsVisible="{CompiledBinding !IsDownloading}" Text="{CompiledBinding StatusText}"/>
</Panel> </Panel>
</Grid> </Grid>
<Grid Margin="3" Grid.Column="2" HorizontalAlignment="Right" ColumnDefinitions="Auto,Auto"> <Grid Margin="3" Grid.Column="2" HorizontalAlignment="Right" ColumnDefinitions="Auto,Auto">
@ -39,7 +41,7 @@
</Style> </Style>
</Style> </Style>
</Grid.Styles> </Grid.Styles>
<StackPanel IsVisible="{Binding Queued}" Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Right" Orientation="Vertical"> <StackPanel IsVisible="{CompiledBinding Queued}" Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Right" Orientation="Vertical">
<Button Click="MoveFirst_Click"> <Button Click="MoveFirst_Click">
<Path VerticalAlignment="Top" Data="{StaticResource FirstButtonIcon}" /> <Path VerticalAlignment="Top" Data="{StaticResource FirstButtonIcon}" />
@ -55,13 +57,13 @@
</Button> </Button>
</StackPanel> </StackPanel>
<Panel Margin="3,0,0,0" Grid.Column="1" VerticalAlignment="Top"> <Panel Margin="3,0,0,0" Grid.Column="1" VerticalAlignment="Top">
<Button Height="32" Background="{DynamicResource CancelRed}" Width="22" IsVisible="{Binding !IsFinished}" CornerRadius="11" Click="Cancel_Click"> <Button Height="32" Background="{DynamicResource CancelRed}" Width="22" IsVisible="{CompiledBinding !IsFinished}" CornerRadius="11" Click="Cancel_Click">
<Path Fill="{DynamicResource ProcessQueueBookDefaultBrush}" VerticalAlignment="Center" Data="{StaticResource CancelButtonIcon}" RenderTransform="{StaticResource Rotate45Transform}" /> <Path Fill="{DynamicResource ProcessQueueBookDefaultBrush}" VerticalAlignment="Center" Data="{StaticResource CancelButtonIcon}" RenderTransform="{StaticResource Rotate45Transform}" />
</Button> </Button>
</Panel> </Panel>
</Grid> </Grid>
<Panel Margin="3" Width="50" Grid.Column="2"> <Panel Margin="3" Width="50" Grid.Column="2">
<TextPresenter FontSize="9" VerticalAlignment="Bottom" HorizontalAlignment="Right" IsVisible="{Binding IsDownloading}" Text="{Binding ETA}" /> <TextPresenter FontSize="9" VerticalAlignment="Bottom" HorizontalAlignment="Right" IsVisible="{CompiledBinding IsDownloading}" Text="{CompiledBinding ETA}" />
</Panel> </Panel>
</Grid> </Grid>

View File

@ -1,9 +1,7 @@
using System;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using LibationAvalonia.ViewModels;
using ApplicationServices; using ApplicationServices;
using Avalonia.Controls;
using DataLayer; using DataLayer;
using LibationAvalonia.ViewModels;
using LibationUiBase; using LibationUiBase;
namespace LibationAvalonia.Views namespace LibationAvalonia.Views

View File

@ -2,7 +2,6 @@
using Avalonia; using Avalonia;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Data.Converters; using Avalonia.Data.Converters;
using Avalonia.Markup.Xaml;
using DataLayer; using DataLayer;
using LibationAvalonia.ViewModels; using LibationAvalonia.ViewModels;
using LibationUiBase; using LibationUiBase;

View File

@ -3,6 +3,7 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:views="clr-namespace:LibationAvalonia.Views" xmlns:views="clr-namespace:LibationAvalonia.Views"
xmlns:uibase="clr-namespace:LibationUiBase.GridView;assembly=LibationUiBase"
xmlns:controls="clr-namespace:LibationAvalonia.Controls" xmlns:controls="clr-namespace:LibationAvalonia.Controls"
mc:Ignorable="d" d:DesignWidth="1560" d:DesignHeight="400" mc:Ignorable="d" d:DesignWidth="1560" d:DesignHeight="400"
x:Class="LibationAvalonia.Views.ProductsDisplay"> x:Class="LibationAvalonia.Views.ProductsDisplay">
@ -37,6 +38,14 @@
<Setter Property="VerticalAlignment" Value="Center" /> <Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="Fill" Value="{DynamicResource IconFill}" /> <Setter Property="Fill" Value="{DynamicResource IconFill}" />
</Style> </Style>
<Style Selector="DataGridColumnHeader ContextMenu MenuItem">
<Setter Property="Padding" Value="0" />
<Style Selector="^:icon /template/ Viewbox#PART_IconPresenter">
<Setter Property="Height" Value="32" />
<Setter Property="Width" Value="32" />
<Setter Property="Margin" Value="6,0" />
</Style>
</Style>
</DataGrid.Styles> </DataGrid.Styles>
<DataGrid.Columns> <DataGrid.Columns>
@ -51,25 +60,25 @@
Width="75"> Width="75">
<DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellTemplate>
<DataTemplate> <DataTemplate x:DataType="uibase:IGridEntry">
<CheckBox <CheckBox
HorizontalAlignment="Center" HorizontalAlignment="Center"
IsThreeState="True" IsThreeState="True"
IsChecked="{Binding Remove, Mode=TwoWay}" /> IsChecked="{CompiledBinding Remove, Mode=TwoWay}" />
</DataTemplate> </DataTemplate>
</DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn> </DataGridTemplateColumn>
<controls:DataGridTemplateColumnExt CanUserSort="True" Width="75" Header="Liberate" SortMemberPath="Liberate" ClipboardContentBinding="{Binding Liberate.ToolTip}"> <controls:DataGridTemplateColumnExt CanUserSort="True" Width="75" Header="Liberate" SortMemberPath="Liberate" ClipboardContentBinding="{Binding Liberate.ToolTip}">
<DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellTemplate>
<DataTemplate> <DataTemplate x:DataType="uibase:IGridEntry">
<views:LiberateStatusButton <views:LiberateStatusButton
ToolTip.Tip="{Binding Liberate.ToolTip}" ToolTip.Tip="{CompiledBinding Liberate.ToolTip}"
BookStatus="{Binding Liberate.BookStatus}" BookStatus="{CompiledBinding Liberate.BookStatus}"
PdfStatus="{Binding Liberate.PdfStatus}" PdfStatus="{CompiledBinding Liberate.PdfStatus}"
IsUnavailable="{Binding Liberate.IsUnavailable}" IsUnavailable="{CompiledBinding Liberate.IsUnavailable}"
IsSeries="{Binding Liberate.IsSeries}" IsSeries="{CompiledBinding Liberate.IsSeries}"
Expanded="{Binding Liberate.Expanded}" Expanded="{CompiledBinding Liberate.Expanded}"
Click="LiberateButton_Click" /> Click="LiberateButton_Click" />
</DataTemplate> </DataTemplate>
</DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn.CellTemplate>
@ -77,17 +86,17 @@
<DataGridTemplateColumn CanUserSort="False" Width="80" Header="Cover" SortMemberPath="Cover" ClipboardContentBinding="{Binding LibraryBook.Book.PictureLarge}"> <DataGridTemplateColumn CanUserSort="False" Width="80" Header="Cover" SortMemberPath="Cover" ClipboardContentBinding="{Binding LibraryBook.Book.PictureLarge}">
<DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellTemplate>
<DataTemplate> <DataTemplate x:DataType="uibase:IGridEntry">
<Image Opacity="{Binding Liberate.Opacity}" Tapped="Cover_Click" Height="80" Source="{Binding Cover}" ToolTip.Tip="Click to see full size" /> <Image Opacity="{CompiledBinding Liberate.Opacity}" Tapped="Cover_Click" Height="80" Source="{CompiledBinding Cover}" ToolTip.Tip="Click to see full size" />
</DataTemplate> </DataTemplate>
</DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn> </DataGridTemplateColumn>
<controls:DataGridTemplateColumnExt MinWidth="150" Width="2*" Header="Title" CanUserSort="True" SortMemberPath="Title" ClipboardContentBinding="{Binding Title}"> <controls:DataGridTemplateColumnExt MinWidth="150" Width="2*" Header="Title" CanUserSort="True" SortMemberPath="Title" ClipboardContentBinding="{Binding Title}">
<DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellTemplate>
<DataTemplate> <DataTemplate x:DataType="uibase:IGridEntry">
<Panel Opacity="{Binding Liberate.Opacity}" Background="{Binding Liberate.BackgroundBrush}"> <Panel Opacity="{CompiledBinding Liberate.Opacity}" Background="{CompiledBinding Liberate.BackgroundBrush}">
<TextBlock FontSize="14" Text="{Binding Title}" /> <TextBlock FontSize="14" Text="{CompiledBinding Title}" />
</Panel> </Panel>
</DataTemplate> </DataTemplate>
</DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn.CellTemplate>
@ -95,9 +104,9 @@
<controls:DataGridTemplateColumnExt MinWidth="80" Width="1*" Header="Authors" CanUserSort="True" SortMemberPath="Authors" ClipboardContentBinding="{Binding Authors}"> <controls:DataGridTemplateColumnExt MinWidth="80" Width="1*" Header="Authors" CanUserSort="True" SortMemberPath="Authors" ClipboardContentBinding="{Binding Authors}">
<DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellTemplate>
<DataTemplate> <DataTemplate x:DataType="uibase:IGridEntry">
<Panel Opacity="{Binding Liberate.Opacity}" Background="{Binding Liberate.BackgroundBrush}"> <Panel Opacity="{CompiledBinding Liberate.Opacity}" Background="{CompiledBinding Liberate.BackgroundBrush}">
<TextBlock Text="{Binding Authors}" /> <TextBlock Text="{CompiledBinding Authors}" />
</Panel> </Panel>
</DataTemplate> </DataTemplate>
</DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn.CellTemplate>
@ -105,9 +114,9 @@
<controls:DataGridTemplateColumnExt MinWidth="80" Width="1*" Header="Narrators" CanUserSort="True" SortMemberPath="Narrators" ClipboardContentBinding="{Binding Narrators}"> <controls:DataGridTemplateColumnExt MinWidth="80" Width="1*" Header="Narrators" CanUserSort="True" SortMemberPath="Narrators" ClipboardContentBinding="{Binding Narrators}">
<DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellTemplate>
<DataTemplate> <DataTemplate x:DataType="uibase:IGridEntry">
<Panel Opacity="{Binding Liberate.Opacity}" Background="{Binding Liberate.BackgroundBrush}"> <Panel Opacity="{CompiledBinding Liberate.Opacity}" Background="{CompiledBinding Liberate.BackgroundBrush}">
<TextBlock Text="{Binding Narrators}" /> <TextBlock Text="{CompiledBinding Narrators}" />
</Panel> </Panel>
</DataTemplate> </DataTemplate>
</DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn.CellTemplate>
@ -115,9 +124,9 @@
<controls:DataGridTemplateColumnExt Width="90" Header="Length" CanUserSort="True" SortMemberPath="Length" ClipboardContentBinding="{Binding Length}"> <controls:DataGridTemplateColumnExt Width="90" Header="Length" CanUserSort="True" SortMemberPath="Length" ClipboardContentBinding="{Binding Length}">
<DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellTemplate>
<DataTemplate> <DataTemplate x:DataType="uibase:IGridEntry">
<Panel Opacity="{Binding Liberate.Opacity}" Background="{Binding Liberate.BackgroundBrush}"> <Panel Opacity="{CompiledBinding Liberate.Opacity}" Background="{CompiledBinding Liberate.BackgroundBrush}">
<TextBlock Text="{Binding Length}" /> <TextBlock Text="{CompiledBinding Length}" />
</Panel> </Panel>
</DataTemplate> </DataTemplate>
</DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn.CellTemplate>
@ -125,9 +134,9 @@
<controls:DataGridTemplateColumnExt MinWidth="80" Width="1*" Header="Series" CanUserSort="True" SortMemberPath="Series" ClipboardContentBinding="{Binding Series}"> <controls:DataGridTemplateColumnExt MinWidth="80" Width="1*" Header="Series" CanUserSort="True" SortMemberPath="Series" ClipboardContentBinding="{Binding Series}">
<DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellTemplate>
<DataTemplate> <DataTemplate x:DataType="uibase:IGridEntry">
<Panel Opacity="{Binding Liberate.Opacity}" Background="{Binding Liberate.BackgroundBrush}"> <Panel Opacity="{CompiledBinding Liberate.Opacity}" Background="{CompiledBinding Liberate.BackgroundBrush}">
<TextBlock Text="{Binding Series}" /> <TextBlock Text="{CompiledBinding Series}" />
</Panel> </Panel>
</DataTemplate> </DataTemplate>
</DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn.CellTemplate>
@ -135,9 +144,9 @@
<controls:DataGridTemplateColumnExt MinWidth="100" Width="1*" Header="Description" CanUserSort="True" SortMemberPath="Description" ClipboardContentBinding="{Binding LongDescription}"> <controls:DataGridTemplateColumnExt MinWidth="100" Width="1*" Header="Description" CanUserSort="True" SortMemberPath="Description" ClipboardContentBinding="{Binding LongDescription}">
<DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellTemplate>
<DataTemplate> <DataTemplate x:DataType="uibase:IGridEntry">
<Panel Opacity="{Binding Liberate.Opacity}" Background="{Binding Liberate.BackgroundBrush}" Tapped="Description_Click" ToolTip.Tip="Click to see full description" > <Panel Opacity="{CompiledBinding Liberate.Opacity}" Background="{CompiledBinding Liberate.BackgroundBrush}" Tapped="Description_Click" ToolTip.Tip="Click to see full description" >
<TextBlock Text="{Binding Description}" FontSize="11" VerticalAlignment="Top" /> <TextBlock Text="{CompiledBinding Description}" FontSize="11" VerticalAlignment="Top" />
</Panel> </Panel>
</DataTemplate> </DataTemplate>
</DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn.CellTemplate>
@ -145,49 +154,51 @@
<controls:DataGridTemplateColumnExt Width="100" Header="Category" CanUserSort="True" SortMemberPath="Category" ClipboardContentBinding="{Binding Category}"> <controls:DataGridTemplateColumnExt Width="100" Header="Category" CanUserSort="True" SortMemberPath="Category" ClipboardContentBinding="{Binding Category}">
<DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellTemplate>
<DataTemplate> <DataTemplate x:DataType="uibase:IGridEntry">
<Panel Opacity="{Binding Liberate.Opacity}" Background="{Binding Liberate.BackgroundBrush}"> <Panel Opacity="{CompiledBinding Liberate.Opacity}" Background="{CompiledBinding Liberate.BackgroundBrush}">
<TextBlock Text="{Binding Category}" /> <TextBlock Text="{CompiledBinding Category}" />
</Panel> </Panel>
</DataTemplate> </DataTemplate>
</DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn.CellTemplate>
</controls:DataGridTemplateColumnExt> </controls:DataGridTemplateColumnExt>
<controls:DataGridMyRatingColumn <controls:DataGridMyRatingColumn
x:DataType="uibase:IGridEntry"
Header="Product&#xA;Rating" Header="Product&#xA;Rating"
IsReadOnly="true" IsReadOnly="true"
Width="115" Width="115"
SortMemberPath="ProductRating" CanUserSort="True" SortMemberPath="ProductRating" CanUserSort="True"
OpacityBinding="{Binding Liberate.Opacity}" OpacityBinding="{CompiledBinding Liberate.Opacity}"
BackgroundBinding="{Binding Liberate.BackgroundBrush}" BackgroundBinding="{CompiledBinding Liberate.BackgroundBrush}"
ClipboardContentBinding="{Binding ProductRating}" ClipboardContentBinding="{CompiledBinding ProductRating}"
Binding="{Binding ProductRating}" /> Binding="{CompiledBinding ProductRating}" />
<controls:DataGridTemplateColumnExt Width="90" Header="Purchase&#xA;Date" CanUserSort="True" SortMemberPath="PurchaseDate" ClipboardContentBinding="{Binding PurchaseDate}"> <controls:DataGridTemplateColumnExt Width="90" Header="Purchase&#xA;Date" CanUserSort="True" SortMemberPath="PurchaseDate" ClipboardContentBinding="{Binding PurchaseDate}">
<DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellTemplate>
<DataTemplate> <DataTemplate x:DataType="uibase:IGridEntry">
<Panel Opacity="{Binding Liberate.Opacity}" Background="{Binding Liberate.BackgroundBrush}"> <Panel Opacity="{CompiledBinding Liberate.Opacity}" Background="{CompiledBinding Liberate.BackgroundBrush}">
<TextBlock Text="{Binding PurchaseDate}" /> <TextBlock Text="{CompiledBinding PurchaseDate}" />
</Panel> </Panel>
</DataTemplate> </DataTemplate>
</DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn.CellTemplate>
</controls:DataGridTemplateColumnExt> </controls:DataGridTemplateColumnExt>
<controls:DataGridMyRatingColumn <controls:DataGridMyRatingColumn
x:DataType="uibase:IGridEntry"
Header="My Rating" Header="My Rating"
IsReadOnly="false" IsReadOnly="false"
Width="115" Width="115"
SortMemberPath="MyRating" CanUserSort="True" SortMemberPath="MyRating" CanUserSort="True"
OpacityBinding="{Binding Liberate.Opacity}" OpacityBinding="{CompiledBinding Liberate.Opacity}"
BackgroundBinding="{Binding Liberate.BackgroundBrush}" BackgroundBinding="{CompiledBinding Liberate.BackgroundBrush}"
ClipboardContentBinding="{Binding MyRating}" ClipboardContentBinding="{CompiledBinding MyRating}"
Binding="{Binding MyRating, Mode=TwoWay}" /> Binding="{CompiledBinding MyRating, Mode=TwoWay}" />
<controls:DataGridTemplateColumnExt Width="135" Header="Misc" CanUserSort="True" SortMemberPath="Misc" ClipboardContentBinding="{Binding Misc}"> <controls:DataGridTemplateColumnExt Width="135" Header="Misc" CanUserSort="True" SortMemberPath="Misc" ClipboardContentBinding="{Binding Misc}">
<DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellTemplate>
<DataTemplate> <DataTemplate x:DataType="uibase:IGridEntry">
<Panel Opacity="{Binding Liberate.Opacity}" Background="{Binding Liberate.BackgroundBrush}"> <Panel Opacity="{CompiledBinding Liberate.Opacity}" Background="{CompiledBinding Liberate.BackgroundBrush}">
<TextBlock Text="{Binding Misc}" TextWrapping="WrapWithOverflow" FontSize="10" /> <TextBlock Text="{CompiledBinding Misc}" TextWrapping="WrapWithOverflow" FontSize="10" />
</Panel> </Panel>
</DataTemplate> </DataTemplate>
</DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn.CellTemplate>
@ -195,9 +206,9 @@
<controls:DataGridTemplateColumnExt Width="102" Header="Last&#xA;Download" CanUserSort="True" SortMemberPath="LastDownload" ClipboardContentBinding="{Binding LastDownload}"> <controls:DataGridTemplateColumnExt Width="102" Header="Last&#xA;Download" CanUserSort="True" SortMemberPath="LastDownload" ClipboardContentBinding="{Binding LastDownload}">
<DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellTemplate>
<DataTemplate> <DataTemplate x:DataType="uibase:IGridEntry">
<Panel Opacity="{Binding Liberate.Opacity}" Background="{Binding Liberate.BackgroundBrush}" ToolTip.Tip="{Binding LastDownload.ToolTipText}" DoubleTapped="Version_DoubleClick"> <Panel Opacity="{CompiledBinding Liberate.Opacity}" Background="{CompiledBinding Liberate.BackgroundBrush}" ToolTip.Tip="{CompiledBinding LastDownload.ToolTipText}" DoubleTapped="Version_DoubleClick">
<TextBlock Text="{Binding LastDownload}" TextWrapping="WrapWithOverflow" FontSize="10" /> <TextBlock Text="{CompiledBinding LastDownload}" TextWrapping="WrapWithOverflow" FontSize="10" />
</Panel> </Panel>
</DataTemplate> </DataTemplate>
</DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn.CellTemplate>
@ -205,13 +216,13 @@
<controls:DataGridTemplateColumnExt CanUserSort="True" Width="100" Header="Tags" SortMemberPath="BookTags" ClipboardContentBinding="{Binding BookTags}"> <controls:DataGridTemplateColumnExt CanUserSort="True" Width="100" Header="Tags" SortMemberPath="BookTags" ClipboardContentBinding="{Binding BookTags}">
<DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellTemplate>
<DataTemplate> <DataTemplate x:DataType="uibase:IGridEntry">
<Button IsVisible="{Binding !Liberate.IsSeries}" Width="100" Height="80" Click="OnTagsButtonClick" ToolTip.Tip="Click to edit tags" > <Button IsVisible="{CompiledBinding !Liberate.IsSeries}" Width="100" Height="80" Click="OnTagsButtonClick" ToolTip.Tip="Click to edit tags" >
<Panel Opacity="{Binding Liberate.Opacity}"> <Panel Opacity="{CompiledBinding Liberate.Opacity}">
<Panel Width="24" Height="24" IsVisible="{Binding BookTags, Converter={x:Static StringConverters.IsNullOrEmpty}}"> <Panel Width="24" Height="24" IsVisible="{CompiledBinding BookTags, Converter={x:Static StringConverters.IsNullOrEmpty}}">
<Path Stretch="Uniform" Fill="{DynamicResource IconFill}" Data="{StaticResource EditTagsIcon}" /> <Path Stretch="Uniform" Fill="{DynamicResource IconFill}" Data="{StaticResource EditTagsIcon}" />
</Panel> </Panel>
<TextBlock IsVisible="{Binding BookTags, Converter={x:Static StringConverters.IsNotNullOrEmpty}}" FontSize="12" TextWrapping="WrapWithOverflow" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding BookTags}"/> <TextBlock IsVisible="{CompiledBinding BookTags, Converter={x:Static StringConverters.IsNotNullOrEmpty}}" FontSize="12" TextWrapping="WrapWithOverflow" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{CompiledBinding BookTags}"/>
</Panel> </Panel>
</Button> </Button>
</DataTemplate> </DataTemplate>

View File

@ -1,7 +1,6 @@
using ApplicationServices; using ApplicationServices;
using Avalonia; using Avalonia;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using Avalonia.Platform.Storage; using Avalonia.Platform.Storage;
using DataLayer; using DataLayer;
using FileLiberator; using FileLiberator;
@ -256,7 +255,7 @@ namespace LibationAvalonia.Views
contextMenu.MenuClosed += ContextMenu_MenuClosed; contextMenu.MenuClosed += ContextMenu_MenuClosed;
contextMenu.ContextMenuOpening += ContextMenu_ContextMenuOpening; contextMenu.ContextMenuOpening += ContextMenu_ContextMenuOpening;
List<Control> menuItems = new(); List<Control> menuItems = new();
contextMenu.Items = menuItems; contextMenu.ItemsSource = menuItems;
menuItems.Add(new MenuItem { Header = "Show / Hide Columns" }); menuItems.Add(new MenuItem { Header = "Show / Hide Columns" });
menuItems.Add(new MenuItem { Header = "-" }); menuItems.Add(new MenuItem { Header = "-" });
@ -274,13 +273,9 @@ namespace LibationAvalonia.Views
( (
new MenuItem new MenuItem
{ {
Header = ((string)column.Header).Replace((char)0xa, ' '), Header = ((string)column.Header).Replace('\n', ' '),
Tag = column, Tag = column,
Margin = new Thickness(6, 0), Icon = new CheckBox(),
Icon = new CheckBox
{
Width = 50,
}
} }
); );

View File

@ -1,16 +1,11 @@
using AudibleApi.Common; using Avalonia.Collections;
using AudibleApi;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Media;
using DataLayer; using DataLayer;
using Dinah.Core; using Dinah.Core;
using FileLiberator;
using System.Collections.Generic;
using System.Linq;
using Avalonia.Collections;
using LibationAvalonia.Dialogs; using LibationAvalonia.Dialogs;
using LibationUiBase.SeriesView; using LibationUiBase.SeriesView;
using System; using System;
using Avalonia.Media;
namespace LibationAvalonia.Views namespace LibationAvalonia.Views
{ {

View File

@ -4,6 +4,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
xmlns:controls="clr-namespace:LibationAvalonia.Controls" xmlns:controls="clr-namespace:LibationAvalonia.Controls"
xmlns:uibase="clr-namespace:LibationUiBase.SeriesView;assembly=LibationUiBase"
x:Class="LibationAvalonia.Views.SeriesViewGrid"> x:Class="LibationAvalonia.Views.SeriesViewGrid">
<DataGrid <DataGrid
@ -34,11 +35,11 @@
<DataGridTemplateColumn Width="80" Header="Cover" CanUserSort="False"> <DataGridTemplateColumn Width="80" Header="Cover" CanUserSort="False">
<DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellTemplate>
<DataTemplate> <DataTemplate x:DataType="uibase:SeriesItem">
<Image <Image
Tapped="Cover_Click" Tapped="Cover_Click"
Height="80" Height="80"
Source="{Binding Cover}" Source="{CompiledBinding Cover}"
ToolTip.Tip="Click to see full size" /> ToolTip.Tip="Click to see full size" />
</DataTemplate> </DataTemplate>
</DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn.CellTemplate>
@ -46,10 +47,10 @@
<DataGridTemplateColumn Width="Auto" Header="Series&#xa;Order" CanUserSort="True" SortMemberPath="Order"> <DataGridTemplateColumn Width="Auto" Header="Series&#xa;Order" CanUserSort="True" SortMemberPath="Order">
<DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellTemplate>
<DataTemplate> <DataTemplate x:DataType="uibase:SeriesItem">
<Panel> <Panel>
<TextBlock <TextBlock
Text="{Binding Order}" Text="{CompiledBinding Order}"
HorizontalAlignment="Center" HorizontalAlignment="Center"
VerticalAlignment="Center" /> VerticalAlignment="Center" />
</Panel> </Panel>
@ -59,7 +60,7 @@
<DataGridTemplateColumn Width="Auto" Header="Availability" CanUserSort="True" SortMemberPath="Button"> <DataGridTemplateColumn Width="Auto" Header="Availability" CanUserSort="True" SortMemberPath="Button">
<DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellTemplate>
<DataTemplate> <DataTemplate x:DataType="uibase:SeriesItem">
<Panel> <Panel>
<Panel.Styles> <Panel.Styles>
<Style Selector="TextBlock"> <Style Selector="TextBlock">
@ -71,17 +72,17 @@
HorizontalAlignment="Stretch" HorizontalAlignment="Stretch"
VerticalAlignment="Stretch" VerticalAlignment="Stretch"
Click="Availability_Click" Click="Availability_Click"
IsVisible="{Binding Button.HasButtonAction}" IsVisible="{CompiledBinding Button.HasButtonAction}"
IsEnabled="{Binding Button.Enabled}"> IsEnabled="{CompiledBinding Button.Enabled}">
<TextBlock <TextBlock
Text="{Binding Button.DisplayText}" Text="{CompiledBinding Button.DisplayText}"
TextAlignment="Center" TextAlignment="Center"
VerticalAlignment="Center" /> VerticalAlignment="Center" />
</Button> </Button>
<TextBlock <TextBlock
HorizontalAlignment="Center" HorizontalAlignment="Center"
IsVisible="{Binding !Button.HasButtonAction}" IsVisible="{CompiledBinding !Button.HasButtonAction}"
Text="{Binding Button.DisplayText}" /> Text="{CompiledBinding Button.DisplayText}" />
</Panel> </Panel>
</DataTemplate> </DataTemplate>
</DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn.CellTemplate>
@ -89,11 +90,11 @@
<DataGridTemplateColumn MinWidth="150" Width="*" Header="Title" CanUserSort="True" SortMemberPath="Title"> <DataGridTemplateColumn MinWidth="150" Width="*" Header="Title" CanUserSort="True" SortMemberPath="Title">
<DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellTemplate>
<DataTemplate> <DataTemplate x:DataType="uibase:SeriesItem">
<Panel ToolTip.Tip="Open Audible product page"> <Panel ToolTip.Tip="Open Audible product page">
<controls:LinkLabel <controls:LinkLabel
VerticalAlignment="Center" VerticalAlignment="Center"
Text="{Binding Title}" Text="{CompiledBinding Title}"
Tapped="Title_Click" /> Tapped="Title_Click" />
</Panel> </Panel>
</DataTemplate> </DataTemplate>

View File

@ -1,6 +1,4 @@
using ApplicationServices;
using AudibleApi.Common; using AudibleApi.Common;
using AudibleUtilities;
using Avalonia.Collections; using Avalonia.Collections;
using Avalonia.Controls; using Avalonia.Controls;
using DataLayer; using DataLayer;