summaryrefslogtreecommitdiff
path: root/inputmethods/pickboard/pickboardpicks.cpp
Side-by-side diff
Diffstat (limited to 'inputmethods/pickboard/pickboardpicks.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--inputmethods/pickboard/pickboardpicks.cpp418
1 files changed, 418 insertions, 0 deletions
diff --git a/inputmethods/pickboard/pickboardpicks.cpp b/inputmethods/pickboard/pickboardpicks.cpp
new file mode 100644
index 0000000..a80bbf8
--- a/dev/null
+++ b/inputmethods/pickboard/pickboardpicks.cpp
@@ -0,0 +1,418 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+**
+** This file is part of Qtopia Environment.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+#include "pickboardpicks.h"
+#include "pickboardcfg.h"
+
+#include <qpe/global.h>
+
+#include <qpainter.h>
+#include <qlist.h>
+#include <qbitmap.h>
+#include <qlayout.h>
+#include <qvbox.h>
+#include <qdialog.h>
+#include <qscrollview.h>
+#include <qpopupmenu.h>
+#include <qhbuttongroup.h>
+#include <qpushbutton.h>
+#include <qmessagebox.h>
+#include <qwindowsystem_qws.h>
+
+void PickboardPicks::doMenu()
+{
+ QWidget* cause = (QWidget*)sender(); // evil
+
+ QPopupMenu popup(this);
+ config()->fillMenu(popup);
+
+ QPoint pos = cause->mapToGlobal(cause->rect().topRight());
+ QSize sz = popup.sizeHint();
+ pos.ry() -= sz.height();
+ pos.rx() -= sz.width();
+ popup.move(pos);
+ config()->doMenu(popup.exec());
+}
+
+static const char *BS_xpm[] = {
+"5 7 2 1",
+"a c #000000",
+". c None",
+"...aa",
+"..aaa",
+".aaaa",
+"aaaaa",
+".aaaa",
+"..aaa",
+"...aa",
+};
+static const char *Del_xpm[] = {
+"14 7 2 1",
+"a c #000000",
+". c None",
+"aaa..aaaa.a...",
+"a..a.a....a...",
+"a..a.a....a...",
+"a..a.aaa..a...",
+"a..a.a....a...",
+"a..a.a....a...",
+"aaa..aaaa.aaaa"
+};
+static const char *Home_xpm[] = {
+"20 7 2 1",
+"a c #000000",
+". c None",
+"a..a..aa..a...a.aaaa",
+"a..a.a..a.aa.aa.a...",
+"a..a.a..a.a.a.a.a...",
+"aaaa.a..a.a.a.a.aaa.",
+"a..a.a..a.a...a.a...",
+"a..a.a..a.a...a.a...",
+"a..a..aa..a...a.aaaa"
+};
+static const char *PgUp_xpm[] = {
+"20 7 2 1",
+"a c #000000",
+". c None",
+"aaa.......a..a......",
+"a..a......a..a......",
+"a..a.aa...a..a.aaa..",
+"aaa.a.....a..a.a..a.",
+"a...a.aa..a..a.aaa..",
+"a...a..a..a..a.a....",
+"a....aaa...aa..a...."
+};
+static const char *PgDn_xpm[] = {
+"20 7 2 1",
+"a c #000000",
+". c None",
+"aaa.......aaa.......",
+"a..a......a..a......",
+"a..a.aa...a..a.a..a.",
+"aaa.a.....a..a.aa.a.",
+"a...a.aa..a..a.a.aa.",
+"a...a..a..a..a.a..a.",
+"a....aaa..aaa..a..a."
+};
+static const char *End_xpm[] = {
+"14 7 2 1",
+"a c #000000",
+". c None",
+"aaaa.a..a.aaa.",
+"a....aa.a.a..a",
+"a....a.aa.a..a",
+"aaa..a..a.a..a",
+"a....a..a.a..a",
+"a....a..a.a..a",
+"aaaa.a..a.aaa."
+};
+static const char *Enter_xpm[] = {
+"14 7 2 1",
+"a c #000000",
+". c None",
+".............a",
+".............a",
+"..a..........a",
+".aa.........a.",
+"aaaaaaaaaaaa..",
+".aa...........",
+"..a..........."
+};
+static const char *Esc_xpm[] = {
+"14 7 2 1",
+"a c #000000",
+". c None",
+"aaaa..aa...aa.",
+"a....a..a.a..a",
+"a....a....a...",
+"aaa...aa..a...",
+"a.......a.a...",
+"a....a..a.a..a",
+"aaaa..aa...aa."
+};
+static const char *Ins_xpm[] = {
+"13 7 2 1",
+"a c #000000",
+". c None",
+"aaa.a..a..aa.",
+".a..aa.a.a..a",
+".a..a.aa.a...",
+".a..a..a..aa.",
+".a..a..a....a",
+".a..a..a.a..a",
+"aaa.a..a..aa."
+};
+static const char *Up_xpm[] = {
+"7 7 2 1",
+"a c #000000",
+". c None",
+"...a...",
+"..aaa..",
+".a.a.a.",
+"a..a..a",
+"...a...",
+"...a...",
+"...a..."
+};
+static const char *Left_xpm[] = {
+"7 7 2 1",
+"a c #000000",
+". c None",
+"...a...",
+"..a....",
+".a.....",
+"aaaaaaa",
+".a.....",
+"..a....",
+"...a..."
+};
+static const char *Down_xpm[] = {
+"7 7 2 1",
+"a c #000000",
+". c None",
+"...a...",
+"...a...",
+"...a...",
+"a..a..a",
+".a.a.a.",
+"..aaa..",
+"...a..."
+};
+static const char *Right_xpm[] = {
+"7 7 2 1",
+"a c #000000",
+". c None",
+"...a...",
+"....a..",
+".....a.",
+"aaaaaaa",
+".....a.",
+"....a..",
+"...a..."
+};
+static const char *BackTab_xpm[] = {
+"8 7 2 1",
+"a c #000000",
+". c None",
+"a.......",
+"a..a....",
+"a.aa....",
+"aaaaaaaa",
+"a.aa....",
+"a..a....",
+"a......."
+};
+static const char *Tab_xpm[] = {
+"8 7 2 1",
+"a c #000000",
+". c None",
+".......a",
+"....a..a",
+"....aa.a",
+"aaaaaaaa",
+"....aa.a",
+"....a..a",
+".......a"
+};
+static const char *Space_xpm[] = {
+"9 9 2 1",
+"a c #000000",
+". c None",
+"aaaaaaaaa",
+"a.......a",
+"a.......a",
+"a.......a",
+"a.......a",
+"a.......a",
+"a.......a",
+"a.......a",
+"aaaaaaaaa"
+};
+
+PickboardPicks::PickboardPicks(QWidget* parent, const char* name, WFlags f ) :
+ QFrame(parent,name,f)
+{
+}
+
+void PickboardPicks::initialise(void)
+{
+ setSizePolicy(QSizePolicy(QSizePolicy::Expanding,QSizePolicy::Fixed));
+ mode = 0;
+
+ DictFilterConfig* dc = new DictFilterConfig(this);
+ dc->addSet("ABC");
+ dc->addSet("DEF");
+ dc->addSet("GHI");
+ dc->addSet("JKL");
+ dc->addSet("MNO");
+ dc->addSet("PQR");
+ dc->addSet("STU");
+ dc->addSet("VWX");
+ dc->addSet("YZ-'");
+ dc->addMode("123");
+ dc->addMode("@*!?");
+ dc->addMode("KEY");
+ dc->addMode("Space");
+ dc->addMode("Back");
+ dc->addMode("Enter");
+ dc->addMode("Shift");
+ configs.append(dc);
+
+ CharStringConfig* number = new CharStringConfig(this);
+ number->addChar("0");
+ number->addChar("1");
+ number->addChar("2");
+ number->addChar("3");
+ number->addChar("4");
+ number->addChar("5");
+ number->addChar("6");
+ number->addChar("7");
+ number->addChar("8");
+ number->addChar("9");
+ number->addChar("."); // #### or "," in some locales
+ configs.append(number);
+
+ CharConfig* punc = new CharConfig(this);
+
+ punc->addChar(0,"\"");
+ punc->addChar(0,"`");
+ punc->addChar(0,"'");
+ punc->addChar(0,"\253");
+ punc->addChar(0,"\273");
+ punc->addChar(0,"\277");
+ punc->addChar(1,"(");
+ punc->addChar(1,")");
+ punc->addChar(1,"[");
+ punc->addChar(1,"]");
+ punc->addChar(1,"{");
+ punc->addChar(1,"}");
+
+ punc->addChar(0,"+");
+ punc->addChar(0,"-");
+ punc->addChar(0,"*");
+ punc->addChar(0,"/");
+ punc->addChar(0,"=");
+ punc->addChar(0,"_");
+ punc->addChar(0,"$");
+ punc->addChar(0,"&");
+ punc->addChar(1,"|");
+ punc->addChar(1,"@");
+ punc->addChar(1,"\\");
+ punc->addChar(1,"#");
+ punc->addChar(1,"^");
+ punc->addChar(1,"~");
+ punc->addChar(1,"<");
+ punc->addChar(1,">");
+
+ punc->addChar(0,".");
+ punc->addChar(0,"?");
+ punc->addChar(0,"!");
+ punc->addChar(0,",");
+ punc->addChar(0,";");
+ punc->addChar(1,":");
+ punc->addChar(1,"\267");
+ punc->addChar(1,"\277");
+ punc->addChar(1,"\241");
+ punc->addChar(1,"\367");
+
+ punc->addChar(0,"$");
+ punc->addChar(0,"\242");
+ punc->addChar(0,"\245");
+ punc->addChar(1,"\243");
+ punc->addChar(1,"\244");
+ punc->addChar(1,"\260");
+
+ configs.append(punc);
+
+ KeycodeConfig* keys = new KeycodeConfig(this);
+ keys->addKey(0,QPixmap(Esc_xpm),Key_Escape);
+ keys->addKey(0,QPixmap(BS_xpm),Key_Backspace);
+ keys->addGap(0,10);
+
+ keys->addKey(0,QPixmap(Ins_xpm),Key_Insert);
+ keys->addKey(0,QPixmap(Home_xpm),Key_Home);
+ keys->addKey(0,QPixmap(PgUp_xpm),Key_PageUp);
+
+ keys->addGap(0,25);
+ keys->addKey(0,QPixmap(Up_xpm),Key_Up);
+ keys->addGap(0,15);
+
+ keys->addKey(1,QPixmap(BackTab_xpm),Key_Tab);
+ keys->addGap(1,3);
+ keys->addKey(1,QPixmap(Tab_xpm),Key_Tab);
+ keys->addGap(1,10);
+
+ keys->addKey(1,QPixmap(Del_xpm),Key_Delete);
+ keys->addGap(1,2);
+ keys->addKey(1,QPixmap(End_xpm),Key_End);
+ keys->addGap(1,3);
+ keys->addKey(1,QPixmap(PgDn_xpm),Key_PageDown);
+
+ keys->addGap(1,10);
+ keys->addKey(1,QPixmap(Left_xpm),Key_Left);
+ keys->addKey(1,QPixmap(Down_xpm),Key_Down);
+ keys->addKey(1,QPixmap(Right_xpm),Key_Right);
+
+ keys->addGap(1,13);
+ keys->addKey(1,QPixmap(Space_xpm),Key_Space);
+
+ keys->addGap(0,10);
+ keys->addKey(0,QPixmap(Enter_xpm),Key_Return);
+
+ configs.append(keys);
+}
+
+PickboardPicks::~PickboardPicks()
+{
+}
+
+QSize PickboardPicks::sizeHint() const
+{
+ return QSize(240,fontMetrics().lineSpacing()*2+3);
+}
+
+void PickboardPicks::drawContents(QPainter* p)
+{
+ config()->draw(p);
+}
+
+void PickboardPicks::mousePressEvent(QMouseEvent* e)
+{
+ config()->pickPoint(e->pos(),TRUE);
+}
+
+void PickboardPicks::mouseDoubleClickEvent(QMouseEvent* e)
+{
+ config()->pickPoint(e->pos(),TRUE);
+}
+
+void PickboardPicks::mouseReleaseEvent(QMouseEvent* e)
+{
+ config()->pickPoint(e->pos(),FALSE);
+}
+
+void PickboardPicks::setMode(int m)
+{
+ mode = m;
+}
+
+void PickboardPicks::resetState()
+{
+ config()->doMenu(100);
+}