From 09b9ca5d5070e313cdfa16e9d94231221dd4c88d Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sat, 18 Mar 2017 23:43:59 +0100 Subject: [PATCH] refs #912, keyboard key list / combination utility functions and minor fixes * Ctor for single key * static const CKeyboardKeyList * some formatting --- src/blackmisc/input/hotkeycombination.cpp | 18 ++++++++++++------ src/blackmisc/input/hotkeycombination.h | 12 +++++++++--- src/blackmisc/input/keyboardkeylist.cpp | 14 +++++++++----- src/blackmisc/input/keyboardkeylist.h | 5 +++-- 4 files changed, 33 insertions(+), 16 deletions(-) diff --git a/src/blackmisc/input/hotkeycombination.cpp b/src/blackmisc/input/hotkeycombination.cpp index dd529fabd..8f5fa3db7 100644 --- a/src/blackmisc/input/hotkeycombination.cpp +++ b/src/blackmisc/input/hotkeycombination.cpp @@ -20,6 +20,12 @@ namespace BlackMisc { namespace Input { + CHotkeyCombination::CHotkeyCombination(const CKeyboardKey &key) : CHotkeyCombination(CKeyboardKeyList(key)) + { } + + CHotkeyCombination::CHotkeyCombination(const CKeyboardKeyList &keys) : m_keyboardKeys(keys) + { } + void CHotkeyCombination::addKeyboardKey(const CKeyboardKey &key) { if (m_keyboardKeys.contains(key)) { return; } @@ -61,12 +67,13 @@ namespace BlackMisc bool CHotkeyCombination::isSubsetOf(const CHotkeyCombination &other) const { - return std::all_of(m_keyboardKeys.begin(), m_keyboardKeys.end(), [&other](const CKeyboardKey &k) { return other.m_keyboardKeys.contains(k); }) && - std::all_of(m_joystickButtons.begin(), m_joystickButtons.end(), [&other](const CJoystickButton &b) { return other.m_joystickButtons.contains(b); }); + return std::all_of(m_keyboardKeys.begin(), m_keyboardKeys.end(), [&other](const CKeyboardKey & k) { return other.m_keyboardKeys.contains(k); }) && + std::all_of(m_joystickButtons.begin(), m_joystickButtons.end(), [&other](const CJoystickButton & b) { return other.m_joystickButtons.contains(b); }); } - QString CHotkeyCombination::convertToQString(bool /* i18n */) const + QString CHotkeyCombination::convertToQString(bool i18n) const { + Q_UNUSED(i18n); QStringList sl; for (const auto &key : m_keyboardKeys) { @@ -78,6 +85,5 @@ namespace BlackMisc } return sl.join('+'); } - - } -} + } // ns +} // ns diff --git a/src/blackmisc/input/hotkeycombination.h b/src/blackmisc/input/hotkeycombination.h index a75c95bbd..56b55c779 100644 --- a/src/blackmisc/input/hotkeycombination.h +++ b/src/blackmisc/input/hotkeycombination.h @@ -34,8 +34,14 @@ namespace BlackMisc //! Default constructor CHotkeyCombination() = default; + //! Init with key + CHotkeyCombination(const CKeyboardKey &key); + + //! Init with list of keys + CHotkeyCombination(const CKeyboardKeyList &keys); + //! Set keyboard keys - void setKeyboardKeys(const CKeyboardKeyList &list) { m_keyboardKeys = list; } + void setKeyboardKeys(const CKeyboardKeyList &keys) { m_keyboardKeys = keys; } //! Get keyboard keys CKeyboardKeyList getKeyboardKeys() const { return m_keyboardKeys; } @@ -87,8 +93,8 @@ namespace BlackMisc BLACK_METAMEMBER(joystickButtons) ); }; - } -} + } // ns +} // ns Q_DECLARE_METATYPE(BlackMisc::Input::CHotkeyCombination) diff --git a/src/blackmisc/input/keyboardkeylist.cpp b/src/blackmisc/input/keyboardkeylist.cpp index 152b75274..50b125832 100644 --- a/src/blackmisc/input/keyboardkeylist.cpp +++ b/src/blackmisc/input/keyboardkeylist.cpp @@ -14,16 +14,21 @@ namespace BlackMisc { namespace Input { - CKeyboardKeyList::CKeyboardKeyList() { } + CKeyboardKeyList::CKeyboardKeyList(const CKeyboardKey &key) + { + this->push_back(key); + } + CKeyboardKeyList::CKeyboardKeyList(const CSequence &baseClass) : CSequence(baseClass) { } const CKeyboardKeyList &CKeyboardKeyList::allSupportedKeys() { - static CKeyboardKeyList allKeys = { + static const CKeyboardKeyList allKeys = + { CKeyboardKey(Key_ControlLeft), CKeyboardKey(Key_ControlRight), CKeyboardKey(Key_AltLeft), @@ -70,6 +75,5 @@ namespace BlackMisc return allKeys; } - - } // namespace -} // namespace + } // ns +} // ns diff --git a/src/blackmisc/input/keyboardkeylist.h b/src/blackmisc/input/keyboardkeylist.h index 35f626fc6..d8d230c73 100644 --- a/src/blackmisc/input/keyboardkeylist.h +++ b/src/blackmisc/input/keyboardkeylist.h @@ -37,6 +37,9 @@ namespace BlackMisc //! Default constructor CKeyboardKeyList(); + //! Init by single key + CKeyboardKeyList(const CKeyboardKey &key); + //! Construct from a base class object. CKeyboardKeyList(const CSequence &baseClass); @@ -45,9 +48,7 @@ namespace BlackMisc //! Get all supported keys static const CKeyboardKeyList &allSupportedKeys(); - }; - } //namespace } // namespace