Advertisement
Iyon_Groznyy

Untitled

Sep 8th, 2020
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.17 KB | None | 0 0
  1. using Plugin.FilePicker;
  2. using Plugin.FilePicker.Abstractions;
  3. using System;
  4. using System.ComponentModel;
  5. using System.Linq;
  6. using System.Threading.Tasks;
  7. using Xamarin.Forms;
  8. using XamarinTest.Models;
  9.  
  10. namespace XamarinTest.ViewModel
  11. {
  12.     //[QueryProperty(nameof(TxtConsole), nameof(TxtConsole))]
  13.     public class ProjectVM : INotifyPropertyChanged
  14.     {
  15.         public event PropertyChangedEventHandler PropertyChanged;
  16.         ProjectModel projectModel = new ProjectModel();
  17.         string txtConsole;
  18.         FrmMainModel mainModel;
  19.         public string ReportAddress    // Address of the ROVT reports
  20.         {
  21.             get => projectModel.m_sReportAddress;
  22.             set
  23.             {
  24.                 projectModel.m_sReportAddress = value;
  25.                 OnPropertyChanged("ReportAddress");
  26.             }
  27.         }
  28.  
  29.         public string TxtConsole
  30.         {
  31.             get => txtConsole;
  32.             set
  33.             {
  34.                 if (txtConsole != value)
  35.                 {
  36.                     txtConsole = value;
  37.                     OnPropertyChanged("TxtConsole");
  38.                 }
  39.             }
  40.         }
  41.  
  42.         public ProjectVM()
  43.         {
  44.             MessagingCenter.Subscribe(this, "Console", (FrmMainVM sender, string pMessage) =>
  45.             {
  46.                 TxtConsole += pMessage;
  47.             });
  48.             MessagingCenter.Subscribe(this, "Data",(FrmMainVM sender, FrmMainModel pMainModel) =>
  49.             {
  50.                 mainModel = pMainModel;
  51.             });
  52.         }
  53.  
  54.         protected void OnPropertyChanged(string propName)
  55.         {
  56.             PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propName));
  57.         }
  58.  
  59.         internal void generateReport()
  60.         {
  61.             projectModel.libSettings = ProgramSettings.ToLibSettings(mainModel.m_sBuildAddress, projectModel.m_sReportAddress, new ROVTools.LibSettings(), mainModel.m_Settings);
  62.             var tools = new ROVTools.ROVTools();
  63.             Task.Run(() =>
  64.             {
  65.                 projectModel.displayableReports = tools.generateReports(projectModel.libSettings, out _);
  66.  
  67.             }).ContinueWith(x =>
  68.             {
  69.                 TxtConsole = "Reports preparation is over.";
  70.                 switch (projectModel.libSettings.m_ResultReportType)
  71.                 {
  72.                     case ROVTools.ReportType.REPORT_FILE_SA:
  73.                     case ROVTools.ReportType.REPORT_FILE_NOSA:
  74.                         foreach (string s in ProjectModel.exportReportsToFiles(projectModel.displayableReports, projectModel.m_sReportAddress, projectModel.libSettings.m_Separator))
  75.                         {
  76.                             TxtConsole = s;
  77.                         }
  78.                         break;
  79.                     case ROVTools.ReportType.REPORT_TABLE_NOSA:
  80.                     case ROVTools.ReportType.REPORT_TABLE_SA:
  81.                     case ROVTools.ReportType.REPORT_TREE_NOSA:
  82.                     case ROVTools.ReportType.REPORT_TREE_SA:
  83.                     TxtConsole = "Choose report for review.";
  84.                         break;
  85.                 }
  86.                 MessagingCenter.Send(this, "Data", projectModel);
  87.                 MessagingCenter.Send(this, "Console", TxtConsole);
  88.             });
  89.             toSummaryPage();
  90.         }
  91.         async void toSummaryPage()
  92.         {
  93.             await Shell.Current.GoToAsync("Summary", true);
  94.         }
  95.         public void selectSavePathProject()
  96.         {
  97.             Task.Run(async () =>
  98.             {
  99.                 try
  100.                 {
  101.                     FileData fileData = await CrossFilePicker.Current.PickFile();
  102.                     if (fileData != null)
  103.                     {
  104.                         var arrfolderPath = fileData.FilePath.Split(new char[] { '/' }).ToList();
  105.                         arrfolderPath.Remove(arrfolderPath.Last());
  106.                         ReportAddress = string.Join("/", arrfolderPath);
  107.                     }
  108.                 }
  109.                 catch (Exception ex)
  110.                 {
  111.                     System.Console.WriteLine("Exception choosing file: " + ex.ToString());
  112.                 }
  113.             });
  114.         }
  115.     }
  116. }
  117.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement