This commit is contained in:
Meik
2025-11-11 11:03:42 +01:00
commit dc3e8a2e4c
582 changed files with 191465 additions and 0 deletions

View File

@@ -0,0 +1,223 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Input;
using FasdDesktopUi.Basics.Models;
using FasdDesktopUi.Basics.UiActions;
namespace FasdDesktopUi.Basics.UserControls
{
public partial class DetailedData : UserControl
{
#region Properties
#region ListViewDataSource
#region ListViewHeaders
public List<object> ListViewHeaders
{
get
{
if (DetailedInformationData.FullDetailedData?.Count > 0)
{
var _retVal = DetailedInformationData.FullDetailedData[0];
var _ret = _retVal as List<object>;
return _ret;
}
return new List<object>();
}
}
#endregion
#region ListViewData
internal static readonly DependencyPropertyKey ListViewDataKey = DependencyProperty.RegisterReadOnly("ListViewData", typeof(List<object>), typeof(DetailedData), new PropertyMetadata(new List<object>()));
public static readonly DependencyProperty ListViewDataProperty = ListViewDataKey.DependencyProperty;
public List<object> ListViewData => (List<object>)GetValue(ListViewDataProperty);
#endregion
#endregion
#region DetailedData
private static void DetailedDataChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
if (!(d is DetailedData _me))
return;
if (_me.DetailedInformationData == null)
return;
int _skip = _me.DetailedInformationData.HasColumnHeaders? 1 : 0;
if (_me.DetailedInformationData.FullDetailedData.Count < _skip)
return;
var listViewDataKeyValue = _me.DetailedInformationData.FullDetailedData.Count > _skip ? _me.DetailedInformationData.FullDetailedData.Skip(_skip).ToList() : new List<object>();
_me.SetValue(ListViewDataKey, listViewDataKeyValue);
_me.UpdateListView();
}
public static readonly DependencyProperty DetailedInformationDataProperty =
DependencyProperty.Register("DetailedInformationData", typeof(cDetailedDataModel), typeof(DetailedData), new PropertyMetadata(new cDetailedDataModel(), new PropertyChangedCallback(DetailedDataChangedCallback)));
public cDetailedDataModel DetailedInformationData
{
get { return (cDetailedDataModel)GetValue(DetailedInformationDataProperty); }
set { SetValue(DetailedInformationDataProperty, value); }
}
#endregion
#region IsCloseButtonVisible
public static readonly DependencyProperty IsCloseButtonVisibleProperty =
DependencyProperty.Register("IsCloseButtonVisible", typeof(bool), typeof(DetailedData), new PropertyMetadata(false));
public bool IsCloseButtonVisible
{
get { return (bool)GetValue(IsCloseButtonVisibleProperty); }
set { SetValue(IsCloseButtonVisibleProperty, value); }
}
#endregion
public Action CloseButtonClickedAction { get; set; }
#endregion
public DetailedData()
{
InitializeComponent();
}
private void UpdateListView()
{
DetailedDataListView.ClearValue(ListView.ViewProperty);
if (ListViewHeaders.Count < 0)
return;
GridView newGridView = new GridView() { AllowsColumnReorder = false };
// set the header style (header present or not)
var _data = DetailedInformationData;
if (!_data.HasColumnHeaders)
{
object _objStyle = this.FindResource("NoColumnHeaderStyle");
if (_objStyle is Style _style)
if (!DetailedDataListView.Resources.Contains(typeof(GridViewColumnHeader)))
DetailedDataListView.Resources.Add(typeof(GridViewColumnHeader), _style);
}
else
{
if (DetailedDataListView.Resources.Contains(typeof(GridViewColumnHeader)))
DetailedDataListView.Resources.Remove(typeof(GridViewColumnHeader));
}
// create the header columns
for (int i = 0; i < ListViewHeaders.Count; i++)
{
BindingBase bindingBase = new Binding($"[{i}]");
object _header = null;
if (_data.HasColumnHeaders)
_header = ListViewHeaders[i];
var _gvColumn = new GridViewColumn() { Header = _header, DisplayMemberBinding = bindingBase };
newGridView.Columns.Add(_gvColumn);
}
DetailedDataListView.View = newGridView;
}
private void ListView_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
{
if (sender is ListView && !e.Handled)
{
e.Handled = true;
var eventArg = new MouseWheelEventArgs(e.MouseDevice, e.Timestamp, e.Delta)
{
RoutedEvent = MouseWheelEvent,
Source = sender
};
var parent = ((Control)sender).Parent as UIElement;
parent.RaiseEvent(eventArg);
}
}
#region CloseButton_Click
private void CloseButton_Click()
{
if (CloseButtonClickedAction != null)
CloseButtonClickedAction.Invoke();
}
private void CloseButton_MouseUp(object sender, MouseButtonEventArgs e)
{
CloseButton_Click();
}
private void CloseButton_TouchDown(object sender, TouchEventArgs e)
{
CloseButton_Click();
}
#endregion
#region CopyButton_Click
private async Task CopyButton_ClickAsync()
{
var uiAction = new cUiCopyDetailsTableContent(DetailedInformationData);
cUiActionBase.RaiseEvent(uiAction, this, this);
await cUtility.ChangeIconToCheckAsync(CopyButton);
}
private async void CopyButton_MouseUp(object sender, MouseButtonEventArgs e)
{
await CopyButton_ClickAsync();
}
private async void CopyButton_TouchDown(object sender, TouchEventArgs e)
{
await CopyButton_ClickAsync();
}
#endregion
#region DownloadButton_Click
private void DownloadButton_Click()
{
var uiAction = new cUiSaveDetailsTableContent(DetailedInformationData);
cUiActionBase.RaiseEvent(uiAction, this, this);
}
private void DownloadButton_MouseUp(object sender, MouseButtonEventArgs e)
{
DownloadButton_Click();
}
private void DownloadButton_TouchDown(object sender, TouchEventArgs e)
{
DownloadButton_Click();
}
#endregion
}
}