public GpuProfilesPageViewModel(MinerClientsWindowViewModel minerClientsWindowVm) { if (minerClientsWindowVm.SelectedMinerClients == null || minerClientsWindowVm.SelectedMinerClients.Length == 0) { throw new InvalidProgramException(); } _minerClientVm = minerClientsWindowVm.SelectedMinerClients[0]; _minerClientVms = new ObservableCollection <MinerClientViewModel>(minerClientsWindowVm.SelectedMinerClients); if (AppRoot.CoinVms.TryGetCoinVm(_minerClientVm.MainCoinCode, out CoinViewModel outCoinVm)) { this._coinVm = outCoinVm; } if (this._coinVm == null) { this._coinVm = CoinVms.MainCoins.FirstOrDefault(); } this.Save = new DelegateCommand(() => { if (_data == null) { return; } GpuProfilesJsonDb jsonObj = new GpuProfilesJsonDb() { Gpus = _data.Gpus }; foreach (var coinVm in CoinVms.MainCoins) { if (coinVm.IsOverClockEnabled) { jsonObj.CoinOverClocks.Add(new CoinOverClockData() { CoinId = coinVm.Id, IsOverClockEnabled = coinVm.IsOverClockEnabled, IsOverClockGpuAll = coinVm.IsOverClockGpuAll }); if (CoinVm.IsOverClockGpuAll) { jsonObj.GpuProfiles.Add(new GpuProfileData().Update(coinVm.GpuAllProfileVm)); } jsonObj.GpuProfiles.AddRange(coinVm.GpuProfileVms.Select(a => new GpuProfileData().Update(a))); } } string json = VirtualRoot.JsonSerializer.Serialize(jsonObj); foreach (var client in minerClientsWindowVm.SelectedMinerClients) { MinerStudioService.Instance.SaveGpuProfilesJsonAsync(client, json); } VirtualRoot.Execute(new CloseWindowCommand(this.Id)); }); }
public static void ShowWindow(MinerClientsWindowViewModel minerClientsWindowVm) { if (minerClientsWindowVm.SelectedMinerClients == null && minerClientsWindowVm.SelectedMinerClients.Length != 1) { return; } var minerClientVm = minerClientsWindowVm.SelectedMinerClients[0]; ContainerWindow.ShowWindow(new ContainerWindowViewModel { HasOwner = true, IsTopMost = true, IconName = "Icon_OverClock", Width = 800, Height = 600, CloseVisible = Visibility.Visible, FooterVisible = Visibility.Collapsed }, ucFactory: (window) => { var vm = new GpuProfilesPageViewModel(minerClientsWindowVm) { CloseWindow = () => { window.Close(); } }; var uc = new GpuProfilesPage(vm); ResourceDictionarySet.Instance.TryGetResourceDic(nameof(GpuProfilesPage), out ResourceDictionary resourceDictionary); var client = minerClientsWindowVm.SelectedMinerClients[0]; resourceDictionary["WindowTitle"] = $"超频 - 基于矿机{client.MinerName}({client.MinerIp})"; void handler(object sender, PropertyChangedEventArgs e) { if (e.PropertyName == nameof(minerClientsWindowVm.SelectedMinerClients)) { if (minerClientsWindowVm.SelectedMinerClients.Contains(minerClientVm)) { vm.IsMinerClientVmVisible = Visibility.Collapsed; } else { vm.IsMinerClientVmVisible = Visibility.Visible; } } } minerClientsWindowVm.PropertyChanged += handler; uc.Unloaded += (object sender, RoutedEventArgs e) => { minerClientsWindowVm.PropertyChanged -= handler; }; return(uc); }, fixedSize: true); }
public static void ShowWindow(MinerClientsWindowViewModel minerClientsWindowVm) { if (minerClientsWindowVm.SelectedMinerClients == null && minerClientsWindowVm.SelectedMinerClients.Length != 1) { return; } var minerClientVm = minerClientsWindowVm.SelectedMinerClients[0]; ContainerWindow.ShowWindow(new ContainerWindowViewModel { Title = $"超频 - 基于矿机{minerClientVm.MinerName}({minerClientVm.MinerIp})", IconName = "Icon_OverClock", Width = 800, Height = 700, CloseVisible = Visibility.Visible, FooterVisible = Visibility.Collapsed }, ucFactory: (window) => { window.Owner = WpfUtil.GetTopWindow(); var vm = new GpuProfilesPageViewModel(minerClientsWindowVm) { CloseWindow = window.Close }; var uc = new GpuProfilesPage(vm); var client = minerClientsWindowVm.SelectedMinerClients[0]; void handler(object sender, PropertyChangedEventArgs e) { if (e.PropertyName == nameof(minerClientsWindowVm.SelectedMinerClients)) { if (minerClientsWindowVm.SelectedMinerClients.Contains(minerClientVm)) { vm.IsMinerClientVmVisible = Visibility.Collapsed; } else { vm.IsMinerClientVmVisible = Visibility.Visible; } } } minerClientsWindowVm.PropertyChanged += handler; uc.Unloaded += (object sender, RoutedEventArgs e) => { minerClientsWindowVm.PropertyChanged -= handler; }; return(uc); }, fixedSize: false); }
public ShowGpuProfilesPageCommand(MinerClientsWindowViewModel minerClientsWindowVm) { this.MinerClientsWindowVm = minerClientsWindowVm; }
public static void ShowWindow(MinerClientsWindowViewModel minerClientsWindowVm) { if (minerClientsWindowVm.SelectedMinerClients == null && minerClientsWindowVm.SelectedMinerClients.Length != 1) { return; } var minerClientVm = minerClientsWindowVm.SelectedMinerClients[0]; ContainerWindow.ShowWindow(new ContainerWindowViewModel { Title = $"超频 - 基于矿机{minerClientVm.MinerName}({minerClientVm.MinerIp})", IconName = "Icon_OverClock", Width = 800, Height = 700, IsMaskTheParent = false, IsChildWindow = true, CloseVisible = Visibility.Visible, FooterVisible = Visibility.Collapsed }, ucFactory: (window) => { var vm = new GpuProfilesPageViewModel(minerClientsWindowVm); window.BuildCloseWindowOnecePath(vm.Id); var uc = new GpuProfilesPage(vm); var client = minerClientsWindowVm.SelectedMinerClients[0]; void onSelectedMinerClientsChanged(object sender, PropertyChangedEventArgs e) { if (e.PropertyName == nameof(minerClientsWindowVm.SelectedMinerClients)) { List <MinerClientViewModel> toRemoves = new List <MinerClientViewModel>(); foreach (var item in vm.MinerClientVms) { if (item != minerClientVm) { var exist = minerClientsWindowVm.SelectedMinerClients.FirstOrDefault(a => a == item); if (exist == null) { toRemoves.Add(item); } } } foreach (var item in toRemoves) { vm.MinerClientVms.Remove(item); } List <MinerClientViewModel> toAdds = new List <MinerClientViewModel>(); foreach (var item in minerClientsWindowVm.SelectedMinerClients) { var exist = vm.MinerClientVms.FirstOrDefault(a => a == item); if (exist == null) { toAdds.Add(item); } } foreach (var item in toAdds) { vm.MinerClientVms.Add(item); } } } minerClientsWindowVm.PropertyChanged += onSelectedMinerClientsChanged; uc.Unloaded += (object sender, RoutedEventArgs e) => { minerClientsWindowVm.PropertyChanged -= onSelectedMinerClientsChanged; }; window.BuildEventPath <GetGpuProfilesResponsedEvent>("收到GetGpuProfilesJson的响应", LogEnum.DevConsole, path: message => { if (message.ClientId != minerClientVm.ClientId) { return; } vm.SetData(message.Data); }, typeof(GpuProfilesPage)); MinerStudioRoot.MinerStudioService.GetGpuProfilesJsonAsync(minerClientVm); return(uc); }, fixedSize: false); }