Created
March 6, 2017 15:35
-
-
Save jsm222/810cd4c5fb64f66b40f6b709f96fb6a3 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/lxqt-leave/keyenterreceiver.cpp b/lxqt-leave/keyenterreceiver.cpp | |
index 69cb6a4..ca27c5a 100644 | |
--- a/lxqt-leave/keyenterreceiver.cpp | |
+++ b/lxqt-leave/keyenterreceiver.cpp | |
@@ -1,6 +1,9 @@ | |
#include "keyenterreceiver.h" | |
-KeyEnterReceiver::KeyEnterReceiver(QObject *parent) : QObject(parent) | |
+#include <QDebug> | |
+KeyEnterReceiver::KeyEnterReceiver(QObject *parent,QVector<QToolButton*> *toolButtons) : QObject(parent) | |
{ | |
+this->buttons = QVector<QToolButton*>(6); | |
+this->buttons = *toolButtons; | |
} | |
bool KeyEnterReceiver::eventFilter(QObject* obj, QEvent* event) | |
@@ -10,6 +13,52 @@ bool KeyEnterReceiver::eventFilter(QObject* obj, QEvent* event) | |
if ( (key->key()==Qt::Key_Enter) || (key->key()==Qt::Key_Return) ) { | |
QToolButton *button = static_cast<QToolButton*>(obj); | |
emit button->clicked(button); | |
+ } | |
+ else if ( (key->key()==Qt::Key_Up) || (key->key()==Qt::Key_Down ) || (key->key()==Qt::Key_Left) || (key->key()==Qt::Key_Right )) { | |
+ QToolButton *button = static_cast<QToolButton*>(obj); | |
+ int i = this->buttons.indexOf(button); | |
+ switch(key->key()) { | |
+ case Qt::Key_Up:{ | |
+ if(i>2) { | |
+ i-=3; | |
+ } | |
+ else if(i<3 && i >0) { | |
+ i+=2; | |
+ } | |
+ break; | |
+ } | |
+ case Qt::Key_Down:{ | |
+ if(i<3) { | |
+ i+=3; | |
+ } | |
+ else if(i<5 && i >2) { | |
+ i-=2; | |
+ } | |
+ | |
+ | |
+ break; | |
+ } | |
+ case Qt::Key_Right:{ | |
+ i+=1; | |
+ if(i==6) { | |
+ i=0; | |
+ } | |
+ break; | |
+ } | |
+ | |
+ case Qt::Key_Left:{ | |
+ i-=1; | |
+ if(i==-1) { | |
+ i=5; | |
+ } | |
+ break; | |
+ } | |
+ } | |
+ this->buttons.at(i)->setFocus(); | |
+ | |
+ | |
+ | |
+ | |
} else { | |
return QObject::eventFilter(obj, event); | |
} | |
diff --git a/lxqt-leave/keyenterreceiver.h b/lxqt-leave/keyenterreceiver.h | |
index 929fc46..15370bf 100644 | |
--- a/lxqt-leave/keyenterreceiver.h | |
+++ b/lxqt-leave/keyenterreceiver.h | |
@@ -9,9 +9,10 @@ class KeyEnterReceiver : public QObject | |
{ | |
Q_OBJECT | |
public: | |
- explicit KeyEnterReceiver(QObject *parent = 0); | |
+ explicit KeyEnterReceiver(QObject *parent = 0,QVector<QToolButton*> *buttons=nullptr); | |
protected: | |
bool eventFilter(QObject* obj, QEvent* event); | |
+ QVector<QToolButton*> buttons; | |
signals: | |
public slots: | |
diff --git a/lxqt-leave/leavedialog.cpp b/lxqt-leave/leavedialog.cpp | |
index a1a45c5..f05bb76 100644 | |
--- a/lxqt-leave/leavedialog.cpp | |
+++ b/lxqt-leave/leavedialog.cpp | |
@@ -57,12 +57,11 @@ LeaveDialog::LeaveDialog(QWidget* parent) | |
*/ | |
QVector<QToolButton*> buttons(6); | |
buttons[0] = ui->logoutButton; | |
- buttons[1] = ui->lockscreenButton; | |
+ buttons[1] = ui->shutdownButton; | |
buttons[2] = ui->suspendButton; | |
- buttons[3] = ui->hibernateButton; | |
+ buttons[3] = ui->lockscreenButton; | |
buttons[4] = ui->rebootButton; | |
- buttons[5] = ui->shutdownButton; | |
- | |
+ buttons[5] = ui->hibernateButton; | |
int maxWidth = 0; | |
const int N = buttons.size(); | |
for (int i = 0; i < N; ++i) { | |
@@ -70,7 +69,7 @@ LeaveDialog::LeaveDialog(QWidget* parent) | |
buttons.at(i)->adjustSize(); | |
maxWidth = qMax(maxWidth, buttons.at(i)->width()); | |
} | |
- KeyEnterReceiver* key = new KeyEnterReceiver(); | |
+ KeyEnterReceiver* key = new KeyEnterReceiver(0,&buttons); | |
for (int i = 0; i < N; ++i) { | |
buttons.at(i)->setMinimumWidth(maxWidth); | |
diff --git a/lxqt-leave/leavedialog.ui b/lxqt-leave/leavedialog.ui | |
index f768dcf..ca0172f 100644 | |
--- a/lxqt-leave/leavedialog.ui | |
+++ b/lxqt-leave/leavedialog.ui | |
@@ -247,10 +247,10 @@ | |
<tabstops> | |
<tabstop>cancelButton</tabstop> | |
<tabstop>logoutButton</tabstop> | |
- <tabstop>lockscreenButton</tabstop> | |
<tabstop>shutdownButton</tabstop> | |
- <tabstop>rebootButton</tabstop> | |
<tabstop>suspendButton</tabstop> | |
+ <tabstop>lockscreenButton</tabstop> | |
+ <tabstop>rebootButton</tabstop> | |
<tabstop>hibernateButton</tabstop> | |
</tabstops> | |
<resources/> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment