Add disabled launcher items

This commit is contained in:
Ray Berezowski
2026-08-26 21:06:25 -04:00
parent fe86573e10
commit 31c62bb89a
9 changed files with 88 additions and 12 deletions

View File

@@ -90,16 +90,23 @@ public partial class MainWindow : Window
};
pinMenuItem.Click += ToggleFavorite_Click;
var disableMenuItem = new System.Windows.Controls.MenuItem
{
Header = item.IsDisabled ? "Enable Item" : "Disable Item"
};
disableMenuItem.Click += ToggleDisabled_Click;
var duplicateMenuItem = new System.Windows.Controls.MenuItem { Header = "Duplicate Item" };
duplicateMenuItem.Click += DuplicateItem_Click;
var treeItem = new TreeViewItem
{
Header = $"{(item.IsFavorite ? "[Pinned] " : "")}{item.Title} ({item.Type})",
Header = $"{GetTreeStatusPrefix(item)}{item.Title} ({item.Type})",
Tag = item,
ContextMenu = new System.Windows.Controls.ContextMenu()
};
treeItem.ContextMenu.Items.Add(pinMenuItem);
treeItem.ContextMenu.Items.Add(disableMenuItem);
treeItem.ContextMenu.Items.Add(duplicateMenuItem);
treeItem.PreviewMouseRightButtonDown += (_, e) =>
{
@@ -115,6 +122,22 @@ public partial class MainWindow : Window
return treeItem;
}
private static string GetTreeStatusPrefix(LauncherItem item)
{
List<string> parts = [];
if (item.IsFavorite)
{
parts.Add("Pinned");
}
if (item.IsDisabled)
{
parts.Add("Disabled");
}
return parts.Count == 0 ? "" : $"[{string.Join(", ", parts)}] ";
}
private bool SelectTreeItem(LauncherItem item)
{
foreach (object root in ItemsTree.Items)
@@ -827,6 +850,23 @@ public partial class MainWindow : Window
: $"Unpinned {itemToSelect.Title}. Click Save to keep it.";
}
private void ToggleDisabled_Click(object sender, RoutedEventArgs e)
{
if (controller is null || selectedItem is null)
{
return;
}
ApplyCurrentItem();
selectedItem.IsDisabled = !selectedItem.IsDisabled;
LauncherItem itemToSelect = selectedItem;
selectedPath = FindItemPath(itemToSelect);
RefreshView(itemToSelect);
StatusText.Text = itemToSelect.IsDisabled
? $"Disabled {itemToSelect.Title}. Click Save to keep it."
: $"Enabled {itemToSelect.Title}. Click Save to keep it.";
}
private void DuplicateItem_Click(object sender, RoutedEventArgs e)
{
if (controller is null || selectedItem is null)
@@ -890,6 +930,7 @@ public partial class MainWindow : Window
Arguments = item.Arguments,
IconPath = item.IconPath,
IsFavorite = item.IsFavorite,
IsDisabled = item.IsDisabled,
DisplayMode = item.DisplayMode,
Children = item.Children.Select(child => DuplicateItem(child, renameRoot: false)).ToList()
};
@@ -1482,6 +1523,7 @@ public partial class MainWindow : Window
Arguments = string.IsNullOrWhiteSpace(ArgumentsBox.Text) ? null : ArgumentsBox.Text.Trim(),
IconPath = string.IsNullOrWhiteSpace(IconPathBox.Text) ? null : IconPathBox.Text.Trim(),
IsFavorite = selectedItem.IsFavorite,
IsDisabled = selectedItem.IsDisabled,
DisplayMode = ItemDisplayModeBox.SelectedItem is LauncherDisplayMode mode
? mode
: selectedItem.DisplayMode