summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--libopie2/opiecore/okeyconfigmanager.cpp16
-rw-r--r--libopie2/opiecore/okeyconfigmanager.h74
2 files changed, 87 insertions, 3 deletions
diff --git a/libopie2/opiecore/okeyconfigmanager.cpp b/libopie2/opiecore/okeyconfigmanager.cpp
index e6055e0..18740ef 100644
--- a/libopie2/opiecore/okeyconfigmanager.cpp
+++ b/libopie2/opiecore/okeyconfigmanager.cpp
@@ -409,12 +409,22 @@ bool OKeyConfigItem::operator!=( const OKeyConfigItem& conf )const {
return !( *this == conf );
}
+/*! \enum OKeyConfigManager::EventMask
+ <a name="Eventmask flags"></a>
+ This enum is used to tell OKeyConfigManager which type of key events should inspected.
+
+ <ul>
+ <li>\c MaskPressed When a key is pressed an action performs
+ <li>\c MaskReleased When a key is released an action performs
+ </ul>
+*/
+
/**
* \brief c'tor
* The Constructor for a OKeyConfigManager
*
* You can use this manager in multiple ways. Either make it handle
- * QKeyEvents
+ * QKeyEvents. The EventMask is set to OKeyConfigManager::MaskReleased by default.
*
* \code
* Opie::Core::Config conf = oApp->config();
@@ -473,6 +483,7 @@ OKeyConfigManager::OKeyConfigManager( Opie::Core::OConfig* conf,
m_blackKeys( black ), m_grab( grabkeyboard ), m_map( 0 ){
if ( m_grab )
QPEApplication::grabKeyboard();
+ m_event_mask = OKeyConfigManager::MaskReleased;
}
@@ -674,7 +685,8 @@ bool OKeyConfigManager::eventFilter( QObject* obj, QEvent* ev) {
if ( !obj->isWidgetType() )
return false;
- if ( ev->type() != QEvent::KeyPress && ev->type() != QEvent::KeyRelease )
+ if ( (ev->type() != QEvent::KeyPress||!testEventMask(MaskPressed)) &&
+ (ev->type() != QEvent::KeyRelease||!testEventMask(MaskReleased)) )
return false;
QKeyEvent *key = static_cast<QKeyEvent*>( ev );
diff --git a/libopie2/opiecore/okeyconfigmanager.h b/libopie2/opiecore/okeyconfigmanager.h
index d610375..b861675 100644
--- a/libopie2/opiecore/okeyconfigmanager.h
+++ b/libopie2/opiecore/okeyconfigmanager.h
@@ -134,7 +134,7 @@ private:
* You can either handle the QKeyEvent yourself and ask this class if it is
* handled by your action and let give you the action. Or you can install
* the event filter and get a signal.
- * You need to load ans save yourself!
+ * You need to load and save yourself!
*
* @since 1.1.2
*/
@@ -168,7 +168,53 @@ public:
bool eventFilter( QObject*, QEvent* );
+ /**
+ * Sets the event mask flags aMask.
+ *
+ * aMask is a combination of OKeyConfigManager::EventMask
+ *
+ * @see eventMask(), testEventMask(), addEventMask(), clearEventMask()
+ */
+ void setEventMask(uint aMask);
+ /**
+ * Returns the event mask flags set.
+ *
+ * aMask is a combination of OKeyConfigManager::EventMask
+ *
+ * @see setEventMask(), testEventMask(), addEventMask(), clearEventMask()
+ */
+ uint eventMask()const;
+ /**
+ * Test if the event mask flag aMask is set.
+ *
+ * @param aMask one of OKeyConfigManager::EventMask
+ *
+ * @see eventMask(), setEventMask(), addEventMask(), clearEventMask()
+ */
+ bool testEventMask(uint aMask);
+ /**
+ * Add the event mask flag aMask.
+ *
+ * @param aMask one of OKeyConfigManager::EventMask
+ *
+ * @see eventMask(), setEventMask(), addEventMask(), clearEventMask()
+ */
+ void addEventMask(uint aMask);
+ /**
+ * Clears the event mask flag aMask.
+ *
+ * @param aMask is one of OKeyConfigManager::EventMask
+ *
+ * @see eventMask(), testEventMask(), addEventMask(), setEventMask()
+ */
+ void clearEventMask(uint aMask);
+
OKeyConfigItem::List keyConfigList()const;
+
+ enum EventMask {
+ MaskPressed = 0x1,
+ MaskReleased = 0x2,
+ };
signals:
/**
* The Signals are triggered on KeyPress and KeyRelease!
@@ -197,8 +243,34 @@ private:
OKeyMapConfigPrivate *m_map;
class Private;
Private *d;
+ uint m_event_mask;
};
+inline bool OKeyConfigManager::testEventMask(uint aMask)
+{
+ return (m_event_mask&aMask)!=0;
+}
+
+inline void OKeyConfigManager::addEventMask(uint aMask)
+{
+ m_event_mask |= aMask;
+}
+
+inline void OKeyConfigManager::clearEventMask(uint aMask)
+{
+ m_event_mask &= ~aMask;
+}
+
+inline void OKeyConfigManager::setEventMask(uint aMask)
+{
+ m_event_mask = aMask;
+}
+
+inline uint OKeyConfigManager::eventMask()const
+{
+ return m_event_mask;
+}
+
}
}