Favoriten setzen per ContextMenu

This commit is contained in:
2026-01-30 11:40:42 +01:00
parent 0f9635b31f
commit ada28006f8
3 changed files with 50 additions and 14 deletions

View File

@@ -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">
<dxe:ListBoxEdit.ContextMenu>
<ContextMenu>
<ContextMenu.Resources>
@@ -289,6 +290,15 @@ VerticalAlignment="Stretch">
</MenuItem.Icon>
</MenuItem>
<Separator />
<MenuItem
x:Name="favorite"
Command="{Binding ChangeFavoritenStatePromptCommand}"
Header="Kopieren">
<MenuItem.Icon>
<Image Source="..\..\..\Ressources\Icons\Favorites32.png" />
</MenuItem.Icon>
</MenuItem>
<Separator />
<MenuItem Command="{Binding CopyPromptCommand}" Header="Kopieren">
<MenuItem.Icon>
<Image Source="..\..\..\Ressources\Icons\Copy24.png" />

View File

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

View File

@@ -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;
}
}
}