Olivier Smeesters
/
DtmfKit
A DTMF sequence editor and player for HAM radio equipment command & control.
KeyboardManager/kbd_mgr/KeyboardEventServer.h@0:1324e7d9d471, 2011-03-07 (annotated)
- Committer:
- osmeest
- Date:
- Mon Mar 07 22:51:19 2011 +0000
- Revision:
- 0:1324e7d9d471
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
osmeest | 0:1324e7d9d471 | 1 | #ifndef KEYBOARD_EVENT_SERVER_H_ |
osmeest | 0:1324e7d9d471 | 2 | #define KEYBOARD_EVENT_SERVER_H_ |
osmeest | 0:1324e7d9d471 | 3 | |
osmeest | 0:1324e7d9d471 | 4 | #include <cstdlib> |
osmeest | 0:1324e7d9d471 | 5 | |
osmeest | 0:1324e7d9d471 | 6 | namespace kbd_mgr { |
osmeest | 0:1324e7d9d471 | 7 | |
osmeest | 0:1324e7d9d471 | 8 | template <class HandlerClass> |
osmeest | 0:1324e7d9d471 | 9 | class KeyboardEventServer { |
osmeest | 0:1324e7d9d471 | 10 | protected: |
osmeest | 0:1324e7d9d471 | 11 | KeyboardEventServer() : handler_(NULL), ownHandler_(false) { } |
osmeest | 0:1324e7d9d471 | 12 | |
osmeest | 0:1324e7d9d471 | 13 | ~KeyboardEventServer() |
osmeest | 0:1324e7d9d471 | 14 | { |
osmeest | 0:1324e7d9d471 | 15 | clearHandler(); |
osmeest | 0:1324e7d9d471 | 16 | } |
osmeest | 0:1324e7d9d471 | 17 | |
osmeest | 0:1324e7d9d471 | 18 | void setHandler(HandlerClass *h, bool owner = true) { |
osmeest | 0:1324e7d9d471 | 19 | this->handler_ = h; |
osmeest | 0:1324e7d9d471 | 20 | this->ownHandler_ = owner; |
osmeest | 0:1324e7d9d471 | 21 | } |
osmeest | 0:1324e7d9d471 | 22 | |
osmeest | 0:1324e7d9d471 | 23 | void clearHandler() { |
osmeest | 0:1324e7d9d471 | 24 | if (this->ownHandler_) { |
osmeest | 0:1324e7d9d471 | 25 | delete this->handler_; |
osmeest | 0:1324e7d9d471 | 26 | } |
osmeest | 0:1324e7d9d471 | 27 | this->handler_ = NULL; |
osmeest | 0:1324e7d9d471 | 28 | this->ownHandler_ = false; |
osmeest | 0:1324e7d9d471 | 29 | } |
osmeest | 0:1324e7d9d471 | 30 | |
osmeest | 0:1324e7d9d471 | 31 | HandlerClass *handler() const { return this->handler_; } |
osmeest | 0:1324e7d9d471 | 32 | |
osmeest | 0:1324e7d9d471 | 33 | bool hasHandler() const { return this->handler_ != NULL; } |
osmeest | 0:1324e7d9d471 | 34 | |
osmeest | 0:1324e7d9d471 | 35 | public: |
osmeest | 0:1324e7d9d471 | 36 | void attach(HandlerClass *handler) { |
osmeest | 0:1324e7d9d471 | 37 | setHandler(handler, false); |
osmeest | 0:1324e7d9d471 | 38 | } |
osmeest | 0:1324e7d9d471 | 39 | void attach(HandlerClass &handler) { |
osmeest | 0:1324e7d9d471 | 40 | setHandler(&handler, false); |
osmeest | 0:1324e7d9d471 | 41 | } |
osmeest | 0:1324e7d9d471 | 42 | |
osmeest | 0:1324e7d9d471 | 43 | void detach() { |
osmeest | 0:1324e7d9d471 | 44 | clearHandler(); |
osmeest | 0:1324e7d9d471 | 45 | } |
osmeest | 0:1324e7d9d471 | 46 | |
osmeest | 0:1324e7d9d471 | 47 | private: |
osmeest | 0:1324e7d9d471 | 48 | HandlerClass *handler_; |
osmeest | 0:1324e7d9d471 | 49 | bool ownHandler_; |
osmeest | 0:1324e7d9d471 | 50 | }; |
osmeest | 0:1324e7d9d471 | 51 | |
osmeest | 0:1324e7d9d471 | 52 | } // kbd_mgr |
osmeest | 0:1324e7d9d471 | 53 | |
osmeest | 0:1324e7d9d471 | 54 | #endif // KEYBOARD_EVENT_SERVER_H_ |