using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Input; using System.Windows.Threading; using FasdDesktopUi.Basics.Models; using FasdDesktopUi.Pages.DetailsPage.Models; using FasdDesktopUi.Basics; using static C4IT.Logging.cLogManager; namespace FasdDesktopUi.Pages.DetailsPage.ViewModels { public class DetailsPageViewModel : BaseViewModel { #region Properties private int shownValueColumnsCount; public cSupportCaseDataProvider DataProvider { get; set; } #region ZoomInPercent private int zoomInPercent; public int ZoomInPercent { get { return zoomInPercent; } set { if (value < 50) value = 50; else if (value > 250) value = 250; zoomInPercent = value; cFasdCockpitConfig.Instance.SetDetailsPageZoom(value); OnPropertyChanged(); } } #endregion #region Header Properties #region PageTitle Property private string pageTitle; public string PageTitle { get { return pageTitle; } set { pageTitle = value; OnPropertyChanged(); } } #endregion #region HeadingData Property private List headingData; public List HeadingData { get { return headingData; } set { headingData = value; OnPropertyChanged(); } } #endregion #endregion #region Widget Properties #region WidgetData Property private List> widgetDataList; public List> WidgetDataList { get { return widgetDataList; } set { widgetDataList = value; OnPropertyChanged(); } } #endregion #region WidgetGeometry Property private List widgetGeometryList; public List WidgetGeometryList { get { return widgetGeometryList; } set { widgetGeometryList = value; OnPropertyChanged(); } } #endregion #endregion #region Details Properties #region TimeSinceLastRefresh property private TimeSpan timeSinceLastRefresh; public TimeSpan TimeSinceLastRefresh { get { return timeSinceLastRefresh; } set { timeSinceLastRefresh = value; OnPropertyChanged(); } } #endregion #region DetailsGeometry property private DetailsPageDataHistoryCollectionGeometryModel detailsGeometry; public DetailsPageDataHistoryCollectionGeometryModel DetailsGeometry { get { return detailsGeometry; } set { detailsGeometry = value; OnPropertyChanged(); } } #endregion #region DetailsData property private List detailsDataList; public List DetailsDataList { get { return detailsDataList; } set { detailsDataList = value; OnPropertyChanged(); } } #endregion #region ShownValueColumnsCount public int ShownValueColumnsCount { get => shownValueColumnsCount; set { shownValueColumnsCount = value; OnPropertyChanged(); } } #endregion #endregion #region Menu Properties #region MenuBarData property private List menuBarData; public List MenuBarData { get { return menuBarData; } set { menuBarData = value; OnPropertyChanged(); OnPropertyChanged(nameof(MenuDrawerData)); } } #endregion #region MenuDrawerData Property public List MenuDrawerData { get { if (MenuBarData != null) return MenuBarData.Where(x => x.IconPositionIndex < 0).ToList(); return new List(); } } #endregion #endregion #endregion #region Methods public DetailsPageViewModel() { cFasdCockpitConfig.Instance.UiSettingsChanged += CockpitConfig_UiSettingsChanged; } private void CockpitConfig_UiSettingsChanged(object sender, EventArgs e) { ZoomInPercent = cFasdCockpitConfig.Instance.DetailsPageZoom; } #region Set DataContext public void SetGeometryValues(DetailsPageGeometry geometryValues) { var CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); try { WidgetGeometryList = geometryValues.WidgetGeometryList; DetailsGeometry = geometryValues.DetailsCollectionGeometry; } catch (Exception E) { LogEntry($"Passed geometry values: {geometryValues}"); LogException(E); } finally { LogMethodEnd(CM); } } public void SetPropertyValues(cDetailsPageData propertyValues) { var CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); try { DataProvider = propertyValues.DataProvider; //Heading Properties HeadingData = propertyValues.HeadingData; //Widget Properties WidgetDataList = propertyValues.WidgetData; //Details Properties TimeSinceLastRefresh = propertyValues.TimeSinceLastRefresh; ShownValueColumnsCount = propertyValues.ShownValueColumnsCount; DetailsDataList = propertyValues.DataHistoryList; //Menu Properties MenuBarData = propertyValues.MenuBarData; } catch (Exception E) { LogEntry($"Passed history values: {propertyValues}"); LogException(E); } finally { LogMethodEnd(CM); } } #endregion #endregion } }