author | zecke <zecke> | 2004-02-05 21:44:45 (UTC) |
---|---|---|
committer | zecke <zecke> | 2004-02-05 21:44:45 (UTC) |
commit | c66c82f5d42f17668794747006d5c8cf6cb62476 (patch) (unidiff) | |
tree | 9c5346a4a0d54cb05c0cd5a0ed90daf412b94657 /examples/inputmethod/exampleboardimpl.cpp | |
parent | 7c8214c06f13b9295df8ac3efaf021e66600d440 (diff) | |
download | opie-c66c82f5d42f17668794747006d5c8cf6cb62476.zip opie-c66c82f5d42f17668794747006d5c8cf6cb62476.tar.gz opie-c66c82f5d42f17668794747006d5c8cf6cb62476.tar.bz2 |
Initial revision
Diffstat (limited to 'examples/inputmethod/exampleboardimpl.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | examples/inputmethod/exampleboardimpl.cpp | 157 |
1 files changed, 157 insertions, 0 deletions
diff --git a/examples/inputmethod/exampleboardimpl.cpp b/examples/inputmethod/exampleboardimpl.cpp new file mode 100644 index 0000000..36989a2 --- a/dev/null +++ b/examples/inputmethod/exampleboardimpl.cpp | |||
@@ -0,0 +1,157 @@ | |||
1 | #include <qwidget.h> | ||
2 | #include <qcheckbox.h> | ||
3 | #include <qlabel.h> | ||
4 | #include <qsignalmapper.h> | ||
5 | #include <qpushbutton.h> | ||
6 | #include <qpe/resource.h> | ||
7 | |||
8 | #include "exampleboardimpl.h" | ||
9 | |||
10 | ExampleBoard::ExampleBoard(QWidget* par, WFlags fl ) | ||
11 | : QHBox(par, "name", fl ) | ||
12 | { | ||
13 | QCheckBox *box1 = new QCheckBox(tr("Alt"),this); | ||
14 | connect(box1,SIGNAL(toggled(bool)), | ||
15 | this,SLOT(slotAlt(bool))); | ||
16 | m_alt = box1; | ||
17 | box1 = new QCheckBox(tr("Shift"),this ); | ||
18 | connect(box1,SIGNAL(toggled(bool)), | ||
19 | this,SLOT(slotShift(bool))); | ||
20 | m_shi = box1; | ||
21 | box1 = new QCheckBox(tr("Ctrl","Control Shortcut on keyboard"),this ); | ||
22 | connect(box1,SIGNAL(toggled(bool)), | ||
23 | this,SLOT(slotCtrl(bool))); | ||
24 | m_ctrl = box1; | ||
25 | |||
26 | QSignalMapper *map = new QSignalMapper(this); | ||
27 | QPushButton *btn = new QPushButton("a",this); | ||
28 | map->setMapping(btn,0); | ||
29 | connect(btn,SIGNAL(clicked()),map,SLOT(map())); | ||
30 | |||
31 | btn = new QPushButton("b",this); | ||
32 | map->setMapping(btn,1); | ||
33 | connect(btn,SIGNAL(clicked()),map,SLOT(map())); | ||
34 | |||
35 | btn = new QPushButton("c",this); | ||
36 | map->setMapping(btn,2); | ||
37 | connect(btn,SIGNAL(clicked()),map,SLOT(map())); | ||
38 | |||
39 | connect(map,SIGNAL(mapped(int)), | ||
40 | this,SLOT(slotKey(int))); | ||
41 | resetState(); | ||
42 | } | ||
43 | |||
44 | ExampleBoard::~ExampleBoard(){ | ||
45 | } | ||
46 | |||
47 | void ExampleBoard::resetState(){ | ||
48 | m_state = 0; | ||
49 | m_shi->setChecked(false); | ||
50 | m_ctrl->setChecked(false); | ||
51 | m_alt->setChecked(false); | ||
52 | } | ||
53 | |||
54 | void ExampleBoard::slotKey(int _ke){ | ||
55 | int ke = _ke + 0x61; // 0 + 65 = 0x41 == A | ||
56 | if(m_state & ShiftButton ) | ||
57 | ke -= 0x20; | ||
58 | |||
59 | /* | ||
60 | * Send the key | ||
61 | * ke is the unicode | ||
62 | * _ke + 0x41 is the keycode | ||
63 | * m_state Normally the state | ||
64 | * down/up | ||
65 | * auto repeat | ||
66 | */ | ||
67 | emit key(ke, _ke +0x41,m_state,true,false); | ||
68 | emit key(ke, _ke + 0x41,m_state,false,false); | ||
69 | } | ||
70 | |||
71 | void ExampleBoard::slotShift(bool b){ | ||
72 | if(b) | ||
73 | m_state |= ShiftButton; | ||
74 | else | ||
75 | m_state &= ~ShiftButton; | ||
76 | } | ||
77 | |||
78 | void ExampleBoard::slotAlt(bool b){ | ||
79 | if(b) | ||
80 | m_state |= AltButton; | ||
81 | else | ||
82 | m_state &= ~AltButton; | ||
83 | } | ||
84 | |||
85 | void ExampleBoard::slotCtrl(bool b){ | ||
86 | if(b) | ||
87 | m_state |= ControlButton; | ||
88 | else | ||
89 | m_state &= ~ControlButton; | ||
90 | } | ||
91 | |||
92 | |||
93 | |||
94 | ExampleboardImpl::ExampleboardImpl() | ||
95 | : m_pickboard(0), m_icn(0) | ||
96 | { | ||
97 | } | ||
98 | |||
99 | ExampleboardImpl::~ExampleboardImpl() | ||
100 | { | ||
101 | delete m_pickboard; | ||
102 | delete m_icn; | ||
103 | } | ||
104 | |||
105 | QWidget *ExampleboardImpl::inputMethod( QWidget *parent, Qt::WFlags f ) | ||
106 | { | ||
107 | if ( !m_pickboard ) | ||
108 | m_pickboard = new ExampleBoard( parent, f ); | ||
109 | return m_pickboard; | ||
110 | } | ||
111 | |||
112 | void ExampleboardImpl::resetState() | ||
113 | { | ||
114 | if ( m_pickboard ) | ||
115 | m_pickboard->resetState(); | ||
116 | } | ||
117 | |||
118 | QPixmap *ExampleboardImpl::icon() | ||
119 | { | ||
120 | if ( !m_icn ) | ||
121 | m_icn = new QPixmap(Resource::loadPixmap("Tux")); | ||
122 | return m_icn; | ||
123 | } | ||
124 | |||
125 | QString ExampleboardImpl::name() | ||
126 | { | ||
127 | return QObject::tr("Example Input"); | ||
128 | } | ||
129 | |||
130 | void ExampleboardImpl::onKeyPress( QObject *receiver, const char *slot ) | ||
131 | { | ||
132 | if ( m_pickboard ) | ||
133 | QObject::connect( m_pickboard, SIGNAL(key(ushort,ushort,ushort,bool,bool)), receiver, slot ); | ||
134 | } | ||
135 | |||
136 | #ifndef QT_NO_COMPONENT | ||
137 | QRESULT ExampleboardImpl::queryInterface( const QUuid &uuid, QUnknownInterface **iface ) | ||
138 | { | ||
139 | *iface = 0; | ||
140 | if ( uuid == IID_QUnknown ) | ||
141 | *iface = this; | ||
142 | else if ( uuid == IID_InputMethod ) | ||
143 | *iface = this; | ||
144 | else | ||
145 | return QS_FALSE; | ||
146 | |||
147 | if ( *iface ) | ||
148 | (*iface)->addRef(); | ||
149 | return QS_OK; | ||
150 | } | ||
151 | |||
152 | Q_EXPORT_INTERFACE() | ||
153 | { | ||
154 | Q_CREATE_INSTANCE( ExampleboardImpl ) | ||
155 | } | ||
156 | #endif | ||
157 | |||