diff --git a/Source/LibationAvalonia/Dialogs/AccountsDialog.axaml b/Source/LibationAvalonia/Dialogs/AccountsDialog.axaml
index f47dee76..cb88ce89 100644
--- a/Source/LibationAvalonia/Dialogs/AccountsDialog.axaml
+++ b/Source/LibationAvalonia/Dialogs/AccountsDialog.axaml
@@ -65,10 +65,13 @@
Binding="{Binding LibraryScan, Mode=TwoWay}"
Header="Include in
library scan?"/>
-
+
+
+
+
+
+
+
diff --git a/Source/LibationAvalonia/Dialogs/LiberatedStatusBatchAutoDialog.axaml b/Source/LibationAvalonia/Dialogs/LiberatedStatusBatchAutoDialog.axaml
index 05ffd5d0..426cda5f 100644
--- a/Source/LibationAvalonia/Dialogs/LiberatedStatusBatchAutoDialog.axaml
+++ b/Source/LibationAvalonia/Dialogs/LiberatedStatusBatchAutoDialog.axaml
@@ -2,17 +2,17 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
- mc:Ignorable="d" d:DesignWidth="400" d:DesignHeight="120"
+ mc:Ignorable="d" d:DesignWidth="550" d:DesignHeight="130"
xmlns:controls="clr-namespace:LibationAvalonia.Controls"
x:Class="LibationAvalonia.Dialogs.LiberatedStatusBatchAutoDialog"
Title="Liberated status: Whether the book has been downloaded"
- MinHeight="100" MaxHeight="165"
- MinWidth="600" MaxWidth="800"
- Width="600"
+ MinHeight="130" MaxHeight="130"
+ MinWidth="550" MaxWidth="550"
+ Width="550" Height="130"
WindowStartupLocation="CenterOwner"
Icon="/Assets/libation.ico">
-
+
this.SaveSizeAndLocation(Configuration.Instance);
+ this.KeyDown += TrashBinDialog_KeyDown;
}
public async void EmptyTrash_Click(object sender, Avalonia.Interactivity.RoutedEventArgs e)
=> await _viewModel.PermanentlyDeleteCheckedAsync();
public async void Restore_Click(object sender, Avalonia.Interactivity.RoutedEventArgs e)
=> await _viewModel.RestoreCheckedAsync();
+ private void TrashBinDialog_KeyDown(object sender, Avalonia.Input.KeyEventArgs e)
+ {
+ if (e.Key == Avalonia.Input.Key.Escape)
+ Close();
+ }
}
public class TrashBinViewModel : ViewModelBase, IDisposable
diff --git a/Source/LibationAvalonia/ViewModels/MainVM.Filters.cs b/Source/LibationAvalonia/ViewModels/MainVM.Filters.cs
index 3a961c1b..c4df8485 100644
--- a/Source/LibationAvalonia/ViewModels/MainVM.Filters.cs
+++ b/Source/LibationAvalonia/ViewModels/MainVM.Filters.cs
@@ -2,9 +2,11 @@
using Avalonia.Collections;
using Avalonia.Controls;
using Avalonia.Data;
+using Avalonia.Input;
using LibationFileManager;
using ReactiveUI;
using System;
+using System.Linq;
using System.Threading.Tasks;
namespace LibationAvalonia.ViewModels
@@ -32,7 +34,6 @@ namespace LibationAvalonia.ViewModels
}
-
private void Configure_Filters()
{
FirstFilterIsDefault = QuickFilters.UseDefault;
@@ -88,7 +89,16 @@ namespace LibationAvalonia.ViewModels
var quickFilterNativeMenu = (NativeMenuItem)NativeMenu.GetMenu(MainWindow).Items[3];
for (int i = quickFilterNativeMenu.Menu.Items.Count - 1; i >= 3; i--)
{
- (((NativeMenuItem)quickFilterNativeMenu.Menu.Items[i]).Command as IDisposable).Dispose();
+ var command = ((NativeMenuItem)quickFilterNativeMenu.Menu.Items[i]).Command as IDisposable;
+ if (command != null)
+ {
+ var existingBinding = MainWindow.KeyBindings.FirstOrDefault(kb => kb.Command == command);
+ if (existingBinding != null)
+ MainWindow.KeyBindings.Remove(existingBinding);
+
+ command.Dispose();
+ }
+
quickFilterNativeMenu.Menu.Items.RemoveAt(i);
QuickFilterMenuItems.RemoveAt(i);
}
@@ -99,10 +109,25 @@ namespace LibationAvalonia.ViewModels
{
var command = ReactiveCommand.Create(async () => await PerformFilter(filter));
- quickFilterNativeMenu.Menu.Items.Add(new NativeMenuItem { Header = $"{++index}: {filter}", Command = command, Gesture = new Avalonia.Input.KeyGesture(Avalonia.Input.Key.D0 + index, Avalonia.Input.KeyModifiers.Meta) });
+ var menuItem = new MenuItem { Header = $"{++index}: {filter}", Command = command };
+ var nativeMenuItem = new NativeMenuItem { Header = $"{index}: {filter}", Command = command };
- QuickFilterMenuItems.Add(new MenuItem { Header = $"_{index}: {filter}", Command = command });
+ if (Configuration.IsMacOs && index <= 10)
+ {
+ //Register hotkeys Command + 1 - 0 for quick filters
+ var key = index == 10 ? Key.D0 : Key.D0 + index;
+ nativeMenuItem.Gesture = new KeyGesture(key, KeyModifiers.Meta);
+ }
+ else if (!Configuration.IsMacOs && index <= 12)
+ {
+ //Register hotkeys F1 - F12 for quick filters
+ menuItem.InputGesture = new KeyGesture(Key.F1 + index - 1);
+ MainWindow.KeyBindings.Add(new KeyBinding { Command = command, Gesture = menuItem.InputGesture });
+ }
+
+ QuickFilterMenuItems.Add(menuItem);
+ quickFilterNativeMenu.Menu.Items.Add(nativeMenuItem);
}
- }
+ }
}
}
diff --git a/Source/LibationAvalonia/ViewModels/MainVM.ProcessQueue.cs b/Source/LibationAvalonia/ViewModels/MainVM.ProcessQueue.cs
index a0aab56d..9c30a7cc 100644
--- a/Source/LibationAvalonia/ViewModels/MainVM.ProcessQueue.cs
+++ b/Source/LibationAvalonia/ViewModels/MainVM.ProcessQueue.cs
@@ -88,7 +88,7 @@ namespace LibationAvalonia.ViewModels
{
if (libraryBook.Book.UserDefinedItem.BookStatus is LiberatedStatus.Liberated)
{
- Serilog.Log.Logger.Information("Begin single pdf backup of {libraryBook}", libraryBook);
+ Serilog.Log.Logger.Information("Begin convert to mp3 {libraryBook}", libraryBook);
setQueueCollapseState(false);
ProcessQueue.AddConvertMp3(libraryBook);
}
diff --git a/Source/LibationAvalonia/ViewModels/MainVM.VisibleBooks.cs b/Source/LibationAvalonia/ViewModels/MainVM.VisibleBooks.cs
index 075ab48d..db6fe17b 100644
--- a/Source/LibationAvalonia/ViewModels/MainVM.VisibleBooks.cs
+++ b/Source/LibationAvalonia/ViewModels/MainVM.VisibleBooks.cs
@@ -24,7 +24,6 @@ namespace LibationAvalonia.ViewModels
/// The "Liberate" menu item header text (submenu item of the "Visible Books" menu item)
public string LiberateVisibleToolStripText_2 { get; private set; } = menufyText("Liberate: 0");
-
private void Configure_VisibleBooks()
{
LibraryCommands.BookUserDefinedItemCommitted += setLiberatedVisibleMenuItemAsync;
@@ -37,6 +36,7 @@ namespace LibationAvalonia.ViewModels
this.RaisePropertyChanged(nameof(VisibleCountText));
this.RaisePropertyChanged(nameof(VisibleCountMenuItemText));
}
+
private void setVisibleNotLiberatedCount(int visibleNotLiberated)
{
_visibleNotLiberated = visibleNotLiberated;
@@ -85,6 +85,7 @@ namespace LibationAvalonia.ViewModels
Serilog.Log.Logger.Error(ex, "An error occurred while backing up visible library books");
}
}
+
public async Task ReplaceTagsAsync()
{
var dialog = new TagsBatchDialog();
diff --git a/Source/LibationAvalonia/ViewModels/MainVM.cs b/Source/LibationAvalonia/ViewModels/MainVM.cs
index 6585113a..86c69d9d 100644
--- a/Source/LibationAvalonia/ViewModels/MainVM.cs
+++ b/Source/LibationAvalonia/ViewModels/MainVM.cs
@@ -24,12 +24,12 @@ namespace LibationAvalonia.ViewModels
Configure_NonUI();
Configure_BackupCounts();
+ Configure_Export();
Configure_Filters();
Configure_Import();
Configure_Liberate();
Configure_ProcessQueue();
Configure_ScanAuto();
- Configure_Export();
Configure_Settings();
Configure_VisibleBooks();
}
diff --git a/Source/LibationAvalonia/Views/MainWindow.axaml b/Source/LibationAvalonia/Views/MainWindow.axaml
index 6e8c9230..31f0f158 100644
--- a/Source/LibationAvalonia/Views/MainWindow.axaml
+++ b/Source/LibationAvalonia/Views/MainWindow.axaml
@@ -145,12 +145,12 @@
-
+
-