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
@@ -411,2 +411,12 @@ bool OKeyConfigItem::operator!=( const OKeyConfigItem& conf )const {
+/*! \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>
+*/
+
/**
@@ -416,3 +426,3 @@ bool OKeyConfigItem::operator!=( const OKeyConfigItem& conf )const {
* You can use this manager in multiple ways. Either make it handle
- * QKeyEvents
+ * QKeyEvents. The EventMask is set to OKeyConfigManager::MaskReleased by default.
*
@@ -475,2 +485,3 @@ OKeyConfigManager::OKeyConfigManager( Opie::Core::OConfig* conf,
QPEApplication::grabKeyboard();
+ m_event_mask = OKeyConfigManager::MaskReleased;
}
@@ -676,3 +687,4 @@ bool OKeyConfigManager::eventFilter( QObject* obj, QEvent* ev) {
- if ( ev->type() != QEvent::KeyPress && ev->type() != QEvent::KeyRelease )
+ if ( (ev->type() != QEvent::KeyPress||!testEventMask(MaskPressed)) &&
+ (ev->type() != QEvent::KeyRelease||!testEventMask(MaskReleased)) )
return false;
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
@@ -136,3 +136,3 @@ private:
* the event filter and get a signal.
- * You need to load ans save yourself!
+ * You need to load and save yourself!
*
@@ -170,3 +170,49 @@ public:
+ /**
+ * 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:
@@ -199,4 +245,30 @@ 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;
+}
+
}