OtherSettingsViewModel.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. namespace HistoryView.ViewModels.Regions.SettingSubs;
  2. internal partial class OtherSettingsViewModel : ObservableObject
  3. {
  4. public OtherSettingsViewModel(LanguageLoader languageLoader, DatabaseCleaner databaseCleaner, MonitorHelper monitor, UserInformation user, IEventAggregator eventAggregator, HubSender sender, MessageBoxHelper messageBoxHelper)
  5. {
  6. this.Language = languageLoader;
  7. this.Monitor = monitor;
  8. this.eventAggregator = eventAggregator;
  9. this.UserInfo = user;
  10. this._sender = sender;
  11. this.DatabaseCleaner = databaseCleaner;
  12. this._messageBoxHelper = messageBoxHelper;
  13. }
  14. private readonly IEventAggregator eventAggregator;
  15. private readonly MessageBoxHelper _messageBoxHelper;
  16. private readonly HubSender _sender;
  17. [ObservableProperty]
  18. private DatabaseCleaner _DatabaseCleaner;
  19. [ObservableProperty]
  20. private MonitorHelper _Monitor;
  21. [ObservableProperty]
  22. private LanguageLoader _Language;
  23. [ObservableProperty]
  24. private UserInformation? _UserInfo;
  25. [RelayCommand]
  26. private void DisplaySelect(int para)
  27. {
  28. if (para == this.Monitor.SelectedDisplay)
  29. return;
  30. this.Monitor.SelectedDisplay = para;
  31. MainWindow.DefaultRegion = "Setting";
  32. if (BaseConfigFileLoader.Load(out BasicInfo? basicInfo) && basicInfo is not null)
  33. {
  34. basicInfo.SelectedDisplay = para;
  35. BaseConfigFileLoader.Save(basicInfo);
  36. }
  37. eventAggregator.GetEvent<WindowSwitch>().Page = Pages.MainWindow;
  38. eventAggregator.GetEvent<WindowSwitch>().Publish();
  39. }
  40. [RelayCommand]
  41. private async Task SwitchDataBase(string para)
  42. {
  43. if (this._sender is null)
  44. return;
  45. switch (para)
  46. {
  47. case "Reset":
  48. if (!_sender.FullyReset())
  49. {
  50. await _messageBoxHelper.ShowAsync("Failed");
  51. return;
  52. }
  53. await _messageBoxHelper.ShowAsync("Success");
  54. break;
  55. case "SwitchDataBase":
  56. if (!_sender.SwitchDataBase(out string? dbName) || string.IsNullOrEmpty(dbName))
  57. {
  58. await _messageBoxHelper.ShowAsync("Failed");
  59. return;
  60. }
  61. await _messageBoxHelper.ShowAsync($"Switch to new database - {dbName}");
  62. break;
  63. case "Delete":
  64. this._sender.ClearDataBase().Wait();
  65. break;
  66. case "Range":
  67. this._sender.UpdateDataBaseRange((int)DatabaseCleaner.KeepRange).Wait();
  68. break;
  69. default:
  70. break;
  71. }
  72. }
  73. [RelayCommand]
  74. private async Task MaintainMode(string para)
  75. {
  76. switch (para)
  77. {
  78. case "Enable":
  79. if (MessageBox.Show($"此模式下您仍可下发Mini8控温参数及修改配方,{Environment.NewLine}但Minics将不再接收来自 Furnace RT 的控温配方切换指令。{Environment.NewLine}重启软件后将自动复原。{Environment.NewLine}是否开启维护模式?", "维护模式", MessageBoxButton.YesNo, MessageBoxImage.Question) != MessageBoxResult.Yes)
  80. return;
  81. await _sender.MaintainMode(true);
  82. break;
  83. case "Disable":
  84. if (MessageBox.Show($"关闭维护模式后,Minics将开始接收来自 Furnace RT的控温配方指令。{Environment.NewLine}是否关闭维护模式?", "维护模式", MessageBoxButton.YesNo, MessageBoxImage.Question) != MessageBoxResult.Yes)
  85. return;
  86. await _sender.MaintainMode(false);
  87. break;
  88. default:
  89. break;
  90. }
  91. }
  92. }