示例#1
0
        private XElement SaveControlHotkeyToXml(ControlHotkey hotkey)
        {
            XElement     xmlHotkey = new XElement("ControlHotkey", new XElement("Key", hotkey.Key.FullKeyString));
            XElement     ctrlData  = null;
            ControlRoles ctrlRole  = hotkey.Role;

            xmlHotkey.Add(new XElement("Role", ctrlRole.ToString()));
            switch (ctrlRole)
            {
            case ControlRoles.HoldDownKey:
                ctrlData = new XElement("PressWhichKey", keysTranslater.KeyCodeToString((hotkey.HoldDownKey)));
                break;

            case ControlRoles.Forward:
            case ControlRoles.Backward:
            case ControlRoles.IncreaseVolume:
            case ControlRoles.DecreaseVolume:
            case ControlRoles.IncreasePitch:
            case ControlRoles.DecreasePitch:
            case ControlRoles.IncreaseTempo:
            case ControlRoles.DecreaseTempo:
            case ControlRoles.IncreaseSpeed:
            case ControlRoles.DecreaseSpeed:
                ctrlData = new XElement("FlowChangeValue", hotkey.FlowChangeValue.ToString());
                break;
            }
            if (ctrlData != null)
            {
                xmlHotkey.Add(ctrlData);
            }
            return(xmlHotkey);
        }
示例#2
0
        public int AddNewControlHotkey(string key, ControlRoles role, out string displayedVal, string holdDownKey = "", float flowChangeValue = 0)
        {
            ControlHotkey   ctrlHk  = null;
            KeyAndModifiers fullKey = CreateAndValidateFullKey(key);

            displayedVal = "";
            ctrlHk       = new ControlHotkey(fullKey, role);
            switch (role)
            {
            case ControlRoles.Forward:
            case ControlRoles.Backward:
                ctrlHk.FlowChangeValue = flowChangeValue;
                displayedVal           = flowChangeValue + " sec";
                break;

            case ControlRoles.IncreaseVolume:
            case ControlRoles.DecreaseVolume:
                ctrlHk.FlowChangeValue = flowChangeValue;
                displayedVal           = flowChangeValue + "%";
                break;

            case ControlRoles.HoldDownKey:
                ctrlHk.HoldDownKey = keysTranslater.StringToKeyCode(holdDownKey);
                displayedVal       = holdDownKey;
                break;

            case ControlRoles.IncreaseTempo:
            case ControlRoles.DecreaseTempo:
            case ControlRoles.IncreaseSpeed:
            case ControlRoles.DecreaseSpeed:
                ctrlHk.FlowChangeValue = flowChangeValue;
                displayedVal           = flowChangeValue + "%";
                break;

            case ControlRoles.IncreasePitch:
            case ControlRoles.DecreasePitch:
                ctrlHk.FlowChangeValue = flowChangeValue;
                displayedVal           = "+" + (flowChangeValue / 10) + ((flowChangeValue / 10) >= 2 ? " semitones" : " semitone");
                break;

            case ControlRoles.MasterHotkey:
                ctrlHk = null;
                if (MasterHotkey.Registered)
                {
                    throw new MasterHotkeyUsedException(MasterHotkey.Key.FullKeyString);
                }
                MasterHotkey.Key = fullKey;
                CheckHotkeyResult(MasterHotkey.Register(mainFrm), key);
                return(MasterHotkey.Id);
            }
            CheckHotkeyResult(ctrlHk.Register(mainFrm), key);
            hotkeysList.Add(ctrlHk);
            return(ctrlHk.Id);
        }
示例#3
0
 public HotkeyLogic(Control mainFrm)
 {
     this.mainFrm   = mainFrm.ThrowIfNull(nameof(mainFrm), "A form is required to attach the hotkeys to.");
     hotkeysList    = new List <IHotkey>();
     keysTranslater = new KeysTranslater();
     MasterHotkey   = new ControlHotkey {
         Role = ControlRoles.MasterHotkey
     };
     MasterHotkey.Pressed += delegate { DisableEnableHotkeys(); };
     HotkeysEnabled        = true;
 }
示例#4
0
 private XElement SaveMasterHotkeyToXml(ControlHotkey masterHotkey)
 {
     return(new XElement("ControlHotkey", new XElement("Key", masterHotkey.Key.FullKeyString),
                         new XElement("Role", masterHotkey.Role.ToString())));
 }