Olivier Smeesters
/
DtmfKit
A DTMF sequence editor and player for HAM radio equipment command & control.
system.hpp@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 _SYSTEM_HPP |
osmeest | 0:1324e7d9d471 | 2 | #define _SYSTEM_HPP |
osmeest | 0:1324e7d9d471 | 3 | |
osmeest | 0:1324e7d9d471 | 4 | #include "key_handler.hpp" |
osmeest | 0:1324e7d9d471 | 5 | #include <string> |
osmeest | 0:1324e7d9d471 | 6 | |
osmeest | 0:1324e7d9d471 | 7 | class State; |
osmeest | 0:1324e7d9d471 | 8 | class DisplayManager; |
osmeest | 0:1324e7d9d471 | 9 | class KeyboardManager; |
osmeest | 0:1324e7d9d471 | 10 | class DtmfGenerator; |
osmeest | 0:1324e7d9d471 | 11 | |
osmeest | 0:1324e7d9d471 | 12 | |
osmeest | 0:1324e7d9d471 | 13 | class System : public KeyHandler { |
osmeest | 0:1324e7d9d471 | 14 | public: |
osmeest | 0:1324e7d9d471 | 15 | enum StateId { |
osmeest | 0:1324e7d9d471 | 16 | Init, Edit, Command, Sending, |
osmeest | 0:1324e7d9d471 | 17 | NumStates |
osmeest | 0:1324e7d9d471 | 18 | }; |
osmeest | 0:1324e7d9d471 | 19 | |
osmeest | 0:1324e7d9d471 | 20 | System(DisplayManager *display, KeyboardManager *keyboard, DtmfGenerator *dtmf); |
osmeest | 0:1324e7d9d471 | 21 | |
osmeest | 0:1324e7d9d471 | 22 | DisplayManager *display() { return this->display_; } |
osmeest | 0:1324e7d9d471 | 23 | KeyboardManager *keyboard() { return this->keyboard_; } |
osmeest | 0:1324e7d9d471 | 24 | DtmfGenerator *dtmf() { return this->dtmf_; } |
osmeest | 0:1324e7d9d471 | 25 | |
osmeest | 0:1324e7d9d471 | 26 | void registerState(StateId id, State *state); |
osmeest | 0:1324e7d9d471 | 27 | void unregisterState(State *state); |
osmeest | 0:1324e7d9d471 | 28 | |
osmeest | 0:1324e7d9d471 | 29 | void setState(StateId newState); |
osmeest | 0:1324e7d9d471 | 30 | State * state() const { return this->state_; } |
osmeest | 0:1324e7d9d471 | 31 | |
osmeest | 0:1324e7d9d471 | 32 | void insertSymbol(char ch); |
osmeest | 0:1324e7d9d471 | 33 | void deleteCurrentSymbol(); |
osmeest | 0:1324e7d9d471 | 34 | void clearText(); |
osmeest | 0:1324e7d9d471 | 35 | const std::string &text() const { return this->text_; } |
osmeest | 0:1324e7d9d471 | 36 | std::size_t text_size() const { return this->len_; } |
osmeest | 0:1324e7d9d471 | 37 | |
osmeest | 0:1324e7d9d471 | 38 | void moveCursorTo(int pos); |
osmeest | 0:1324e7d9d471 | 39 | void moveCursorBy(int delta); |
osmeest | 0:1324e7d9d471 | 40 | std::size_t cursor() const { return this->pos_; } |
osmeest | 0:1324e7d9d471 | 41 | |
osmeest | 0:1324e7d9d471 | 42 | // KeyHandler implementation |
osmeest | 0:1324e7d9d471 | 43 | virtual void handleKey(char ch); |
osmeest | 0:1324e7d9d471 | 44 | |
osmeest | 0:1324e7d9d471 | 45 | private: |
osmeest | 0:1324e7d9d471 | 46 | void setCursorPosition(int pos); |
osmeest | 0:1324e7d9d471 | 47 | |
osmeest | 0:1324e7d9d471 | 48 | DisplayManager *display_; |
osmeest | 0:1324e7d9d471 | 49 | KeyboardManager *keyboard_; |
osmeest | 0:1324e7d9d471 | 50 | DtmfGenerator *dtmf_; |
osmeest | 0:1324e7d9d471 | 51 | |
osmeest | 0:1324e7d9d471 | 52 | State *state_; |
osmeest | 0:1324e7d9d471 | 53 | State *states_[NumStates]; |
osmeest | 0:1324e7d9d471 | 54 | |
osmeest | 0:1324e7d9d471 | 55 | std::string text_; |
osmeest | 0:1324e7d9d471 | 56 | std::size_t len_; |
osmeest | 0:1324e7d9d471 | 57 | std::size_t pos_; |
osmeest | 0:1324e7d9d471 | 58 | }; |
osmeest | 0:1324e7d9d471 | 59 | |
osmeest | 0:1324e7d9d471 | 60 | #endif |