qwwnumpad.cpp

00001 //
00002 // C++ Implementation: %{MODULE}
00003 //
00004 // Description:
00005 //
00006 //
00007 // Author: %{AUTHOR} <%{EMAIL}>, (C) %{YEAR}
00008 //
00009 // Copyright: See COPYING file that comes with this distribution
00010 //
00011 //
00012 #include "qwwnumpad.h"
00013 #include <QLayout>
00014 #include <QButtonGroup>
00015 #include <QToolButton>
00016 
00037 QwwNumPad::QwwNumPad(QWidget *parent) : QWidget(parent) {
00038     QGridLayout *l = new QGridLayout(this);
00039     l->setSpacing(2);
00040     l->setMargin(2);
00041     QButtonGroup *group = new QButtonGroup(this);
00042     for (int i=0;i<9;i++) {
00043         QToolButton *b = new QToolButton;
00044         b->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
00045         b->setObjectName(QString("b%1").arg(i+1));
00046         b->setText(QString::number(i+1));
00047         l->addWidget(b, i/3, i%3);
00048         group->addButton(b, i+1);
00049     }
00050     QToolButton *b = new QToolButton;
00051     b->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
00052     b->setObjectName("b0");
00053     b->setText("0");
00054     l->addWidget(b, 3, 1);
00055     group->addButton(b, 0);
00056 
00057     b = new QToolButton;
00058     b->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
00059     b->setObjectName("bAster");
00060     b->setText("*");
00061     l->addWidget(b, 3, 0);
00062     group->addButton(b, 10);
00063 
00064     b = new QToolButton;
00065     b->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
00066     b->setText("#");
00067     b->setObjectName("bHash");
00068     l->addWidget(b, 3, 2);
00069     group->addButton(b, 11);
00070     connect(group, SIGNAL(buttonClicked(int)), SLOT(_q_clicked(int)));
00071     setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
00072 }
00073 
00074 
00075 QwwNumPad::~QwwNumPad() {}
00076 
00077 void QwwNumPad::_q_clicked(int id) {
00078     if (id>=0 && id<10) {
00079         emit numberClicked(id);
00080         emit keyClicked(QString::number(id));
00081         return;
00082     }
00083     if (id==10) {
00084         emit asteriskClicked();
00085         emit keyClicked("*");
00086         return;
00087     }
00088     if (id==11) {
00089         emit hashClicked();
00090         emit keyClicked("#");
00091         return;
00092     }
00093 }
00094 
00108 void QwwNumPad::animateClick(const QString & b, int msec) {
00109     if (b.size()!=1) return;
00110     char key = b[0].toAscii();
00111     QList<QToolButton*> items;
00112     QString name;
00113     switch (key) {
00114     case '#':
00115         name = "bHash";
00116         break;
00117     case '*':
00118         name = "bAster";
00119         break;
00120     default:
00121         name = QString("b%1").arg(key);
00122     }
00123     QToolButton *button = qFindChild<QToolButton*>(this, name);
00124     if (!button) return;
00125     button->animateClick(msec);
00126 }
00127 
00128 

Generated on Sat Apr 21 21:54:36 2007 for wwWidgets by  doxygen 1.5.1