280 lines
12 KiB
C#
280 lines
12 KiB
C#
using System.Collections.Generic;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Media;
|
|
using DTS.Common.Controls;
|
|
using DTS.Common.Enums.Channels;
|
|
using DTS.Common.Interface.Channels.ChannelCodes;
|
|
using DTS.Common.Utils;
|
|
|
|
// ReSharper disable CheckNamespace
|
|
|
|
namespace ChannelCodes
|
|
{
|
|
/// <inheritdoc cref="IChannelCodesListView" />
|
|
/// <summary>
|
|
/// Interaction logic for ChannelCodesListView.xaml
|
|
/// </summary>
|
|
public partial class ChannelCodesListView : IChannelCodesListView
|
|
{
|
|
public ChannelCodesListView()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
private void GridViewColumnHeaderSearchable_OnSearch(object sender, RoutedEventArgs e)
|
|
{
|
|
var searchTerm = (string)e.OriginalSource;
|
|
var columnTag = (sender as GridViewColumnHeaderSearchable)?.Tag;
|
|
var viewModel = (IChannelCodesListViewModel)DataContext;
|
|
viewModel.Filter(columnTag, searchTerm);
|
|
}
|
|
//private void ChannelType_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
|
//{
|
|
// if( e.RemovedItems.Count == 0) { return; }
|
|
// if( !(DataContext is ChannelCodesListViewModel vm)) { return; }
|
|
// if( !(((System.Windows.Controls.Control) e.Source).DataContext is IChannelCode channelCode)) { return; }
|
|
|
|
// vm.MarkModified(channelCode);
|
|
//}
|
|
private void GridViewColumnHeader_OnClick(object sender, RoutedEventArgs e)
|
|
{
|
|
var vm = (IChannelCodesListViewModel)DataContext;
|
|
var columnTag = (sender as GridViewColumnHeaderSearchable)?.Tag ?? Utils.FindChild<GridViewColumnHeaderSearchable>((DependencyObject)e.OriginalSource, null)?.Tag;
|
|
vm?.Sort(columnTag, true);
|
|
}
|
|
private void ChannelCodeTextBox_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
|
|
{
|
|
if (!(DataContext is ChannelCodesListViewModel vm)) { return; }
|
|
if (!(((System.Windows.Controls.Control)e.Source).DataContext is IChannelCode channelCode)) { return; }
|
|
|
|
vm.MarkModified(channelCode);
|
|
}
|
|
|
|
private void ChannelCodeTextBoxUser_TextChanged(object sender, TextChangedEventArgs e)
|
|
{
|
|
if (!(DataContext is ChannelCodesListViewModel vm)) { return; }
|
|
if (!(sender is Control control)) { return; }
|
|
if (!(control.DataContext is IChannelCode channelCode)) { return; }
|
|
var notUsed1 = new List<string>();
|
|
var notUsed2 = new List<string>();
|
|
vm.MarkModified(channelCode);
|
|
vm.ValidateUser(ref notUsed1, ref notUsed2);
|
|
}
|
|
|
|
private void ChannelCodeTextBoxIso_TextChanged(object sender, TextChangedEventArgs e)
|
|
{
|
|
if (!(DataContext is ChannelCodesListViewModel vm)) { return; }
|
|
if (!(sender is Control control)) { return; }
|
|
if (!(control.DataContext is IChannelCode channelCode)) { return; }
|
|
vm.MarkModified(channelCode);
|
|
var notUsed1 = new List<string>();
|
|
var notUsed2 = new List<string>();
|
|
vm.ValidateISO(ref notUsed1, ref notUsed2);
|
|
}
|
|
|
|
private void DisplayNameTextBox_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
|
|
{
|
|
if (!(DataContext is ChannelCodesListViewModel vm)) { return; }
|
|
if (!(((System.Windows.Controls.Control)e.Source).DataContext is IChannelCode channelCode)) { return; }
|
|
|
|
vm.MarkModified(channelCode);
|
|
}
|
|
|
|
private void DisplayNameTextBoxUser_TextChanged(object sender, TextChangedEventArgs e)
|
|
{
|
|
if (!(DataContext is ChannelCodesListViewModel vm)) { return; }
|
|
if (!(e.Source is TextBox textBox)) { return; }
|
|
if (!(textBox.DataContext is IChannelCode channelCode)) { return; }
|
|
|
|
vm.MarkModified(channelCode);
|
|
var notUsed1 = new List<string>();
|
|
var notUsed2 = new List<string>();
|
|
vm.ValidateUser(ref notUsed1, ref notUsed2);
|
|
}
|
|
|
|
private void DisplayNameTextBoxIso_TextChanged(object sender, TextChangedEventArgs e)
|
|
{
|
|
if (!(DataContext is ChannelCodesListViewModel vm)) { return; }
|
|
if (!(e.Source is TextBox textBox)) { return; }
|
|
if (!(textBox.DataContext is IChannelCode channelCode)) { return; }
|
|
|
|
vm.MarkModified(channelCode);
|
|
var notUsed1 = new List<string>();
|
|
var notUsed2 = new List<string>();
|
|
vm.ValidateISO(ref notUsed1, ref notUsed2);
|
|
}
|
|
|
|
private void ISO_Checked(object sender, RoutedEventArgs e)
|
|
{
|
|
if (!(DataContext is ChannelCodesListViewModel vm)) { return; }
|
|
|
|
vm.ViewMode = ChannelCodesListViewModel.ViewModes.ISO;
|
|
}
|
|
|
|
private void User_Checked(object sender, RoutedEventArgs e)
|
|
{
|
|
if (!(DataContext is ChannelCodesListViewModel vm)) { return; }
|
|
|
|
vm.ViewMode = ChannelCodesListViewModel.ViewModes.User;
|
|
}
|
|
|
|
private void ISOCodes_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
|
{
|
|
if (!(DataContext is ChannelCodesListViewModel vm)) { return; }
|
|
if (!(sender is ListView lv)) { return; }
|
|
|
|
var list = new List<IChannelCode>();
|
|
foreach (var item in lv.SelectedItems)
|
|
{
|
|
if (!(item is IChannelCode code))
|
|
{
|
|
continue;
|
|
}
|
|
list.Add(code);
|
|
}
|
|
vm.SetISOSelection(list.ToArray());
|
|
}
|
|
|
|
private void UserCodes_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
|
{
|
|
if (!(DataContext is ChannelCodesListViewModel vm)) { return; }
|
|
if (!(sender is ListView lv)) { return; }
|
|
|
|
var list = new List<IChannelCode>();
|
|
foreach (var item in lv.SelectedItems)
|
|
{
|
|
if (!(item is IChannelCode code))
|
|
{
|
|
continue;
|
|
}
|
|
list.Add(code);
|
|
}
|
|
vm.SetUserSelection(list.ToArray());
|
|
}
|
|
|
|
private void ChannelCodeBuilder_OnChannelCodeSelected(object sender, string code, string name, ChannelEnumsAndConstants.ChannelCodeType codetype)
|
|
{
|
|
if (!(DataContext is ChannelCodesListViewModel viewModel)) { return; }
|
|
|
|
if (!(sender is Control control)) { return; }
|
|
|
|
if (!(control.DataContext is IChannelCode channelCode)) { return; }
|
|
|
|
channelCode.Code = code;
|
|
if (string.IsNullOrWhiteSpace(channelCode.Name))
|
|
{
|
|
channelCode.Name = name;
|
|
}
|
|
viewModel.MarkModified(channelCode);
|
|
}
|
|
|
|
private void ISOChannelCodesListView_PreviewMouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e)
|
|
{
|
|
var point = e.GetPosition(ISOChannelCodesListView);
|
|
|
|
//we have to do multiple hittests unfortunately, because borders and rectangles...
|
|
var result = VisualTreeHelper.HitTest((UIElement)sender, point);
|
|
if (null == result) { return; }
|
|
if (!(result.VisualHit is UIElement element)) { return; }
|
|
var result2 = ISOChannelCodesListView.InputHitTest(point);
|
|
if (!(result2 is UIElement element2)) { return; }
|
|
|
|
//clicking on the bottom of the listview produces a scrollviewer, if we get that we can return
|
|
if (element is ScrollViewer)
|
|
{
|
|
return;
|
|
}
|
|
|
|
var vm = (IChannelCodesListViewModel)DataContext;
|
|
if (element is TextBlock tb)
|
|
{
|
|
if (tb.Text == ChannelCodes.Resources.StringResources.ISOCode) { vm?.Sort(ISOCodeColumnHeader.Tag, true); }
|
|
if (tb.Text == ChannelCodes.Resources.StringResources.ISOChannelName) { vm?.Sort(ISOChannelNameColumnHeader.Tag, true); }
|
|
return;
|
|
}
|
|
if (ISOCodeColumnHeader.IsDescendantOf(element) || ISOCodeColumnHeader.IsDescendantOf(element2))
|
|
{
|
|
vm?.Sort(ISOCodeColumnHeader.Tag, true);
|
|
return;
|
|
}
|
|
if (ISOChannelNameColumnHeader.IsDescendantOf(element) || ISOChannelNameColumnHeader.IsDescendantOf(element2))
|
|
{
|
|
vm?.Sort(ISOChannelNameColumnHeader.Tag, true);
|
|
}
|
|
}
|
|
|
|
private void UserChannelCodesListView_PreviewMouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e)
|
|
{
|
|
var point = e.GetPosition(UserChannelCodesListView);
|
|
|
|
//we have to do multiple hittests unfortunately, because borders and rectangles...
|
|
var result = VisualTreeHelper.HitTest((UIElement)sender, point);
|
|
if (null == result) { return; }
|
|
if (!(result.VisualHit is UIElement element)) { return; }
|
|
var result2 = UserChannelCodesListView.InputHitTest(point);
|
|
if (!(result2 is UIElement element2)) { return; }
|
|
|
|
//clicking on the bottom of the listview produces a scrollviewer, if we get that we can return
|
|
if (element is ScrollViewer)
|
|
{
|
|
return;
|
|
}
|
|
|
|
var vm = (IChannelCodesListViewModel)DataContext;
|
|
if (element is TextBlock tb)
|
|
{
|
|
if (tb.Text == ChannelCodes.Resources.StringResources.UserCode) { vm?.Sort(UserCodeColumnHeader.Tag, true); }
|
|
if (tb.Text == ChannelCodes.Resources.StringResources.UserChannelName) { vm?.Sort(UserChannelNameColumnHeader.Tag, true); }
|
|
return;
|
|
}
|
|
if (UserCodeColumnHeader.IsDescendantOf(element) || UserCodeColumnHeader.IsDescendantOf(element2))
|
|
{
|
|
vm?.Sort(UserCodeColumnHeader.Tag, true);
|
|
return;
|
|
}
|
|
if (UserChannelNameColumnHeader.IsDescendantOf(element) || UserChannelNameColumnHeader.IsDescendantOf(element2))
|
|
{
|
|
vm?.Sort(UserChannelNameColumnHeader.Tag, true);
|
|
}
|
|
}
|
|
|
|
//FB 25725 ISO selection has been changed, update the iso selection
|
|
private void DisplayNameTextBoxIso_SelectionChanged(object sender, RoutedEventArgs e)
|
|
{
|
|
if (!(DataContext is ChannelCodesListViewModel vm)) { return; }
|
|
if (!(((Control)e.Source).DataContext is IChannelCode channelCode)) { return; }
|
|
|
|
vm.SetISOSelection(new List<IChannelCode> { channelCode }.ToArray());
|
|
}
|
|
|
|
//FB 25725 ISO selection has been changed, update the iso selection
|
|
private void ChannelCodeBuilder_SelectionChanged(object sender, RoutedEventArgs e)
|
|
{
|
|
if (!(DataContext is ChannelCodesListViewModel vm)) { return; }
|
|
if (!(sender is Control control)) { return; }
|
|
if (!(control.DataContext is IChannelCode channelCode)) { return; }
|
|
|
|
vm.SetISOSelection(new List<IChannelCode> { channelCode }.ToArray());
|
|
}
|
|
|
|
//FB 25725 User code selection has been changed, update the user code selection
|
|
private void DisplayNameTextBoxUser_SelectionChanged(object sender, RoutedEventArgs e)
|
|
{
|
|
if (!(DataContext is ChannelCodesListViewModel vm)) { return; }
|
|
if (!(((Control)e.Source).DataContext is IChannelCode channelCode)) { return; }
|
|
|
|
vm.SetUserSelection(new List<IChannelCode> { channelCode }.ToArray());
|
|
}
|
|
|
|
//FB 25725 User code selection has been changed, update the user code selection
|
|
private void ChannelCodeTextBoxUser_SelectionChanged(object sender, RoutedEventArgs e)
|
|
{
|
|
if (!(DataContext is ChannelCodesListViewModel vm)) { return; }
|
|
if (!(sender is Control control)) { return; }
|
|
if (!(control.DataContext is IChannelCode channelCode)) { return; }
|
|
|
|
vm.SetUserSelection(new List<IChannelCode> { channelCode }.ToArray());
|
|
}
|
|
}
|
|
}
|