From ecd0e7c523c9f190eb2b8765ef2d629aa399d635 Mon Sep 17 00:00:00 2001
From: alwin <alwin>
Date: Sun, 01 Aug 2004 10:33:38 +0000
Subject: switched keyboard filter to the new singleton class OKeyFilter from within

opiecore2 so we can better handle it.
---
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,4 +1,5 @@
 #include <opie2/otaskbarapplet.h>
+#include <opie2/okeyfilter.h>
 #include <qpe/qcopenvelope_qws.h>
 #include <qpe/applnk.h>
 #include <qpe/qpeapplication.h>
@@ -9,84 +10,92 @@
 #include "zkbcfg.h"
 
 using namespace Opie::Ui;
-ZkbWidget::ZkbWidget(QWidget* parent):QLabel(parent),keymap(0),
-	disabled(Resource::loadPixmap("zkb-disabled")) {
 
-	labels = new QPopupMenu();
-	connect(labels, SIGNAL(activated(int)), this,
-		SLOT(labelChanged(int)));
+ZkbWidget::ZkbWidget(QWidget* parent)
+    :QLabel(parent),keymap(0),disabled(Resource::loadPixmap("zkb-disabled")) {
 
-	loadKeymap();
+    labels = new QPopupMenu();
+    connect(labels, SIGNAL(activated(int)), this,
+        SLOT(labelChanged(int)));
 
-	channel = new QCopChannel("QPE/zkb", this);
-	connect(channel, SIGNAL(received(const QCString&,const QByteArray&)),
-		this, SLOT(signalReceived(const QCString&,const QByteArray&)));
+    loadKeymap();
+
+    channel = new QCopChannel("QPE/zkb", this);
+    connect(channel, SIGNAL(received(const QCString&,const QByteArray&)),
+        this, SLOT(signalReceived(const QCString&,const QByteArray&)));
     setFixedWidth ( AppLnk::smallIconSize()  );
     setFixedHeight ( AppLnk::smallIconSize()  );
 }
 
-ZkbWidget::~ZkbWidget() {
+ZkbWidget::~ZkbWidget()
+{
+    if (keymap != 0) {
+        delete keymap;
+        keymap = 0;
+    }
 }
 
 int ZkbWidget::position()
 {
-	return 8;
+    return 8;
 }
 
 bool ZkbWidget::loadKeymap() {
-	ZkbConfig c(QPEApplication::qpeDir()+"/share/zkb");
-	QFontMetrics fm(font());
-
-	if (keymap != 0) {
-		delete keymap;
-		keymap = 0;
-	}
-
-	Keymap* km = new Keymap();
-
-	if (!c.load("zkb.xml", *km, "")) {
-		delete km;
-		setPixmap(disabled);
-		return false;
-	}
-
-	connect(km, SIGNAL(stateChanged(const QString&)),
-		this, SLOT(stateChanged(const QString&)));
-
-	qwsServer->setKeyboardFilter(km);
-
-	Keymap* oldkm = keymap;
-	keymap = km;
-
-	if (oldkm != 0) {
-		delete oldkm;
-	}
-
-	setText(keymap->getCurrentLabel());
-
-	labels->clear();
-	QStringList l = keymap->listLabels();
-	labels->insertItem(disabled, 0, 0);
-	int n = 1;
-	w = 0;
-	for(QStringList::Iterator it = l.begin(); it != l.end();
-		++it, n++) {
-
-//		printf("label: %s\n", (const char*) (*it).utf8());
-
-		labels->insertItem(*it, n, n);
-		int lw = fm.width(*it);
-		if (lw > w) {
-			w = lw;
-		}
-	}
-
-	if (w == 0) {
-		hide();
-	} else {
-		show();
-	}
-	return true;
+    ZkbConfig c(QPEApplication::qpeDir()+"/share/zkb");
+    QFontMetrics fm(font());
+
+    if (keymap != 0) {
+        delete keymap;
+        keymap = 0;
+    }
+
+    Keymap* km = new Keymap();
+
+    if (!c.load("zkb.xml", *km, "")) {
+        delete km;
+        setPixmap(disabled);
+        return false;
+    }
+
+    connect(km, SIGNAL(stateChanged(const QString&)),
+        this, SLOT(stateChanged(const QString&)));
+
+    Opie::Core::OKeyFilter::inst()->addHandler(km);
+
+    Keymap* oldkm = keymap;
+    keymap = km;
+
+    if (oldkm != 0) {
+        delete oldkm;
+    }
+
+    QString ltext = keymap->getCurrentLabel();
+    if (ltext.length()==0) ltext = "??";
+    setText(ltext);
+
+    labels->clear();
+    QStringList l = keymap->listLabels();
+    labels->insertItem(disabled, 0, 0);
+    int n = 1;
+    w = 0;
+    for(QStringList::Iterator it = l.begin(); it != l.end();
+        ++it, n++) {
+
+//      printf("label: %s\n", (const char*) (*it).utf8());
+
+        labels->insertItem(*it, n, n);
+        int lw = fm.width(*it);
+        if (lw > w) {
+            w = lw;
+        }
+    }
+
+    if (w == 0) {
+        hide();
+    } else {
+        show();
+    }
+    return true;
 }
 
 QSize ZkbWidget::sizeHint() const {
@@ -94,68 +103,66 @@ QSize ZkbWidget::sizeHint() const {
 }
 
 void ZkbWidget::stateChanged(const QString& s) {
-//	odebug << "stateChanged: " << s.utf8() << "\n" << oendl; 
-	setText(s);
+//  odebug << "stateChanged: " << s.utf8() << "\n" << oendl;
+    setText(s);
 }
 
 void ZkbWidget::labelChanged(int id) {
-	if (id == 0) {
-		keymap->disable();
-		setPixmap(disabled);
-		return;
-	}
-
-	keymap->enable();
-
-	QStringList l = keymap->listLabels();
-	QString lbl = l[id-1];
-
-//	printf("labelChanged: %s\n", (const char*) lbl.utf8());
-	State* state = keymap->getStateByLabel(lbl);
-	if (state != 0) {
-		keymap->setCurrentState(state);
-		setText(lbl);
-	}
+    if (id == 0) {
+        keymap->disable();
+        setPixmap(disabled);
+        return;
+    }
+
+    keymap->enable();
+
+    QStringList l = keymap->listLabels();
+    QString lbl = l[id-1];
+
+//  printf("labelChanged: %s\n", (const char*) lbl.utf8());
+    State* state = keymap->getStateByLabel(lbl);
+    if (state != 0) {
+        keymap->setCurrentState(state);
+        setText(lbl);
+    }
 }
 
 void ZkbWidget::mouseReleaseEvent(QMouseEvent*) {
-	QSize sh = labels->sizeHint();
-	QPoint p = mapToGlobal(QPoint((width()-sh.width())/2,-sh.height()));
-	labels->exec(p);
+    QSize sh = labels->sizeHint();
+    QPoint p = mapToGlobal(QPoint((width()-sh.width())/2,-sh.height()));
+    labels->exec(p);
 }
 
 void ZkbWidget::signalReceived(const QCString& msg, const QByteArray& data) {
-	QDataStream stream(data, IO_ReadOnly);
-
-	if (msg == "enable()") {
-		keymap->enable();
-	} else if (msg == "disable()") {
-		keymap->disable();
-	} else if (msg == "reload()") {
-		QCopEnvelope("QPE/System", "busy()");
-		QTimer::singleShot(0, this, SLOT(reload()));
-	} else if (msg == "switch(QString)") {
-		QString lbl;
-		stream >> lbl;
-
-		if (keymap != 0) {
-			State* state = keymap->getStateByLabel(lbl);
-			if (state != 0) {
-				keymap->setCurrentState(state);
-				setText(lbl);
-			}
-		}
-	} else if (msg == "debug(QString)") {
-		QString flag;
-		stream >> flag;
-	}
+    QDataStream stream(data, IO_ReadOnly);
+
+    if (msg == "enable()") {
+        keymap->enable();
+    } else if (msg == "disable()") {
+        keymap->disable();
+    } else if (msg == "reload()") {
+        QCopEnvelope("QPE/System", "busy()");
+        QTimer::singleShot(0, this, SLOT(reload()));
+    } else if (msg == "switch(QString)") {
+        QString lbl;
+        stream >> lbl;
+
+        if (keymap != 0) {
+            State* state = keymap->getStateByLabel(lbl);
+            if (state != 0) {
+                keymap->setCurrentState(state);
+                setText(lbl);
+            }
+        }
+    } else if (msg == "debug(QString)") {
+        QString flag;
+        stream >> flag;
+    }
 }
 
 void ZkbWidget::reload() {
-	loadKeymap();
-	QCopEnvelope("QPE/System", "notBusy()");
+    loadKeymap();
+    QCopEnvelope("QPE/System", "notBusy()");
 }
 
 EXPORT_OPIE_APPLET_v1( ZkbWidget )
-
-
diff --git a/noncore/applets/zkbapplet/zkbwidget.h b/noncore/applets/zkbapplet/zkbwidget.h
index 7c67794..9bce85a 100644
--- a/noncore/applets/zkbapplet/zkbwidget.h
+++ b/noncore/applets/zkbapplet/zkbwidget.h
@@ -13,27 +13,27 @@ class ZkbWidget : public QLabel {
 Q_OBJECT
 
 public:
-	ZkbWidget(QWidget* parent);
-	~ZkbWidget();
-	static int position();
+    ZkbWidget(QWidget* parent);
+    ~ZkbWidget();
+    static int position();
 
-	QSize sizeHint() const;
+    QSize sizeHint() const;
 
 protected:
-	QLabel* label;
-	Keymap* keymap;
-	QPopupMenu* labels;
-	QCopChannel* channel;
-	int w, h;
-	QPixmap disabled;
+    QLabel* label;
+    Keymap* keymap;
+    QPopupMenu* labels;
+    QCopChannel* channel;
+    int w, h;
+    QPixmap disabled;
 
-	bool loadKeymap();
-	void mouseReleaseEvent(QMouseEvent*);
+    bool loadKeymap();
+    void mouseReleaseEvent(QMouseEvent*);
 
 protected slots:
-	void stateChanged(const QString&);
-	void labelChanged(int id);
-	void signalReceived(const QCString& msg, const QByteArray& data);
-	void reload();
+    void stateChanged(const QString&);
+    void labelChanged(int id);
+    void signalReceived(const QCString& msg, const QByteArray& data);
+    void reload();
 };
 #endif
diff --git a/noncore/apps/keyz-cfg/zkb.cpp b/noncore/apps/keyz-cfg/zkb.cpp
index c9e1dc5..a357b88 100644
--- a/noncore/apps/keyz-cfg/zkb.cpp
+++ b/noncore/apps/keyz-cfg/zkb.cpp
@@ -2,6 +2,7 @@
 
 /* OPIE */
 #include <opie2/odebug.h>
+#include <opie2/okeyfilter.h>
 
 #include <stdio.h>
 
@@ -246,6 +247,8 @@ Keymap::Keymap():enabled(true), currentState(0), autoRepeatAction(0), repeater(t
 }
 
 Keymap::~Keymap() {
+    odebug << "removing keyboard filter for zkb"<<oendl;
+    Opie::Core::OKeyFilter::inst()->remHandler(this);
     QMap<QString, State*>::Iterator it;
     for(it = states.begin(); it != states.end(); ++it) {
         delete it.data();
--
cgit v0.9.0.2