382b586e9
김태훈
프로그래밍 모드 임시 구현
|
1
2
|
#include "programmingautoconfigwindow.h"
#include "ui_programmingautoconfigwindow.h"
|
9e1f8d093
김태훈
엔코더 구현 대비 선행 수정
|
3
|
#include <QKeyEvent>
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
4
5
6
|
#include "soundplayer.h"
#include "stringer.h"
#include "cookprogram.h"
|
95a9aa99d
김태훈
기능 보충 구현
|
7
8
|
#include "configwindow.h"
#include "mainwindow.h"
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
9
10
|
#include "autocookselectionpopup.h"
#include "autocookcheckwindow.h"
|
1342af7b3
김태훈
도움말 버튼 연결
|
11
|
#include "manualviewerdlg.h"
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
ProgrammingAutoConfigWindow::ProgrammingAutoConfigWindow(QWidget *parent, Cook cook) :
QMainWindow(parent),
ui(new Ui::ProgrammingAutoConfigWindow),
cook(cook)
{
ui->setupUi(this);
ui->clockContainer->setParent(ui->upperStack);
setAttribute(Qt::WA_DeleteOnClose);
configWidgets.append(
ConfigWidget {
ui->configButton_1,
ui->configMinLabel_1,
ui->configMaxLabel_1,
ui->configCurrentLabel_1,
ui->configSlider_1
});
configWidgets.append(
ConfigWidget {
ui->configButton_2,
ui->configMinLabel_2,
ui->configMaxLabel_2,
ui->configCurrentLabel_2,
ui->configSlider_2
});
configWidgets.append(
ConfigWidget {
ui->configButton_3,
ui->configMinLabel_3,
ui->configMaxLabel_3,
ui->configCurrentLabel_3,
ui->configSlider_3
});
configWidgets.append(
ConfigWidget {
ui->configButton_4,
ui->configMinLabel_4,
ui->configMaxLabel_4,
ui->configCurrentLabel_4,
ui->configSlider_4
});
configWidgets.append(
ConfigWidget {
ui->configButton_5,
ui->configMinLabel_5,
ui->configMaxLabel_5,
ui->configCurrentLabel_5,
ui->configSlider_5
});
setupUi();
|
07441dbd3
김태훈
엔코더 관련 디자인 변경 대비
|
65
66
|
foreach (Slider *s, findChildren<Slider *>())
connect(s, SIGNAL(sliderPressed()), SLOT(updateView()));
|
51175dd1a
김태훈
엔코더 구현
|
67
68
69
|
afterThreeSecsTimer.setSingleShot(true);
afterThreeSecsTimer.setInterval(3000);
connect(&afterThreeSecsTimer, SIGNAL(timeout()), SLOT(afterThreeSecs()));
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
70
71
|
foreach (QPushButton *button, findChildren<QPushButton *>())
connect(button, &QPushButton::pressed, SoundPlayer::playClick);
|
51175dd1a
김태훈
엔코더 구현
|
72
73
74
|
foreach (QWidget *w, findChildren<QWidget *>())
w->installEventFilter(this);
|
51175dd1a
김태훈
엔코더 구현
|
75
|
setFocus();
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
76
77
78
79
80
81
|
}
ProgrammingAutoConfigWindow::~ProgrammingAutoConfigWindow()
{
delete ui;
}
|
51175dd1a
김태훈
엔코더 구현
|
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
bool ProgrammingAutoConfigWindow::eventFilter(QObject */*watched*/, QEvent *event)
{
switch (event->type())
{
case QEvent::KeyPress:
case QEvent::KeyRelease:
case QEvent::MouseButtonPress:
case QEvent::MouseButtonRelease:
case QEvent::MouseMove:
afterThreeSecsTimer.start();
break;
default:
break;
}
return false;
}
|
9e1f8d093
김태훈
엔코더 구현 대비 선행 수정
|
99
100
101
102
|
void ProgrammingAutoConfigWindow::keyPressEvent(QKeyEvent *event)
{
switch (event->key())
{
|
01249f413
김태훈
엔코더 방향 반전. 하드웨어가 변경됨
|
103
|
case 0x01000032: // Turn left
|
9e1f8d093
김태훈
엔코더 구현 대비 선행 수정
|
104
105
106
107
108
|
onEncoderLeft();
break;
case 0x01000031: // Push
pushed = focusWidget();
break;
|
01249f413
김태훈
엔코더 방향 반전. 하드웨어가 변경됨
|
109
|
case 0x01000030: // Turn right
|
9e1f8d093
김태훈
엔코더 구현 대비 선행 수정
|
110
111
112
113
114
115
116
117
118
|
onEncoderRight();
break;
}
}
void ProgrammingAutoConfigWindow::keyReleaseEvent(QKeyEvent *event)
{
switch (event->key())
{
|
01249f413
김태훈
엔코더 방향 반전. 하드웨어가 변경됨
|
119
|
case 0x01000032: // Turn left
|
9e1f8d093
김태훈
엔코더 구현 대비 선행 수정
|
120
121
122
123
124
125
126
127
|
onEncoderLeft();
break;
case 0x01000031: // Push
if (focusWidget() == pushed)
onEncoderClicked(pushed);
pushed = NULL;
break;
|
01249f413
김태훈
엔코더 방향 반전. 하드웨어가 변경됨
|
128
|
case 0x01000030: // Turn right
|
9e1f8d093
김태훈
엔코더 구현 대비 선행 수정
|
129
130
131
132
133
134
135
|
onEncoderRight();
break;
}
}
void ProgrammingAutoConfigWindow::onEncoderLeft()
{
|
51175dd1a
김태훈
엔코더 구현
|
136
|
focusPreviousChild();
|
9e1f8d093
김태훈
엔코더 구현 대비 선행 수정
|
137
138
139
140
|
}
void ProgrammingAutoConfigWindow::onEncoderRight()
{
|
51175dd1a
김태훈
엔코더 구현
|
141
|
focusNextChild();
|
9e1f8d093
김태훈
엔코더 구현 대비 선행 수정
|
142
143
144
145
|
}
void ProgrammingAutoConfigWindow::onEncoderClicked(QWidget *clicked)
{
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
146
147
|
QPushButton *pb = qobject_cast<QPushButton *>(clicked);
if (pb)
|
51175dd1a
김태훈
엔코더 구현
|
148
|
{
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
149
150
|
pb->click();
return;
|
51175dd1a
김태훈
엔코더 구현
|
151
|
}
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
152
153
154
|
Slider *slider = qobject_cast<Slider *>(clicked);
if (slider)
|
51175dd1a
김태훈
엔코더 구현
|
155
|
{
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
156
157
158
159
160
161
162
163
164
165
|
if (slider == ui->configSlider_1)
ui->configButton_1->setFocus();
else if (slider == ui->configSlider_2)
ui->configButton_2->setFocus();
else if (slider == ui->configSlider_3)
ui->configButton_3->setFocus();
else if (slider == ui->configSlider_4)
ui->configButton_4->setFocus();
else if (slider == ui->configSlider_5)
ui->configButton_5->setFocus();
|
cd74cf6ed
김태훈
엔코더 관련 디자인 변경 적용
|
166
167
|
updateView();
|
51175dd1a
김태훈
엔코더 구현
|
168
|
}
|
9e1f8d093
김태훈
엔코더 구현 대비 선행 수정
|
169
|
}
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
170
171
172
173
|
void ProgrammingAutoConfigWindow::setupUi()
{
ui->cookTypeIcon->setPixmap(Define::icon(cook.type));
ui->selectCookButton->setText(cook.name);
|
07441dbd3
김태훈
엔코더 관련 디자인 변경 대비
|
174
175
176
177
178
|
QString styleSheet("\
QPushButton { image: url(%1); }\
QPushButton:pressed,\
QPushButton:focus { image: url(%2); }\
QPushButton:checked { image: url(%3); }");
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
179
180
|
for (int idx = 0; idx < 5; idx++)
{
|
07441dbd3
김태훈
엔코더 관련 디자인 변경 대비
|
181
|
ConfigWidget cw = configWidgets.at(idx);
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
182
183
184
|
CookConfig config = cook.configs[idx];
if (config.type == Define::ConfigNotUsed)
{
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
185
186
187
188
189
190
191
192
|
cw.button->hide();
cw.minimum->hide();
cw.maximum->hide();
cw.current->hide();
cw.slider->hide();
}
else
{
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
193
194
195
196
197
|
cw.button->show();
cw.minimum->show();
cw.maximum->show();
cw.current->show();
cw.slider->show();
|
07441dbd3
김태훈
엔코더 관련 디자인 변경 대비
|
198
199
200
201
|
cw.button->setStyleSheet(styleSheet
.arg(Define::icon(config.type))
.arg(Define::iconOverlay(config.type))
.arg(Define::iconActiveted(config.type)));
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
202
203
204
|
cw.minimum->setText(Define::minimum(config.type));
cw.maximum->setText(Define::maximum(config.type));
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
205
206
207
208
|
switch (config.type)
{
case Define::Time:
|
935b853a4
김태훈
새 슬라이더 적용
|
209
|
cw.slider->setSubPixmap(":/images/slider/sub_white.png");
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
210
211
|
break;
case Define::BurnDegree:
|
935b853a4
김태훈
새 슬라이더 적용
|
212
|
cw.slider->setSubPixmap(":/images/slider/sub_yellow.png");
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
213
214
|
break;
case Define::Brightness:
|
935b853a4
김태훈
새 슬라이더 적용
|
215
|
cw.slider->setSubPixmap(":/images/slider/sub_red.png");
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
216
217
|
break;
default:
|
935b853a4
김태훈
새 슬라이더 적용
|
218
|
cw.slider->setSubPixmap(":/images/slider/sub_blue.png");
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
219
220
|
break;
}
|
935b853a4
김태훈
새 슬라이더 적용
|
221
222
223
224
225
226
227
228
|
cw.slider->blockSignals(true);
cw.slider->setMinimum(1);
cw.slider->setMaximum(config.maximum);
cw.slider->setValue(config.current);
cw.slider->blockSignals(false);
cw.slider->bigTickInterval = 1;
connect(cw.slider, SIGNAL(sliderMoved(int)), SLOT(updateConfig()));
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
|
}
}
updateView();
}
void ProgrammingAutoConfigWindow::updateView()
{
for (int idx = 0; idx < 5; idx++)
{
CookConfig config = cook.configs[idx];
if (config.type == Define::ConfigNotUsed)
continue;
ConfigWidget cw = configWidgets.at(idx);
switch (config.type)
{
case Define::Time:
cw.current->setText(Stringer::remainingTime(cook.time() * 1000, Stringer::fontSize14));
break;
case Define::BurnDegree:
cw.current->setText(Stringer::temperature(cook.coreTemp(), Stringer::fontSize14));
break;
default:
cw.current->setText(QString().sprintf(
"%d"
"<span style=\"font-size:11pt;\">/%d</span>",
config.current, config.maximum));
break;
}
}
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
261
262
263
264
265
266
267
|
QWidget *focused = focusWidget();
ui->configButton_1->setChecked(focused == ui->configSlider_1);
ui->configButton_2->setChecked(focused == ui->configSlider_2);
ui->configButton_3->setChecked(focused == ui->configSlider_3);
ui->configButton_4->setChecked(focused == ui->configSlider_4);
ui->configButton_5->setChecked(focused == ui->configSlider_5);
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
268
269
270
271
|
}
void ProgrammingAutoConfigWindow::updateConfig()
{
|
935b853a4
김태훈
새 슬라이더 적용
|
272
273
274
275
276
|
cook.setConfig(ui->configSlider_1->sliderPosition(),
ui->configSlider_2->sliderPosition(),
ui->configSlider_3->sliderPosition(),
ui->configSlider_4->sliderPosition(),
ui->configSlider_5->sliderPosition());
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
277
278
279
|
updateView();
}
|
51175dd1a
김태훈
엔코더 구현
|
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
|
void ProgrammingAutoConfigWindow::afterThreeSecs()
{
Slider *slider = qobject_cast<Slider *>(focusWidget());
if (slider)
{
if (slider == ui->configSlider_1)
ui->configButton_1->setFocus();
else if (slider == ui->configSlider_2)
ui->configButton_2->setFocus();
else if (slider == ui->configSlider_3)
ui->configButton_3->setFocus();
else if (slider == ui->configSlider_4)
ui->configButton_4->setFocus();
else if (slider == ui->configSlider_5)
ui->configButton_5->setFocus();
|
cd74cf6ed
김태훈
엔코더 관련 디자인 변경 적용
|
295
296
|
updateView();
|
51175dd1a
김태훈
엔코더 구현
|
297
298
|
}
}
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
299
|
void ProgrammingAutoConfigWindow::changeCook(Cook cook)
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
300
|
{
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
301
302
|
if (this->cook.root == cook.root)
return;
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
303
|
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
304
|
this->cook = cook;
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
305
|
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
306
|
setupUi();
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
307
|
}
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
308
|
void ProgrammingAutoConfigWindow::on_selectCookButton_clicked()
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
309
|
{
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
310
311
312
|
AutoCookSelectionPopup *p = new AutoCookSelectionPopup(this, cook.type);
p->showFullScreen();
p->raise();
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
313
|
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
314
315
316
|
connect(p, SIGNAL(selected(Cook)), SLOT(changeCook(Cook)));
connect(p, SIGNAL(selected(Cook)), SLOT(setFocus()));
connect(p, SIGNAL(canceled()), SLOT(setFocus()));
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
317
|
}
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
318
|
void ProgrammingAutoConfigWindow::on_checkCookButton_clicked()
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
319
|
{
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
320
|
setFocus();
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
321
|
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
322
323
324
325
326
|
AutoCookCheckWindow *w = new AutoCookCheckWindow(this, cook);
w->setWindowModality(Qt::WindowModal);
w->showFullScreen();
w->raise();
}
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
327
|
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
328
329
|
void ProgrammingAutoConfigWindow::on_backButton_clicked()
{
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
330
331
|
close();
}
|
51175dd1a
김태훈
엔코더 구현
|
332
333
334
335
|
void ProgrammingAutoConfigWindow::on_configButton_1_clicked()
{
ui->configSlider_1->setFocus();
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
336
|
updateView();
|
51175dd1a
김태훈
엔코더 구현
|
337
338
339
340
341
|
}
void ProgrammingAutoConfigWindow::on_configButton_2_clicked()
{
ui->configSlider_2->setFocus();
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
342
|
updateView();
|
51175dd1a
김태훈
엔코더 구현
|
343
344
345
346
347
|
}
void ProgrammingAutoConfigWindow::on_configButton_3_clicked()
{
ui->configSlider_3->setFocus();
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
348
|
updateView();
|
51175dd1a
김태훈
엔코더 구현
|
349
350
351
352
353
|
}
void ProgrammingAutoConfigWindow::on_configButton_4_clicked()
{
ui->configSlider_4->setFocus();
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
354
|
updateView();
|
51175dd1a
김태훈
엔코더 구현
|
355
356
357
358
359
|
}
void ProgrammingAutoConfigWindow::on_configButton_5_clicked()
{
ui->configSlider_5->setFocus();
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
|
updateView();
}
void ProgrammingAutoConfigWindow::on_configButton_clicked()
{
ConfigWindow *w = new ConfigWindow(MainWindow::getInstance());
w->setWindowModality(Qt::WindowModal);
w->showFullScreen();
w->raise();
MainWindow::jump(w);
}
void ProgrammingAutoConfigWindow::on_helpButton_clicked()
{
|
1342af7b3
김태훈
도움말 버튼 연결
|
375
376
377
|
ManualViewerDlg* dlg = new ManualViewerDlg(this);
dlg->showFullScreen();
dlg->raise();
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
|
}
void ProgrammingAutoConfigWindow::on_okButton_clicked()
{
if (!cook.isLoaded())
cook.load();
AutoCookSetting s;
s.type = cook.type;
s.name = cook.name;
s.root = cook.root;
for (int i = 0; i < 5; i++)
s.configs[i] = cook.configs[i].current;
CookProgram::add(s);
emit added();
close();
|
51175dd1a
김태훈
엔코더 구현
|
396
|
}
|