LoadingViewModel.cs 2.5 KB

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