- work on timers
[enigma2.git] / lib / gui / einput.h
1 #ifndef __lib_gui_einput_h
2 #define __lib_gui_einput_h
3
4 #include <lib/gui/elabel.h>
5 #include <lib/python/connections.h>
6
7 class eInputContent;
8
9 class eInput: public eLabel
10 {
11 public:
12         eInput(eWidget *parent);
13         virtual ~eInput();
14         PSignal0<void> changed;
15
16         int m_cursor;
17         
18         enum InputActions {
19                 moveLeft, 
20                 moveRight, 
21                 moveHome, 
22                 moveEnd,
23                 deleteChar
24         };
25         
26         void setContent(eInputContent *cnt);
27         
28         int getNumber();
29 protected:
30         ePtr<eInputContent> m_content;
31         int event(int event, void *data=0, void *data2=0);
32 };
33
34 class eInputContent: public iObject
35 {
36 public:
37                 /* management stuff */
38         void setInput(eInput *widget);
39                 /* display stuff */
40         virtual void getDisplay(std::string &res, int &cursor)=0;
41
42                 /* movement / user actions */
43         enum {
44                 dirLeft, dirRight,
45                 dirHome, dirEnd,
46                         /* contents can define their own directions */
47                 dirUser
48         };
49         virtual void moveCursor(int dir)=0;
50                 /* no movement keys except stuff like '.' or so*/
51         virtual int haveKey(int code)=0;
52         
53         virtual int isValid()=0;
54 protected:
55         eInput *m_input;
56 };
57
58 class eInputContentNumber: public eInputContent
59 {
60         DECLARE_REF(eInputContentNumber);
61 public:
62         eInputContentNumber(int cur, int min, int max);
63
64         void getDisplay(std::string &res, int &cursor);
65         void moveCursor(int dir);
66         int haveKey(int code);
67         int isValid();
68         
69 private:
70         void recalcLen();
71         
72         void insertDigit(int pos, int dig);
73         
74         int m_value;
75         int m_cursor, m_len;
76         
77         int m_min, m_max;
78 };
79
80 #endif