summaryrefslogtreecommitdiff
path: root/noncore/applets/zkbapplet/zkbwidget.cpp
Unidiff
Diffstat (limited to 'noncore/applets/zkbapplet/zkbwidget.cpp') (more/less context) (show whitespace changes)
-rw-r--r--noncore/applets/zkbapplet/zkbwidget.cpp21
1 files changed, 14 insertions, 7 deletions
diff --git a/noncore/applets/zkbapplet/zkbwidget.cpp b/noncore/applets/zkbapplet/zkbwidget.cpp
index 38bfba9..8499500 100644
--- a/noncore/applets/zkbapplet/zkbwidget.cpp
+++ b/noncore/applets/zkbapplet/zkbwidget.cpp
@@ -1,40 +1,47 @@
1#include <opie2/otaskbarapplet.h> 1#include <opie2/otaskbarapplet.h>
2#include <opie2/okeyfilter.h>
2#include <qpe/qcopenvelope_qws.h> 3#include <qpe/qcopenvelope_qws.h>
3#include <qpe/applnk.h> 4#include <qpe/applnk.h>
4#include <qpe/qpeapplication.h> 5#include <qpe/qpeapplication.h>
5#include <qpe/resource.h> 6#include <qpe/resource.h>
6#include <stdio.h> 7#include <stdio.h>
7#include <unistd.h> 8#include <unistd.h>
8#include "zkbwidget.h" 9#include "zkbwidget.h"
9#include "zkbcfg.h" 10#include "zkbcfg.h"
10 11
11using namespace Opie::Ui; 12using namespace Opie::Ui;
12ZkbWidget::ZkbWidget(QWidget* parent):QLabel(parent),keymap(0), 13
13 disabled(Resource::loadPixmap("zkb-disabled")) { 14ZkbWidget::ZkbWidget(QWidget* parent)
15 :QLabel(parent),keymap(0),disabled(Resource::loadPixmap("zkb-disabled")) {
14 16
15 labels = new QPopupMenu(); 17 labels = new QPopupMenu();
16 connect(labels, SIGNAL(activated(int)), this, 18 connect(labels, SIGNAL(activated(int)), this,
17 SLOT(labelChanged(int))); 19 SLOT(labelChanged(int)));
18 20
19 loadKeymap(); 21 loadKeymap();
20 22
21 channel = new QCopChannel("QPE/zkb", this); 23 channel = new QCopChannel("QPE/zkb", this);
22 connect(channel, SIGNAL(received(const QCString&,const QByteArray&)), 24 connect(channel, SIGNAL(received(const QCString&,const QByteArray&)),
23 this, SLOT(signalReceived(const QCString&,const QByteArray&))); 25 this, SLOT(signalReceived(const QCString&,const QByteArray&)));
24 setFixedWidth ( AppLnk::smallIconSize() ); 26 setFixedWidth ( AppLnk::smallIconSize() );
25 setFixedHeight ( AppLnk::smallIconSize() ); 27 setFixedHeight ( AppLnk::smallIconSize() );
26} 28}
27 29
28ZkbWidget::~ZkbWidget() { 30ZkbWidget::~ZkbWidget()
31{
32 if (keymap != 0) {
33 delete keymap;
34 keymap = 0;
35 }
29} 36}
30 37
31int ZkbWidget::position() 38int ZkbWidget::position()
32{ 39{
33 return 8; 40 return 8;
34} 41}
35 42
36bool ZkbWidget::loadKeymap() { 43bool ZkbWidget::loadKeymap() {
37 ZkbConfig c(QPEApplication::qpeDir()+"/share/zkb"); 44 ZkbConfig c(QPEApplication::qpeDir()+"/share/zkb");
38 QFontMetrics fm(font()); 45 QFontMetrics fm(font());
39 46
40 if (keymap != 0) { 47 if (keymap != 0) {
@@ -44,34 +51,36 @@ bool ZkbWidget::loadKeymap() {
44 51
45 Keymap* km = new Keymap(); 52 Keymap* km = new Keymap();
46 53
47 if (!c.load("zkb.xml", *km, "")) { 54 if (!c.load("zkb.xml", *km, "")) {
48 delete km; 55 delete km;
49 setPixmap(disabled); 56 setPixmap(disabled);
50 return false; 57 return false;
51 } 58 }
52 59
53 connect(km, SIGNAL(stateChanged(const QString&)), 60 connect(km, SIGNAL(stateChanged(const QString&)),
54 this, SLOT(stateChanged(const QString&))); 61 this, SLOT(stateChanged(const QString&)));
55 62
56 qwsServer->setKeyboardFilter(km); 63 Opie::Core::OKeyFilter::inst()->addHandler(km);
57 64
58 Keymap* oldkm = keymap; 65 Keymap* oldkm = keymap;
59 keymap = km; 66 keymap = km;
60 67
61 if (oldkm != 0) { 68 if (oldkm != 0) {
62 delete oldkm; 69 delete oldkm;
63 } 70 }
64 71
65 setText(keymap->getCurrentLabel()); 72 QString ltext = keymap->getCurrentLabel();
73 if (ltext.length()==0) ltext = "??";
74 setText(ltext);
66 75
67 labels->clear(); 76 labels->clear();
68 QStringList l = keymap->listLabels(); 77 QStringList l = keymap->listLabels();
69 labels->insertItem(disabled, 0, 0); 78 labels->insertItem(disabled, 0, 0);
70 int n = 1; 79 int n = 1;
71 w = 0; 80 w = 0;
72 for(QStringList::Iterator it = l.begin(); it != l.end(); 81 for(QStringList::Iterator it = l.begin(); it != l.end();
73 ++it, n++) { 82 ++it, n++) {
74 83
75 // printf("label: %s\n", (const char*) (*it).utf8()); 84 // printf("label: %s\n", (const char*) (*it).utf8());
76 85
77 labels->insertItem(*it, n, n); 86 labels->insertItem(*it, n, n);
@@ -148,14 +157,12 @@ void ZkbWidget::signalReceived(const QCString& msg, const QByteArray& data) {
148 } else if (msg == "debug(QString)") { 157 } else if (msg == "debug(QString)") {
149 QString flag; 158 QString flag;
150 stream >> flag; 159 stream >> flag;
151 } 160 }
152} 161}
153 162
154void ZkbWidget::reload() { 163void ZkbWidget::reload() {
155 loadKeymap(); 164 loadKeymap();
156 QCopEnvelope("QPE/System", "notBusy()"); 165 QCopEnvelope("QPE/System", "notBusy()");
157} 166}
158 167
159EXPORT_OPIE_APPLET_v1( ZkbWidget ) 168EXPORT_OPIE_APPLET_v1( ZkbWidget )
160
161