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

picker.cpp

Go to the documentation of this file.
00001 #include "picker.h"
00002 
00003 #include <opie2/odebug.h>
00004 
00005 #include <qtimer.h>
00006 #include <qlayout.h>
00007 
00008 char PickerLabel::lastLetter = '\0';
00009 
00010 PickerLabel::PickerLabel( QWidget *parent, const char *name )
00011         : QLabel ( parent, name )
00012 {
00013         currentLetter = 0;
00014         //lastLetter = 0;
00015 
00016         letter1 = '\0';
00017         letter2 = '\0';
00018         letter3 = '\0';
00019 
00020         // setFont( QFont( "smallsmooth", 9 ) );
00021         setFont( QFont::defaultFont() );
00022         setTextFormat( Qt::RichText );
00023 
00024 }
00025 
00026 PickerLabel::~PickerLabel()
00027 {
00028 
00029 }
00030 
00031 void PickerLabel::setLetters( char ch1, char ch2, char ch3 )
00032 {
00033         QString tmpStr;
00034 
00035         if (ch1 != '\0')
00036                 letter1 = ch1;
00037         else
00038                 letter1 = ' ';
00039 
00040         if (ch2 != '\0')
00041                 letter2 = ch2;
00042         else
00043                 letter2 = ' ';
00044 
00045         if (ch3 != '\0')
00046                 letter3 = ch3;
00047         else
00048                 letter3 = ' ';
00049 
00050         tmpStr = "<qt>";
00051         tmpStr += letter1;
00052         tmpStr += letter2;
00053         tmpStr += letter3;
00054         tmpStr += "</qt>";
00055 
00056         setText(tmpStr);
00057 
00058         currentLetter = 0;
00059 
00060 }
00061 
00062 void PickerLabel::clearLetter()
00063 {
00064 
00065         QString tmpStr;
00066 
00067         tmpStr = "<qt>";
00068         tmpStr += letter1;
00069         tmpStr += letter2;
00070         tmpStr += letter3;
00071         tmpStr += "</qt>";
00072 
00073         setText(tmpStr);
00074 
00075         currentLetter = 0;
00076 
00077 }
00078 
00079 void PickerLabel::mousePressEvent( QMouseEvent* e )
00080 {
00081         // If one pickerlabel is was, and an other is now selected, we
00082         // have to simulate the releaseevent.. Otherwise the new label
00083         // will not get a highlighted  letter..
00084         // Maybe there is a more intelligent solution, but this works and I am tired.. (se)
00085         if ( ( currentLetter == 0 ) && ( lastLetter != '\0' ) ) mouseReleaseEvent( e );
00086 }
00087 
00088 void PickerLabel::mouseReleaseEvent( QMouseEvent* /* e */ )
00089 {
00090         QString tmpStr;
00091 
00092         if (lastLetter != letter1 && lastLetter != letter2 && lastLetter != letter3 && lastLetter != '\0')
00093                 QTimer::singleShot( 0, this, SLOT(emitClearSignal()) );
00094 
00095         switch (currentLetter) {
00096                 case 0:
00097                         tmpStr = "<qt><u><b><font color=\"#FF00FF\">";
00098                         tmpStr += letter1;
00099                         tmpStr += "</font></b></u>";
00100                         tmpStr += letter2;
00101                         tmpStr += letter3;
00102                         tmpStr += "</qt>";
00103 
00104                         setText(tmpStr);
00105 
00106                         currentLetter++;
00107                         lastLetter = letter1;
00108                         emit selectedLetter( letter1 );
00109                         break;
00110 
00111                 case 1:
00112                         tmpStr = "<qt>";
00113                         tmpStr += letter1;
00114                         tmpStr += "<u><b><font color=\"#FF00FF\">";
00115                         tmpStr += letter2;
00116                         tmpStr += "</font></b></u>";
00117                         tmpStr += letter3;
00118                         tmpStr += "</qt>";
00119 
00120                         setText(tmpStr);
00121 
00122                         currentLetter++;
00123                         lastLetter = letter2;
00124                         emit selectedLetter( letter2 );
00125                         break;
00126 
00127                 case 2:
00128                         tmpStr = "<qt>";
00129                         tmpStr += letter1;
00130                         tmpStr += letter2;
00131                         tmpStr += "<u><b><font color=\"#FF00FF\">";
00132                         tmpStr += letter3;
00133                         tmpStr += "</font></b></u></qt>";
00134 
00135                         setText(tmpStr);
00136 
00137                         currentLetter++;
00138                         lastLetter = letter3;
00139                         emit selectedLetter( letter3 );
00140                         break;
00141 
00142                 default:
00143                         clearLetter();
00144                         lastLetter = '\0';
00145                         emit selectedLetter( '\0' );
00146 
00147 
00148         }
00149 }
00150 
00151 void PickerLabel::emitClearSignal() {
00152         emit clearAll();
00153 }
00154 
00155 LetterPicker::LetterPicker( QWidget *parent, const char *name )
00156         : QFrame( parent, name )
00157 {
00158         QHBoxLayout *l = new QHBoxLayout(this);
00159 
00160         lblABC = new PickerLabel( this );
00161         l->addWidget( lblABC );
00162 
00163         lblDEF = new PickerLabel( this );
00164         l->addWidget( lblDEF );
00165 
00166         lblGHI = new PickerLabel( this );
00167         l->addWidget( lblGHI );
00168 
00169         lblJKL = new PickerLabel( this );
00170         l->addWidget( lblJKL );
00171 
00172         lblMNO = new PickerLabel( this );
00173         l->addWidget( lblMNO );
00174 
00175         lblPQR = new PickerLabel( this );
00176         l->addWidget( lblPQR );
00177 
00178         lblSTU = new PickerLabel( this );
00179         l->addWidget( lblSTU );
00180 
00181         lblVWX = new PickerLabel( this );
00182         l->addWidget( lblVWX );
00183 
00184         lblYZ = new PickerLabel( this );
00185         l->addWidget( lblYZ );
00186 
00187         lblABC->setLetters( 'A', 'B', 'C' );
00188         lblDEF->setLetters( 'D', 'E', 'F' );
00189         lblGHI->setLetters( 'G', 'H', 'I' );
00190         lblJKL->setLetters( 'J', 'K', 'L' );
00191         lblMNO->setLetters( 'M', 'N', 'O' );
00192         lblPQR->setLetters( 'P', 'Q', 'R' );
00193         lblSTU->setLetters( 'S', 'T', 'U' );
00194         lblVWX->setLetters( 'V', 'W', 'X' );
00195         lblYZ->setLetters( 'Y', 'Z', '#' );
00196 
00197         connect(lblABC, SIGNAL(selectedLetter(char)), this, SLOT(newLetter(char)));
00198         connect(lblDEF, SIGNAL(selectedLetter(char)), this, SLOT(newLetter(char)));
00199         connect(lblGHI, SIGNAL(selectedLetter(char)), this, SLOT(newLetter(char)));
00200         connect(lblJKL, SIGNAL(selectedLetter(char)), this, SLOT(newLetter(char)));
00201         connect(lblMNO, SIGNAL(selectedLetter(char)), this, SLOT(newLetter(char)));
00202         connect(lblPQR, SIGNAL(selectedLetter(char)), this, SLOT(newLetter(char)));
00203         connect(lblSTU, SIGNAL(selectedLetter(char)), this, SLOT(newLetter(char)));
00204         connect(lblVWX, SIGNAL(selectedLetter(char)), this, SLOT(newLetter(char)));
00205         connect(lblYZ, SIGNAL(selectedLetter(char)), this, SLOT(newLetter(char)));
00206         connect(lblABC, SIGNAL(clearAll()), this, SLOT(clear()));
00207         connect(lblDEF, SIGNAL(clearAll()), this, SLOT(clear()));
00208         connect(lblGHI, SIGNAL(clearAll()), this, SLOT(clear()));
00209         connect(lblJKL, SIGNAL(clearAll()), this, SLOT(clear()));
00210         connect(lblMNO, SIGNAL(clearAll()), this, SLOT(clear()));
00211         connect(lblPQR, SIGNAL(clearAll()), this, SLOT(clear()));
00212         connect(lblSTU, SIGNAL(clearAll()), this, SLOT(clear()));
00213         connect(lblVWX, SIGNAL(clearAll()), this, SLOT(clear()));
00214         connect(lblYZ, SIGNAL(clearAll()), this, SLOT(clear()));
00215 
00216 }
00217 
00218 LetterPicker::~LetterPicker()
00219 {
00220 }
00221 
00222 QSizePolicy LetterPicker::sizePolicy () const
00223 {
00224         return QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Maximum);
00225 }
00226 
00227 void LetterPicker::clear()
00228 {
00229         lblABC->clearLetter();
00230         lblDEF->clearLetter();
00231         lblGHI->clearLetter();
00232         lblJKL->clearLetter();
00233         lblMNO->clearLetter();
00234         lblPQR->clearLetter();
00235         lblSTU->clearLetter();
00236         lblVWX->clearLetter();
00237         lblYZ->clearLetter();
00238 }
00239 
00240 void LetterPicker::newLetter( char letter )
00241 {
00242         odebug << "LetterClicked" << oendl;
00243         emit letterClicked( letter );
00244 
00245 }

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