From ada28006f86e92bff2d24f193834491f4cf33954 Mon Sep 17 00:00:00 2001 From: Rene Evertz Date: Fri, 30 Jan 2026 11:40:42 +0100 Subject: [PATCH] Favoriten setzen per ContextMenu --- .../AI/AiPromptbausteinComplexTreeView.xaml | 12 ++++- .../AiPromptbausteinComplexTreeView.xaml.cs | 1 + .../AiPromptbausteinComplexTreeViewModel.cs | 51 ++++++++++++++----- 3 files changed, 50 insertions(+), 14 deletions(-) diff --git a/BeWo/View/Detail/AI/AiPromptbausteinComplexTreeView.xaml b/BeWo/View/Detail/AI/AiPromptbausteinComplexTreeView.xaml index afe7a2308..0aa0f80af 100644 --- a/BeWo/View/Detail/AI/AiPromptbausteinComplexTreeView.xaml +++ b/BeWo/View/Detail/AI/AiPromptbausteinComplexTreeView.xaml @@ -268,7 +268,8 @@ VerticalAlignment="Stretch"> ContextMenuService.IsEnabled="{Binding IsChecked, ElementName=EditToggleButton}" ItemContainerStyle="{StaticResource PromptListBoxItem}" ItemsSource="{Binding SelectedFolder.Prompts, UpdateSourceTrigger=PropertyChanged}" - SelectedItem="{Binding SelectedPrompt, Mode=TwoWay}"> + SelectedItem="{Binding SelectedPrompt, Mode=TwoWay}" + SelectionMode="Single"> @@ -289,6 +290,15 @@ VerticalAlignment="Stretch"> + + + + + + diff --git a/BeWo/View/Detail/AI/AiPromptbausteinComplexTreeView.xaml.cs b/BeWo/View/Detail/AI/AiPromptbausteinComplexTreeView.xaml.cs index 82ace786c..3ef9f0f81 100644 --- a/BeWo/View/Detail/AI/AiPromptbausteinComplexTreeView.xaml.cs +++ b/BeWo/View/Detail/AI/AiPromptbausteinComplexTreeView.xaml.cs @@ -118,6 +118,7 @@ namespace BeWo.View.Detail.AI private void ListBox_ContextMenuOpening(object sender, ContextMenuEventArgs e) { ViewModel.UpdatePromptCommands(); + favorite.Header = ViewModel.SelectedPrompt.IsFavorite ? "Favorit entfernen" : "Favorit hinzufügen"; } //private void listBox_Prompts_PreviewMouseUp(object sender, MouseButtonEventArgs e) diff --git a/BeWo/ViewModel/View/Administration/AiPromptbausteinComplexTreeViewModel.cs b/BeWo/ViewModel/View/Administration/AiPromptbausteinComplexTreeViewModel.cs index 6b1e70630..332e411ea 100644 --- a/BeWo/ViewModel/View/Administration/AiPromptbausteinComplexTreeViewModel.cs +++ b/BeWo/ViewModel/View/Administration/AiPromptbausteinComplexTreeViewModel.cs @@ -43,6 +43,7 @@ namespace BeWo.ViewModel.View.Administration public DelegateCommand CopyPromptCommand { get; private set; } public DelegateCommand PastePromptCommand { get; private set; } public DelegateCommand DeletePromptCommand { get; private set; } + public DelegateCommand ChangeFavoritenStatePromptCommand { get; private set; } public bool IsEditingMode { get; set; } @@ -78,6 +79,7 @@ namespace BeWo.ViewModel.View.Administration CopyPromptCommand = new DelegateCommand(CopyPrompt, canCopyPrompt, false); PastePromptCommand = new DelegateCommand(PastePrompt, canPastePrompt, false); DeletePromptCommand = new DelegateCommand(OpenDeletePromptDialog, canOpenDeletePromptDialog, false); + ChangeFavoritenStatePromptCommand = new DelegateCommand(ChangeFavoritenStatePrompt, canChangeFavoritenStatePrompt, false); IsEditingMode = true; } @@ -368,23 +370,32 @@ namespace BeWo.ViewModel.View.Administration var edit_dc = edit_vm.CommitToDataContract(); sel_prompt.UpdateByDataContract(edit_dc); - if (sel_prompt.IsFavorite && !Favoriten.SubPrompts.VMList.Contains(sel_prompt)) - Favoriten.SubPrompts.VMList.Add(sel_prompt); - else if (!sel_prompt.IsFavorite && Favoriten.SubPrompts.VMList.Contains(sel_prompt)) - { - Favoriten.SubPrompts.VMList.Remove(sel_prompt); - - if(Favoriten.SubPrompts.Count == 0) - { - var selected_folder = SelectedFolder; - SelectedFolder = null; - SelectedFolder = selected_folder; - } - } + UpdateSelectedPromptFavorite(sel_prompt); }; WindowService.Show(vm); } + + private void UpdateSelectedPromptFavorite(AiPromptbausteinPromptVM sel_prompt = null) + { + if (sel_prompt is null) + sel_prompt = SelectedPrompt; + + if (sel_prompt.IsFavorite && !Favoriten.SubPrompts.VMList.Contains(sel_prompt)) + Favoriten.SubPrompts.VMList.Add(sel_prompt); + else if (!sel_prompt.IsFavorite && Favoriten.SubPrompts.VMList.Contains(sel_prompt)) + { + Favoriten.SubPrompts.VMList.Remove(sel_prompt); + + if (Favoriten.SubPrompts.Count == 0) + { + var selected_folder = SelectedFolder; + SelectedFolder = null; + SelectedFolder = selected_folder; + } + } + } + void CopyPrompt() { CopiedPrompt = SelectedPrompt; @@ -415,6 +426,15 @@ namespace BeWo.ViewModel.View.Administration folder.SubPrompts.VMList.Remove(SelectedPrompt); } + void ChangeFavoritenStatePrompt() + { + var sel_prompt = SelectedPrompt; + + sel_prompt.IsFavorite = !sel_prompt.IsFavorite; + + UpdateSelectedPromptFavorite(sel_prompt); + } + bool canOpenAddPromptDialog() { return SelectedFolder?.CanAddPrompt ?? false; @@ -435,5 +455,10 @@ namespace BeWo.ViewModel.View.Administration { return SelectedPrompt?.CanEdit ?? false; } + + bool canChangeFavoritenStatePrompt() + { + return SelectedPrompt is object; + } } }