Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

pickboardpicks.cpp

Go to the documentation of this file.
00001 /**********************************************************************
00002 ** Copyright (C) 2000-2002 Trolltech AS.  All rights reserved.
00003 **
00004 ** This file is part of the Qtopia Environment.
00005 **
00006 ** This file may be distributed and/or modified under the terms of the
00007 ** GNU General Public License version 2 as published by the Free Software
00008 ** Foundation and appearing in the file LICENSE.GPL included in the
00009 ** packaging of this file.
00010 **
00011 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
00012 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
00013 **
00014 ** See http://www.trolltech.com/gpl/ for GPL licensing information.
00015 **
00016 ** Contact info@trolltech.com if any conditions of this licensing are
00017 ** not clear to you.
00018 **
00019 **********************************************************************/
00020 #include "pickboardpicks.h"
00021 #include "pickboardcfg.h"
00022 
00023 #include <qpe/global.h>
00024 
00025 #include <qpainter.h>
00026 #include <qlist.h>
00027 #include <qbitmap.h>
00028 #include <qlayout.h>
00029 #include <qvbox.h>
00030 #include <qdialog.h>
00031 #include <qscrollview.h>
00032 #include <qpopupmenu.h>
00033 #include <qhbuttongroup.h>
00034 #include <qpushbutton.h>
00035 #include <qmessagebox.h>
00036 #ifdef QWS
00037 #include <qwindowsystem_qws.h>
00038 #endif
00039 
00040 void PickboardPicks::doMenu()
00041 {
00042     QWidget* cause = (QWidget*)sender(); // evil
00043 
00044     QPopupMenu popup(this);
00045     config()->fillMenu(popup);
00046 
00047     QPoint pos = cause->mapToGlobal(cause->rect().topRight());
00048     QSize sz = popup.sizeHint();
00049     pos.ry() -= sz.height();
00050     pos.rx() -= sz.width();
00051     popup.move(pos);
00052     config()->doMenu(popup.exec());
00053 }
00054 
00055 static const char *BS_xpm[] = {
00056 "5 7 2 1",
00057 "a c #000000",
00058 ". c None",
00059 "...aa",
00060 "..aaa",
00061 ".aaaa",
00062 "aaaaa",
00063 ".aaaa",
00064 "..aaa",
00065 "...aa",
00066 };
00067 static const char *Del_xpm[] = {
00068 "14 7 2 1",
00069 "a c #000000",
00070 ". c None",
00071 "aaa..aaaa.a...",
00072 "a..a.a....a...",
00073 "a..a.a....a...",
00074 "a..a.aaa..a...",
00075 "a..a.a....a...",
00076 "a..a.a....a...",
00077 "aaa..aaaa.aaaa"
00078 };
00079 static const char *Home_xpm[] = {
00080 "20 7 2 1",
00081 "a c #000000",
00082 ". c None",
00083 "a..a..aa..a...a.aaaa",
00084 "a..a.a..a.aa.aa.a...",
00085 "a..a.a..a.a.a.a.a...",
00086 "aaaa.a..a.a.a.a.aaa.",
00087 "a..a.a..a.a...a.a...",
00088 "a..a.a..a.a...a.a...",
00089 "a..a..aa..a...a.aaaa"
00090 };
00091 static const char *PgUp_xpm[] = {
00092 "20 7 2 1",
00093 "a c #000000",
00094 ". c None",
00095 "aaa.......a..a......",
00096 "a..a......a..a......",
00097 "a..a.aa...a..a.aaa..",
00098 "aaa.a.....a..a.a..a.",
00099 "a...a.aa..a..a.aaa..",
00100 "a...a..a..a..a.a....",
00101 "a....aaa...aa..a...."
00102 };
00103 static const char *PgDn_xpm[] = {
00104 "20 7 2 1",
00105 "a c #000000",
00106 ". c None",
00107 "aaa.......aaa.......",
00108 "a..a......a..a......",
00109 "a..a.aa...a..a.a..a.",
00110 "aaa.a.....a..a.aa.a.",
00111 "a...a.aa..a..a.a.aa.",
00112 "a...a..a..a..a.a..a.",
00113 "a....aaa..aaa..a..a."
00114 };
00115 static const char *End_xpm[] = {
00116 "14 7 2 1",
00117 "a c #000000",
00118 ". c None",
00119 "aaaa.a..a.aaa.",
00120 "a....aa.a.a..a",
00121 "a....a.aa.a..a",
00122 "aaa..a..a.a..a",
00123 "a....a..a.a..a",
00124 "a....a..a.a..a",
00125 "aaaa.a..a.aaa."
00126 };
00127 static const char *Enter_xpm[] = {
00128 "14 7 2 1",
00129 "a c #000000",
00130 ". c None",
00131 ".............a",
00132 ".............a",
00133 "..a..........a",
00134 ".aa.........a.",
00135 "aaaaaaaaaaaa..",
00136 ".aa...........",
00137 "..a..........."
00138 };
00139 static const char *Esc_xpm[] = {
00140 "14 7 2 1",
00141 "a c #000000",
00142 ". c None",
00143 "aaaa..aa...aa.",
00144 "a....a..a.a..a",
00145 "a....a....a...",
00146 "aaa...aa..a...",
00147 "a.......a.a...",
00148 "a....a..a.a..a",
00149 "aaaa..aa...aa."
00150 };
00151 static const char *Ins_xpm[] = {
00152 "13 7 2 1",
00153 "a c #000000",
00154 ". c None",
00155 "aaa.a..a..aa.",
00156 ".a..aa.a.a..a",
00157 ".a..a.aa.a...",
00158 ".a..a..a..aa.",
00159 ".a..a..a....a",
00160 ".a..a..a.a..a",
00161 "aaa.a..a..aa."
00162 };
00163 static const char *Up_xpm[] = {
00164 "7 7 2 1",
00165 "a c #000000",
00166 ". c None",
00167 "...a...",
00168 "..aaa..",
00169 ".a.a.a.",
00170 "a..a..a",
00171 "...a...",
00172 "...a...",
00173 "...a..."
00174 };
00175 static const char *Left_xpm[] = {
00176 "7 7 2 1",
00177 "a c #000000",
00178 ". c None",
00179 "...a...",
00180 "..a....",
00181 ".a.....",
00182 "aaaaaaa",
00183 ".a.....",
00184 "..a....",
00185 "...a..."
00186 };
00187 static const char *Down_xpm[] = {
00188 "7 7 2 1",
00189 "a c #000000",
00190 ". c None",
00191 "...a...",
00192 "...a...",
00193 "...a...",
00194 "a..a..a",
00195 ".a.a.a.",
00196 "..aaa..",
00197 "...a..."
00198 };
00199 static const char *Right_xpm[] = {
00200 "7 7 2 1",
00201 "a c #000000",
00202 ". c None",
00203 "...a...",
00204 "....a..",
00205 ".....a.",
00206 "aaaaaaa",
00207 ".....a.",
00208 "....a..",
00209 "...a..."
00210 };
00211 static const char *BackTab_xpm[] = {
00212 "8 7 2 1",
00213 "a c #000000",
00214 ". c None",
00215 "a.......",
00216 "a..a....",
00217 "a.aa....",
00218 "aaaaaaaa",
00219 "a.aa....",
00220 "a..a....",
00221 "a......."
00222 };
00223 static const char *Tab_xpm[] = {
00224 "8 7 2 1",
00225 "a c #000000",
00226 ". c None",
00227 ".......a",
00228 "....a..a",
00229 "....aa.a",
00230 "aaaaaaaa",
00231 "....aa.a",
00232 "....a..a",
00233 ".......a"
00234 };
00235 static const char *Space_xpm[] = {
00236 "9 9 2 1",
00237 "a c #000000",
00238 ". c None",
00239 "aaaaaaaaa",
00240 "a.......a",
00241 "a.......a",
00242 "a.......a",
00243 "a.......a",
00244 "a.......a",
00245 "a.......a",
00246 "a.......a",
00247 "aaaaaaaaa"
00248 };
00249 
00250 PickboardPicks::PickboardPicks(QWidget* parent, const char* name, WFlags f ) :
00251     QFrame(parent,name,f)
00252 {
00253     configs.setAutoDelete( TRUE );
00254 }
00255 
00256 void PickboardPicks::initialise(void)
00257 {
00258     setSizePolicy(QSizePolicy(QSizePolicy::Expanding,QSizePolicy::Fixed));
00259     mode = 0;
00260 
00261     DictFilterConfig* dc = new DictFilterConfig(this);
00262     QStringList sets_a = QStringList::split(' ',tr("ABC DEF GHI JKL MNO PQR STU VWX YZ-'"));
00263     QStringList sets = QStringList::split(' ',
00264                                           tr("ABCÀÁÂÃÄÅÆÇ DEFÐÈÉÊË GHIÌÍÎÏ JKL MNOÑÒÓÔÕÖØ PQRÞ STUßÙÚÛÜ VWX YZ-'Ýÿ"));
00265     for (QStringList::ConstIterator it = sets.begin(), it_a = sets_a.begin(); it!=sets.end(); ++it,++it_a)
00266         dc->addSet(*it_a,*it);
00267     dc->addMode("123");
00268     dc->addMode("@*!?");
00269     dc->addMode(tr("KEY"));
00270     dc->addMode(tr("Space"));
00271     dc->addMode(tr("Back"));
00272     dc->addMode(tr("Enter"));
00273     dc->addMode(tr("Shift"));
00274     configs.append(dc);
00275 
00276     CharStringConfig* number = new CharStringConfig(this);
00277     number->addChar("0");
00278     number->addChar("1");
00279     number->addChar("2");
00280     number->addChar("3");
00281     number->addChar("4");
00282     number->addChar("5");
00283     number->addChar("6");
00284     number->addChar("7");
00285     number->addChar("8");
00286     number->addChar("9");
00287     number->addChar("."); // #### or "," in some locales
00288     configs.append(number);
00289 
00290     CharConfig* punc = new CharConfig(this);
00291 
00292     punc->addChar(0,"\"");
00293     punc->addChar(0,"`");
00294     punc->addChar(0,"'");
00295     punc->addChar(0,"\253");
00296     punc->addChar(0,"\273");
00297     punc->addChar(0,"\277");
00298     punc->addChar(1,"(");
00299     punc->addChar(1,")");
00300     punc->addChar(1,"[");
00301     punc->addChar(1,"]");
00302     punc->addChar(1,"{");
00303     punc->addChar(1,"}");
00304 
00305     punc->addChar(0,"+");
00306     punc->addChar(0,"-");
00307     punc->addChar(0,"*");
00308     punc->addChar(0,"/");
00309     punc->addChar(0,"=");
00310     punc->addChar(0,"_");
00311     punc->addChar(0,"$");
00312     punc->addChar(0,"&");
00313     punc->addChar(1,"|");
00314     punc->addChar(1,"@");
00315     punc->addChar(1,"\\");
00316     punc->addChar(1,"#");
00317     punc->addChar(1,"^");
00318     punc->addChar(1,"~");
00319     punc->addChar(1,"<");
00320     punc->addChar(1,">");
00321 
00322     punc->addChar(0,".");
00323     punc->addChar(0,"?");
00324     punc->addChar(0,"!");
00325     punc->addChar(0,",");
00326     punc->addChar(0,";");
00327     punc->addChar(1,":");
00328     punc->addChar(1,"\267");
00329     punc->addChar(1,"\277");
00330     punc->addChar(1,"\241");
00331     punc->addChar(1,"\367");
00332 
00333     punc->addChar(0,"$");
00334     punc->addChar(0,"\242");
00335     punc->addChar(0,"\245");
00336     punc->addChar(1,"\243");
00337     punc->addChar(1,"\244");
00338     punc->addChar(1,"\260");
00339 
00340     configs.append(punc);
00341 
00342     KeycodeConfig* keys = new KeycodeConfig(this);
00343     keys->addKey(0,QPixmap(Esc_xpm),Key_Escape);
00344     keys->addKey(0,QPixmap(BS_xpm),Key_Backspace);
00345     keys->addGap(0,10);
00346 
00347     keys->addKey(0,QPixmap(Ins_xpm),Key_Insert);
00348     keys->addKey(0,QPixmap(Home_xpm),Key_Home);
00349     keys->addKey(0,QPixmap(PgUp_xpm),Key_PageUp);
00350 
00351     keys->addGap(0,25);
00352     keys->addKey(0,QPixmap(Up_xpm),Key_Up);
00353     keys->addGap(0,15);
00354 
00355     keys->addKey(1,QPixmap(BackTab_xpm),Key_Tab);
00356     keys->addGap(1,3);
00357     keys->addKey(1,QPixmap(Tab_xpm),Key_Tab);
00358     keys->addGap(1,10);
00359 
00360     keys->addKey(1,QPixmap(Del_xpm),Key_Delete);
00361     keys->addGap(1,2);
00362     keys->addKey(1,QPixmap(End_xpm),Key_End);
00363     keys->addGap(1,3);
00364     keys->addKey(1,QPixmap(PgDn_xpm),Key_PageDown);
00365 
00366     keys->addGap(1,10);
00367     keys->addKey(1,QPixmap(Left_xpm),Key_Left);
00368     keys->addKey(1,QPixmap(Down_xpm),Key_Down);
00369     keys->addKey(1,QPixmap(Right_xpm),Key_Right);
00370 
00371     keys->addGap(1,13);
00372     keys->addKey(1,QPixmap(Space_xpm),Key_Space);
00373 
00374     keys->addGap(0,10);
00375     keys->addKey(0,QPixmap(Enter_xpm),Key_Return);
00376 
00377     configs.append(keys);
00378 }
00379 
00380 PickboardPicks::~PickboardPicks()
00381 {
00382 }
00383 
00384 QSize PickboardPicks::sizeHint() const
00385 {
00386     return QSize(240,fontMetrics().lineSpacing()*2+3);
00387 }
00388 
00389 void PickboardPicks::drawContents(QPainter* p)
00390 {
00391     config()->draw(p);
00392 }
00393 
00394 void PickboardPicks::mousePressEvent(QMouseEvent* e)
00395 {
00396     config()->pickPoint(e->pos(),TRUE);
00397 }
00398 
00399 void PickboardPicks::mouseDoubleClickEvent(QMouseEvent* e)
00400 {
00401     config()->pickPoint(e->pos(),TRUE);
00402 }
00403 
00404 void PickboardPicks::mouseReleaseEvent(QMouseEvent* e)
00405 {
00406     config()->pickPoint(e->pos(),FALSE);
00407 }
00408 
00409 void PickboardPicks::setMode(int m)
00410 {
00411     mode = m;
00412 }
00413 
00414 void PickboardPicks::resetState()
00415 {
00416     config()->doMenu(100);
00417 }

Generated on Sat Nov 5 16:16:04 2005 for OPIE by  doxygen 1.4.2