LoadingViewModel.cs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using ConfigOperator;
  2. using Mapster;
  3. namespace HistoryUI.ViewModels;
  4. public partial class LoadingViewModel : ObservableObject
  5. {
  6. public LoadingViewModel(IEventAggregator eventAggregator, HardwareFileLoader hardwareFileLoader, IORM orm, BasicInfo basicInfo)
  7. {
  8. this.eventAggregator = eventAggregator;
  9. this.hardwareFileLoader = hardwareFileLoader;
  10. ProgressValue = 0;
  11. Task.Factory.StartNew(Init);
  12. this.orm = orm;
  13. this.basicInfo = basicInfo;
  14. }
  15. private readonly HardwareFileLoader hardwareFileLoader;
  16. private readonly IEventAggregator eventAggregator;
  17. private readonly IORM orm;
  18. private readonly BasicInfo basicInfo;
  19. private void Init()
  20. {
  21. if (!BaseConfigFileLoader.Load(out BasicInfo? basicInfo) ||
  22. basicInfo is null ||
  23. string.IsNullOrEmpty(basicInfo.DBConnectionString) ||
  24. string.IsNullOrEmpty(basicInfo.ServerAddress))
  25. {
  26. MessageBox.Show("Load BaseConfigFile file failed");
  27. App.Current.Dispatcher.InvokeShutdown();
  28. return;
  29. }
  30. basicInfo.Adapt(this.basicInfo);
  31. if (!LoadHardware())
  32. {
  33. MessageBox.Show("Load Config file failed");
  34. App.Current.Dispatcher.InvokeShutdown();
  35. return;
  36. }
  37. if (!orm.Initialize() || !orm.Open(basicInfo.DBConnectionString, ORM.DbType.PostgreSQL))
  38. {
  39. MessageBox.Show("Connect to Database Failed");
  40. App.Current.Dispatcher.InvokeShutdown();
  41. }
  42. if (string.IsNullOrEmpty(StartSetting.Content))
  43. return;
  44. eventAggregator.GetEvent<InitFinish>().Publish();
  45. }
  46. [RelayCommand]
  47. private void Select(string para)
  48. {
  49. StartSetting.Content = para;
  50. eventAggregator.GetEvent<InitFinish>().Publish();
  51. }
  52. [ObservableProperty]
  53. private string? _Test;
  54. [ObservableProperty]
  55. private double _ProgressValue;
  56. [ObservableProperty]
  57. private string? _Hint;
  58. private bool LoadHardware()
  59. {
  60. bool success = false; ;
  61. Application.Current.Dispatcher.Invoke(() =>
  62. {
  63. if (!this.hardwareFileLoader.Load())
  64. return;
  65. success = true;
  66. });
  67. return success;
  68. }
  69. }