Diffstat (limited to 'noncore/securityplugins/pin/pin.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | noncore/securityplugins/pin/pin.cpp | 61 |
1 files changed, 51 insertions, 10 deletions
diff --git a/noncore/securityplugins/pin/pin.cpp b/noncore/securityplugins/pin/pin.cpp index 2accb9c..f1c52c5 100644 --- a/noncore/securityplugins/pin/pin.cpp +++ b/noncore/securityplugins/pin/pin.cpp @@ -79,2 +79,8 @@ signals: QString text; + + private slots: + void slotInput(); + void slotSkip(); + void slotOK(); + void slotBackspace(); }; @@ -96,2 +102,15 @@ PinDialog::PinDialog( QWidget* parent, const char* name, WFlags fl ) + connect ( button_0, SIGNAL( clicked()), SLOT( slotInput())); + connect ( button_1, SIGNAL( clicked()), SLOT( slotInput())); + connect ( button_2, SIGNAL( clicked()), SLOT( slotInput())); + connect ( button_3, SIGNAL( clicked()), SLOT( slotInput())); + connect ( button_4, SIGNAL( clicked()), SLOT( slotInput())); + connect ( button_5, SIGNAL( clicked()), SLOT( slotInput())); + connect ( button_6, SIGNAL( clicked()), SLOT( slotInput())); + connect ( button_7, SIGNAL( clicked()), SLOT( slotInput())); + connect ( button_8, SIGNAL( clicked()), SLOT( slotInput())); + connect ( button_9, SIGNAL( clicked()), SLOT( slotInput())); + connect ( button_Skip, SIGNAL( clicked()), SLOT( slotSkip())); + connect ( button_OK, SIGNAL( clicked()), SLOT( slotOK())); + button_0->installEventFilter( this ); @@ -108,3 +127,3 @@ PinDialog::PinDialog( QWidget* parent, const char* name, WFlags fl ) button_OK->installEventFilter( this ); - setFocus(); + button_OK->setFocus(); } @@ -117,10 +136,26 @@ PinDialog::~PinDialog() -/// Record the pressed numbers, and the Skip and Enter commands +/// Handle keyboard events bool PinDialog::eventFilter( QObject*o, QEvent*e ) { - if ( e->type() == QEvent::MouseButtonRelease ) { - if ( o == button_OK ) { - emit passwordEntered( text ); + if(e->type() == QEvent::KeyPress) { + switch(((QKeyEvent *)e)->key()) { + case Key_0...Key_9: + input(((QKeyEvent *)e)->text()); + return TRUE; + case Key_Backspace: + slotBackspace(); + return TRUE; + } + } + return FALSE; +} + +void PinDialog::slotInput() +{ + QPushButton *l = (QPushButton*)sender(); + input(l->text().stripWhiteSpace()); } - else if ( o == button_Skip ) { + +void PinDialog::slotSkip() +{ isSkip = TRUE; @@ -128,8 +163,14 @@ bool PinDialog::eventFilter( QObject*o, QEvent*e ) } - else { - QLabel *l = (QLabel*)o; - input(l->text()); + +void PinDialog::slotOK() +{ + emit passwordEntered( text ); } + +void PinDialog::slotBackspace() +{ + if(text.length() > 0) { + text.truncate( text.length() - 1 ); + display->setText( text ); } - return FALSE; } |