Add pinned launcher items

This commit is contained in:
Ray Berezowski
2026-08-26 20:41:20 -04:00
parent 749a856faa
commit 9f1b012d15
9 changed files with 48 additions and 6 deletions

View File

@@ -84,15 +84,22 @@ public partial class MainWindow : Window
private TreeViewItem CreateTreeItem(LauncherItem item)
{
var pinMenuItem = new System.Windows.Controls.MenuItem
{
Header = item.IsFavorite ? "Unpin from Top" : "Pin to Top"
};
pinMenuItem.Click += ToggleFavorite_Click;
var duplicateMenuItem = new System.Windows.Controls.MenuItem { Header = "Duplicate Item" };
duplicateMenuItem.Click += DuplicateItem_Click;
var treeItem = new TreeViewItem
{
Header = $"{item.Title} ({item.Type})",
Header = $"{(item.IsFavorite ? "[Pinned] " : "")}{item.Title} ({item.Type})",
Tag = item,
ContextMenu = new System.Windows.Controls.ContextMenu()
};
treeItem.ContextMenu.Items.Add(pinMenuItem);
treeItem.ContextMenu.Items.Add(duplicateMenuItem);
treeItem.PreviewMouseRightButtonDown += (_, e) =>
{
@@ -803,6 +810,23 @@ public partial class MainWindow : Window
StatusText.Text = "Added submenu. Rename it, then Save.";
}
private void ToggleFavorite_Click(object sender, RoutedEventArgs e)
{
if (controller is null || selectedItem is null)
{
return;
}
ApplyCurrentItem();
selectedItem.IsFavorite = !selectedItem.IsFavorite;
LauncherItem itemToSelect = selectedItem;
selectedPath = FindItemPath(itemToSelect);
RefreshView(itemToSelect);
StatusText.Text = itemToSelect.IsFavorite
? $"Pinned {itemToSelect.Title}. Click Save to keep it."
: $"Unpinned {itemToSelect.Title}. Click Save to keep it.";
}
private void DuplicateItem_Click(object sender, RoutedEventArgs e)
{
if (controller is null || selectedItem is null)
@@ -865,6 +889,7 @@ public partial class MainWindow : Window
Target = item.Target,
Arguments = item.Arguments,
IconPath = item.IconPath,
IsFavorite = item.IsFavorite,
DisplayMode = item.DisplayMode,
Children = item.Children.Select(child => DuplicateItem(child, renameRoot: false)).ToList()
};
@@ -1456,6 +1481,7 @@ public partial class MainWindow : Window
Target = TargetBox.Text.Trim(),
Arguments = string.IsNullOrWhiteSpace(ArgumentsBox.Text) ? null : ArgumentsBox.Text.Trim(),
IconPath = string.IsNullOrWhiteSpace(IconPathBox.Text) ? null : IconPathBox.Text.Trim(),
IsFavorite = selectedItem.IsFavorite,
DisplayMode = ItemDisplayModeBox.SelectedItem is LauncherDisplayMode mode
? mode
: selectedItem.DisplayMode