コード例 #1
0
 public SettingViewModel()
 {
     Datas                             = ProgramData.Instance;
     ShowAllHotKey                     = ProgramData.Instance.ShowAllHotKey;
     HotKeyStr                         = ShowAllHotKey.ToString();
     IsTopMostChangedCommand           = new RelayCommand <bool>(IsTopMostChangedMethod);
     IsStartUpWithSystemChangedCommand = new RelayCommand <bool>(IsStartUpWithSystemChangedMethod);
     SelectionChangedCommand           = new RelayCommand <SelectionChangedEventArgs>(SelectionChangedMethod);
     ShowAllHotKeyChangedCommand       = new RelayCommand <KeyEventArgs>(ShowAllShortCutChangedMethod);
     ShowAllTextUsedCommand            = new RelayCommand <string>(ShowAllTextUsedMethod);
 }
コード例 #2
0
        private void ShowAllTextUsedMethod(string key)
        {
            //使用了ctrl
            bool useCtrl  = true;
            bool useAlt   = false;
            bool useShift = false;
            EKey?useKey   = null;

            if (key == "X")
            {
                useKey = EKey.X;
            }
            else if (key == "A")
            {
                useKey = EKey.A;
            }
            else if (key == "C")
            {
                useKey = EKey.C;
            }
            else if (key == "V")
            {
                useKey = EKey.V;
            }
            else if (key == "Z")
            {
                useKey = EKey.Z;
            }
            var oldHotKey = ShowAllHotKey;
            var newModel  = ShowAllHotKey;

            newModel.IsSelectAlt   = useAlt;
            newModel.IsSelectCtrl  = useCtrl;
            newModel.IsSelectShift = useShift;
            if (useKey != null)
            {
                newModel.SelectKey = (EKey)useKey;
            }

            if (!useCtrl && !useAlt && !useShift)
            {
                return;
            }
            var hotKeyList = new ObservableCollection <HotKeyModel>
            {
                ShowAllHotKey
            };

            HotKeySettingsManager.Instance.IsShowAllWindowHotKeyNeedChanged = true;
            if (!HotKeySettingsManager.Instance.RegisterGlobalHotKey(hotKeyList))
            {
                //todo
                MessageBox.Show("快捷键注册失败,可能系统或其它软件存在冲突");
                ShowAllHotKey = oldHotKey;
            }
            else
            {
                ShowAllHotKey = newModel;
                ProgramData.Instance.ShowAllHotKey = ShowAllHotKey;
                this.HotKeyStr = ShowAllHotKey.ToString();
                //this.SettingWin.ShowAllTB.Text = ShowAllHotKey.ToString();
            }

            return;
        }
コード例 #3
0
        private void ShowAllShortCutChangedMethod(KeyEventArgs e)
        {
            bool useCtrl  = false; //(e.KeyboardDevice.Modifiers & ModifierKeys.Control) == ModifierKeys.Control;
            bool useAlt   = false; //(e.KeyboardDevice.Modifiers & ModifierKeys.Alt) == ModifierKeys.Alt;
            bool useShift = false; //(e.KeyboardDevice.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift;

            //            EKey useKey = EKey.Q;
            foreach (int v in Enum.GetValues(typeof(EKey)))
            {
                string keyName = Enum.GetName(typeof(EKey), v);
                if (e.Key.ToString() == keyName)
                {
                    var useKey = (EKey)v;
                    if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))
                    {
                        useCtrl = true;
                    }
                    if (Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift))
                    {
                        useShift = true;
                    }
                    if (Keyboard.IsKeyDown(Key.LeftAlt) || Keyboard.IsKeyDown(Key.RightAlt))
                    {
                        useAlt = true;
                    }
                    var oldHotKey = new HotKeyModel();
                    oldHotKey.IsSelectAlt   = ShowAllHotKey.IsSelectAlt;
                    oldHotKey.IsSelectCtrl  = ShowAllHotKey.IsSelectCtrl;
                    oldHotKey.IsSelectShift = ShowAllHotKey.IsSelectShift;
                    oldHotKey.Name          = ShowAllHotKey.Name;
                    oldHotKey.IsUsable      = ShowAllHotKey.IsUsable;
                    oldHotKey.SelectKey     = ShowAllHotKey.SelectKey;

                    ShowAllHotKey.IsSelectAlt   = useAlt;
                    ShowAllHotKey.IsSelectCtrl  = useCtrl;
                    ShowAllHotKey.IsSelectShift = useShift;
                    ShowAllHotKey.SelectKey     = useKey;
                    if (!useCtrl && !useAlt && !useShift)
                    {
                        return;
                    }
                    var hotKeyList = new ObservableCollection <HotKeyModel>
                    {
                        ShowAllHotKey
                    };
                    HotKeySettingsManager.Instance.IsShowAllWindowHotKeyNeedChanged = true;
                    if (!HotKeySettingsManager.Instance.RegisterGlobalHotKey(hotKeyList))
                    {
                        //todo
                        MessageBox.Show("快捷键注册失败,可能系统或其它软件存在冲突");
                        ShowAllHotKey = oldHotKey;
                    }
                    else
                    {
                        ProgramData.Instance.ShowAllHotKey = ShowAllHotKey;
                        HotKeyStr = ShowAllHotKey.ToString();
                        //this.SettingWin.ShowAllTB.Text = ShowAllHotKey.ToString();
                    }

                    return;
                }
            }
        }
コード例 #4
0
        private void ShowAllShortCutChangedMethod(KeyEventArgs e)
        {
            if (e.Key == Key.LeftAlt || e.Key == Key.RightAlt)
            {
                return;
            }

            if (e.Key == Key.LeftCtrl || e.Key == Key.RightCtrl)
            {
                return;
            }

            if (e.Key == Key.LeftShift || e.Key == Key.RightShift)
            {
                return;
            }

            bool useCtrl  = (e.KeyboardDevice.Modifiers & ModifierKeys.Control) == ModifierKeys.Control;
            bool useAlt   = (e.KeyboardDevice.Modifiers & ModifierKeys.Alt) == ModifierKeys.Alt;
            bool useShift = (e.KeyboardDevice.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift;
            EKey useKey   = EKey.Q;

            foreach (int v in Enum.GetValues(typeof(EKey)))
            {
                string keyName = Enum.GetName(typeof(EKey), v);
                if (e.Key.ToString() == keyName)
                {
                    useKey = (EKey)v;
                }
            }

//            var OldHotKey = ShowAllHotKey;
            ShowAllHotKey.IsSelectAlt          = useAlt;
            ShowAllHotKey.IsSelectCtrl         = useCtrl;
            ShowAllHotKey.IsSelectShift        = useShift;
            ShowAllHotKey.SelectKey            = useKey;
            ProgramData.Instance.ShowAllHotKey = ShowAllHotKey;
            var hotKeyList = new ObservableCollection <HotKeyModel>
            {
                ShowAllHotKey
            };

            if (!HotKeySettingsManager.Instance.RegisterGlobalHotKey(hotKeyList))
            {
                MessageBox.Show("快捷键注册失败,可能与其他软件存在冲突");
//                ShowAllHotKey = OldHotKey;
            }

            if (SettingWin.ShowAllTB.Text.ToString() != ShowAllHotKey.ToString())
            {
                BindingExpression b = SettingWin.ShowAllTB.GetBindingExpression(TextBox.TextProperty);
                b.UpdateTarget();
            }
            //暂时不用这个,先解决bug
            //            SettingWin.ShowAllTB.Text = ShowAllHotKey.ToString();

            //清楚当前快捷键
            //todo
            //检测输入的快捷键是否可用
            //todo
            //将更新的快捷键输入文本框
        }