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 | 12 | #include "mainwindow.h" |
| 13 | 13 | #include "manualviewerdlg.h" |
| 14 | 14 | |
| 15 | +#define MAX_BUTTONS 30 | |
| 16 | +#define BUTTONS_PER_PAGE 27 | |
| 17 | + | |
| 15 | 18 | AutoCookSelectionWindow::AutoCookSelectionWindow(QWidget *parent, Define::CookType type) : |
| 16 | 19 | QMainWindow(parent), |
| 17 | 20 | ui(new Ui::AutoCookSelectionWindow), |
| ... | ... | @@ -41,8 +44,12 @@ AutoCookSelectionWindow::AutoCookSelectionWindow(QWidget *parent, Define::CookTy |
| 41 | 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 | 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 | 54 | int x = 12 + (idx % 3) * 294; |
| 48 | 55 | int y = 615 + (idx / 3) * 80; |
| ... | ... | @@ -58,10 +65,24 @@ AutoCookSelectionWindow::AutoCookSelectionWindow(QWidget *parent, Define::CookTy |
| 58 | 65 | |
| 59 | 66 | setTabOrder(last, pb); |
| 60 | 67 | |
| 68 | + button.append(pb); | |
| 69 | + | |
| 61 | 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 | 86 | setTabOrder(ui->backButton, ui->configButton); |
| 66 | 87 | setTabOrder(ui->configButton, ui->washButton); |
| 67 | 88 | setTabOrder(ui->washButton, ui->helpButton); |
| ... | ... | @@ -116,6 +137,8 @@ void AutoCookSelectionWindow::onCookSelected(int idx) |
| 116 | 137 | { |
| 117 | 138 | setFocus(); |
| 118 | 139 | |
| 140 | + idx += ui->bullets->currentIndex() * BUTTONS_PER_PAGE; | |
| 141 | + | |
| 119 | 142 | AutoCookConfigWindow *w = new AutoCookConfigWindow(this, book.get(idx)); |
| 120 | 143 | w->setWindowModality(Qt::WindowModal); |
| 121 | 144 | w->showFullScreen(); |
| ... | ... | @@ -170,3 +193,31 @@ void AutoCookSelectionWindow::onEncoderClicked(QWidget *clicked) |
| 170 | 193 | if (b) |
| 171 | 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 | 34 | |
| 35 | 35 | void on_helpButton_clicked(); |
| 36 | 36 | |
| 37 | + void on_prev_clicked(); | |
| 38 | + | |
| 39 | + void on_next_clicked(); | |
| 40 | + | |
| 37 | 41 | private: |
| 38 | 42 | Ui::AutoCookSelectionWindow *ui; |
| 39 | 43 | Define::CookType type; |
| 40 | 44 | CookBook book; |
| 45 | + QList<QPushButton *> button; | |
| 41 | 46 | |
| 42 | 47 | bool autoCookWindowOpened; |
| 43 | 48 | |
| ... | ... | @@ -46,6 +51,7 @@ private: |
| 46 | 51 | void onEncoderLeft(); |
| 47 | 52 | void onEncoderRight(); |
| 48 | 53 | void onEncoderClicked(QWidget *clicked); |
| 54 | + void list(); | |
| 49 | 55 | }; |
| 50 | 56 | |
| 51 | 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 | 231 | <set>Qt::AlignCenter</set> |
| 232 | 232 | </property> |
| 233 | 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 | 278 | </widget> |
| 235 | 279 | </widget> |
| 236 | 280 | <customwidgets> |
| 237 | 281 | <customwidget> |
| 282 | + <class>BulletIndicator</class> | |
| 283 | + <extends>QWidget</extends> | |
| 284 | + <header>bulletindicator.h</header> | |
| 285 | + <container>1</container> | |
| 286 | + </customwidget> | |
| 287 | + <customwidget> | |
| 238 | 288 | <class>Clock</class> |
| 239 | 289 | <extends>QWidget</extends> |
| 240 | 290 | <header>clock.h</header> | ... | ... |