00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
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();
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(".");
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 }