summaryrefslogtreecommitdiff
authormouse <mouse>2004-01-05 15:23:15 (UTC)
committer mouse <mouse>2004-01-05 15:23:15 (UTC)
commit969831e80dd285e8c95e8a91333a626717d5543e (patch) (unidiff)
treef5976ce77f9381f8e4f4d871d74e520f0d76ba85
parentc127e5d582b1ae4033eca1c8454bee75d510b9e8 (diff)
downloadopie-969831e80dd285e8c95e8a91333a626717d5543e.zip
opie-969831e80dd285e8c95e8a91333a626717d5543e.tar.gz
opie-969831e80dd285e8c95e8a91333a626717d5543e.tar.bz2
added popup menu
fixed reaction by one touch and hold-touch (RightButton)
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/applets/multikeyapplet/multikey.cpp12
-rw-r--r--core/applets/multikeyapplet/multikey.h9
2 files changed, 16 insertions, 5 deletions
diff --git a/core/applets/multikeyapplet/multikey.cpp b/core/applets/multikeyapplet/multikey.cpp
index f1227ef..9ef162f 100644
--- a/core/applets/multikeyapplet/multikey.cpp
+++ b/core/applets/multikeyapplet/multikey.cpp
@@ -1,122 +1,130 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2004 Anton Kachalov mouse@altlinux.ru 2** Copyright (C) 2004 Anton Kachalov mouse@altlinux.ru
3** All rights reserved. 3** All rights reserved.
4** 4**
5** This file may be distributed and/or modified under the terms of the 5** This file may be distributed and/or modified under the terms of the
6** GNU General Public License version 2 as published by the Free Software 6** GNU General Public License version 2 as published by the Free Software
7** Foundation and appearing in the file LICENSE.GPL included in the 7** Foundation and appearing in the file LICENSE.GPL included in the
8** packaging of this file. 8** packaging of this file.
9** 9**
10** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 10** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
11** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 11** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
12** 12**
13**********************************************************************/ 13**********************************************************************/
14 14
15#include "multikey.h" 15#include "multikey.h"
16 16
17#include <qpe/global.h> 17#include <qpe/global.h>
18#include <qpe/config.h> 18#include <qpe/config.h>
19#include <qpe/qcopenvelope_qws.h> 19#include <qpe/qcopenvelope_qws.h>
20#include <qpe/qpeapplication.h> 20#include <qpe/qpeapplication.h>
21 21
22#include <qlabel.h> 22#include <qlabel.h>
23#include <qdir.h> 23#include <qdir.h>
24#include <qfileinfo.h> 24#include <qfileinfo.h>
25#include <qcopchannel_qws.h> 25#include <qcopchannel_qws.h>
26 26
27Multikey::Multikey(QWidget *parent) : QLabel(parent), popupMenu(this), current("EN") 27Multikey::Multikey(QWidget *parent) : QLabel(parent), popupMenu(this), current("EN")
28{ 28{
29 QCopChannel* swChannel = new QCopChannel("MultiKey/Switcher", this); 29 QCopChannel* swChannel = new QCopChannel("MultiKey/Switcher", this);
30 connect( swChannel, SIGNAL(received(const QCString &, const QByteArray &)), 30 connect( swChannel, SIGNAL(received(const QCString &, const QByteArray &)),
31 this, SLOT(message(const QCString &, const QByteArray &))); 31 this, SLOT(message(const QCString &, const QByteArray &)));
32 32
33 setFont( QFont( "Helvetica", 10, QFont::Normal ) ); 33 setFont( QFont( "Helvetica", 10, QFont::Normal ) );
34 QPEApplication::setStylusOperation(this, QPEApplication::RightOnHold);
34 lang = 0; 35 lang = 0;
35 QCopEnvelope e("MultiKey/Keyboard", "getmultikey()"); 36 QCopEnvelope e("MultiKey/Keyboard", "getmultikey()");
36 setText("EN"); 37 setText("EN");
37 popupMenu.insertItem("EN", -1); 38 popupMenu.insertItem("EN", -1);
38 show(); 39 show();
39} 40}
40 41
41void Multikey::mousePressEvent(QMouseEvent *ev) 42void Multikey::mousePressEvent(QMouseEvent *ev)
42{ 43{
43 if (ev->button() == RightButton) { 44 if (ev->button() == RightButton) {
44 45
45 QPoint p = mapToGlobal(QPoint(0, 0)); 46 QPoint p = mapToGlobal(QPoint(0, 0));
46 QSize s = popupMenu.sizeHint(); 47 QSize s = popupMenu.sizeHint();
47 int opt = popupMenu.exec(QPoint(p.x() + (width() / 2) - (s.width() / 2), 48 int opt = popupMenu.exec(QPoint(p.x() + (width() / 2) - (s.width() / 2),
48 p.y() - s.height()), 0); 49 p.y() - s.height()), 0);
49 50
50 if (opt == -1) 51 if (opt == -1)
51 return; 52 return;
52 lang = opt; 53 lang = opt;
53 } else { 54
54 lang = lang < sw_maps.count()-1 ? lang+1 : 0; 55 QCopEnvelope e("MultiKey/Keyboard", "setmultikey(QString)");
56 e << sw_maps[lang];
57 setText(labels[lang]);
55 } 58 }
59 QWidget::mousePressEvent(ev);
60}
56 61
62void Multikey::mouseReleaseEvent(QMouseEvent *ev)
63{
64 lang = lang < sw_maps.count()-1 ? lang+1 : 0;
57 QCopEnvelope e("MultiKey/Keyboard", "setmultikey(QString)"); 65 QCopEnvelope e("MultiKey/Keyboard", "setmultikey(QString)");
58 //qDebug("Lang=%d, count=%d, lab=%s", lang, sw_maps.count(), labels[lang].ascii()); 66 //qDebug("Lang=%d, count=%d, lab=%s", lang, sw_maps.count(), labels[lang].ascii());
59 e << sw_maps[lang]; 67 e << sw_maps[lang];
60 setText(labels[lang]); 68 setText(labels[lang]);
61} 69}
62 70
63void Multikey::message(const QCString &message, const QByteArray &data) 71void Multikey::message(const QCString &message, const QByteArray &data)
64{ 72{
65 if ( message == "setsw(QString,QString)" ) { 73 if ( message == "setsw(QString,QString)" ) {
66 74
67 QDataStream stream(data, IO_ReadOnly); 75 QDataStream stream(data, IO_ReadOnly);
68 QString maps, current_map; 76 QString maps, current_map;
69 stream >> maps >> current_map; 77 stream >> maps >> current_map;
70 QStringList sw = QStringList::split(QChar('|'), maps); 78 QStringList sw = QStringList::split(QChar('|'), maps);
71 sw.append(current_map); 79 sw.append(current_map);
72 80
73 QDir map_dir(QPEApplication::qpeDir() + "/share/multikey/", "*.keymap"); 81 QDir map_dir(QPEApplication::qpeDir() + "/share/multikey/", "*.keymap");
74 lang = 0; 82 lang = 0;
75 labels.clear(); 83 labels.clear();
76 sw_maps.clear(); 84 sw_maps.clear();
77 popupMenu.clear(); 85 popupMenu.clear();
78 86
79 for (uint i = 0; i < sw.count(); ++i) { 87 for (uint i = 0; i < sw.count(); ++i) {
80 QString keymap_map; 88 QString keymap_map;
81 if (sw[i][0] != '/') { 89 if (sw[i][0] != '/') {
82 90
83 keymap_map = map_dir.absPath() + "/" + sw[i]; 91 keymap_map = map_dir.absPath() + "/" + sw[i];
84 } else { 92 } else {
85 93
86 if ((map_dir.exists(QFileInfo(sw[i]).fileName(), false) 94 if ((map_dir.exists(QFileInfo(sw[i]).fileName(), false)
87 && i != sw.count()-1) || !QFile::exists(sw[i])) { 95 && i != sw.count()-1) || !QFile::exists(sw[i])) {
88 continue; 96 continue;
89 } 97 }
90 keymap_map = sw[i]; 98 keymap_map = sw[i];
91 } 99 }
92 100
93 QFile map(keymap_map); 101 QFile map(keymap_map);
94 if (map.open(IO_ReadOnly)) { 102 if (map.open(IO_ReadOnly)) {
95 QString line; 103 QString line;
96 104
97 map.readLine(line, 1024); 105 map.readLine(line, 1024);
98 while (!map.atEnd()) { 106 while (!map.atEnd()) {
99 107
100 if (line.find(QRegExp("^sw\\s*=\\s*")) != -1) { 108 if (line.find(QRegExp("^sw\\s*=\\s*")) != -1) {
101 109
102 if (i != sw.count()-1) { 110 if (i != sw.count()-1) {
103 if (keymap_map == current_map) { 111 if (keymap_map == current_map) {
104 lang = i; 112 lang = i;
105 } 113 }
106 sw_maps.append(keymap_map); 114 sw_maps.append(keymap_map);
107 labels.append(line.right(line.length() - line.find(QChar('=')) - 1).stripWhiteSpace()); 115 labels.append(line.right(line.length() - line.find(QChar('=')) - 1).stripWhiteSpace());
108 popupMenu.insertItem(labels[labels.count()-1], labels.count()-1); 116 popupMenu.insertItem(labels[labels.count()-1], labels.count()-1);
109 } else { 117 } else {
110 current = line.right(line.length() - line.find(QChar('=')) - 1).stripWhiteSpace(); 118 current = line.right(line.length() - line.find(QChar('=')) - 1).stripWhiteSpace();
111 } 119 }
112 break; 120 break;
113 } 121 }
114 map.readLine(line, 1024); 122 map.readLine(line, 1024);
115 } 123 }
116 map.close(); 124 map.close();
117 } 125 }
118 } 126 }
119 127
120 setText(current); 128 setText(current);
121 } 129 }
122} 130}
diff --git a/core/applets/multikeyapplet/multikey.h b/core/applets/multikeyapplet/multikey.h
index b525074..1c5aa0c 100644
--- a/core/applets/multikeyapplet/multikey.h
+++ b/core/applets/multikeyapplet/multikey.h
@@ -1,40 +1,43 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2004 Anton Kachalov mouse@altlinux.ru 2** Copyright (C) 2004 Anton Kachalov mouse@altlinux.ru
3** All rights reserved. 3** All rights reserved.
4** 4**
5** This file may be distributed and/or modified under the terms of the 5** This file may be distributed and/or modified under the terms of the
6** GNU General Public License version 2 as published by the Free Software 6** GNU General Public License version 2 as published by the Free Software
7** Foundation and appearing in the file LICENSE.GPL included in the 7** Foundation and appearing in the file LICENSE.GPL included in the
8** packaging of this file. 8** packaging of this file.
9** 9**
10** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 10** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
11** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 11** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
12** 12**
13**********************************************************************/ 13**********************************************************************/
14#ifndef __MULTIKEY_H__ 14#ifndef __MULTIKEY_H__
15#define __MULTIKEY_H__ 15#define __MULTIKEY_H__
16 16
17#include <qlabel.h> 17#include <qlabel.h>
18#include <qstringlist.h> 18#include <qstringlist.h>
19#include <qpopupmenu.h> 19#include <qpopupmenu.h>
20#include <qcopchannel_qws.h> 20#include <qcopchannel_qws.h>
21 21
22class Multikey : public QLabel 22class Multikey: public QLabel
23{ 23{
24 Q_OBJECT 24 Q_OBJECT
25public: 25public:
26 Multikey( QWidget *parent ); 26 Multikey(QWidget *parent);
27
28protected:
29 void mousePressEvent(QMouseEvent *ev);
30 void mouseReleaseEvent(QMouseEvent *ev);
27 31
28public slots: 32public slots:
29 void message(const QCString &message, const QByteArray &data); 33 void message(const QCString &message, const QByteArray &data);
30 34
31protected: 35protected:
32 void mousePressEvent( QMouseEvent * );
33 QStringList sw_maps; 36 QStringList sw_maps;
34 QStringList labels; 37 QStringList labels;
35 QPopupMenu popupMenu; 38 QPopupMenu popupMenu;
36 QString current; 39 QString current;
37 uint lang; 40 uint lang;
38}; 41};
39 42
40#endif /* __MULTIKEY_H__ */ 43#endif /* __MULTIKEY_H__ */