using Avalonia.Controls.Documents; using Avalonia.Platform; using Shaker.Models; using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Text; using System.Threading.Tasks; using System.Xml.Linq; namespace ShakerApp.ViewModels { internal class DataReviewViewModel:DisplayViewModelBase { private Dictionary DataReviews = new Dictionary(); [AllowNull] private IDataReviewItem currentDataReview; public IDataReviewItem GetDataReview(string path) { var type = GetMainPageType(path); return DataReviews[type]; } public static MainPageType GetMainPageType(string path) { try { var tdmsfile = TDMS.TDMSDataBuilder.OpenExisting(path); if(tdmsfile!=null) { tdmsfile.TryGetProperty(nameof(MainPageViewModel.MainPageType), out var type); tdmsfile.Close(); return Enum.Parse(type); } } catch { } return MainPageType.StartPage; } private DataReviewViewModel() { DataReviews[MainPageType.StartPage] = StartPageDataReviewViewModel.Instance; DataReviews[MainPageType.RandomPage] = RandomDataReviewViewModel.Instance; DataReviews[MainPageType.SinePage] = SineDataReviewViewModel.Instance; DataReviews[MainPageType.OutSignal] = OutSignalDataReviewViewModel.Instance; CurrentDataReview = DataReviews[MainPageType.StartPage]; Content = typeof(Views.DataReviewView); } static DataReviewViewModel() { } public IDataReviewItem CurrentDataReview { get => currentDataReview; set =>SetProperty(ref currentDataReview , value); } public static DataReviewViewModel Instance { get; } = new DataReviewViewModel(); public void OpenFile(string path) { CurrentDataReview?.CloseFile(); MainPageType maintype = MainPageType.StartPage; try { var tdmsfile = TDMS.TDMSDataBuilder.OpenExisting(path); if (tdmsfile != null) { if (tdmsfile.IsOpen) { tdmsfile.TryGetProperty(nameof(MainPageViewModel.MainPageType), out var type); if(string.IsNullOrEmpty(type)) { tdmsfile?.Close(); CurrentDataReview = DataReviews[MainPageType.StartPage]; return; } maintype = Enum.Parse(type); CurrentDataReview = DataReviews[maintype]; CurrentDataReview.InitData(tdmsfile); return; } else { tdmsfile?.Close(); } } } catch { } CurrentDataReview = DataReviews[MainPageType.StartPage]; } public void CloseFile() { CurrentDataReview?.CloseFile(); CurrentDataReview = DataReviews[MainPageType.StartPage]; } } }