author | mickeyl <mickeyl> | 2004-01-03 16:56:29 (UTC) |
---|---|---|
committer | mickeyl <mickeyl> | 2004-01-03 16:56:29 (UTC) |
commit | 4f7bf49ba4c0466aa9cea618c9317ac965a1118f (patch) (unidiff) | |
tree | 79569e70472ef1217bb692866ed33e04a3a097f7 /core/applets/multikeyapplet/multikey.cpp | |
parent | 6f36ed1520e6d87ee1dfb5e19fba684ce58609c2 (diff) | |
download | opie-4f7bf49ba4c0466aa9cea618c9317ac965a1118f.zip opie-4f7bf49ba4c0466aa9cea618c9317ac965a1118f.tar.gz opie-4f7bf49ba4c0466aa9cea618c9317ac965a1118f.tar.bz2 |
add multikeyapplet (+distribution files) by Anton Kachalov <mouse@altlinux.ru>
Diffstat (limited to 'core/applets/multikeyapplet/multikey.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | core/applets/multikeyapplet/multikey.cpp | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/core/applets/multikeyapplet/multikey.cpp b/core/applets/multikeyapplet/multikey.cpp new file mode 100644 index 0000000..0a056b0 --- a/dev/null +++ b/core/applets/multikeyapplet/multikey.cpp | |||
@@ -0,0 +1,106 @@ | |||
1 | /********************************************************************** | ||
2 | ** Copyright (C) 2004 Anton Kachalov mouse@altlinux.ru | ||
3 | ** All rights reserved. | ||
4 | ** | ||
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 | ||
7 | ** Foundation and appearing in the file LICENSE.GPL included in the | ||
8 | ** packaging of this file. | ||
9 | ** | ||
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. | ||
12 | ** | ||
13 | **********************************************************************/ | ||
14 | |||
15 | #include "multikey.h" | ||
16 | |||
17 | #include <qpe/global.h> | ||
18 | #include <qpe/config.h> | ||
19 | #include <qpe/qcopenvelope_qws.h> | ||
20 | #include <qpe/qpeapplication.h> | ||
21 | |||
22 | #include <qlabel.h> | ||
23 | #include <qdir.h> | ||
24 | #include <qfileinfo.h> | ||
25 | #include <qcopchannel_qws.h> | ||
26 | |||
27 | Multikey::Multikey( QWidget *parent ) : QLabel( parent ), current("EN") | ||
28 | { | ||
29 | QCopChannel* swChannel = new QCopChannel("MultiKey/Switcher", this); | ||
30 | connect( swChannel, SIGNAL(received(const QCString &, const QByteArray &)), | ||
31 | this, SLOT(message(const QCString &, const QByteArray &))); | ||
32 | |||
33 | setFont( QFont( "Helvetica", 10, QFont::Normal ) ); | ||
34 | lang = 0; | ||
35 | QCopEnvelope e("MultiKey/Keyboard", "getmultikey()"); | ||
36 | setText("EN"); | ||
37 | show(); | ||
38 | } | ||
39 | |||
40 | void Multikey::mousePressEvent( QMouseEvent * ) | ||
41 | { | ||
42 | QCopEnvelope e("MultiKey/Keyboard", "setmultikey(QString)"); | ||
43 | lang = lang < sw_maps.count()-1 ? lang+1 : 0; | ||
44 | //qDebug("Lang=%d, count=%d, lab=%s", lang, sw_maps.count(), labels[lang].ascii()); | ||
45 | e << sw_maps[lang]; | ||
46 | setText(labels[lang]); | ||
47 | } | ||
48 | |||
49 | void Multikey::message(const QCString &message, const QByteArray &data) | ||
50 | { | ||
51 | if ( message == "setsw(QString,QString)" ) { | ||
52 | |||
53 | QDataStream stream(data, IO_ReadOnly); | ||
54 | QString maps, current_map; | ||
55 | stream >> maps >> current_map; | ||
56 | QStringList sw = QStringList::split(QChar('|'), maps); | ||
57 | sw.append(current_map); | ||
58 | |||
59 | QDir map_dir(QPEApplication::qpeDir() + "/share/multikey/", "*.keymap"); | ||
60 | lang = 0; | ||
61 | labels.clear(); | ||
62 | sw_maps.clear(); | ||
63 | |||
64 | for (uint i = 0; i < sw.count(); ++i) { | ||
65 | QString keymap_map; | ||
66 | if (sw[i][0] != '/') { | ||
67 | |||
68 | keymap_map = map_dir.absPath() + "/" + sw[i]; | ||
69 | } else { | ||
70 | |||
71 | if ((map_dir.exists(QFileInfo(sw[i]).fileName(), false) | ||
72 | && i != sw.count()-1) || !QFile::exists(sw[i])) { | ||
73 | continue; | ||
74 | } | ||
75 | keymap_map = sw[i]; | ||
76 | } | ||
77 | |||
78 | QFile map(keymap_map); | ||
79 | if (map.open(IO_ReadOnly)) { | ||
80 | QString line; | ||
81 | |||
82 | map.readLine(line, 1024); | ||
83 | while (!map.atEnd()) { | ||
84 | |||
85 | if (line.find(QRegExp("^sw\\s*=\\s*")) != -1) { | ||
86 | |||
87 | if (i != sw.count()-1) { | ||
88 | if (keymap_map == current_map) { | ||
89 | lang = i; | ||
90 | } | ||
91 | sw_maps.append(keymap_map); | ||
92 | labels.append(line.right(line.length() - line.find(QChar('=')) - 1).stripWhiteSpace()); | ||
93 | } else { | ||
94 | current = line.right(line.length() - line.find(QChar('=')) - 1).stripWhiteSpace(); | ||
95 | } | ||
96 | break; | ||
97 | } | ||
98 | map.readLine(line, 1024); | ||
99 | } | ||
100 | map.close(); | ||
101 | } | ||
102 | } | ||
103 | |||
104 | setText(current); | ||
105 | } | ||
106 | } | ||