From d9a46d8a5a5f5929b4a6aee65a0f53d9beffae85 Mon Sep 17 00:00:00 2001 From: Niels Laute Date: Mon, 2 Feb 2026 19:57:59 +0100 Subject: [PATCH] More changes --- .../KeyboardManagerEditorUI.csproj | 13 +- .../KeyboardManagerEditorUI/Pages/All.xaml | 376 +++++++----------- .../KeyboardManagerEditorUI/Pages/All.xaml.cs | 144 ++++++- 3 files changed, 279 insertions(+), 254 deletions(-) diff --git a/src/modules/keyboardmanager/KeyboardManagerEditorUI/KeyboardManagerEditorUI.csproj b/src/modules/keyboardmanager/KeyboardManagerEditorUI/KeyboardManagerEditorUI.csproj index 72102bbc32..47e51ccfb2 100644 --- a/src/modules/keyboardmanager/KeyboardManagerEditorUI/KeyboardManagerEditorUI.csproj +++ b/src/modules/keyboardmanager/KeyboardManagerEditorUI/KeyboardManagerEditorUI.csproj @@ -45,12 +45,13 @@ - - - - - - + + + + + + + diff --git a/src/modules/keyboardmanager/KeyboardManagerEditorUI/Pages/All.xaml b/src/modules/keyboardmanager/KeyboardManagerEditorUI/Pages/All.xaml index 6151891a85..0a2eccccdb 100644 --- a/src/modules/keyboardmanager/KeyboardManagerEditorUI/Pages/All.xaml +++ b/src/modules/keyboardmanager/KeyboardManagerEditorUI/Pages/All.xaml @@ -9,93 +9,56 @@ xmlns:local="using:KeyboardManagerEditorUI.Pages" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:tkcontrols="using:CommunityToolkit.WinUI.UI.Controls" + xmlns:tkconverters="using:CommunityToolkit.WinUI.Converters" mc:Ignorable="d"> - + + + + + - + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + ScrollViewer.VerticalScrollMode="Disabled" + SelectionMode="None" + Visibility="{x:Bind RemappingList.Count, Mode=OneWay, Converter={StaticResource CountToVisibilityConverter}}"> + + + @@ -103,16 +66,8 @@ - + - + - - - - - - - - - - - - - - - - - - - - - - + + ScrollViewer.VerticalScrollMode="Disabled" + SelectionMode="None" + Visibility="{x:Bind TextMappings.Count, Mode=OneWay, Converter={StaticResource CountToVisibilityConverter}}"> + + + @@ -240,7 +158,7 @@ - + + - - - - - - - - - - - - - - - - - - - - + + ScrollViewer.VerticalScrollMode="Disabled" + SelectionMode="None" + Visibility="{x:Bind ProgramShortcuts.Count, Mode=OneWay, Converter={StaticResource CountToVisibilityConverter}}"> + + + @@ -394,62 +287,37 @@ + - - - - - - - - - - - - - - - - - - - - + + ScrollViewer.VerticalScrollMode="Disabled" + SelectionMode="None" + Visibility="{x:Bind UrlShortcuts.Count, Mode=OneWay, Converter={StaticResource CountToVisibilityConverter}}"> + + + @@ -489,15 +357,29 @@ Grid.Column="1" Margin="-12,0,0,0" Content="{x:Bind URL}" /> + - - - - - + + + + + + + + + diff --git a/src/modules/keyboardmanager/KeyboardManagerEditorUI/Pages/All.xaml.cs b/src/modules/keyboardmanager/KeyboardManagerEditorUI/Pages/All.xaml.cs index 55717090df..7c903662e5 100644 --- a/src/modules/keyboardmanager/KeyboardManagerEditorUI/Pages/All.xaml.cs +++ b/src/modules/keyboardmanager/KeyboardManagerEditorUI/Pages/All.xaml.cs @@ -369,6 +369,7 @@ namespace KeyboardManagerEditorUI.Pages try { var originalKeys = _editingItem.OriginalTriggerKeys; + bool deleted = false; switch (_editingItem.Type) { @@ -386,13 +387,18 @@ namespace KeyboardManagerEditorUI.Pages int originalKey = _mappingService.GetKeyCodeFromName(originalKeys[0]); if (originalKey != 0) { - _mappingService.DeleteSingleKeyToTextMapping(originalKey); + deleted = _mappingService.DeleteSingleKeyToTextMapping(originalKey); } } else { string originalKeysString = string.Join(";", originalKeys.Select(k => _mappingService.GetKeyCodeFromName(k).ToString(CultureInfo.InvariantCulture))); - _mappingService.DeleteShortcutMapping(originalKeysString, _editingItem.IsAllApps ? string.Empty : _editingItem.AppName ?? string.Empty); + deleted = _mappingService.DeleteShortcutMapping(originalKeysString, _editingItem.IsAllApps ? string.Empty : _editingItem.AppName ?? string.Empty); + } + + if (deleted) + { + _mappingService.SaveSettings(); } break; @@ -405,13 +411,18 @@ namespace KeyboardManagerEditorUI.Pages int originalKey = _mappingService.GetKeyCodeFromName(originalKeys[0]); if (originalKey != 0) { - _mappingService.DeleteSingleKeyMapping(originalKey); + deleted = _mappingService.DeleteSingleKeyToTextMapping(originalKey); } } else { string originalKeysString = string.Join(";", originalKeys.Select(k => _mappingService.GetKeyCodeFromName(k).ToString(CultureInfo.InvariantCulture))); - _mappingService.DeleteShortcutMapping(originalKeysString); + deleted = _mappingService.DeleteShortcutMapping(originalKeysString); + } + + if (deleted) + { + _mappingService.SaveSettings(); } if (!string.IsNullOrEmpty(programShortcut.Id)) @@ -428,13 +439,18 @@ namespace KeyboardManagerEditorUI.Pages int originalKey = _mappingService.GetKeyCodeFromName(originalKeys[0]); if (originalKey != 0) { - _mappingService.DeleteSingleKeyMapping(originalKey); + deleted = _mappingService.DeleteSingleKeyToTextMapping(originalKey); } } else { string originalKeysString = string.Join(";", originalKeys.Select(k => _mappingService.GetKeyCodeFromName(k).ToString(CultureInfo.InvariantCulture))); - _mappingService.DeleteShortcutMapping(originalKeysString); + deleted = _mappingService.DeleteShortcutMapping(originalKeysString); + } + + if (deleted) + { + _mappingService.SaveSettings(); } break; @@ -580,6 +596,122 @@ namespace KeyboardManagerEditorUI.Pages #endregion + #region Delete Handlers + + private async void DeleteMapping_Click(object sender, RoutedEventArgs e) + { + if (sender is not Button button || _mappingService == null) + { + return; + } + + var result = await DeleteConfirmationDialog.ShowAsync(); + if (result != ContentDialogResult.Primary) + { + return; + } + + try + { + switch (button.DataContext) + { + case Remapping remapping: + if (RemappingHelper.DeleteRemapping(_mappingService, remapping)) + { + _mappingService.SaveSettings(); + LoadRemappings(); + } + + break; + + case TextMapping textMapping: + { + bool deleted = false; + if (textMapping.Keys.Count == 1) + { + int originalKey = _mappingService.GetKeyCodeFromName(textMapping.Keys[0]); + if (originalKey != 0) + { + deleted = _mappingService.DeleteSingleKeyToTextMapping(originalKey); + } + } + else + { + string originalKeys = string.Join(";", textMapping.Keys.Select(k => _mappingService.GetKeyCodeFromName(k))); + deleted = _mappingService.DeleteShortcutMapping(originalKeys, textMapping.IsAllApps ? string.Empty : textMapping.AppName ?? string.Empty); + } + + if (deleted) + { + _mappingService.SaveSettings(); + LoadTextMappings(); + } + } + + break; + + case ProgramShortcut programShortcut: + { + bool deleted = false; + if (programShortcut.Shortcut.Count == 1) + { + int originalKey = _mappingService.GetKeyCodeFromName(programShortcut.Shortcut[0]); + if (originalKey != 0) + { + deleted = _mappingService.DeleteSingleKeyToTextMapping(originalKey); + } + } + else + { + string originalKeys = string.Join(";", programShortcut.Shortcut.Select(k => _mappingService.GetKeyCodeFromName(k))); + deleted = _mappingService.DeleteShortcutMapping(originalKeys); + } + + if (deleted) + { + _mappingService.SaveSettings(); + SettingsManager.RemoveShortcutKeyMappingFromSettings(programShortcut.Id); + LoadProgramShortcuts(); + } + } + + break; + + case URLShortcut urlShortcut: + { + bool deleted = false; + if (urlShortcut.Shortcut.Count == 1) + { + int originalKey = _mappingService.GetKeyCodeFromName(urlShortcut.Shortcut[0]); + if (originalKey != 0) + { + deleted = _mappingService.DeleteSingleKeyToTextMapping(originalKey); + } + } + else + { + string originalKeys = string.Join(";", urlShortcut.Shortcut.Select(k => _mappingService.GetKeyCodeFromName(k))); + deleted = _mappingService.DeleteShortcutMapping(originalKeys); + } + + if (deleted) + { + _mappingService.SaveSettings(); + LoadUrlShortcuts(); + } + } + + break; + } + } + catch (Exception ex) + { + Logger.LogError("Error deleting mapping: " + ex.Message); + } + } + + #endregion + #region Load Methods private void LoadAllMappings()