Commit efecf3b066a0893326e2f51702ad80f33673f317
1 parent
e7502a09b2
Exists in
master
and in
2 other branches
자동 요리 선택 화면에 페이지 기능 추가
Showing
3 changed files
with
109 additions
and
2 deletions
Show diff stats
app/gui/oven_control/autocookselectionwindow.cpp
| @@ -12,6 +12,9 @@ | @@ -12,6 +12,9 @@ | ||
| 12 | #include "mainwindow.h" | 12 | #include "mainwindow.h" |
| 13 | #include "manualviewerdlg.h" | 13 | #include "manualviewerdlg.h" |
| 14 | 14 | ||
| 15 | +#define MAX_BUTTONS 30 | ||
| 16 | +#define BUTTONS_PER_PAGE 27 | ||
| 17 | + | ||
| 15 | AutoCookSelectionWindow::AutoCookSelectionWindow(QWidget *parent, Define::CookType type) : | 18 | AutoCookSelectionWindow::AutoCookSelectionWindow(QWidget *parent, Define::CookType type) : |
| 16 | QMainWindow(parent), | 19 | QMainWindow(parent), |
| 17 | ui(new Ui::AutoCookSelectionWindow), | 20 | ui(new Ui::AutoCookSelectionWindow), |
| @@ -41,8 +44,12 @@ AutoCookSelectionWindow::AutoCookSelectionWindow(QWidget *parent, Define::CookTy | @@ -41,8 +44,12 @@ AutoCookSelectionWindow::AutoCookSelectionWindow(QWidget *parent, Define::CookTy | ||
| 41 | "border-image: url(:/images/button/288_ov.png);\n" | 44 | "border-image: url(:/images/button/288_ov.png);\n" |
| 42 | "}"); | 45 | "}"); |
| 43 | 46 | ||
| 47 | + int cnt = book.list.size(); | ||
| 48 | + if (cnt > MAX_BUTTONS) | ||
| 49 | + cnt = BUTTONS_PER_PAGE; | ||
| 50 | + | ||
| 44 | QWidget *last = this; | 51 | QWidget *last = this; |
| 45 | - for (int idx = 0; idx < book.list.size(); idx++) | 52 | + for (int idx = 0; idx < cnt; idx++) |
| 46 | { | 53 | { |
| 47 | int x = 12 + (idx % 3) * 294; | 54 | int x = 12 + (idx % 3) * 294; |
| 48 | int y = 615 + (idx / 3) * 80; | 55 | int y = 615 + (idx / 3) * 80; |
| @@ -58,10 +65,24 @@ AutoCookSelectionWindow::AutoCookSelectionWindow(QWidget *parent, Define::CookTy | @@ -58,10 +65,24 @@ AutoCookSelectionWindow::AutoCookSelectionWindow(QWidget *parent, Define::CookTy | ||
| 58 | 65 | ||
| 59 | setTabOrder(last, pb); | 66 | setTabOrder(last, pb); |
| 60 | 67 | ||
| 68 | + button.append(pb); | ||
| 69 | + | ||
| 61 | last = pb; | 70 | last = pb; |
| 62 | } | 71 | } |
| 63 | 72 | ||
| 64 | - setTabOrder(last, ui->backButton); | 73 | + if (book.list.size() > MAX_BUTTONS) { |
| 74 | + ui->bullets->setBulletPixmap(":/images/auto_popup/bullet.png"); | ||
| 75 | + ui->bullets->setCurrentBulletPixmap(":/images/auto_popup/bullet_selected.png"); | ||
| 76 | + ui->bullets->setMaximum(book.list.size() / BUTTONS_PER_PAGE); | ||
| 77 | + } else { | ||
| 78 | + ui->bullets->hide(); | ||
| 79 | + ui->prev->hide(); | ||
| 80 | + ui->next->hide(); | ||
| 81 | + } | ||
| 82 | + | ||
| 83 | + setTabOrder(last, ui->prev); | ||
| 84 | + setTabOrder(ui->prev, ui->next); | ||
| 85 | + setTabOrder(ui->next, ui->backButton); | ||
| 65 | setTabOrder(ui->backButton, ui->configButton); | 86 | setTabOrder(ui->backButton, ui->configButton); |
| 66 | setTabOrder(ui->configButton, ui->washButton); | 87 | setTabOrder(ui->configButton, ui->washButton); |
| 67 | setTabOrder(ui->washButton, ui->helpButton); | 88 | setTabOrder(ui->washButton, ui->helpButton); |
| @@ -116,6 +137,8 @@ void AutoCookSelectionWindow::onCookSelected(int idx) | @@ -116,6 +137,8 @@ void AutoCookSelectionWindow::onCookSelected(int idx) | ||
| 116 | { | 137 | { |
| 117 | setFocus(); | 138 | setFocus(); |
| 118 | 139 | ||
| 140 | + idx += ui->bullets->currentIndex() * BUTTONS_PER_PAGE; | ||
| 141 | + | ||
| 119 | AutoCookConfigWindow *w = new AutoCookConfigWindow(this, book.get(idx)); | 142 | AutoCookConfigWindow *w = new AutoCookConfigWindow(this, book.get(idx)); |
| 120 | w->setWindowModality(Qt::WindowModal); | 143 | w->setWindowModality(Qt::WindowModal); |
| 121 | w->showFullScreen(); | 144 | w->showFullScreen(); |
| @@ -170,3 +193,31 @@ void AutoCookSelectionWindow::onEncoderClicked(QWidget *clicked) | @@ -170,3 +193,31 @@ void AutoCookSelectionWindow::onEncoderClicked(QWidget *clicked) | ||
| 170 | if (b) | 193 | if (b) |
| 171 | b->click(); | 194 | b->click(); |
| 172 | } | 195 | } |
| 196 | + | ||
| 197 | +void AutoCookSelectionWindow::list() | ||
| 198 | +{ | ||
| 199 | + int startAt = ui->bullets->currentIndex() * BUTTONS_PER_PAGE; | ||
| 200 | + for (int i = 0; i < button.size(); i++) { | ||
| 201 | + QPushButton *pb = button.at(i); | ||
| 202 | + | ||
| 203 | + int cookIdx = startAt + i; | ||
| 204 | + if (cookIdx >= book.list.size()) | ||
| 205 | + pb->hide(); | ||
| 206 | + else { | ||
| 207 | + pb->setText(book.list.at(cookIdx)); | ||
| 208 | + pb->show(); | ||
| 209 | + } | ||
| 210 | + } | ||
| 211 | +} | ||
| 212 | + | ||
| 213 | +void AutoCookSelectionWindow::on_prev_clicked() | ||
| 214 | +{ | ||
| 215 | + ui->bullets->setCurrentIndex(ui->bullets->currentIndex() - 1); | ||
| 216 | + list(); | ||
| 217 | +} | ||
| 218 | + | ||
| 219 | +void AutoCookSelectionWindow::on_next_clicked() | ||
| 220 | +{ | ||
| 221 | + ui->bullets->setCurrentIndex(ui->bullets->currentIndex() + 1); | ||
| 222 | + list(); | ||
| 223 | +} |
app/gui/oven_control/autocookselectionwindow.h
| @@ -34,10 +34,15 @@ private slots: | @@ -34,10 +34,15 @@ private slots: | ||
| 34 | 34 | ||
| 35 | void on_helpButton_clicked(); | 35 | void on_helpButton_clicked(); |
| 36 | 36 | ||
| 37 | + void on_prev_clicked(); | ||
| 38 | + | ||
| 39 | + void on_next_clicked(); | ||
| 40 | + | ||
| 37 | private: | 41 | private: |
| 38 | Ui::AutoCookSelectionWindow *ui; | 42 | Ui::AutoCookSelectionWindow *ui; |
| 39 | Define::CookType type; | 43 | Define::CookType type; |
| 40 | CookBook book; | 44 | CookBook book; |
| 45 | + QList<QPushButton *> button; | ||
| 41 | 46 | ||
| 42 | bool autoCookWindowOpened; | 47 | bool autoCookWindowOpened; |
| 43 | 48 | ||
| @@ -46,6 +51,7 @@ private: | @@ -46,6 +51,7 @@ private: | ||
| 46 | void onEncoderLeft(); | 51 | void onEncoderLeft(); |
| 47 | void onEncoderRight(); | 52 | void onEncoderRight(); |
| 48 | void onEncoderClicked(QWidget *clicked); | 53 | void onEncoderClicked(QWidget *clicked); |
| 54 | + void list(); | ||
| 49 | }; | 55 | }; |
| 50 | 56 | ||
| 51 | #endif // AUTOCOOKSELECTIONWINDOW_H | 57 | #endif // AUTOCOOKSELECTIONWINDOW_H |
app/gui/oven_control/autocookselectionwindow.ui
| @@ -231,10 +231,60 @@ QPushButton:pressed, QPushButton:focus { border-image: url(:/images/bottom_bar/h | @@ -231,10 +231,60 @@ QPushButton:pressed, QPushButton:focus { border-image: url(:/images/bottom_bar/h | ||
| 231 | <set>Qt::AlignCenter</set> | 231 | <set>Qt::AlignCenter</set> |
| 232 | </property> | 232 | </property> |
| 233 | </widget> | 233 | </widget> |
| 234 | + <widget class="QPushButton" name="prev"> | ||
| 235 | + <property name="geometry"> | ||
| 236 | + <rect> | ||
| 237 | + <x>254</x> | ||
| 238 | + <y>1335</y> | ||
| 239 | + <width>125</width> | ||
| 240 | + <height>105</height> | ||
| 241 | + </rect> | ||
| 242 | + </property> | ||
| 243 | + <property name="styleSheet"> | ||
| 244 | + <string notr="true">QPushButton { border: none; background-repeat: no-repeat; background-position: center; background-image: url(:/images/auto_popup/prev.png); } | ||
| 245 | +QPushButton:pressed, QPushButton:focus { background-image: url(:/images/auto_popup/prev_ov.png); }</string> | ||
| 246 | + </property> | ||
| 247 | + </widget> | ||
| 248 | + <widget class="BulletIndicator" name="bullets" native="true"> | ||
| 249 | + <property name="geometry"> | ||
| 250 | + <rect> | ||
| 251 | + <x>325</x> | ||
| 252 | + <y>1335</y> | ||
| 253 | + <width>250</width> | ||
| 254 | + <height>105</height> | ||
| 255 | + </rect> | ||
| 256 | + </property> | ||
| 257 | + </widget> | ||
| 258 | + <widget class="QPushButton" name="next"> | ||
| 259 | + <property name="geometry"> | ||
| 260 | + <rect> | ||
| 261 | + <x>529</x> | ||
| 262 | + <y>1335</y> | ||
| 263 | + <width>125</width> | ||
| 264 | + <height>105</height> | ||
| 265 | + </rect> | ||
| 266 | + </property> | ||
| 267 | + <property name="styleSheet"> | ||
| 268 | + <string notr="true">QPushButton { border: none; background-repeat: no-repeat; background-position: center; background-image: url(:/images/auto_popup/next.png); } | ||
| 269 | +QPushButton:pressed, QPushButton:focus { background-image: url(:/images/auto_popup/next_ov.png); }</string> | ||
| 270 | + </property> | ||
| 271 | + </widget> | ||
| 272 | + <zorder>upperStack</zorder> | ||
| 273 | + <zorder>bottomBar</zorder> | ||
| 274 | + <zorder>cookTypeIcon</zorder> | ||
| 275 | + <zorder>bullets</zorder> | ||
| 276 | + <zorder>next</zorder> | ||
| 277 | + <zorder>prev</zorder> | ||
| 234 | </widget> | 278 | </widget> |
| 235 | </widget> | 279 | </widget> |
| 236 | <customwidgets> | 280 | <customwidgets> |
| 237 | <customwidget> | 281 | <customwidget> |
| 282 | + <class>BulletIndicator</class> | ||
| 283 | + <extends>QWidget</extends> | ||
| 284 | + <header>bulletindicator.h</header> | ||
| 285 | + <container>1</container> | ||
| 286 | + </customwidget> | ||
| 287 | + <customwidget> | ||
| 238 | <class>Clock</class> | 288 | <class>Clock</class> |
| 239 | <extends>QWidget</extends> | 289 | <extends>QWidget</extends> |
| 240 | <header>clock.h</header> | 290 | <header>clock.h</header> |