You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
191 lines
4.8 KiB
191 lines
4.8 KiB
#include <kapp.h>
|
|
#include <kconfig.h>
|
|
#include <klocale.h>
|
|
#include <kstddirs.h>
|
|
|
|
#include <keys.h>
|
|
|
|
#include <kaccel.h>
|
|
#include <qpushbt.h>
|
|
#include <qlabel.h>
|
|
#include <qframe.h>
|
|
#include <qkeycode.h>
|
|
#include <qpixmap.h>
|
|
#include <qstring.h>
|
|
|
|
Keys::Keys( QWidget *parent, const char *name)
|
|
: QDialog( parent, name, TRUE )
|
|
{
|
|
KStandardDirs *dirs = KGlobal::dirs();
|
|
|
|
QPushButton *okButton = new QPushButton(this);
|
|
okButton->setText(i18n("Ok"));
|
|
okButton->setFixedSize(okButton->size());
|
|
connect( okButton, SIGNAL(clicked()),this, SLOT(ok()) );
|
|
okButton->move(20,210);
|
|
|
|
QPushButton *defaultButton = new QPushButton(this);
|
|
defaultButton->setText(i18n("Defaults"));
|
|
defaultButton->setFixedSize(defaultButton->size());
|
|
connect( defaultButton, SIGNAL(clicked()),this, SLOT(defaults()) );
|
|
defaultButton->move(140,210);
|
|
|
|
QPushButton *cancelButton = new QPushButton(this);
|
|
cancelButton->setText(i18n("Cancel"));
|
|
cancelButton->setFixedSize(cancelButton->size());
|
|
connect( cancelButton, SIGNAL(clicked()),this, SLOT(reject()) );
|
|
cancelButton->move(260,210);
|
|
|
|
QFrame *separator = new QFrame(this);
|
|
separator->setFrameStyle( QFrame::HLine | QFrame::Sunken );
|
|
separator->setGeometry( 20, 190, 340, 4 );
|
|
|
|
for ( int x = 0; x < 4; x++) {
|
|
QLabel *l = new QLabel(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 );
|
|
|
|
QString pixPath;
|
|
|
|
QPushButton *up = new QPushButton(this);
|
|
pixPath = dirs->findResource("appdata", "pics/up.xpm");
|
|
up->setPixmap( QPixmap(pixPath));
|
|
up->setFixedSize(up->pixmap()->size());
|
|
connect( up, SIGNAL(clicked()),this, SLOT(butUp()) );
|
|
up->move(180, 50);
|
|
|
|
QPushButton *down = new QPushButton(this);
|
|
pixPath = dirs->findResource("appdata", "pics/down.xpm");
|
|
down->setPixmap( QPixmap(pixPath));
|
|
down->setFixedSize(down->pixmap()->size());
|
|
connect( down, SIGNAL(clicked()),this, SLOT(butDown()) );
|
|
down->move(180, 130);
|
|
|
|
QPushButton *left = new QPushButton(this);
|
|
pixPath = dirs->findResource("appdata", "pics/left.xpm");
|
|
left->setPixmap( QPixmap(pixPath));
|
|
left->setFixedSize(left->pixmap()->size());
|
|
connect( left, SIGNAL(clicked()),this, SLOT(butLeft()) );
|
|
left->move(140, 90);
|
|
|
|
QPushButton *right = new QPushButton(this);
|
|
pixPath = dirs->findResource("appdata", "pics/right.xpm");
|
|
right->setPixmap( QPixmap(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 Keys::keyPressEvent( QKeyEvent *e )
|
|
{
|
|
uint kCode = e->key() & ~(SHIFT | CTRL | ALT);
|
|
QString string = KAccel::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 Keys::butUp()
|
|
{
|
|
getKey(0);
|
|
}
|
|
|
|
void Keys::butDown()
|
|
{
|
|
getKey(1);
|
|
}
|
|
|
|
void Keys::butLeft()
|
|
{
|
|
getKey(2);
|
|
}
|
|
|
|
void Keys::butRight()
|
|
{
|
|
getKey(3);
|
|
}
|
|
|
|
void Keys::getKey(int i)
|
|
{
|
|
if ( lab != 0)
|
|
focusOut(lab);
|
|
|
|
focusIn(labels[i]);
|
|
}
|
|
|
|
void Keys::focusOut(QLabel *l)
|
|
{
|
|
l->setFrameStyle( QFrame::NoFrame );
|
|
l->setBackgroundColor(backgroundColor());
|
|
l->repaint();
|
|
}
|
|
|
|
void Keys::focusIn(QLabel *l)
|
|
{
|
|
lab = l;
|
|
lab->setFrameStyle( QFrame::Panel | QFrame::Sunken );
|
|
lab->setBackgroundColor(white);
|
|
lab->repaint();
|
|
}
|
|
|
|
void Keys::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 Keys::init()
|
|
{
|
|
QString up("Up");
|
|
up = kapp->config()->readEntry("upKey", (const char*) up);
|
|
labels[0]->setText(up);
|
|
|
|
QString down("Down");
|
|
down = kapp->config()->readEntry("downKey", (const char*) down);
|
|
labels[1]->setText(down);
|
|
|
|
QString left("Left");
|
|
left = kapp->config()->readEntry("leftKey", (const char*) left);
|
|
labels[2]->setText(left);
|
|
|
|
QString right("Right");
|
|
right = kapp->config()->readEntry("rightKey", (const char*) right);
|
|
labels[3]->setText(right);
|
|
}
|
|
|
|
void Keys::ok()
|
|
{
|
|
kapp->config()->writeEntry("upKey", (const char*) labels[0]->text() );
|
|
kapp->config()->writeEntry("downKey", (const char*) labels[1]->text() );
|
|
kapp->config()->writeEntry("leftKey", (const char*) labels[2]->text() );
|
|
kapp->config()->writeEntry("rightKey",(const char*) labels[3]->text() );
|
|
kapp->config()->sync();
|
|
|
|
accept();
|
|
}
|