diff --git a/src/blackmisc/hwkeyboardkey.cpp b/src/blackmisc/hwkeyboardkey.cpp index 53fb706f1..a54eb3123 100644 --- a/src/blackmisc/hwkeyboardkey.cpp +++ b/src/blackmisc/hwkeyboardkey.cpp @@ -223,6 +223,56 @@ namespace BlackMisc m_qtKey = static_cast(sequence[0]); } } + + bool CKeyboardKey::addModifier(const Modifier &modifier) + { + bool added = false; + + // Don't add the same modifier twice + if (hasModifier(modifier)) + return false; + + if (m_modifier1 == ModifierNone) + { + m_modifier1 = modifier; + added = true; + } + else if (m_modifier2 == ModifierNone) + { + m_modifier2 = modifier; + added = true; + } + + return added; + } + + bool CKeyboardKey::addModifier(const QString &modifier) + { + return addModifier(modifierFromString(modifier)); + } + + bool CKeyboardKey::removeModifier(const Modifier &modifier) + { + bool removed = false; + + if (m_modifier1 == modifier) + { + m_modifier1 = ModifierNone; + removed = true; + } + if (m_modifier2 == modifier) + { + m_modifier2 = ModifierNone; + removed = true; + } + cleanup(); + + return removed; + } + + bool CKeyboardKey::removeModifier(const QString &modifier) + { + return removeModifier(modifierFromString(modifier)); } QString CKeyboardKey::getFunctionAsString() const diff --git a/src/blackmisc/hwkeyboardkey.h b/src/blackmisc/hwkeyboardkey.h index 4400315de..d11f72d7f 100644 --- a/src/blackmisc/hwkeyboardkey.h +++ b/src/blackmisc/hwkeyboardkey.h @@ -131,6 +131,20 @@ namespace BlackMisc //! \brief Native virtual key quint32 getNativeVirtualKey() const { return this->m_nativeVirtualKey; } + /*! + * \brief Add modifier + * \param modifier + * \return True if modifier was added + */ + bool addModifier(const Modifier &modifier); + + /*! + * \brief add modifier + * \param modifier + * \return True if modifier was added + */ + bool addModifier(const QString &modifier); + //! \brief number of modifiers int numberOfModifiers() const; @@ -149,18 +163,53 @@ namespace BlackMisc //! \brief Modifier 2 QString getModifier2AsString() const { return modifierToString(this->m_modifier2); } + /*! + * \brief Remove modifier from key + * \param modifier + * \return True if modifier was removed + */ + bool removeModifier(const Modifier &modifier); + + /*! + * \brief Remove modifier from key + * \param modifier + * \return True if modifier was removed + */ + bool removeModifier(const QString &modifier); + //! \brief Set modifier 1 void setModifier1(const QString &modifier) { this->m_modifier1 = modifierFromString(modifier); } + //! \brief Set modifier 1 + void setModifier1(const Modifier &modifier) { this->m_modifier1 = modifier; } + //! \brief Set modifier 2 void setModifier2(const QString &modifier) { this->m_modifier2 = modifierFromString(modifier); } + //! \brief Set modifier 2 + void setModifier2(const Modifier &modifier) { this->m_modifier2 = modifier; } + //! \brief Modifier? bool hasModifier() const { return this->m_modifier1 != ModifierNone || this->m_modifier2 != ModifierNone; } + //! \brief Modifier? + bool hasModifier() const + { + return this->m_modifier1 != ModifierNone || this->m_modifier2 != ModifierNone; + } + + /*! + * \brief Do we have this Modifier? + * \param modifier + */ + bool hasModifier(Modifier modifier) const + { + return m_modifier1 == modifier || m_modifier2 == modifier; + } + //! \brief with key? bool hasKey() const {