summaryrefslogtreecommitdiff
path: root/noncore/applets/keyhelper/keyhelperapplet/applet
Unidiff
Diffstat (limited to 'noncore/applets/keyhelper/keyhelperapplet/applet') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/applets/keyhelper/keyhelperapplet/applet/KeyHelper.cpp112
-rw-r--r--noncore/applets/keyhelper/keyhelperapplet/applet/KeyHelper.h42
-rw-r--r--noncore/applets/keyhelper/keyhelperapplet/applet/KeyHelperApplet.cpp65
-rw-r--r--noncore/applets/keyhelper/keyhelperapplet/applet/KeyHelperApplet.h26
-rw-r--r--noncore/applets/keyhelper/keyhelperapplet/applet/KeyHelperWidget.cpp490
-rw-r--r--noncore/applets/keyhelper/keyhelperapplet/applet/KeyHelperWidget.h75
-rw-r--r--noncore/applets/keyhelper/keyhelperapplet/applet/QSafeDataStream.cpp203
-rw-r--r--noncore/applets/keyhelper/keyhelperapplet/applet/QSafeDataStream.h51
8 files changed, 1064 insertions, 0 deletions
diff --git a/noncore/applets/keyhelper/keyhelperapplet/applet/KeyHelper.cpp b/noncore/applets/keyhelper/keyhelperapplet/applet/KeyHelper.cpp
new file mode 100644
index 0000000..4afdc1f
--- a/dev/null
+++ b/noncore/applets/keyhelper/keyhelperapplet/applet/KeyHelper.cpp
@@ -0,0 +1,112 @@
1#include "KeyHelper.h"
2#include <opie2/okeyfilter.h>
3
4KeyHelper::KeyHelper()
5{
6 qDebug("KeyHelper::KeyHelper()");
7 load();
8
9 m_oAction.setKeyModifiers(&m_oModifiers);
10 m_oAction.setKeyMappings(&m_oMappings);
11 m_oAction.setKeyExtensions(&m_oExtensions);
12 m_oAction.setKeyRepeater(&m_oRepeater);
13 m_oExtensions.setKeyModifiers(&m_oModifiers);
14}
15
16KeyHelper::~KeyHelper()
17{
18 unset();
19 qDebug("KeyHelper::~KeyHelper()");
20}
21
22bool KeyHelper::filter(int unicode, int keycode, int modifiers,
23 bool isPress, bool autoRepeat)
24{
25 m_oAction.setAction(unicode, keycode, modifiers,
26 isPress, autoRepeat);
27 return(m_oAction.doAction());
28}
29
30void KeyHelper::unset()
31{
32 Opie::Core::OKeyFilter::inst()->remHandler(this);;
33}
34
35void KeyHelper::set()
36{
37 Opie::Core::OKeyFilter::inst()->addHandler(this);
38 m_oModifiers.resetStates();
39}
40
41void KeyHelper::enable()
42{
43 m_oAction.enable();
44}
45
46void KeyHelper::disable()
47{
48 m_oAction.disable();
49 m_oRepeater.stop();
50}
51
52bool KeyHelper::load(const QString& file)
53{
54 KeycfgReader oReader;
55 oReader.setKeyModifiers(&m_oModifiers);
56 oReader.setKeyMappings(&m_oMappings);
57 oReader.setKeyExtensions(&m_oExtensions);
58 oReader.setKeyRepeater(&m_oRepeater);
59
60 bool success;
61 if(file.length() == 0){
62 success = oReader.load();
63 } else if(file[0] == '/'){
64 success = oReader.load(file);
65 } else {
66 //QString filepath = QString(::getenv("HOME")) + "/Settings/" + file;
67 QString filepath = QDir::homeDirPath() + "/Settings/" + file;
68 success = oReader.load(filepath);
69 }
70 if(success == false){
71 qDebug("config xml load error");
72 setDefault();
73 }
74 return(success);
75}
76
77bool KeyHelper::reload(const QString& file)
78{
79 m_oModifiers.reset();
80 m_oMappings.reset();
81 m_oExtensions.reset();
82 m_oRepeater.reset();
83
84 return(load(file));
85}
86
87void KeyHelper::setDefault()
88{
89 /* default settings */
90 m_oExtensions.assign("switch", Qt::Key_F12,
91 m_oModifiers.getMask("Shift"), KeyNames::getCode("Shift"));
92 m_oExtensions.assign("select", Qt::Key_F11,
93 m_oModifiers.getMask("Shift"), KeyNames::getCode("Shift"));
94}
95
96void KeyHelper::statistics()
97{
98 m_oModifiers.statistics();
99 m_oMappings.statistics();
100 m_oExtensions.statistics();
101 m_oRepeater.statistics();
102}
103
104void KeyHelper::dumpkeymap()
105{
106 const QWSServer::KeyMap* m = QWSServer::keyMap();
107 qWarning("KeyHelper::dumpkeymap()");
108 while(m->key_code != 0){
109 qWarning(" [%04x][%04x][%04x][%04x]", m->key_code, m->unicode, m->shift_unicode, m->ctrl_unicode);
110 m++;
111 }
112}
diff --git a/noncore/applets/keyhelper/keyhelperapplet/applet/KeyHelper.h b/noncore/applets/keyhelper/keyhelperapplet/applet/KeyHelper.h
new file mode 100644
index 0000000..aabb6eb
--- a/dev/null
+++ b/noncore/applets/keyhelper/keyhelperapplet/applet/KeyHelper.h
@@ -0,0 +1,42 @@
1#ifndef _KEY_HELPER_H_
2#define _KEY_HELPER_H_
3
4#include <qdir.h>
5#include <qwindowsystem_qws.h>
6#include "KeyNames.h"
7#include "KeyMappings.h"
8#include "KeyModifiers.h"
9#include "KeyExtensions.h"
10#include "KeyRepeater.h"
11#include "KeyAction.h"
12#include "KeycfgReader.h"
13
14class KeyHelper : public QWSServer::KeyboardFilter
15{
16public:
17 KeyHelper();
18 virtual ~KeyHelper();
19 bool filter(int unicode, int keycode, int modifiers,
20 bool isPress, bool autoRepeat);
21
22 void enable();
23 void disable();
24 void set();
25 void unset();
26 void statistics();
27 void dumpkeymap();
28 bool reload(const QString& file=QString::null);
29private:
30 friend class KeyHelperWidget;
31
32 bool load(const QString& file=QString::null);
33 void setDefault();
34
35 KeyAction m_oAction;
36 KeyMappings m_oMappings;
37 KeyModifiers m_oModifiers;
38 KeyExtensions m_oExtensions;
39 KeyRepeater m_oRepeater;
40};
41
42#endif /* _KEY_HELPER_H_ */
diff --git a/noncore/applets/keyhelper/keyhelperapplet/applet/KeyHelperApplet.cpp b/noncore/applets/keyhelper/keyhelperapplet/applet/KeyHelperApplet.cpp
new file mode 100644
index 0000000..28304d7
--- a/dev/null
+++ b/noncore/applets/keyhelper/keyhelperapplet/applet/KeyHelperApplet.cpp
@@ -0,0 +1,65 @@
1#include "KeyHelperApplet.h"
2#include "KeyHelperWidget.h"
3
4#if 0
5KeyHelperApplet::KeyHelperApplet()
6 : widget(0), ref(0)
7{
8 qDebug("KeyHelperApplet::KeyHelperApplet()");
9}
10
11KeyHelperApplet::~KeyHelperApplet()
12{
13 qDebug("KeyHelperApplet::~KeyHelperApplet()");
14 delete widget;
15}
16
17QWidget* KeyHelperApplet::applet(QWidget* parent)
18{
19 if(!widget){
20 widget = new KeyHelperWidget(parent);
21 }
22 return(widget);
23}
24
25int KeyHelperApplet::position() const
26{
27 return(6);
28}
29
30QRESULT KeyHelperApplet::queryInterface(const QUuid& uuid,
31 QUnknownInterface** iface)
32{
33 *iface = 0;
34
35 if(QFile::exists("/tmp/disable-keyhelper")
36 || QFile::exists("/mnt/card/disable-keyhelper")
37 || QFile::exists("/mnt/cf/disable-keyhelper")){
38 return QS_FALSE;
39 }
40
41 if(uuid == IID_QUnknown){
42 *iface = this;
43 } else if(uuid == IID_TaskbarApplet){
44 *iface = this;
45 }
46
47 if(*iface){
48 (*iface)->addRef();
49 }
50 return QS_OK;
51}
52
53Q_EXPORT_INTERFACE()
54{
55 Q_CREATE_INSTANCE(KeyHelperApplet)
56}
57
58#else
59#include <opie2/otaskbarapplet.h>
60
61using namespace Opie::Ui;
62
63EXPORT_OPIE_APPLET_v1( KeyHelperWidget )
64
65#endif
diff --git a/noncore/applets/keyhelper/keyhelperapplet/applet/KeyHelperApplet.h b/noncore/applets/keyhelper/keyhelperapplet/applet/KeyHelperApplet.h
new file mode 100644
index 0000000..ef164dc
--- a/dev/null
+++ b/noncore/applets/keyhelper/keyhelperapplet/applet/KeyHelperApplet.h
@@ -0,0 +1,26 @@
1#ifndef _KEY_HELPER_APPLET_H_
2#define _KEY_HELPER_APPLET_H_
3
4#if 0
5#include <qpe/taskbarappletinterface.h>
6#include "KeyHelperWidget.h"
7
8class KeyHelperApplet : public TaskbarAppletInterface
9{
10public:
11 KeyHelperApplet();
12 virtual ~KeyHelperApplet();
13
14 QRESULT queryInterface(const QUuid&, QUnknownInterface**);
15 Q_REFCOUNT
16
17 virtual QWidget* applet(QWidget* parent);
18 virtual int position() const;
19private:
20 KeyHelperWidget* widget;
21 ulong ref;
22};
23
24#endif
25
26#endif /* _KEY_HELPER_APPLET_H_ */
diff --git a/noncore/applets/keyhelper/keyhelperapplet/applet/KeyHelperWidget.cpp b/noncore/applets/keyhelper/keyhelperapplet/applet/KeyHelperWidget.cpp
new file mode 100644
index 0000000..7beb511
--- a/dev/null
+++ b/noncore/applets/keyhelper/keyhelperapplet/applet/KeyHelperWidget.cpp
@@ -0,0 +1,490 @@
1#include "KeyHelperWidget.h"
2#include "QSafeDataStream.h"
3#include "KHUtil.h"
4
5QWidget* g_Widget = NULL;
6int g_level = 0;
7
8static const char* _version_ = "1.2.2";
9
10KeyHelperWidget::KeyHelperWidget(QWidget* parent, const char* name)
11 : QLabel(parent, name),disabled(Resource::loadPixmap("zkb-disabled"))
12{
13 qDebug("KeyHelperWidget::KeyHelperWidget()");
14 g_Widget = this;
15 m_defHandler = NULL;
16 //m_reset = false;
17 m_reset = true;
18 m_useFilter = false;
19 m_pHelper = NULL;
20 m_status = false;
21
22 //unset();
23 initDebugLevel();
24
25 m_pHelper = new KeyHelper();
26
27 //qApp->installEventFilter(this);
28
29 connect(qwsServer,
30 SIGNAL(windowEvent(QWSWindow*, QWSServer::WindowEvent)),
31 this,
32 SLOT(windowEvent(QWSWindow*, QWSServer::WindowEvent)));
33
34 m_pChannel = new QCopChannel("QPE/KeyHelper", this);
35 connect(m_pChannel, SIGNAL(received(const QCString&, const QByteArray&)),
36 this, SLOT(receiveMessage(const QCString&, const QByteArray&)));
37 m_pSysChannel = new QCopChannel("QPE/System", this);
38 connect(m_pSysChannel, SIGNAL(received(const QCString&, const QByteArray&)),
39 this, SLOT(sysMessage(const QCString&, const QByteArray&)));
40
41 //AppLnkManager::init();
42 setFixedWidth ( AppLnk::smallIconSize() );
43 setFixedHeight ( AppLnk::smallIconSize() );
44 setPixmap(disabled);
45 init();
46}
47
48KeyHelperWidget::~KeyHelperWidget()
49{
50 qDebug("KeyHelperWidget::~KeyHelperWidget()");
51 disconnect(qwsServer,
52 SIGNAL(windowEvent(QWSWindow*, QWSServer::WindowEvent)),
53 this,
54 SLOT(windowEvent(QWSWindow*, QWSServer::WindowEvent)));
55 disconnect(m_pChannel, SIGNAL(received(const QCString&, const QByteArray&)),
56 this, SLOT(receiveMessage(const QCString&, const QByteArray&)));
57 unset();
58 if (m_pHelper) delete m_pHelper;
59 if (m_pChannel) delete m_pChannel;
60 if (m_pSysChannel) delete m_pSysChannel;
61 m_pHelper = NULL;
62 setDebugLevel(0);
63}
64
65void KeyHelperWidget::mouseReleaseEvent(QMouseEvent*)
66{
67 ConfigEx::getInstance("keyhelper").setConfig("keyhelper");
68}
69
70void KeyHelperWidget::receiveMessage(
71 const QCString& msg, const QByteArray& data)
72{
73 if(m_pHelper == NULL){
74 return;
75 }
76 QSafeDataStream stream(data, IO_ReadOnly);
77 if(msg == "event(int,int,int,int,int)"){
78 int unicode;
79 int keycode;
80 int modifiers;
81 int isPress;
82 int autoRepeat;
83 stream >> unicode >> keycode >> modifiers >> isPress >> autoRepeat;
84 doEvent(unicode, keycode, modifiers, isPress, autoRepeat);
85 } else if(msg == "event(QString,int)"){
86 QString key;
87 int isPress;
88 stream >> key >> isPress;
89 doEvent(key, isPress);
90 } else if(msg == "enable()"){
91 enable();
92 } else if(msg == "disable()"){
93 disable();
94 } else if(msg == "pause()"){
95 pause();
96 } else if(msg == "restart()"){
97 restart();
98 } else if(msg == "reload()"){
99 m_xmlfile = QString::null;
100 doReload();
101 } else if(msg == "reload(QString)"){
102 stream >> m_xmlfile;
103 doReload(false);
104 } else if(msg == "version()"){
105 version();
106 } else if(msg == "repeater(int)"){
107 int mode;
108 stream >> mode;
109 m_pHelper->m_oRepeater.setMode(mode);
110 } else if(msg == "hook(QString)"){
111 QString s;
112 stream >> s;
113 m_pHelper->m_oAction.setHook(s.local8Bit());
114 } else if(msg == "unhook()"){
115 m_pHelper->m_oAction.setHook("");
116 } else if(msg == "config()"){
117 ConfigEx::getInstance("keyhelper").setConfig("keyhelper");
118 } else if(msg == "config(QString)"){
119 QString name;
120 stream >> name;
121 if(name == QString::null){
122 ConfigEx::getInstance("keyhelper").setConfig("keyhelper");
123 } else {
124 ConfigEx::getInstance("keyhelper").setConfig(name);
125 }
126 } else if(msg == "capture(int)"){
127 int enable;
128 stream >> enable;
129 m_pHelper->m_oAction.setCapture(enable);
130 } else if(msg == "statistics()"){
131 int level = g_level;
132 if(level == 0){
133 setDebugLevel(1);
134 }
135 m_pHelper->statistics();
136 if(level == 0){
137 setDebugLevel(0);
138 }
139 } else if(msg == "dumpkeymap()"){
140 int level = g_level;
141 if(level == 0){
142 setDebugLevel(1);
143 }
144 m_pHelper->dumpkeymap();
145 if(level == 0){
146 setDebugLevel(0);
147 }
148 } else if(msg == "debug(int)"){
149 int level;
150 stream >> level;
151 setDebugLevel(level);
152 }
153}
154
155void KeyHelperWidget::doReload(bool showstatus)
156{
157 ConfigEx& cfg = ConfigEx::getInstance("keyhelper");
158 QString oldgroup = cfg.getGroup();
159 cfg.setGroup("Global");
160 m_status = false;
161 if(showstatus && (cfg.readNumEntry("ShowStatusOnReload", 1) == 1)){
162 m_status = true;
163 version();
164 QCopEnvelope("QPE/System", "busy()");
165 }
166 cfg.setGroup(oldgroup);
167 QTimer::singleShot(0, this, SLOT(reload()));
168}
169
170void KeyHelperWidget::doEvent(int unicode, int keycode, int modifiers, int isPress, int autoRepeat)
171{
172 if(isPress == 0 || isPress == 1){
173 m_pHelper->m_oAction.setAction(unicode, keycode, modifiers, isPress, autoRepeat);
174 m_pHelper->m_oAction.doAction();
175 } else {
176 /* press & release */
177 m_pHelper->m_oAction.setAction(unicode, keycode, modifiers, 1, autoRepeat);
178 m_pHelper->m_oAction.doAction();
179 m_pHelper->m_oAction.setAction(unicode, keycode, modifiers, 0, autoRepeat);
180 m_pHelper->m_oAction.doAction();
181 }
182}
183
184void KeyHelperWidget::doEvent(const QString& key, int isPress)
185{
186 int unicode,keycode;
187 int modifiers = 0;
188 int pos;
189 QString keyname = key;
190 pos = keyname.find("+SHIFT", 0, FALSE);
191 if(pos > 0){
192 modifiers |= Qt::ShiftButton;
193 keyname.remove(pos, 6);
194 }
195 pos = keyname.find("+CTRL", 0, FALSE);
196 if(pos > 0){
197 modifiers |= Qt::ControlButton;
198 keyname.remove(pos, 5);
199 }
200 pos = keyname.find("+ALT", 0, FALSE);
201 if(pos > 0){
202 modifiers |= Qt::AltButton;
203 keyname.remove(pos, 4);
204 }
205 if(keyname.length() > 1){
206 unicode = 0xffff;
207 keycode = KeyNames::getCode(keyname);
208 /* get unicode */
209 const QWSServer::KeyMap* m;
210 for(m=QWSServer::keyMap(); m->key_code != 0; m++){
211 if(m->key_code == keycode){
212 if(modifiers & Qt::ControlButton){
213 unicode = m->ctrl_unicode;
214 } else if(modifiers & Qt::ShiftButton){
215 unicode = m->shift_unicode;
216 } else {
217 unicode = m->unicode;
218 }
219 break;
220 }
221 }
222 } else {
223 const QWSServer::KeyMap* m;
224 keycode = 0;
225 unicode = keyname[0].unicode();
226 /* check unicode */
227 for(m=QWSServer::keyMap(); keycode == 0 && m->key_code != 0; m++){
228 if(m->unicode == unicode){
229 keycode = m->key_code;
230 break;
231 }
232 }
233 /* check shift_unicode */
234 for(m=QWSServer::keyMap(); keycode == 0 && m->key_code != 0; m++){
235 if(m->shift_unicode == unicode){
236 keycode = m->key_code;
237 modifiers |= Qt::ShiftButton;
238 break;
239 }
240 }
241 /* check ctrl_unicode */
242 for(m=QWSServer::keyMap(); keycode == 0 && m->key_code != 0; m++){
243 if(m->ctrl_unicode == unicode){
244 keycode = m->key_code;
245 modifiers |= Qt::ControlButton;
246 break;
247 }
248 }
249 }
250 doEvent(unicode, keycode, modifiers, isPress, 0);
251}
252
253void KeyHelperWidget::sysMessage(
254 const QCString& msg, const QByteArray& data)
255{
256 QSafeDataStream stream(data, IO_ReadOnly);
257 if(msg == "linkChanged(QString)"){
258 ConfigEx& cfg = ConfigEx::getInstance("keyhelper");
259 QString oldgroup = cfg.getGroup();
260 if(cfg.readNumEntry("DetectLinkChange", 1) == 1){
261 AppLnkManager::init(true);
262 reload();
263 }
264 cfg.setGroup(oldgroup);
265 }
266}
267
268void MsgHandler(QtMsgType type, const char* msg)
269{
270 switch(type){
271 case QtDebugMsg:
272 if(g_level >= 2){
273 syslog(LOG_LOCAL5|LOG_DEBUG,
274 "<2>%s", msg);
275 }
276 break;
277 case QtWarningMsg:
278 if(g_level >= 1){
279 syslog(LOG_LOCAL5|LOG_DEBUG,
280 "<1>%s", msg);
281 }
282 break;
283 default:
284 break;
285 }
286}
287
288void KeyHelperWidget::initDebugLevel()
289{
290 ConfigEx& cfg = ConfigEx::getInstance("keyhelper");
291 cfg.setGroup("Global");
292
293 int level = cfg.readNumEntry("DebugLevel", 0);
294 setDebugLevel(level);
295}
296
297void KeyHelperWidget::setDebugLevel(int level)
298{
299#ifdef QT_QWS_EBX
300 static bool noDebug = true;
301 g_level = level;
302 if(g_level > 0){
303 if(noDebug){
304 m_defHandler = qInstallMsgHandler(MsgHandler);
305 noDebug = false;
306 }
307 } else {
308 qInstallMsgHandler(m_defHandler);
309 noDebug = true;
310 }
311#endif
312}
313
314void KeyHelperWidget::enable()
315{
316 m_enable = true;
317 m_pHelper->enable();
318 //set();
319 QTimer::singleShot(0, this, SLOT(set()));
320}
321
322void KeyHelperWidget::disable()
323{
324 m_enable = false;
325 m_pHelper->disable();
326 unset();
327}
328
329void KeyHelperWidget::pause()
330{
331 m_saved = m_enable;
332 disable();
333}
334
335void KeyHelperWidget::restart()
336{
337 if(m_saved){
338 enable();
339 }
340}
341
342void KeyHelperWidget::reload()
343{
344 disable();
345 ConfigEx& cfg = ConfigEx::getInstance("keyhelper");
346 cfg.reload();
347 if(m_pHelper->reload(m_xmlfile) == false){
348 if(m_status){
349 Global::statusMessage("KeyHelper: Load Error");
350 }
351 }
352 init();
353 if(m_status){
354 QCopEnvelope e("QPE/System", "notBusy(QString)");
355 const QString app = KHUtil::currentApp();
356 e << app;
357 m_status = false;
358 }
359}
360
361void KeyHelperWidget::version()
362{
363 QString ver = "KeyHelper ";
364 ver.append(_version_);
365 Global::statusMessage(ver);
366}
367
368void KeyHelperWidget::init()
369{
370 AppLnkManager::init();
371#if 0
372 if(m_pHelper == NULL){
373 m_pHelper = new KeyHelper();
374 }
375#endif
376 loadUseFilterApps();
377 enable();
378}
379
380void KeyHelperWidget::set()
381{
382 if(m_pHelper != NULL && m_enable == true && m_useFilter == false){
383 qWarning("KeyHelperWidget::set()");
384 m_pHelper->set();
385 }
386}
387
388void KeyHelperWidget::unset()
389{
390 m_pHelper->unset();
391}
392
393void KeyHelperWidget::loadUseFilterApps()
394{
395 ConfigEx& cfg = ConfigEx::getInstance("keyhelper");
396
397 cfg.setGroup("Global");
398 m_apps = cfg.readListEntry("UseFilterApps", ',');
399
400 if(m_apps.isEmpty()){
401 /* default */
402 m_apps.append("CRIM");
403 m_apps.append("Jpn50Pad");
404 m_apps.append("JpnKtnPad");
405 m_apps.append("JpnNumPad");
406 m_apps.append("JpnSymPad");
407 m_apps.append("Keyboard");
408 m_apps.append("IMWidget"); /* IMKit */
409 m_apps.append("POBox"); /* QPOBox */
410 }
411}
412
413#if 0
414void KeyHelperWidget::windowEvent(QWSWindow* w, QWSServer::WindowEvent e)
415{
416 if(m_apps.contains(w->name())){
417 switch(e){
418 case QWSServer::Hide:
419 case QWSServer::Destroy:
420 m_useFilter = false;
421 //m_reset = true;
422 QTimer::singleShot(0, this, SLOT(set()));
423 break;
424 case QWSServer::Create:
425 case QWSServer::Raise:
426 case QWSServer::Show:
427 m_useFilter = true;
428 //m_reset = false;
429 m_reset = true;
430 break;
431 default:
432 break;
433 }
434 } else if(w->client()->identity() != NULL && w->name() != NULL){
435 switch(e){
436#if 0
437 case QWSServer::Create:
438 case QWSServer::Hide:
439 if(m_useFilter == false && m_reset){
440 m_reset = false;
441 set();
442 //QTimer::singleShot(0, this, SLOT(set()));
443 }
444 break;
445#else
446 case QWSServer::Hide:
447 case QWSServer::Destroy:
448 //if(m_useFilter == false && m_reset){
449 if(m_reset){
450 m_reset = false;
451 set();
452 //QTimer::singleShot(0, this, SLOT(set()));
453 }
454 break;
455 case QWSServer::Create:
456 case QWSServer::Raise:
457 case QWSServer::Show:
458 m_reset = true;
459 break;
460#endif
461 default:
462#if 0
463 if(m_reset == true){
464 m_reset = false;
465 set();
466 }
467#endif
468 break;
469 }
470 }
471 if(w->name() != NULL){
472 qWarning("[%s][%s][%x][%s]",
473 w->name().latin1(),
474 w->caption().latin1(),
475 e,
476 w->client()->identity().latin1());
477 }
478}
479
480#endif
481
482bool KeyHelperWidget::eventFilter(QObject* o, QEvent* e)
483{
484 return QWidget::eventFilter(o, e);
485}
486
487int KeyHelperWidget::position()
488{
489 return 3;
490}
diff --git a/noncore/applets/keyhelper/keyhelperapplet/applet/KeyHelperWidget.h b/noncore/applets/keyhelper/keyhelperapplet/applet/KeyHelperWidget.h
new file mode 100644
index 0000000..4798c5c
--- a/dev/null
+++ b/noncore/applets/keyhelper/keyhelperapplet/applet/KeyHelperWidget.h
@@ -0,0 +1,75 @@
1#ifndef _KEY_HELPER_WIDGET_H_
2#define _KEY_HELPER_WIDGET_H_
3
4#include <qwidget.h>
5#include <qlabel.h>
6#include <qpixmap.h>
7#include <qtimer.h>
8#include <qaccel.h>
9#include <opie2/otaskbarapplet.h>
10#include <opie2/okeyfilter.h>
11
12#include <qpe/qcopenvelope_qws.h>
13#include <qpe/qpeapplication.h>
14#include <qpe/global.h>
15#include <qpe/resource.h>
16#include "KeyHelper.h"
17#include "AppLnkManager.h"
18#include "ConfigEx.h"
19
20#include <syslog.h>
21
22Q_EXPORT void MsgHandler(QtMsgType type, const char* msg);
23
24class KeyHelperWidget : public QLabel
25{
26 Q_OBJECT
27public:
28 KeyHelperWidget(QWidget* parent = 0, const char* name=0);
29 ~KeyHelperWidget();
30 static int position();
31
32 virtual bool eventFilter(QObject* o, QEvent* e);
33
34public slots:
35 //void windowEvent(QWSWindow* w, QWSServer::WindowEvent e);
36protected:
37 QCopChannel* m_pChannel;
38 QCopChannel* m_pSysChannel;
39 QPixmap disabled;
40
41protected slots:
42 void receiveMessage(const QCString& msg, const QByteArray& data);
43 void sysMessage(const QCString& msg, const QByteArray& data);
44 void reload();
45 void set();
46 void unset();
47 void init();
48 void mouseReleaseEvent(QMouseEvent*);
49
50private:
51 void loadUseFilterApps();
52 void enable();
53 void disable();
54 void pause();
55 void restart();
56 void version();
57 void setDebugLevel(int level);
58 void initDebugLevel();
59
60 bool m_reset;
61 bool m_useFilter;
62 bool m_status;
63 QString m_xmlfile;
64 msg_handler m_defHandler;
65 bool m_enable;
66 bool m_saved;
67 QStringList m_apps;
68 KeyHelper* m_pHelper;
69private slots:
70 void doReload(bool showstatus=true);
71 void doEvent(int,int,int,int,int);
72 void doEvent(const QString&, int);
73};
74
75#endif /* _KEY_HELPER_WIDGET_H_ */
diff --git a/noncore/applets/keyhelper/keyhelperapplet/applet/QSafeDataStream.cpp b/noncore/applets/keyhelper/keyhelperapplet/applet/QSafeDataStream.cpp
new file mode 100644
index 0000000..69ba562
--- a/dev/null
+++ b/noncore/applets/keyhelper/keyhelperapplet/applet/QSafeDataStream.cpp
@@ -0,0 +1,203 @@
1#include "QSafeDataStream.h"
2
3#include <qstring.h>
4#include <qstringlist.h>
5#include <qdatetime.h>
6
7QSafeDataStream &QSafeDataStream::operator>>( Q_INT8 &i )
8{
9 if(atEnd()){
10 i = 0;
11 return *this;
12 } else {
13 return (QSafeDataStream&)QDataStream::operator>>(i);
14 }
15}
16
17QSafeDataStream &QSafeDataStream::operator>>( Q_UINT8 &i )
18{
19 if(atEnd()){
20 i = 0;
21 return *this;
22 } else {
23 return (QSafeDataStream&)QDataStream::operator>>(i);
24 }
25}
26
27QSafeDataStream &QSafeDataStream::operator>>( Q_INT16 &i )
28{
29 if(atEnd()){
30 i = 0;
31 return *this;
32 } else {
33 return (QSafeDataStream&)QDataStream::operator>>(i);
34 }
35}
36
37QSafeDataStream &QSafeDataStream::operator>>( Q_UINT16 &i )
38{
39 if(atEnd()){
40 i = 0;
41 return *this;
42 } else {
43 return (QSafeDataStream&)QDataStream::operator>>(i);
44 }
45}
46
47QSafeDataStream &QSafeDataStream::operator>>( Q_INT32 &i )
48{
49 if(atEnd()){
50 i = 0;
51 return *this;
52 } else {
53 return (QSafeDataStream&)QDataStream::operator>>(i);
54 }
55}
56
57QSafeDataStream &QSafeDataStream::operator>>( Q_UINT32 &i )
58{
59 if(atEnd()){
60 i = 0;
61 return *this;
62 } else {
63 return (QSafeDataStream&)QDataStream::operator>>(i);
64 }
65}
66
67QSafeDataStream &QSafeDataStream::operator>>( Q_INT64 &i )
68{
69 if(atEnd()){
70 i = 0;
71 return *this;
72 } else {
73 return (QSafeDataStream&)QDataStream::operator>>(i);
74 }
75}
76
77QSafeDataStream &QSafeDataStream::operator>>( Q_UINT64 &i )
78{
79 if(atEnd()){
80 i = 0;
81 return *this;
82 } else {
83 return (QSafeDataStream&)QDataStream::operator>>(i);
84 }
85}
86
87
88QSafeDataStream &QSafeDataStream::operator>>( float &f )
89{
90 if(atEnd()){
91 f = 0;
92 return *this;
93 } else {
94 return (QSafeDataStream&)QDataStream::operator>>(f);
95 }
96}
97
98QSafeDataStream &QSafeDataStream::operator>>( double &f )
99{
100 if(atEnd()){
101 f = 0;
102 return *this;
103 } else {
104 return (QSafeDataStream&)QDataStream::operator>>(f);
105 }
106}
107
108QSafeDataStream &QSafeDataStream::operator>>( char *&str )
109{
110 if(atEnd()){
111 str = 0;
112 return *this;
113 } else {
114 return (QSafeDataStream&)QDataStream::operator>>(str);
115 }
116}
117
118QSafeDataStream &QSafeDataStream::readBytes( char *&s, uint &len )
119{
120 if(atEnd()){
121 s = 0;
122 len = 0;
123 return *this;
124 } else {
125 return (QSafeDataStream&)QDataStream::readBytes(s, len);
126 }
127}
128
129QSafeDataStream &QSafeDataStream::readRawBytes( char *s, uint len )
130{
131 if(atEnd()){
132 return *this;
133 } else {
134 return (QSafeDataStream&)QDataStream::readRawBytes(s, len);
135 }
136}
137
138QSafeDataStream &QSafeDataStream::operator>>( QString& s )
139{
140 if(atEnd()){
141 s = QString::null;
142 return *this;
143 } else {
144 return (QSafeDataStream&)(*((QDataStream*)this) >> s);
145 }
146}
147
148QSafeDataStream &QSafeDataStream::operator>>( QStringList& list )
149{
150 if(atEnd()){
151 list.clear();
152 return *this;
153 } else {
154 return (QSafeDataStream&)(*((QDataStream*)this) >> list);
155 }
156}
157
158QSafeDataStream &QSafeDataStream::operator>>( QByteArray& a )
159{
160 if(atEnd()){
161 a.resize(0);
162 return *this;
163 } else {
164 return (QSafeDataStream&)(*((QDataStream*)this) >> a);
165 }
166}
167
168QSafeDataStream &QSafeDataStream::operator>>( QCString& s )
169{
170 if(atEnd()){
171 s.resize(0);
172 return *this;
173 } else {
174 return (QSafeDataStream&)(*((QDataStream*)this) >> s);
175 }
176}
177
178QSafeDataStream &QSafeDataStream::operator>>( QDate& d )
179{
180 if(atEnd()){
181 return *this;
182 } else {
183 return (QSafeDataStream&)(*((QDataStream*)this) >> d);
184 }
185}
186
187QSafeDataStream &QSafeDataStream::operator>>( QTime& t )
188{
189 if(atEnd()){
190 return *this;
191 } else {
192 return (QSafeDataStream&)(*((QDataStream*)this) >> t);
193 }
194}
195
196QSafeDataStream &QSafeDataStream::operator>>( QDateTime& dt )
197{
198 if(atEnd()){
199 return *this;
200 } else {
201 return (QSafeDataStream&)(*((QDataStream*)this) >> dt);
202 }
203}
diff --git a/noncore/applets/keyhelper/keyhelperapplet/applet/QSafeDataStream.h b/noncore/applets/keyhelper/keyhelperapplet/applet/QSafeDataStream.h
new file mode 100644
index 0000000..2152b23
--- a/dev/null
+++ b/noncore/applets/keyhelper/keyhelperapplet/applet/QSafeDataStream.h
@@ -0,0 +1,51 @@
1#ifndef _QSAFEDATASTREAM_H_
2#define _QSAFEDATASTREAM_H_
3
4#include <qdatastream.h>
5
6class QString;
7class QStringList;
8class QCString;
9class QDate;
10class QTime;
11class QDateTime;
12
13class QSafeDataStream : public QDataStream
14{
15public:
16 /* constructors */
17 QSafeDataStream()
18 : QDataStream() {}
19 QSafeDataStream(QIODevice* d)
20 : QDataStream(d) {}
21 QSafeDataStream(QByteArray a, int mode)
22 : QDataStream(a, mode) {}
23
24 /* read functions */
25 QSafeDataStream &operator>>( Q_INT8 &i );
26 QSafeDataStream &operator>>( Q_UINT8 &i );
27 QSafeDataStream &operator>>( Q_INT16 &i );
28 QSafeDataStream &operator>>( Q_UINT16 &i );
29 QSafeDataStream &operator>>( Q_INT32 &i );
30 QSafeDataStream &operator>>( Q_UINT32 &i );
31 QSafeDataStream &operator>>( Q_INT64 &i );
32 QSafeDataStream &operator>>( Q_UINT64 &i );
33
34 QSafeDataStream &operator>>( float &f );
35 QSafeDataStream &operator>>( double &f );
36 QSafeDataStream &operator>>( char *&str );
37
38 QSafeDataStream &readBytes( char *&, uint &len );
39 QSafeDataStream &readRawBytes( char *, uint len );
40
41 QSafeDataStream &operator>>( QString& s );
42 QSafeDataStream &operator>>( QStringList& list );
43 QSafeDataStream &operator>>( QByteArray& a );
44 QSafeDataStream &operator>>( QCString& s );
45 QSafeDataStream &operator>>( QDate& d );
46 QSafeDataStream &operator>>( QTime& t );
47 QSafeDataStream &operator>>( QDateTime& dt );
48
49};
50
51#endif /* _QSAFEDATASTREAM_H_ */