184 lines
5.8 KiB
C#
184 lines
5.8 KiB
C#
using BeWo.ServiceProxy;
|
|
using BeWo.View.Detail.AI;
|
|
using BeWo.ViewModel;
|
|
using BeWo.ViewModel.View.AI;
|
|
using BS.Shared;
|
|
using BS.Shared.DataContracts.Feature.AI;
|
|
using DevExpress.Utils.Mdi;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Runtime.Remoting.Messaging;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Data;
|
|
using System.Windows.Documents;
|
|
using System.Windows.Input;
|
|
using System.Windows.Media;
|
|
using System.Windows.Media.Imaging;
|
|
using System.Windows.Navigation;
|
|
using System.Windows.Shapes;
|
|
|
|
namespace BeWo.View.Controls.AI
|
|
{
|
|
public enum AiPromptbausteinButtonState
|
|
{
|
|
Hidden,
|
|
Normal,
|
|
Loading,
|
|
Disabled
|
|
}
|
|
|
|
/// <summary>
|
|
/// Interaktionslogik für AiPromptbausteinButton.xaml
|
|
/// </summary>
|
|
public partial class AiPromptbausteinButton : UserControl
|
|
{
|
|
public static readonly DependencyProperty CanExecuteProperty =
|
|
DependencyProperty.Register("CanExecute", typeof(bool), typeof(AiPromptbausteinButton), new PropertyMetadata(true, OnCanExecuteChanged));
|
|
|
|
public static readonly DependencyProperty StateProperty =
|
|
DependencyProperty.Register("State", typeof(AiPromptbausteinButtonState), typeof(AiPromptbausteinButton), new PropertyMetadata(AiPromptbausteinButtonState.Normal, OnStateChanged));
|
|
|
|
public static readonly DependencyProperty ActionTypeProperty =
|
|
DependencyProperty.Register("ActionType", typeof(AiActionType), typeof(AiPromptbausteinButton), new PropertyMetadata(AiActionType.ServiceRecord, OnActionTypeChanged));
|
|
|
|
public AiPromptbausteinButtonState State
|
|
{
|
|
get { return (AiPromptbausteinButtonState)GetValue(StateProperty); }
|
|
set { SetValue(StateProperty, value); }
|
|
}
|
|
public AiActionType ActionType
|
|
{
|
|
get { return (AiActionType)GetValue(ActionTypeProperty); }
|
|
set { SetValue(ActionTypeProperty, value); }
|
|
}
|
|
|
|
public bool CanExecute
|
|
{
|
|
get { return (bool)GetValue(CanExecuteProperty); }
|
|
set { SetValue(CanExecuteProperty, value); }
|
|
}
|
|
|
|
public event EventHandler<AiPromptbausteinPromptVM> PromptAccepted;
|
|
|
|
public AiPromptbausteinButton()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
private static void OnStateChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
|
{
|
|
var control = (AiPromptbausteinButton)d;
|
|
var state = (AiPromptbausteinButtonState)e.NewValue;
|
|
control.UpdateState(state);
|
|
}
|
|
private static void OnActionTypeChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
|
{
|
|
var control = (AiPromptbausteinButton)d;
|
|
var actionType = (AiActionType)e.NewValue;
|
|
control.UpdateActionType(actionType);
|
|
}
|
|
private static void OnCanExecuteChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
|
{
|
|
var control = (AiPromptbausteinButton)d;
|
|
var canExecute = (bool)e.NewValue;
|
|
control.UpdateCanExecute(canExecute);
|
|
}
|
|
|
|
public void AiPromptOpenAll()
|
|
{
|
|
popup_promptbaustein_all.IsOpen = true;
|
|
}
|
|
public void AiPromptOpenFavorite()
|
|
{
|
|
popup_promptbaustein_favoriten.IsOpen = true;
|
|
}
|
|
|
|
private void btnOpenAi5_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
AiPromptOpenAll();
|
|
}
|
|
private void btnOpenAi5_MouseRightButtonUp(object sender, MouseButtonEventArgs e)
|
|
{
|
|
AiPromptOpenFavorite();
|
|
}
|
|
|
|
private void InitPromptbausteine(AiActionType actionType, List<AiPromptbausteinFolderDC> folders)
|
|
{
|
|
VMFactory.CreateAiPromptbausteinFolderListVM(folders, (listvm) =>
|
|
{
|
|
var viewmodel = new AiPromptbausteinSelectionComplexViewModel(actionType, listvm);
|
|
viewmodel.PromptAccepted += PromptAccepted;
|
|
popup_promptbaustein_all.Closed += (s, e) => viewmodel.ResetSelection();
|
|
var view = new AiPromptbausteinComplexSelectionView(viewmodel);
|
|
view.Padding = new Thickness(3);
|
|
view.Background = FindResource("ObjectEditBackgroundBrush") as System.Windows.Media.Brush;
|
|
border_promptbaustein_al.Child = view;
|
|
|
|
var viewmodel2 = new AiPromptbausteinSelectionComplexViewModel(actionType, listvm, true);
|
|
viewmodel2.PromptAccepted += PromptAccepted;
|
|
popup_promptbaustein_favoriten.Closed += (s, e) => viewmodel2.ResetSelection();
|
|
var view2 = new AiPromptbausteinComplexSelectionView(viewmodel2);
|
|
view2.ReduceSelection();
|
|
viewmodel2.SelectedFolder = viewmodel2.Folders.VMList[0];
|
|
view2.Padding = new Thickness(3);
|
|
view2.Background = FindResource("ObjectEditBackgroundBrush") as System.Windows.Media.Brush;
|
|
border_promptbaustein_favoriten.Child = view2;
|
|
State = AiPromptbausteinButtonState.Normal;
|
|
});
|
|
}
|
|
private void UpdateState(AiPromptbausteinButtonState state)
|
|
{
|
|
switch (state)
|
|
{
|
|
case AiPromptbausteinButtonState.Hidden:
|
|
root.Visibility = Visibility.Collapsed;
|
|
root.IsEnabled = true;
|
|
btnOpenAi5.IsEnabled = true;
|
|
break;
|
|
case AiPromptbausteinButtonState.Normal:
|
|
root.Visibility = Visibility.Visible;
|
|
root.IsEnabled = true;
|
|
btnOpenAi5.IsEnabled = true;
|
|
break;
|
|
case AiPromptbausteinButtonState.Loading:
|
|
root.Visibility = Visibility.Visible;
|
|
root.IsEnabled = false;
|
|
btnOpenAi5.IsEnabled = false;
|
|
break;
|
|
case AiPromptbausteinButtonState.Disabled:
|
|
root.Visibility = Visibility.Visible;
|
|
root.IsEnabled = true;
|
|
btnOpenAi5.IsEnabled = false;
|
|
break;
|
|
default:
|
|
throw new NotImplementedException();
|
|
break;
|
|
}
|
|
}
|
|
private void UpdateActionType(AiActionType actionType)
|
|
{
|
|
ActionType = actionType;
|
|
|
|
if (!BeWoApp.AppSettings.ShowAI)
|
|
{
|
|
State = AiPromptbausteinButtonState.Hidden;
|
|
return;
|
|
}
|
|
|
|
State = AiPromptbausteinButtonState.Loading;
|
|
ServiceFacade.DoAiEnhancedServiceAsnyc(x => x.GetAiPromptbausteinFolder(actionType), folders => InitPromptbausteine(actionType, folders));
|
|
}
|
|
private void UpdateCanExecute(bool canExecute)
|
|
{
|
|
if (canExecute)
|
|
State = AiPromptbausteinButtonState.Normal;
|
|
else
|
|
State = AiPromptbausteinButtonState.Disabled;
|
|
}
|
|
}
|
|
}
|