Files
BeWoPlaner/BeWo/ViewModel/ListViewModel/AiConversationMessageListVM.cs

87 lines
2.2 KiB
C#
Raw Permalink Normal View History

2025-03-28 10:05:29 +01:00
using BeWo.ServiceProxy;
2025-11-24 12:20:26 +01:00
using BS.Shared.DataContracts.Feature.AI;
2025-03-28 10:05:29 +01:00
using BS.Shared.Extensions;
using ChatController.Utilities.Extensions;
using DevExpress.Mvvm;
using DevExpress.XtraPrinting.Native;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
2025-04-22 14:05:51 +02:00
using System.ComponentModel;
2025-03-28 10:05:29 +01:00
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
2025-03-28 10:05:29 +01:00
using System.Windows.Threading;
namespace BeWo.ViewModel.ListViewModel
{
public class AiConversationMessageListVM : AbstractDCListMapperVM<AiConversationMessageDC, AiConversationMessageVM>
{
public AiConversationMessageListVM(List<AiConversationMessageDC> pDCs) : base(pDCs)
{
2025-07-09 15:30:54 +02:00
foreach(var vm in VMList)
{
vm.IsCheckedChanged += CloneIsCheckedChanged;
}
//VMList.ListChanged += (s, e) =>
// {
// if (e.ListChangedType == ListChangedType.ItemChanged)
// {
// var changedItem = VMList[e.NewIndex];
// Item_PropertyChanged(changedItem, new PropertyChangedEventArgs(nameof(AiConversationMessageVM.IsChecked)));
// }
// };
2025-04-22 14:05:51 +02:00
}
public AiConversationMessageListVM() : this(null) { }
2025-04-22 14:05:51 +02:00
2025-07-09 15:30:54 +02:00
private void CloneIsCheckedChanged(object sender, EventArgs e)
2025-04-22 14:05:51 +02:00
{
2025-07-09 15:30:54 +02:00
if(sender is AiConversationMessageVM vm)
2025-04-22 14:05:51 +02:00
{
2025-07-09 15:30:54 +02:00
int index = VMList.IndexOf(vm);
2025-03-28 10:05:29 +01:00
2025-07-09 15:30:54 +02:00
if (vm.IsChecked)
2025-04-22 14:05:51 +02:00
{
2025-07-09 15:30:54 +02:00
for (int i = 0; i < index; i++)
{
VMList[i].SetIsChecked(true);
}
2025-04-22 14:05:51 +02:00
}
else
{
2025-06-30 13:29:09 +02:00
for (int i = index - 1; i < VMList.Count; i++)
2025-07-09 15:30:54 +02:00
{
VMList[i].SetIsChecked(false);
}
2025-04-22 14:05:51 +02:00
}
}
2025-03-28 10:05:29 +01:00
}
2025-07-09 15:30:54 +02:00
//private void Item_PropertyChanged(object sender, PropertyChangedEventArgs e)
//{
// if (e.PropertyName == nameof(AiConversationMessageVM.IsChecked)
// && sender is AiConversationMessageVM vm
// && vm.Role == BS.Shared.AiConversationMessageRole.Assistent)
// {
// var changedItem = (AiConversationMessageVM)sender;
// int index = VMList.IndexOf(changedItem);
// if (changedItem.IsChecked)
// {
// for (int i = 0; i <= index; i++)
// if (!VMList[i].IsChecked)
// VMList[i].IsChecked = true;
// }
// else
// {
// for (int i = index - 1; i < VMList.Count; i++)
// if (VMList[i].IsChecked)
// VMList[i].IsChecked = false;
// }
// }
//}
2025-03-28 10:05:29 +01:00
}
}