Commit f5634ecc765a9a1fd31b1feb6e26b0a8d3db706d
1 parent
d804d82b41
Exists in
master
and in
2 other branches
엔코더 구현
- 즐겨찾기 이름 설정 팝업 - 프로그래밍 모드 항목 이름 설정 팝업 - 수동 요리 예약 시간 설정 팝업 - 수동 요리 예약 시간 표시 팝업
Showing
13 changed files
with
296 additions
and
9 deletions
Show diff stats
app/gui/oven_control/favoritenamepopup.cpp
... | ... | @@ -13,6 +13,12 @@ FavoriteNamePopup::FavoriteNamePopup(QWidget *parent) : |
13 | 13 | { |
14 | 14 | ui->setupUi(this); |
15 | 15 | |
16 | + connect(ui->keyboard, SIGNAL(onOkKeyClicked()), ui->keyboard, SLOT(focusOutKeyboard())); | |
17 | + connect(ui->keyboard, SIGNAL(onCancelKeyClicked()), ui->keyboard, SLOT(focusOutKeyboard())); | |
18 | + connect(ui->keyboard, SIGNAL(onCancelKeyClicked()), SLOT(revert())); | |
19 | + | |
20 | + ui->lineEdit->installEventFilter(this); | |
21 | + | |
16 | 22 | ui->lineEdit->setFocus(); |
17 | 23 | ui->lineEdit->selectAll(); |
18 | 24 | |
... | ... | @@ -37,6 +43,20 @@ FavoriteNamePopup::~FavoriteNamePopup() |
37 | 43 | delete ui; |
38 | 44 | } |
39 | 45 | |
46 | +bool FavoriteNamePopup::eventFilter(QObject */*watched*/, QEvent *event) | |
47 | +{ | |
48 | + switch (event->type()) | |
49 | + { | |
50 | + case QEvent::FocusIn: | |
51 | + lastLine = ui->lineEdit->text(); | |
52 | + break; | |
53 | + default: | |
54 | + break; | |
55 | + } | |
56 | + | |
57 | + return false; | |
58 | +} | |
59 | + | |
40 | 60 | void FavoriteNamePopup::keyPressEvent(QKeyEvent *event) |
41 | 61 | { |
42 | 62 | switch (event->key()) |
... | ... | @@ -102,6 +122,14 @@ void FavoriteNamePopup::cancel() |
102 | 122 | deleteLater(); |
103 | 123 | } |
104 | 124 | |
125 | +void FavoriteNamePopup::revert() | |
126 | +{ | |
127 | + ui->lineEdit->setText(lastLine); | |
128 | + | |
129 | + if (focusWidget() == ui->lineEdit) | |
130 | + ui->lineEdit->selectAll(); | |
131 | +} | |
132 | + | |
105 | 133 | void FavoriteNamePopup::on_okButton_clicked() |
106 | 134 | { |
107 | 135 | ok(); |
... | ... | @@ -114,15 +142,32 @@ void FavoriteNamePopup::on_cancelButton_clicked() |
114 | 142 | |
115 | 143 | void FavoriteNamePopup::onEncoderLeft() |
116 | 144 | { |
117 | - | |
145 | + if (focusWidget() == ui->lineEdit) | |
146 | + ui->cancelButton->setFocus(); | |
147 | + else | |
148 | + focusPreviousChild(); | |
118 | 149 | } |
119 | 150 | |
120 | 151 | void FavoriteNamePopup::onEncoderRight() |
121 | 152 | { |
122 | - | |
153 | + if (focusWidget() == ui->cancelButton) | |
154 | + { | |
155 | + ui->lineEdit->setFocus(); | |
156 | + ui->lineEdit->selectAll(); | |
157 | + } | |
158 | + else | |
159 | + focusNextChild(); | |
123 | 160 | } |
124 | 161 | |
125 | 162 | void FavoriteNamePopup::onEncoderClicked(QWidget *clicked) |
126 | 163 | { |
127 | - | |
164 | + QPushButton *b = qobject_cast<QPushButton *>(clicked); | |
165 | + if (b) | |
166 | + b->click(); | |
167 | + else | |
168 | + { | |
169 | + QLineEdit *e = qobject_cast<QLineEdit *>(clicked); | |
170 | + if (e) | |
171 | + ui->keyboard->focusInKeyboard(); | |
172 | + } | |
128 | 173 | } | ... | ... |
app/gui/oven_control/favoritenamepopup.h
... | ... | @@ -20,6 +20,8 @@ public: |
20 | 20 | explicit FavoriteNamePopup(QWidget *parent, AutoCookSetting setting); |
21 | 21 | ~FavoriteNamePopup(); |
22 | 22 | |
23 | + bool eventFilter(QObject *watched, QEvent *event); | |
24 | + | |
23 | 25 | protected: |
24 | 26 | void keyPressEvent(QKeyEvent *event); |
25 | 27 | void keyReleaseEvent(QKeyEvent *event); |
... | ... | @@ -37,9 +39,12 @@ private: |
37 | 39 | void onEncoderRight(); |
38 | 40 | void onEncoderClicked(QWidget *clicked); |
39 | 41 | |
42 | + QString lastLine; | |
43 | + | |
40 | 44 | private slots: |
41 | 45 | void ok(); |
42 | 46 | void cancel(); |
47 | + void revert(); | |
43 | 48 | void on_okButton_clicked(); |
44 | 49 | void on_cancelButton_clicked(); |
45 | 50 | }; | ... | ... |
app/gui/oven_control/favoritenamepopup.ui
... | ... | @@ -163,6 +163,11 @@ QPushButton:pressed, QPushButton:focus { color: yellow; }</string> |
163 | 163 | <container>1</container> |
164 | 164 | </customwidget> |
165 | 165 | </customwidgets> |
166 | + <tabstops> | |
167 | + <tabstop>lineEdit</tabstop> | |
168 | + <tabstop>okButton</tabstop> | |
169 | + <tabstop>cancelButton</tabstop> | |
170 | + </tabstops> | |
166 | 171 | <resources/> |
167 | 172 | <connections/> |
168 | 173 | </ui> | ... | ... |
app/gui/oven_control/formatterspinbox.cpp
... | ... | @@ -30,8 +30,8 @@ FormatterSpinBox::FormatterSpinBox(QWidget *parent) |
30 | 30 | } |
31 | 31 | |
32 | 32 | void FormatterSpinBox::focusInEvent(QFocusEvent *event){ |
33 | - qDebug() << "focus in"; | |
34 | - if(event->reason() == Qt::MouseFocusReason) QTimer::singleShot(200,this,SLOT(selectAll())); | |
33 | + QSpinBox::focusInEvent(event); | |
34 | + if(event->reason() == Qt::MouseFocusReason) QTimer::singleShot(0,this,SLOT(selectAll())); | |
35 | 35 | else selectAll(); |
36 | 36 | emit focusInEdit(); |
37 | 37 | } | ... | ... |
app/gui/oven_control/manualcookwindow.cpp
... | ... | @@ -1018,7 +1018,7 @@ void ManualCookWindow::on_favoriteButton_clicked() |
1018 | 1018 | p->showFullScreen(); |
1019 | 1019 | |
1020 | 1020 | focused = ui->favoriteButton; |
1021 | - connect(p, SIGNAL(destroyed(QObject*)), SLOT(focusAgain())); | |
1021 | + connect(p, SIGNAL(rejected()), SLOT(focusAgain())); | |
1022 | 1022 | connect(p, SIGNAL(accepted()), SLOT(addFavorite())); |
1023 | 1023 | |
1024 | 1024 | if (startCookingTimer.isActive()) | ... | ... |
app/gui/oven_control/programmingnamepopup.cpp
... | ... | @@ -14,6 +14,12 @@ ProgrammingNamePopup::ProgrammingNamePopup(QWidget *parent, CookRecord record) : |
14 | 14 | |
15 | 15 | setAttribute(Qt::WA_DeleteOnClose); |
16 | 16 | |
17 | + connect(ui->keyboard, SIGNAL(onOkKeyClicked()), ui->keyboard, SLOT(focusOutKeyboard())); | |
18 | + connect(ui->keyboard, SIGNAL(onCancelKeyClicked()), ui->keyboard, SLOT(focusOutKeyboard())); | |
19 | + connect(ui->keyboard, SIGNAL(onCancelKeyClicked()), SLOT(revert())); | |
20 | + | |
21 | + ui->lineEdit->installEventFilter(this); | |
22 | + | |
17 | 23 | ui->lineEdit->setText(record.name); |
18 | 24 | ui->lineEdit->setFocus(); |
19 | 25 | ui->lineEdit->selectAll(); |
... | ... | @@ -27,6 +33,20 @@ ProgrammingNamePopup::~ProgrammingNamePopup() |
27 | 33 | delete ui; |
28 | 34 | } |
29 | 35 | |
36 | +bool ProgrammingNamePopup::eventFilter(QObject */*watched*/, QEvent *event) | |
37 | +{ | |
38 | + switch (event->type()) | |
39 | + { | |
40 | + case QEvent::FocusIn: | |
41 | + lastLine = ui->lineEdit->text(); | |
42 | + break; | |
43 | + default: | |
44 | + break; | |
45 | + } | |
46 | + | |
47 | + return false; | |
48 | +} | |
49 | + | |
30 | 50 | void ProgrammingNamePopup::keyPressEvent(QKeyEvent *event) |
31 | 51 | { |
32 | 52 | switch (event->key()) |
... | ... | @@ -62,6 +82,14 @@ void ProgrammingNamePopup::keyReleaseEvent(QKeyEvent *event) |
62 | 82 | } |
63 | 83 | } |
64 | 84 | |
85 | +void ProgrammingNamePopup::revert() | |
86 | +{ | |
87 | + ui->lineEdit->setText(lastLine); | |
88 | + | |
89 | + if (focusWidget() == ui->lineEdit) | |
90 | + ui->lineEdit->selectAll(); | |
91 | +} | |
92 | + | |
65 | 93 | void ProgrammingNamePopup::on_okButton_clicked() |
66 | 94 | { |
67 | 95 | CookProgram::rename(record, ui->lineEdit->text()); |
... | ... | @@ -78,15 +106,32 @@ void ProgrammingNamePopup::on_cancelButton_clicked() |
78 | 106 | |
79 | 107 | void ProgrammingNamePopup::onEncoderLeft() |
80 | 108 | { |
81 | - | |
109 | + if (focusWidget() == ui->lineEdit) | |
110 | + ui->cancelButton->setFocus(); | |
111 | + else | |
112 | + focusPreviousChild(); | |
82 | 113 | } |
83 | 114 | |
84 | 115 | void ProgrammingNamePopup::onEncoderRight() |
85 | 116 | { |
86 | - | |
117 | + if (focusWidget() == ui->cancelButton) | |
118 | + { | |
119 | + ui->lineEdit->setFocus(); | |
120 | + ui->lineEdit->selectAll(); | |
121 | + } | |
122 | + else | |
123 | + focusNextChild(); | |
87 | 124 | } |
88 | 125 | |
89 | 126 | void ProgrammingNamePopup::onEncoderClicked(QWidget *clicked) |
90 | 127 | { |
91 | - | |
128 | + QPushButton *b = qobject_cast<QPushButton *>(clicked); | |
129 | + if (b) | |
130 | + b->click(); | |
131 | + else | |
132 | + { | |
133 | + QLineEdit *e = qobject_cast<QLineEdit *>(clicked); | |
134 | + if (e) | |
135 | + ui->keyboard->focusInKeyboard(); | |
136 | + } | |
92 | 137 | } | ... | ... |
app/gui/oven_control/programmingnamepopup.h
... | ... | @@ -17,11 +17,15 @@ public: |
17 | 17 | explicit ProgrammingNamePopup(QWidget *parent, CookRecord record); |
18 | 18 | ~ProgrammingNamePopup(); |
19 | 19 | |
20 | + bool eventFilter(QObject *watched, QEvent *event); | |
21 | + | |
20 | 22 | protected: |
21 | 23 | void keyPressEvent(QKeyEvent *event); |
22 | 24 | void keyReleaseEvent(QKeyEvent *event); |
23 | 25 | |
24 | 26 | private slots: |
27 | + void revert(); | |
28 | + | |
25 | 29 | void on_okButton_clicked(); |
26 | 30 | |
27 | 31 | void on_cancelButton_clicked(); |
... | ... | @@ -37,6 +41,8 @@ private: |
37 | 41 | void onEncoderRight(); |
38 | 42 | void onEncoderClicked(QWidget *clicked); |
39 | 43 | |
44 | + QString lastLine; | |
45 | + | |
40 | 46 | signals: |
41 | 47 | void changed(); |
42 | 48 | }; | ... | ... |
app/gui/oven_control/programmingnamepopup.ui
... | ... | @@ -165,6 +165,11 @@ QPushButton:pressed, QPushButton:focus { color: yellow; }</string> |
165 | 165 | <container>1</container> |
166 | 166 | </customwidget> |
167 | 167 | </customwidgets> |
168 | + <tabstops> | |
169 | + <tabstop>lineEdit</tabstop> | |
170 | + <tabstop>okButton</tabstop> | |
171 | + <tabstop>cancelButton</tabstop> | |
172 | + </tabstops> | |
168 | 173 | <resources/> |
169 | 174 | <connections/> |
170 | 175 | </ui> | ... | ... |
app/gui/oven_control/reservedtimepopup.cpp
... | ... | @@ -2,6 +2,7 @@ |
2 | 2 | #include "ui_reservedtimepopup.h" |
3 | 3 | |
4 | 4 | #include <QDebug> |
5 | +#include <QKeyEvent> | |
5 | 6 | |
6 | 7 | #include "stringer.h" |
7 | 8 | |
... | ... | @@ -18,6 +19,8 @@ ReservedTimePopup::ReservedTimePopup(QWidget *parent, QDateTime target) : |
18 | 19 | checkTimeTimer.start(100); |
19 | 20 | |
20 | 21 | checkTime(); |
22 | + | |
23 | + setFocus(); | |
21 | 24 | } |
22 | 25 | |
23 | 26 | ReservedTimePopup::~ReservedTimePopup() |
... | ... | @@ -25,6 +28,37 @@ ReservedTimePopup::~ReservedTimePopup() |
25 | 28 | delete ui; |
26 | 29 | } |
27 | 30 | |
31 | +void ReservedTimePopup::keyPressEvent(QKeyEvent *event) | |
32 | +{ | |
33 | + switch (event->key()) | |
34 | + { | |
35 | + case 0x01000030: // Turn left | |
36 | + ui->cancelButton->setFocus(); | |
37 | + break; | |
38 | + case 0x01000031: // Push | |
39 | + break; | |
40 | + case 0x01000032: // Turn right | |
41 | + ui->cancelButton->setFocus(); | |
42 | + break; | |
43 | + } | |
44 | +} | |
45 | + | |
46 | +void ReservedTimePopup::keyReleaseEvent(QKeyEvent *event) | |
47 | +{ | |
48 | + switch (event->key()) | |
49 | + { | |
50 | + case 0x01000030: // Turn left | |
51 | + ui->cancelButton->setFocus(); | |
52 | + break; | |
53 | + case 0x01000031: // Push | |
54 | + ui->cancelButton->click(); | |
55 | + break; | |
56 | + case 0x01000032: // Turn right | |
57 | + ui->cancelButton->setFocus(); | |
58 | + break; | |
59 | + } | |
60 | +} | |
61 | + | |
28 | 62 | void ReservedTimePopup::checkTime() |
29 | 63 | { |
30 | 64 | qint64 remaining = QDateTime::currentDateTime().msecsTo(target); |
... | ... | @@ -39,6 +73,10 @@ void ReservedTimePopup::checkTime() |
39 | 73 | |
40 | 74 | void ReservedTimePopup::on_cancelButton_clicked() |
41 | 75 | { |
76 | + QWidget *focused = focusWidget(); | |
77 | + if (focused) | |
78 | + focused->clearFocus(); | |
79 | + | |
42 | 80 | emit canceled(); |
43 | 81 | close(); |
44 | 82 | } | ... | ... |
app/gui/oven_control/reservedtimepopup.h
... | ... | @@ -17,6 +17,10 @@ public: |
17 | 17 | explicit ReservedTimePopup(QWidget *parent, QDateTime target); |
18 | 18 | ~ReservedTimePopup(); |
19 | 19 | |
20 | +protected: | |
21 | + void keyPressEvent(QKeyEvent* event); | |
22 | + void keyReleaseEvent(QKeyEvent* event); | |
23 | + | |
20 | 24 | private: |
21 | 25 | Ui::ReservedTimePopup *ui; |
22 | 26 | QDateTime target; | ... | ... |
app/gui/oven_control/reservetimepopup.cpp
... | ... | @@ -2,8 +2,11 @@ |
2 | 2 | #include "ui_reservetimepopup.h" |
3 | 3 | |
4 | 4 | #include <QDateTime> |
5 | +#include <QKeyEvent> | |
6 | +#include <QDebug> | |
5 | 7 | |
6 | 8 | #include "reservedtimepopup.h" |
9 | +#include "formatterspinbox.h" | |
7 | 10 | |
8 | 11 | ReserveTimePopup::ReserveTimePopup(QWidget *parent) : |
9 | 12 | QWidget(parent), |
... | ... | @@ -18,6 +21,16 @@ ReserveTimePopup::ReserveTimePopup(QWidget *parent) : |
18 | 21 | ui->day->setValue(dt.date().day()); |
19 | 22 | ui->hour->setValue(dt.time().hour()); |
20 | 23 | ui->min->setValue(dt.time().minute()); |
24 | + | |
25 | + connect(ui->keyboard, SIGNAL(onOkKeyClicked()), ui->keyboard, SLOT(focusOutKeyboard())); | |
26 | + connect(ui->keyboard, SIGNAL(onCancelKeyClicked()), ui->keyboard, SLOT(focusOutKeyboard())); | |
27 | + connect(ui->keyboard, SIGNAL(onCancelKeyClicked()), SLOT(revert())); | |
28 | + | |
29 | + foreach (FormatterSpinBox *b, findChildren<FormatterSpinBox *>()) | |
30 | + b->installEventFilter(this); | |
31 | + | |
32 | + ui->min->setFocus(); | |
33 | + ui->min->selectAll(); | |
21 | 34 | } |
22 | 35 | |
23 | 36 | ReserveTimePopup::~ReserveTimePopup() |
... | ... | @@ -25,6 +38,68 @@ ReserveTimePopup::~ReserveTimePopup() |
25 | 38 | delete ui; |
26 | 39 | } |
27 | 40 | |
41 | +bool ReserveTimePopup::eventFilter(QObject *watched, QEvent *event) | |
42 | +{ | |
43 | + FormatterSpinBox *e = qobject_cast<FormatterSpinBox *>(watched); | |
44 | + if (e) | |
45 | + { | |
46 | + switch (event->type()) | |
47 | + { | |
48 | + case QEvent::FocusIn: | |
49 | + lastValue = e->value(); | |
50 | + break; | |
51 | + default: | |
52 | + break; | |
53 | + } | |
54 | + } | |
55 | + | |
56 | + return false; | |
57 | +} | |
58 | + | |
59 | +void ReserveTimePopup::keyPressEvent(QKeyEvent *event) | |
60 | +{ | |
61 | + switch (event->key()) | |
62 | + { | |
63 | + case 0x01000030: // Turn left | |
64 | + onEncoderLeft(); | |
65 | + break; | |
66 | + case 0x01000031: // Push | |
67 | + pushed = focusWidget(); | |
68 | + break; | |
69 | + case 0x01000032: // Turn right | |
70 | + onEncoderRight(); | |
71 | + break; | |
72 | + } | |
73 | +} | |
74 | + | |
75 | +void ReserveTimePopup::keyReleaseEvent(QKeyEvent *event) | |
76 | +{ | |
77 | + switch (event->key()) | |
78 | + { | |
79 | + case 0x01000030: // Turn left | |
80 | + onEncoderLeft(); | |
81 | + break; | |
82 | + case 0x01000031: // Push | |
83 | + if (focusWidget() == pushed) | |
84 | + onEncoderClicked(pushed); | |
85 | + | |
86 | + pushed = NULL; | |
87 | + break; | |
88 | + case 0x01000032: // Turn right | |
89 | + onEncoderRight(); | |
90 | + break; | |
91 | + } | |
92 | +} | |
93 | + | |
94 | +void ReserveTimePopup::revert() | |
95 | +{ | |
96 | + FormatterSpinBox *b = qobject_cast<FormatterSpinBox *>(focusWidget()); | |
97 | + if (b) | |
98 | + b->setValue(lastValue); | |
99 | + | |
100 | + qDebug() << lastValue; | |
101 | +} | |
102 | + | |
28 | 103 | void ReserveTimePopup::on_okButton_clicked() |
29 | 104 | { |
30 | 105 | QDateTime current = QDateTime::currentDateTime(); |
... | ... | @@ -49,3 +124,38 @@ void ReserveTimePopup::on_cancelButton_clicked() |
49 | 124 | emit canceled(); |
50 | 125 | close(); |
51 | 126 | } |
127 | + | |
128 | +void ReserveTimePopup::onEncoderLeft() | |
129 | +{ | |
130 | + if (focusWidget() == ui->month) | |
131 | + ui->cancelButton->setFocus(); | |
132 | + else | |
133 | + focusPreviousChild(); | |
134 | +} | |
135 | + | |
136 | +void ReserveTimePopup::onEncoderRight() | |
137 | +{ | |
138 | + if (focusWidget() == ui->cancelButton) | |
139 | + { | |
140 | + ui->month->setFocus(); | |
141 | + ui->month->selectAll(); | |
142 | + } | |
143 | + else | |
144 | + focusNextChild(); | |
145 | +} | |
146 | + | |
147 | +void ReserveTimePopup::onEncoderClicked(QWidget *clicked) | |
148 | +{ | |
149 | + QPushButton *b = qobject_cast<QPushButton *>(clicked); | |
150 | + if (b) | |
151 | + b->click(); | |
152 | + else | |
153 | + { | |
154 | + FormatterSpinBox *e = qobject_cast<FormatterSpinBox *>(clicked); | |
155 | + if (e) | |
156 | + { | |
157 | + qDebug() << "focusinkeyboard"; | |
158 | + ui->keyboard->focusInKeyboard(); | |
159 | + } | |
160 | + } | |
161 | +} | ... | ... |
app/gui/oven_control/reservetimepopup.h
... | ... | @@ -15,7 +15,15 @@ public: |
15 | 15 | explicit ReserveTimePopup(QWidget *parent = 0); |
16 | 16 | ~ReserveTimePopup(); |
17 | 17 | |
18 | + bool eventFilter(QObject *watched, QEvent *event); | |
19 | + | |
20 | +protected: | |
21 | + void keyPressEvent(QKeyEvent* event); | |
22 | + void keyReleaseEvent(QKeyEvent* event); | |
23 | + | |
18 | 24 | private slots: |
25 | + void revert(); | |
26 | + | |
19 | 27 | void on_okButton_clicked(); |
20 | 28 | |
21 | 29 | void on_cancelButton_clicked(); |
... | ... | @@ -23,6 +31,14 @@ private slots: |
23 | 31 | private: |
24 | 32 | Ui::ReserveTimePopup *ui; |
25 | 33 | |
34 | + int lastValue; | |
35 | + | |
36 | + QWidget *pushed = NULL; | |
37 | + | |
38 | + void onEncoderLeft(); | |
39 | + void onEncoderRight(); | |
40 | + void onEncoderClicked(QWidget *clicked); | |
41 | + | |
26 | 42 | signals: |
27 | 43 | void timeout(); |
28 | 44 | void canceled(); | ... | ... |
app/gui/oven_control/reservetimepopup.ui
... | ... | @@ -426,6 +426,14 @@ QSpinBox{ |
426 | 426 | <header>formatterspinbox.h</header> |
427 | 427 | </customwidget> |
428 | 428 | </customwidgets> |
429 | + <tabstops> | |
430 | + <tabstop>month</tabstop> | |
431 | + <tabstop>day</tabstop> | |
432 | + <tabstop>hour</tabstop> | |
433 | + <tabstop>min</tabstop> | |
434 | + <tabstop>okButton</tabstop> | |
435 | + <tabstop>cancelButton</tabstop> | |
436 | + </tabstops> | |
429 | 437 | <resources/> |
430 | 438 | <connections/> |
431 | 439 | </ui> | ... | ... |