-rw-r--r-- | core/applets/multikeyapplet/.cvsignore | 3 | ||||
-rw-r--r-- | core/applets/multikeyapplet/config.in | 4 | ||||
-rw-r--r-- | core/applets/multikeyapplet/multikey.cpp | 106 | ||||
-rw-r--r-- | core/applets/multikeyapplet/multikey.h | 38 | ||||
-rw-r--r-- | core/applets/multikeyapplet/multikeyapplet.pro | 13 | ||||
-rw-r--r-- | core/applets/multikeyapplet/multikeyappletimpl.cpp | 57 | ||||
-rw-r--r-- | core/applets/multikeyapplet/multikeyappletimpl.h | 40 | ||||
-rw-r--r-- | core/applets/multikeyapplet/opie-multikeyapplet.control | 9 | ||||
-rwxr-xr-x | core/applets/multikeyapplet/opie-multikeyapplet.postinst | 6 | ||||
-rwxr-xr-x | core/applets/multikeyapplet/opie-multikeyapplet.postrm | 2 |
10 files changed, 278 insertions, 0 deletions
diff --git a/core/applets/multikeyapplet/.cvsignore b/core/applets/multikeyapplet/.cvsignore new file mode 100644 index 0000000..1ee9a27 --- a/dev/null +++ b/core/applets/multikeyapplet/.cvsignore | |||
@@ -0,0 +1,3 @@ | |||
1 | *.moc | ||
2 | Makefile* | ||
3 | moc_* | ||
diff --git a/core/applets/multikeyapplet/config.in b/core/applets/multikeyapplet/config.in new file mode 100644 index 0000000..f74161e --- a/dev/null +++ b/core/applets/multikeyapplet/config.in | |||
@@ -0,0 +1,4 @@ | |||
1 | config MULTIKEYAPPLET | ||
2 | boolean "opie-multikeyapplet (Applet to switch keyboard layout)" | ||
3 | default "y" | ||
4 | depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE && MULTIKEY | ||
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 | } | ||
diff --git a/core/applets/multikeyapplet/multikey.h b/core/applets/multikeyapplet/multikey.h new file mode 100644 index 0000000..2cb7b29 --- a/dev/null +++ b/core/applets/multikeyapplet/multikey.h | |||
@@ -0,0 +1,38 @@ | |||
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 | #ifndef __MULTIKEY_H__ | ||
15 | #define __MULTIKEY_H__ | ||
16 | |||
17 | #include <qlabel.h> | ||
18 | #include <qstringlist.h> | ||
19 | #include <qcopchannel_qws.h> | ||
20 | |||
21 | class Multikey : public QLabel | ||
22 | { | ||
23 | Q_OBJECT | ||
24 | public: | ||
25 | Multikey( QWidget *parent ); | ||
26 | |||
27 | public slots: | ||
28 | void message(const QCString &message, const QByteArray &data); | ||
29 | |||
30 | protected: | ||
31 | void mousePressEvent( QMouseEvent * ); | ||
32 | QStringList sw_maps; | ||
33 | QStringList labels; | ||
34 | QString current; | ||
35 | uint lang; | ||
36 | }; | ||
37 | |||
38 | #endif /* __MULTIKEY_H__ */ | ||
diff --git a/core/applets/multikeyapplet/multikeyapplet.pro b/core/applets/multikeyapplet/multikeyapplet.pro new file mode 100644 index 0000000..4be1f74 --- a/dev/null +++ b/core/applets/multikeyapplet/multikeyapplet.pro | |||
@@ -0,0 +1,13 @@ | |||
1 | TEMPLATE= lib | ||
2 | CONFIG += qt plugin warn_on release | ||
3 | HEADERS= multikey.h multikeyappletimpl.h | ||
4 | SOURCES= multikey.cpp multikeyappletimpl.cpp | ||
5 | TARGET = multikeyapplet | ||
6 | DESTDIR = $(OPIEDIR)/plugins/applets | ||
7 | INCLUDEPATH += $(OPIEDIR)/include | ||
8 | DEPENDPATH += ../$(OPIEDIR)/include .. | ||
9 | LIBS += -lqpe -lopie | ||
10 | VERSION = 1.0.0 | ||
11 | |||
12 | include ( $(OPIEDIR)/include.pro ) | ||
13 | target.path = $$prefix/plugins/applets | ||
diff --git a/core/applets/multikeyapplet/multikeyappletimpl.cpp b/core/applets/multikeyapplet/multikeyappletimpl.cpp new file mode 100644 index 0000000..4644556 --- a/dev/null +++ b/core/applets/multikeyapplet/multikeyappletimpl.cpp | |||
@@ -0,0 +1,57 @@ | |||
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 | #include "multikey.h" | ||
15 | #include "multikeyappletimpl.h" | ||
16 | |||
17 | MultikeyAppletImpl::MultikeyAppletImpl() | ||
18 | : kbd(0), ref(0) | ||
19 | { | ||
20 | } | ||
21 | |||
22 | MultikeyAppletImpl::~MultikeyAppletImpl() | ||
23 | { | ||
24 | delete kbd; | ||
25 | } | ||
26 | |||
27 | QWidget *MultikeyAppletImpl::applet( QWidget *parent ) | ||
28 | { | ||
29 | if ( !kbd ) | ||
30 | kbd = new Multikey(parent); | ||
31 | return kbd; | ||
32 | } | ||
33 | |||
34 | int MultikeyAppletImpl::position() const | ||
35 | { | ||
36 | return 10; | ||
37 | } | ||
38 | |||
39 | #ifndef QT_NO_COMPONENT | ||
40 | QRESULT MultikeyAppletImpl::queryInterface( const QUuid &uuid, QUnknownInterface **iface ) | ||
41 | { | ||
42 | *iface = 0; | ||
43 | if ( uuid == IID_QUnknown ) | ||
44 | *iface = this; | ||
45 | else if ( uuid == IID_TaskbarApplet ) | ||
46 | *iface = this; | ||
47 | |||
48 | if ( *iface ) | ||
49 | (*iface)->addRef(); | ||
50 | return QS_OK; | ||
51 | } | ||
52 | |||
53 | Q_EXPORT_INTERFACE() | ||
54 | { | ||
55 | Q_CREATE_INSTANCE( MultikeyAppletImpl ) | ||
56 | } | ||
57 | #endif | ||
diff --git a/core/applets/multikeyapplet/multikeyappletimpl.h b/core/applets/multikeyapplet/multikeyappletimpl.h new file mode 100644 index 0000000..c77e347 --- a/dev/null +++ b/core/applets/multikeyapplet/multikeyappletimpl.h | |||
@@ -0,0 +1,40 @@ | |||
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 | #ifndef __MULTIKEYAPPLETIMPL_H__ | ||
15 | #define __MULTIKEYAPPLETIMPL_H__ | ||
16 | |||
17 | #include <qpe/taskbarappletinterface.h> | ||
18 | |||
19 | class Multikey; | ||
20 | |||
21 | class MultikeyAppletImpl : public TaskbarAppletInterface | ||
22 | { | ||
23 | public: | ||
24 | MultikeyAppletImpl(); | ||
25 | virtual ~MultikeyAppletImpl(); | ||
26 | |||
27 | #ifndef QT_NO_COMPONENT | ||
28 | QRESULT queryInterface( const QUuid&, QUnknownInterface** ); | ||
29 | Q_REFCOUNT | ||
30 | #endif | ||
31 | |||
32 | virtual QWidget *applet( QWidget *parent ); | ||
33 | virtual int position() const; | ||
34 | |||
35 | private: | ||
36 | Multikey *kbd; | ||
37 | ulong ref; | ||
38 | }; | ||
39 | |||
40 | #endif /* __MULTIKEYAPPLETIMPL_H__ */ | ||
diff --git a/core/applets/multikeyapplet/opie-multikeyapplet.control b/core/applets/multikeyapplet/opie-multikeyapplet.control new file mode 100644 index 0000000..2c27cc7 --- a/dev/null +++ b/core/applets/multikeyapplet/opie-multikeyapplet.control | |||
@@ -0,0 +1,9 @@ | |||
1 | Package: opie-multikeyapplet | ||
2 | Files: plugins/applets/libmultikeyapplet.so* | ||
3 | Priority: optional | ||
4 | Section: opie/taskbar | ||
5 | Maintainer: Anton Kachalov <mouse@altlinux.ru> | ||
6 | Architecture: arm | ||
7 | Depends: task-opie-minimal | ||
8 | Description: Multikey Keyboard Layout Switcher Applet | ||
9 | Version: $QPE_VERSION$EXTRAVERSION | ||
diff --git a/core/applets/multikeyapplet/opie-multikeyapplet.postinst b/core/applets/multikeyapplet/opie-multikeyapplet.postinst new file mode 100755 index 0000000..a549c30 --- a/dev/null +++ b/core/applets/multikeyapplet/opie-multikeyapplet.postinst | |||
@@ -0,0 +1,6 @@ | |||
1 | #!/bin/sh | ||
2 | if pidof -s qpe >/dev/null; then | ||
3 | /opt/QtPalmtop/bin/qcop QPE/TaskBar "reloadApplets()" | ||
4 | else | ||
5 | exit 0 | ||
6 | fi | ||
diff --git a/core/applets/multikeyapplet/opie-multikeyapplet.postrm b/core/applets/multikeyapplet/opie-multikeyapplet.postrm new file mode 100755 index 0000000..ba76ffa --- a/dev/null +++ b/core/applets/multikeyapplet/opie-multikeyapplet.postrm | |||
@@ -0,0 +1,2 @@ | |||
1 | #!/bin/sh | ||
2 | /opt/QtPalmtop/bin/qcop QPE/TaskBar "reloadApplets()" | ||