summaryrefslogtreecommitdiff
path: root/examples/inputmethod/exampleboardimpl.cpp
Unidiff
Diffstat (limited to 'examples/inputmethod/exampleboardimpl.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--examples/inputmethod/exampleboardimpl.cpp157
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
10ExampleBoard::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
44ExampleBoard::~ExampleBoard(){
45}
46
47void 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
71void ExampleBoard::slotShift(bool b){
72 if(b)
73 m_state |= ShiftButton;
74 else
75 m_state &= ~ShiftButton;
76}
77
78void ExampleBoard::slotAlt(bool b){
79 if(b)
80 m_state |= AltButton;
81 else
82 m_state &= ~AltButton;
83}
84
85void ExampleBoard::slotCtrl(bool b){
86 if(b)
87 m_state |= ControlButton;
88 else
89 m_state &= ~ControlButton;
90}
91
92
93
94ExampleboardImpl::ExampleboardImpl()
95 : m_pickboard(0), m_icn(0)
96{
97}
98
99ExampleboardImpl::~ExampleboardImpl()
100{
101 delete m_pickboard;
102 delete m_icn;
103}
104
105QWidget *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
112void ExampleboardImpl::resetState()
113{
114 if ( m_pickboard )
115 m_pickboard->resetState();
116}
117
118QPixmap *ExampleboardImpl::icon()
119{
120 if ( !m_icn )
121 m_icn = new QPixmap(Resource::loadPixmap("Tux"));
122 return m_icn;
123}
124
125QString ExampleboardImpl::name()
126{
127 return QObject::tr("Example Input");
128}
129
130void 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
137QRESULT 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
152Q_EXPORT_INTERFACE()
153{
154 Q_CREATE_INSTANCE( ExampleboardImpl )
155}
156#endif
157