+/// Processes "Delete" key event of application. This key is used by several application actions.
+/// There is a logical order of the actions processing. So the key can not be set for actions
+/// as a shortcut. The class listens the key event and call operation manager processor.
+class XGUI_ShortCutListener : public QObject
+{
+public:
+ /// Constructor
+ /// \param theParent the parent to be deleted when the parent is deleted
+ /// \param theOperationMgr the class to perform deletion
+ XGUI_ShortCutListener(QObject* theParent, XGUI_OperationMgr* theOperationMgr)
+ : QObject(theParent), myOperationMgr(theOperationMgr)
+ {
+ qApp->installEventFilter(this);
+ }
+ ~XGUI_ShortCutListener() {}
+
+ /// Switch on short cut listener
+ void setActive(const bool theIsActive) { myIsActive = theIsActive; }
+
+ /// Redefinition of virtual function to process Delete key release
+ virtual bool eventFilter(QObject *theObject, QEvent *theEvent)
+ {
+ bool isAccepted = false;
+ if (myIsActive && theEvent->type() == QEvent::KeyRelease) {
+ QKeyEvent* aKeyEvent = dynamic_cast<QKeyEvent*>(theEvent);
+ if(aKeyEvent) {
+ switch (aKeyEvent->key()) {
+ case Qt::Key_Delete: {
+ isAccepted = myOperationMgr->onProcessDelete(theObject);
+ }
+ }
+ }
+ }
+ if (!isAccepted)
+ isAccepted = QObject::eventFilter(theObject, theEvent);
+ return isAccepted;
+ }
+
+private:
+ XGUI_OperationMgr* myOperationMgr; /// processor for key event
+ bool myIsActive; /// boolean state whether the event filter perform own signal processing
+};
+