LoadingViewModel.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. namespace HistoryView.ViewModels;
  2. internal partial class LoadingViewModel : ObservableObject
  3. {
  4. public LoadingViewModel(IEventAggregator eventAggregator,
  5. LanguageLoader languageLoader,
  6. HubSender connector)
  7. {
  8. this.languageLoader = languageLoader;
  9. this.eventAggregator = eventAggregator;
  10. this.connector = connector;
  11. Task.Factory.StartNew(Init);
  12. }
  13. private readonly IEventAggregator eventAggregator;
  14. private readonly LanguageLoader languageLoader;
  15. private readonly HubSender connector;
  16. private async void Init()
  17. {
  18. UpdateProgerssBar(0, "Loading Base Config");
  19. if (!BaseConfigFileLoader.Load(out BasicInfo? basicInfo) ||
  20. basicInfo is null ||
  21. string.IsNullOrEmpty(basicInfo.DBConnectionString) ||
  22. string.IsNullOrEmpty(basicInfo.ServerAddress))
  23. {
  24. MessageBox.Show("Load Base Config Failed");
  25. return;
  26. }
  27. UpdateProgerssBar(20, "Connecting Server");
  28. if (!connector.Initialize(basicInfo.ServerAddress, basicInfo.ServerPort, "UIHub", 5))
  29. {
  30. MessageBox.Show("Connect to Server Failed");
  31. App.Current.Dispatcher.InvokeShutdown();
  32. }
  33. Thread.Sleep(500);
  34. UpdateProgerssBar(40, "Loading Languages");
  35. this.languageLoader.LoadLanguages(FilePaths.LanguageConfigFilePath);
  36. Thread.Sleep(500);
  37. UpdateProgerssBar(60, "Loading Configurations");
  38. await this.connector.RequestHardwares();
  39. Thread.Sleep(500);
  40. UpdateProgerssBar(80, "Loading Hareware infomations");
  41. await this.connector.RequestConfigFiles();
  42. Thread.Sleep(500);
  43. UpdateProgerssBar(100, "Loading settings");
  44. Thread.Sleep(500);
  45. eventAggregator.GetEvent<WindowSwitch>().Page = Pages.Login;
  46. eventAggregator.GetEvent<WindowSwitch>().Publish();
  47. }
  48. [ObservableProperty]
  49. private string? _Hint;
  50. [ObservableProperty]
  51. private double _ProgressValue;
  52. private void UpdateProgerssBar(double number, string? hint = default)
  53. {
  54. Application.Current.Dispatcher.Invoke(() =>
  55. {
  56. this.ProgressValue = number;
  57. this.Hint = hint;
  58. });
  59. }
  60. }