summaryrefslogtreecommitdiff
path: root/inputmethods/pickboard/pickboardpicks.cpp
Unidiff
Diffstat (limited to 'inputmethods/pickboard/pickboardpicks.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--inputmethods/pickboard/pickboardpicks.cpp418
1 files changed, 418 insertions, 0 deletions
diff --git a/inputmethods/pickboard/pickboardpicks.cpp b/inputmethods/pickboard/pickboardpicks.cpp
new file mode 100644
index 0000000..a80bbf8
--- a/dev/null
+++ b/inputmethods/pickboard/pickboardpicks.cpp
@@ -0,0 +1,418 @@
1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3**
4** This file is part of Qtopia Environment.
5**
6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file.
10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15**
16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you.
18**
19**********************************************************************/
20#include "pickboardpicks.h"
21#include "pickboardcfg.h"
22
23#include <qpe/global.h>
24
25#include <qpainter.h>
26#include <qlist.h>
27#include <qbitmap.h>
28#include <qlayout.h>
29#include <qvbox.h>
30#include <qdialog.h>
31#include <qscrollview.h>
32#include <qpopupmenu.h>
33#include <qhbuttongroup.h>
34#include <qpushbutton.h>
35#include <qmessagebox.h>
36#include <qwindowsystem_qws.h>
37
38void PickboardPicks::doMenu()
39{
40 QWidget* cause = (QWidget*)sender(); // evil
41
42 QPopupMenu popup(this);
43 config()->fillMenu(popup);
44
45 QPoint pos = cause->mapToGlobal(cause->rect().topRight());
46 QSize sz = popup.sizeHint();
47 pos.ry() -= sz.height();
48 pos.rx() -= sz.width();
49 popup.move(pos);
50 config()->doMenu(popup.exec());
51}
52
53static const char *BS_xpm[] = {
54"5 7 2 1",
55"a c #000000",
56". c None",
57"...aa",
58"..aaa",
59".aaaa",
60"aaaaa",
61".aaaa",
62"..aaa",
63"...aa",
64};
65static const char *Del_xpm[] = {
66"14 7 2 1",
67"a c #000000",
68". c None",
69"aaa..aaaa.a...",
70"a..a.a....a...",
71"a..a.a....a...",
72"a..a.aaa..a...",
73"a..a.a....a...",
74"a..a.a....a...",
75"aaa..aaaa.aaaa"
76};
77static const char *Home_xpm[] = {
78"20 7 2 1",
79"a c #000000",
80". c None",
81"a..a..aa..a...a.aaaa",
82"a..a.a..a.aa.aa.a...",
83"a..a.a..a.a.a.a.a...",
84"aaaa.a..a.a.a.a.aaa.",
85"a..a.a..a.a...a.a...",
86"a..a.a..a.a...a.a...",
87"a..a..aa..a...a.aaaa"
88};
89static const char *PgUp_xpm[] = {
90"20 7 2 1",
91"a c #000000",
92". c None",
93"aaa.......a..a......",
94"a..a......a..a......",
95"a..a.aa...a..a.aaa..",
96"aaa.a.....a..a.a..a.",
97"a...a.aa..a..a.aaa..",
98"a...a..a..a..a.a....",
99"a....aaa...aa..a...."
100};
101static const char *PgDn_xpm[] = {
102"20 7 2 1",
103"a c #000000",
104". c None",
105"aaa.......aaa.......",
106"a..a......a..a......",
107"a..a.aa...a..a.a..a.",
108"aaa.a.....a..a.aa.a.",
109"a...a.aa..a..a.a.aa.",
110"a...a..a..a..a.a..a.",
111"a....aaa..aaa..a..a."
112};
113static const char *End_xpm[] = {
114"14 7 2 1",
115"a c #000000",
116". c None",
117"aaaa.a..a.aaa.",
118"a....aa.a.a..a",
119"a....a.aa.a..a",
120"aaa..a..a.a..a",
121"a....a..a.a..a",
122"a....a..a.a..a",
123"aaaa.a..a.aaa."
124};
125static const char *Enter_xpm[] = {
126"14 7 2 1",
127"a c #000000",
128". c None",
129".............a",
130".............a",
131"..a..........a",
132".aa.........a.",
133"aaaaaaaaaaaa..",
134".aa...........",
135"..a..........."
136};
137static const char *Esc_xpm[] = {
138"14 7 2 1",
139"a c #000000",
140". c None",
141"aaaa..aa...aa.",
142"a....a..a.a..a",
143"a....a....a...",
144"aaa...aa..a...",
145"a.......a.a...",
146"a....a..a.a..a",
147"aaaa..aa...aa."
148};
149static const char *Ins_xpm[] = {
150"13 7 2 1",
151"a c #000000",
152". c None",
153"aaa.a..a..aa.",
154".a..aa.a.a..a",
155".a..a.aa.a...",
156".a..a..a..aa.",
157".a..a..a....a",
158".a..a..a.a..a",
159"aaa.a..a..aa."
160};
161static const char *Up_xpm[] = {
162"7 7 2 1",
163"a c #000000",
164". c None",
165"...a...",
166"..aaa..",
167".a.a.a.",
168"a..a..a",
169"...a...",
170"...a...",
171"...a..."
172};
173static const char *Left_xpm[] = {
174"7 7 2 1",
175"a c #000000",
176". c None",
177"...a...",
178"..a....",
179".a.....",
180"aaaaaaa",
181".a.....",
182"..a....",
183"...a..."
184};
185static const char *Down_xpm[] = {
186"7 7 2 1",
187"a c #000000",
188". c None",
189"...a...",
190"...a...",
191"...a...",
192"a..a..a",
193".a.a.a.",
194"..aaa..",
195"...a..."
196};
197static const char *Right_xpm[] = {
198"7 7 2 1",
199"a c #000000",
200". c None",
201"...a...",
202"....a..",
203".....a.",
204"aaaaaaa",
205".....a.",
206"....a..",
207"...a..."
208};
209static const char *BackTab_xpm[] = {
210"8 7 2 1",
211"a c #000000",
212". c None",
213"a.......",
214"a..a....",
215"a.aa....",
216"aaaaaaaa",
217"a.aa....",
218"a..a....",
219"a......."
220};
221static const char *Tab_xpm[] = {
222"8 7 2 1",
223"a c #000000",
224". c None",
225".......a",
226"....a..a",
227"....aa.a",
228"aaaaaaaa",
229"....aa.a",
230"....a..a",
231".......a"
232};
233static const char *Space_xpm[] = {
234"9 9 2 1",
235"a c #000000",
236". c None",
237"aaaaaaaaa",
238"a.......a",
239"a.......a",
240"a.......a",
241"a.......a",
242"a.......a",
243"a.......a",
244"a.......a",
245"aaaaaaaaa"
246};
247
248PickboardPicks::PickboardPicks(QWidget* parent, const char* name, WFlags f ) :
249 QFrame(parent,name,f)
250{
251}
252
253void PickboardPicks::initialise(void)
254{
255 setSizePolicy(QSizePolicy(QSizePolicy::Expanding,QSizePolicy::Fixed));
256 mode = 0;
257
258 DictFilterConfig* dc = new DictFilterConfig(this);
259 dc->addSet("ABC");
260 dc->addSet("DEF");
261 dc->addSet("GHI");
262 dc->addSet("JKL");
263 dc->addSet("MNO");
264 dc->addSet("PQR");
265 dc->addSet("STU");
266 dc->addSet("VWX");
267 dc->addSet("YZ-'");
268 dc->addMode("123");
269 dc->addMode("@*!?");
270 dc->addMode("KEY");
271 dc->addMode("Space");
272 dc->addMode("Back");
273 dc->addMode("Enter");
274 dc->addMode("Shift");
275 configs.append(dc);
276
277 CharStringConfig* number = new CharStringConfig(this);
278 number->addChar("0");
279 number->addChar("1");
280 number->addChar("2");
281 number->addChar("3");
282 number->addChar("4");
283 number->addChar("5");
284 number->addChar("6");
285 number->addChar("7");
286 number->addChar("8");
287 number->addChar("9");
288 number->addChar("."); // #### or "," in some locales
289 configs.append(number);
290
291 CharConfig* punc = new CharConfig(this);
292
293 punc->addChar(0,"\"");
294 punc->addChar(0,"`");
295 punc->addChar(0,"'");
296 punc->addChar(0,"\253");
297 punc->addChar(0,"\273");
298 punc->addChar(0,"\277");
299 punc->addChar(1,"(");
300 punc->addChar(1,")");
301 punc->addChar(1,"[");
302 punc->addChar(1,"]");
303 punc->addChar(1,"{");
304 punc->addChar(1,"}");
305
306 punc->addChar(0,"+");
307 punc->addChar(0,"-");
308 punc->addChar(0,"*");
309 punc->addChar(0,"/");
310 punc->addChar(0,"=");
311 punc->addChar(0,"_");
312 punc->addChar(0,"$");
313 punc->addChar(0,"&");
314 punc->addChar(1,"|");
315 punc->addChar(1,"@");
316 punc->addChar(1,"\\");
317 punc->addChar(1,"#");
318 punc->addChar(1,"^");
319 punc->addChar(1,"~");
320 punc->addChar(1,"<");
321 punc->addChar(1,">");
322
323 punc->addChar(0,".");
324 punc->addChar(0,"?");
325 punc->addChar(0,"!");
326 punc->addChar(0,",");
327 punc->addChar(0,";");
328 punc->addChar(1,":");
329 punc->addChar(1,"\267");
330 punc->addChar(1,"\277");
331 punc->addChar(1,"\241");
332 punc->addChar(1,"\367");
333
334 punc->addChar(0,"$");
335 punc->addChar(0,"\242");
336 punc->addChar(0,"\245");
337 punc->addChar(1,"\243");
338 punc->addChar(1,"\244");
339 punc->addChar(1,"\260");
340
341 configs.append(punc);
342
343 KeycodeConfig* keys = new KeycodeConfig(this);
344 keys->addKey(0,QPixmap(Esc_xpm),Key_Escape);
345 keys->addKey(0,QPixmap(BS_xpm),Key_Backspace);
346 keys->addGap(0,10);
347
348 keys->addKey(0,QPixmap(Ins_xpm),Key_Insert);
349 keys->addKey(0,QPixmap(Home_xpm),Key_Home);
350 keys->addKey(0,QPixmap(PgUp_xpm),Key_PageUp);
351
352 keys->addGap(0,25);
353 keys->addKey(0,QPixmap(Up_xpm),Key_Up);
354 keys->addGap(0,15);
355
356 keys->addKey(1,QPixmap(BackTab_xpm),Key_Tab);
357 keys->addGap(1,3);
358 keys->addKey(1,QPixmap(Tab_xpm),Key_Tab);
359 keys->addGap(1,10);
360
361 keys->addKey(1,QPixmap(Del_xpm),Key_Delete);
362 keys->addGap(1,2);
363 keys->addKey(1,QPixmap(End_xpm),Key_End);
364 keys->addGap(1,3);
365 keys->addKey(1,QPixmap(PgDn_xpm),Key_PageDown);
366
367 keys->addGap(1,10);
368 keys->addKey(1,QPixmap(Left_xpm),Key_Left);
369 keys->addKey(1,QPixmap(Down_xpm),Key_Down);
370 keys->addKey(1,QPixmap(Right_xpm),Key_Right);
371
372 keys->addGap(1,13);
373 keys->addKey(1,QPixmap(Space_xpm),Key_Space);
374
375 keys->addGap(0,10);
376 keys->addKey(0,QPixmap(Enter_xpm),Key_Return);
377
378 configs.append(keys);
379}
380
381PickboardPicks::~PickboardPicks()
382{
383}
384
385QSize PickboardPicks::sizeHint() const
386{
387 return QSize(240,fontMetrics().lineSpacing()*2+3);
388}
389
390void PickboardPicks::drawContents(QPainter* p)
391{
392 config()->draw(p);
393}
394
395void PickboardPicks::mousePressEvent(QMouseEvent* e)
396{
397 config()->pickPoint(e->pos(),TRUE);
398}
399
400void PickboardPicks::mouseDoubleClickEvent(QMouseEvent* e)
401{
402 config()->pickPoint(e->pos(),TRUE);
403}
404
405void PickboardPicks::mouseReleaseEvent(QMouseEvent* e)
406{
407 config()->pickPoint(e->pos(),FALSE);
408}
409
410void PickboardPicks::setMode(int m)
411{
412 mode = m;
413}
414
415void PickboardPicks::resetState()
416{
417 config()->doMenu(100);
418}