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()