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); }
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); }
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; }
private XElement SaveMasterHotkeyToXml(ControlHotkey masterHotkey) { return(new XElement("ControlHotkey", new XElement("Key", masterHotkey.Key.FullKeyString), new XElement("Role", masterHotkey.Role.ToString()))); }