00001
00002
00003
00004
00005
00006
00007
00008
00009
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