KernelsWindow.xaml.cs 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. using NTMiner.Vms;
  2. using System;
  3. using System.Windows;
  4. using System.Windows.Input;
  5. namespace NTMiner.Views {
  6. public partial class KernelsWindow : BlankWindow {
  7. private static readonly object _locker = new object();
  8. private static KernelsWindow _instance = null;
  9. public static void ShowWindow(string keyword = null) {
  10. if (_instance == null) {
  11. lock (_locker) {
  12. if (_instance == null) {
  13. _instance = new KernelsWindow();
  14. _instance.Show();
  15. }
  16. }
  17. }
  18. else {
  19. _instance.ShowWindow(false);
  20. }
  21. if (keyword != null) {
  22. _instance.Vm.Keyword = keyword;
  23. }
  24. }
  25. public KernelsWindowViewModel Vm { get; private set; }
  26. public KernelsWindow() {
  27. if (WpfUtil.IsInDesignMode) {
  28. return;
  29. }
  30. this.Vm = new KernelsWindowViewModel();
  31. this.DataContext = this.Vm;
  32. // 为了使设计视图的宽高生效以下几个属性的赋值挪到这里
  33. Width = AppRoot.MainWindowWidth;
  34. Height = AppRoot.MainWindowHeight;
  35. MinHeight = 430;
  36. MinWidth = 640;
  37. InitializeComponent();
  38. if (DevMode.IsDevMode) {
  39. this.Width += 600;
  40. }
  41. this.TbUcName.Text = nameof(KernelsWindow);
  42. this.AddEventPath<MineStopedEvent>("当内核宝库窗口开着时如果是本地手动停止的挖矿则引发UserActionEvent事件", LogEnum.DevConsole,
  43. action: message => {
  44. if (message.StopReason == StopMineReason.LocalUserAction) {
  45. VirtualRoot.RaiseEvent(new UserActionEvent());
  46. }
  47. }, location: this.GetType());
  48. this.AddEventPath<LocalContextReInitedEventHandledEvent>("ServerContext的Vm集刷新后刷新内核宝库", LogEnum.DevConsole,
  49. action: message => {
  50. Vm.OnPropertyChanged(nameof(Vm.QueryResults));
  51. }, location: this.GetType());
  52. AppRoot.KernelVms.PropertyChanged += Current_PropertyChanged;
  53. NotiCenterWindow.Bind(this);
  54. if (!Vm.MinerProfile.IsMining) {
  55. VirtualRoot.RaiseEvent(new UserActionEvent());
  56. }
  57. }
  58. protected override void OnClosed(EventArgs e) {
  59. AppRoot.KernelVms.PropertyChanged -= Current_PropertyChanged;
  60. base.OnClosed(e);
  61. _instance = null;
  62. }
  63. private void Current_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) {
  64. if (e.PropertyName == nameof(AppRoot.KernelViewModels.AllKernels)) {
  65. Vm.OnPropertyChanged(nameof(Vm.QueryResults));
  66. }
  67. }
  68. private void TbKeyword_LostFocus(object sender, RoutedEventArgs e) {
  69. Vm.Search.Execute(null);
  70. }
  71. private void DataGrid_MouseDoubleClick(object sender, MouseButtonEventArgs e) {
  72. WpfUtil.DataGrid_EditRow<KernelViewModel>(sender, e);
  73. }
  74. private void ButtonLeftCoin_Click(object sender, RoutedEventArgs e) {
  75. double offset = CoinsScrollView.ContentHorizontalOffset - CoinsScrollView.ViewportWidth;
  76. CoinsScrollView.ScrollToHorizontalOffset(offset);
  77. ButtonLeftCoin.IsEnabled = offset > 0;
  78. ButtonRightCoin.IsEnabled = offset < CoinsScrollView.ScrollableWidth;
  79. }
  80. private void ButtonRightCoin_Click(object sender, RoutedEventArgs e) {
  81. double offset = CoinsScrollView.ContentHorizontalOffset + CoinsScrollView.ViewportWidth;
  82. CoinsScrollView.ScrollToHorizontalOffset(offset);
  83. ButtonLeftCoin.IsEnabled = offset > 0;
  84. ButtonRightCoin.IsEnabled = offset < CoinsScrollView.ScrollableWidth;
  85. }
  86. private void CoinsScrollView_PreviewMouseDown(object sender, MouseButtonEventArgs e) {
  87. WpfUtil.ScrollViewer_PreviewMouseDown(sender, e);
  88. }
  89. private void ListBox_MouseDown(object sender, MouseButtonEventArgs e) {
  90. if (e.LeftButton == MouseButtonState.Pressed) {
  91. Window window = Window.GetWindow(this);
  92. window.DragMove();
  93. }
  94. }
  95. private void ButtonLeftBrand_Click(object sender, RoutedEventArgs e) {
  96. double offset = BrandsScrollView.ContentHorizontalOffset - BrandsScrollView.ViewportWidth;
  97. BrandsScrollView.ScrollToHorizontalOffset(offset);
  98. ButtonLeftBrand.IsEnabled = offset > 0;
  99. ButtonRightBrand.IsEnabled = offset < BrandsScrollView.ScrollableWidth;
  100. }
  101. private void ButtonRightBrand_Click(object sender, RoutedEventArgs e) {
  102. double offset = BrandsScrollView.ContentHorizontalOffset + BrandsScrollView.ViewportWidth;
  103. BrandsScrollView.ScrollToHorizontalOffset(offset);
  104. ButtonLeftBrand.IsEnabled = offset > 0;
  105. ButtonRightBrand.IsEnabled = offset < BrandsScrollView.ScrollableWidth;
  106. }
  107. private void BrandsScrollView_PreviewMouseDown(object sender, MouseButtonEventArgs e) {
  108. WpfUtil.ScrollViewer_PreviewMouseDown(sender, e);
  109. }
  110. private void TbKeyword_KeyUp(object sender, KeyEventArgs e) {
  111. if (e.Key == Key.Enter) {
  112. Vm.Keyword = this.TbKeyword.Text;
  113. }
  114. }
  115. }
  116. }