コード例 #1
0
 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));
     });
 }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
 public ShowGpuProfilesPageCommand(MinerClientsWindowViewModel minerClientsWindowVm)
 {
     this.MinerClientsWindowVm = minerClientsWindowVm;
 }
コード例 #5
0
        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);
        }