diff options
Diffstat (limited to 'tdepacman/keys.cpp')
-rw-r--r-- | tdepacman/keys.cpp | 192 |
1 files changed, 192 insertions, 0 deletions
diff --git a/tdepacman/keys.cpp b/tdepacman/keys.cpp new file mode 100644 index 0000000..df8f980 --- /dev/null +++ b/tdepacman/keys.cpp @@ -0,0 +1,192 @@ +#include <kapp.h> +#include <kstddirs.h> + +#include <tdeconfig.h> +#include <tdelocale.h> +#include <tdeaccel.h> +#include <tqpushbt.h> +#include <tqlabel.h> +#include <tqframe.h> +#include <tqkeycode.h> +#include <tqpixmap.h> +#include <tqstring.h> + +#include "keys.h" + +PKeys::PKeys( TQWidget *parent, const char *name) + : TQDialog( parent, name, TRUE, 0 ) +{ + TDEStandardDirs *dirs = TDEGlobal::dirs(); + + TQPushButton *okButton = new TQPushButton(this); + okButton->setText(i18n("Ok")); + okButton->setFixedSize(okButton->size()); + connect( okButton, SIGNAL(clicked()),this, SLOT(ok()) ); + okButton->move(20,210); + + TQPushButton *defaultButton = new TQPushButton(this); + defaultButton->setText(i18n("Defaults")); + defaultButton->setFixedSize(defaultButton->size()); + connect( defaultButton, SIGNAL(clicked()),this, SLOT(defaults()) ); + defaultButton->move(140,210); + + TQPushButton *cancelButton = new TQPushButton(this); + cancelButton->setText(i18n("Cancel")); + cancelButton->setFixedSize(cancelButton->size()); + connect( cancelButton, SIGNAL(clicked()),this, SLOT(reject()) ); + cancelButton->move(260,210); + + TQFrame *separator = new TQFrame(this); + separator->setFrameStyle( TQFrame::HLine | TQFrame::Sunken ); + separator->setGeometry( 20, 190, 340, 4 ); + + for ( int x = 0; x < 4; x++) { + TQLabel *l = new TQLabel(this); + l->setAlignment(AlignCenter); + labels[x] = l; + } + + labels[0]->setGeometry(120, 20, 140, 20 ); + labels[1]->setGeometry(120,160, 140, 20 ); + labels[2]->setGeometry( 20, 92, 100, 20 ); + labels[3]->setGeometry(265, 92, 100, 20 ); + + TQString pixPath; + + TQPushButton *up = new TQPushButton(this); + pixPath = dirs->findResource("appdata", "pics/up.xpm"); + up->setPixmap( TQPixmap(pixPath)); + up->setFixedSize(up->pixmap()->size()); + connect( up, SIGNAL(clicked()),this, SLOT(butUp()) ); + up->move(180, 50); + + TQPushButton *down = new TQPushButton(this); + pixPath = dirs->findResource("appdata", "pics/down.xpm"); + down->setPixmap( TQPixmap(pixPath)); + down->setFixedSize(down->pixmap()->size()); + connect( down, SIGNAL(clicked()),this, SLOT(butDown()) ); + down->move(180, 130); + + TQPushButton *left = new TQPushButton(this); + pixPath = dirs->findResource("appdata", "pics/left.xpm"); + left->setPixmap( TQPixmap(pixPath)); + left->setFixedSize(left->pixmap()->size()); + connect( left, SIGNAL(clicked()),this, SLOT(butLeft()) ); + left->move(140, 90); + + TQPushButton *right = new TQPushButton(this); + pixPath = dirs->findResource("appdata", "pics/right.xpm"); + right->setPixmap( TQPixmap(pixPath)); + right->setFixedSize(right->pixmap()->size()); + connect( right, SIGNAL(clicked()),this, SLOT(butRight()) ); + right->move(220, 90); + + + setCaption(i18n("Change Direction Keys")); + setFixedSize(380, 260); + lab = 0; + init(); +} + +void PKeys::keyPressEvent( TQKeyEvent *e ) +{ + uint kCode = e->key() & ~(SHIFT | CTRL | ALT); + TQString string = TDEAccel::keyToString(kCode); + + if (lab != 0) { + if ( string.isNull() ) + lab->setText(i18n("Undefined key")); + else + lab->setText(string); + } + else if ( lab == 0 && e->key() == Key_Escape) + reject(); +} + +void PKeys::butUp() +{ + getKey(0); +} + +void PKeys::butDown() +{ + getKey(1); +} + +void PKeys::butLeft() +{ + getKey(2); +} + +void PKeys::butRight() +{ + getKey(3); +} + +void PKeys::getKey(int i) +{ + if ( lab != 0) + focusOut(lab); + + focusIn(labels[i]); +} + +void PKeys::focusOut(TQLabel *l) +{ + l->setFrameStyle( TQFrame::NoFrame ); + l->setBackgroundColor(backgroundColor()); + l->repaint(); +} + +void PKeys::focusIn(TQLabel *l) +{ + lab = l; + lab->setFrameStyle( TQFrame::Panel | TQFrame::Sunken ); + lab->setBackgroundColor(white); + lab->repaint(); +} + +void PKeys::defaults() +{ + if ( lab != 0) + focusOut(lab); + + lab = 0; + + labels[0]->setText("Up"); + labels[1]->setText("Down"); + labels[2]->setText("Left"); + labels[3]->setText("Right"); +} + +void PKeys::init() +{ + TQString up("Up"); + up = kapp->config()->readEntry("upKey", up); + labels[0]->setText(up); + + TQString down("Down"); + down = kapp->config()->readEntry("downKey", down); + labels[1]->setText(down); + + TQString left("Left"); + left = kapp->config()->readEntry("leftKey", left); + labels[2]->setText(left); + + TQString right("Right"); + right = kapp->config()->readEntry("rightKey", right); + labels[3]->setText(right); +} + +void PKeys::ok() +{ + kapp->config()->writeEntry("upKey", labels[0]->text() ); + kapp->config()->writeEntry("downKey", labels[1]->text() ); + kapp->config()->writeEntry("leftKey", labels[2]->text() ); + kapp->config()->writeEntry("rightKey", labels[3]->text() ); + kapp->config()->sync(); + + accept(); +} + +#include "keys.moc" |