diff --git a/Resource/Images/UIResource/Next.png b/Resource/Images/UIResource/Next.png new file mode 100644 index 0000000..d88bb84 Binary files /dev/null and b/Resource/Images/UIResource/Next.png differ diff --git a/Resource/Images/UIResource/NextHover.png b/Resource/Images/UIResource/NextHover.png new file mode 100644 index 0000000..495875b Binary files /dev/null and b/Resource/Images/UIResource/NextHover.png differ diff --git a/SparkClient.csproj b/SparkClient.csproj index ee99a1c..8f16ae0 100644 --- a/SparkClient.csproj +++ b/SparkClient.csproj @@ -23,6 +23,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive + @@ -218,6 +219,10 @@ + + + + diff --git a/SparkClient.sln.DotSettings.user b/SparkClient.sln.DotSettings.user index 04b6804..0243034 100644 --- a/SparkClient.sln.DotSettings.user +++ b/SparkClient.sln.DotSettings.user @@ -14,6 +14,7 @@ ForceIncluded ForceIncluded ForceIncluded + ForceIncluded ForceIncluded ForceIncluded ForceIncluded @@ -43,6 +44,7 @@ ForceIncluded ForceIncluded ForceIncluded + ForceIncluded ForceIncluded ForceIncluded ForceIncluded diff --git a/ViewModel/BaseWindow/BaseControlVM.cs b/ViewModel/BaseWindow/BaseControlVM.cs index a7ce3a3..018baad 100644 --- a/ViewModel/BaseWindow/BaseControlVM.cs +++ b/ViewModel/BaseWindow/BaseControlVM.cs @@ -1,5 +1,6 @@ using System.Windows; using System.Windows.Input; +using GlobalHotKey; using HandyControl.Controls; using SparkClient.Model.Helper; using SparkClient.ViewModel.Grading; @@ -22,6 +23,15 @@ public class BaseControlVM : BaseViewModel public object Content { get; } public ICommand CloseCommand { get; } + public ICommand EscCloseCommand { get; } + + public ICommand NextCommand { get; } + + + private HotKeyManager _hotKeyManager; + + + /// /// 构造:创建一个带有子页面的模板,并指定子窗口标题,并指定右侧按钮事件内容 /// @@ -33,6 +43,9 @@ public class BaseControlVM : BaseViewModel Content = vm; WindowTitle = windowTitle; CloseCommand = new RelayCommand(CloseVM); + EscCloseCommand = new RelayCommand(OnClose); + NextCommand = new RelayCommand(NextDiamond); + _hotKeyManager = new HotKeyManager(); } /// @@ -44,7 +57,34 @@ public class BaseControlVM : BaseViewModel { Content = vm; WindowTitle = windowTitle; + ShowFunctionButton = Visibility.Hidden; CloseCommand = new RelayCommand(CloseVM); + NextCommand = new RelayCommand(NextDiamond); + + if (vm.GetType().Equals(typeof(GradingResultVM))) + { + Application.Current.Dispatcher.Invoke(() => + { + try + { + _hotKeyManager = new HotKeyManager(); + var hotKey = new HotKey(Key.R, ModifierKeys.Control | ModifierKeys.Alt); + _hotKeyManager.Register(hotKey); + _hotKeyManager.KeyPressed += OnHotKeyPressed; + } + catch (Exception ex) + { + Logger.Info("设计缺陷:快捷键重复注册"); + } + }); + } + else + { + // _hotKeyManager = new HotKeyManager(); + // var hotKey = new HotKey(Key.R, ModifierKeys.Control | ModifierKeys.Alt); + // _hotKeyManager.Unregister(hotKey); + } + } /// /// 构造:创建一个带有子页面的模板 @@ -55,7 +95,30 @@ public class BaseControlVM : BaseViewModel Content = vm; CloseCommand = new RelayCommand(CloseVM); } + private void OnClose(object parameter) + { + if (parameter is KeyEventArgs keyEventArgs && keyEventArgs.Key == Key.Escape) + { + CloseVM(parameter); + } + } + + private void OnHotKeyPressed(object sender, KeyPressedEventArgs e) + { + if(WindowTitle.StartsWith(MultilingualHelper.getString("DetectionResult"))) + NextDiamond(""); + } + public void NextDiamond(object parameter) + { + CloseVM(parameter); + DiamondSelectVM selectVm = new DiamondSelectVM(); + ViewControl = selectVm; + WindowTitle = MultilingualHelper.getString("DiamondSelect"); + selectVm.StartGrading("ROUND P8 P8"); + + } + /// /// 关闭并退回至上一个页面 /// diff --git a/ViewModel/BaseWindow/HomeWindowVM.cs b/ViewModel/BaseWindow/HomeWindowVM.cs index 5e540de..607d4ef 100644 --- a/ViewModel/BaseWindow/HomeWindowVM.cs +++ b/ViewModel/BaseWindow/HomeWindowVM.cs @@ -38,6 +38,7 @@ public class HomeWindowVM : BaseViewModel if (isPermissions()) { ConfigMenuPageVM vm = new ConfigMenuPageVM(); + WindowManager.mainViewModel.Content = vm; WindowManager.openContent.Add(vm); } @@ -45,6 +46,7 @@ public class HomeWindowVM : BaseViewModel { BaseControlVM vm = new BaseControlVM(new SettingBaseVM(), MultilingualHelper.getString("SystemSetting")); WindowManager.mainViewModel.Content = vm; + WindowManager.openContent.Add(vm); } } @@ -89,7 +91,7 @@ public class HomeWindowVM : BaseViewModel //if (result != MessageBoxResult.None) //{ BaseControlVM vm = new BaseControlVM(new DiamondSelectVM(), MultilingualHelper.getString("DiamondSelect")); - vm.ShowFunctionButton = System.Windows.Visibility.Hidden; + WindowManager.mainViewModel.Content = vm; WindowManager.openContent.Add(vm); //} diff --git a/ViewModel/Configuration/ConfigMenuPageVM.cs b/ViewModel/Configuration/ConfigMenuPageVM.cs index be3bc70..14fdcb5 100644 --- a/ViewModel/Configuration/ConfigMenuPageVM.cs +++ b/ViewModel/Configuration/ConfigMenuPageVM.cs @@ -39,7 +39,6 @@ public class ConfigMenuPageVM : BaseViewModel public void LevelConfig(object parameter) { BaseControlVM vm = new BaseControlVM(new LevelConfigVM(null), MultilingualHelper.getString("LevelConfig")); - vm.ShowFunctionButton = System.Windows.Visibility.Hidden; WindowManager.mainViewModel.Content = vm; WindowManager.openContent.Add(vm); } @@ -51,7 +50,6 @@ public class ConfigMenuPageVM : BaseViewModel public void AlgorithmConfig(object parameter) { BaseControlVM vm = new BaseControlVM(new AlgorithmConfigVM(), MultilingualHelper.getString("AlgorithmConfig")); - vm.ShowFunctionButton = System.Windows.Visibility.Hidden; WindowManager.mainViewModel.Content = vm; WindowManager.openContent.Add(vm); } @@ -63,7 +61,7 @@ public class ConfigMenuPageVM : BaseViewModel public void CutConfig(object parameter) { BaseControlVM vm = new BaseControlVM(new CutConfigVM(), MultilingualHelper.getString("CutConfig")); - vm.ShowFunctionButton = System.Windows.Visibility.Hidden; + WindowManager.mainViewModel.Content = vm; WindowManager.openContent.Add(vm); } diff --git a/ViewModel/Dialog/StartDialogVM.cs b/ViewModel/Dialog/StartDialogVM.cs index aff6d77..95fa6dc 100644 --- a/ViewModel/Dialog/StartDialogVM.cs +++ b/ViewModel/Dialog/StartDialogVM.cs @@ -38,7 +38,7 @@ namespace SparkClient.ViewModel.Dialog public void Skip(object parameter) { BaseControlVM vm = new BaseControlVM(new DiamondSelectVM(), MultilingualHelper.getString("DiamondSelect")); - vm.ShowFunctionButton = System.Windows.Visibility.Hidden; + WindowManager.mainViewModel.Content = vm; WindowManager.openContent.Add(vm); } @@ -47,7 +47,7 @@ namespace SparkClient.ViewModel.Dialog { if (InputText != null && InputText.Trim().Length > 0) { BaseControlVM vm = new BaseControlVM(new DiamondSelectVM(), MultilingualHelper.getString("DiamondSelect")); - vm.ShowFunctionButton = System.Windows.Visibility.Hidden; + WindowManager.mainViewModel.Content = vm; WindowManager.openContent.Add(vm); } diff --git a/ViewModel/Grading/DiamondSelectVM.cs b/ViewModel/Grading/DiamondSelectVM.cs index 89f750d..35d28c1 100644 --- a/ViewModel/Grading/DiamondSelectVM.cs +++ b/ViewModel/Grading/DiamondSelectVM.cs @@ -131,7 +131,7 @@ public class DiamondSelectVM : BaseViewModel public async void StartGrading(object param) { MessageBox messageBox = new MessageBox(); - MessageBoxResult result = messageBox.ShowInput(MultilingualHelper.getString("UpdateDiamondCode"), out string inputStr, + MessageBoxResult result = messageBox.ShowInput($"{MultilingualHelper.getString("UpdateDiamondCode")}", out string inputStr, MultilingualHelper.getString("ok"), MultilingualHelper.getString("Skip") ); @@ -538,7 +538,7 @@ public class DiamondSelectVM : BaseViewModel //WindowManager.mainViewModel.Content = WindowManager.PreviousVM(); BaseControlVM vm = new BaseControlVM(new GradingResultVM(param), MultilingualHelper.getString("DetectionResult")); vm.WindowTitle = string.IsNullOrWhiteSpace(param.DiamondCode) ? vm.WindowTitle : $"{vm.WindowTitle} - {param.DiamondCode}"; - vm.ShowFunctionButton = System.Windows.Visibility.Hidden; + vm.ShowFunctionButton = System.Windows.Visibility.Visible; WindowManager.mainViewModel.Content = vm; WindowManager.openContent.Add(vm); } diff --git a/Views/BaseWindow/BaseControl.xaml b/Views/BaseWindow/BaseControl.xaml index 642d869..5402642 100644 --- a/Views/BaseWindow/BaseControl.xaml +++ b/Views/BaseWindow/BaseControl.xaml @@ -27,6 +27,14 @@ +