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"
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
11
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
|
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
김태훈
엔코더 관련 디자인 변경 대비
|
64
65
|
foreach (Slider *s, findChildren<Slider *>())
connect(s, SIGNAL(sliderPressed()), SLOT(updateView()));
|
51175dd1a
김태훈
엔코더 구현
|
66
67
68
|
afterThreeSecsTimer.setSingleShot(true);
afterThreeSecsTimer.setInterval(3000);
connect(&afterThreeSecsTimer, SIGNAL(timeout()), SLOT(afterThreeSecs()));
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
69
70
|
foreach (QPushButton *button, findChildren<QPushButton *>())
connect(button, &QPushButton::pressed, SoundPlayer::playClick);
|
51175dd1a
김태훈
엔코더 구현
|
71
72
73
|
foreach (QWidget *w, findChildren<QWidget *>())
w->installEventFilter(this);
|
51175dd1a
김태훈
엔코더 구현
|
74
|
setFocus();
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
75
76
77
78
79
80
|
}
ProgrammingAutoConfigWindow::~ProgrammingAutoConfigWindow()
{
delete ui;
}
|
51175dd1a
김태훈
엔코더 구현
|
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
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
김태훈
엔코더 구현 대비 선행 수정
|
98
99
100
101
|
void ProgrammingAutoConfigWindow::keyPressEvent(QKeyEvent *event)
{
switch (event->key())
{
|
01249f413
김태훈
엔코더 방향 반전. 하드웨어가 변경됨
|
102
|
case 0x01000032: // Turn left
|
9e1f8d093
김태훈
엔코더 구현 대비 선행 수정
|
103
104
105
106
107
|
onEncoderLeft();
break;
case 0x01000031: // Push
pushed = focusWidget();
break;
|
01249f413
김태훈
엔코더 방향 반전. 하드웨어가 변경됨
|
108
|
case 0x01000030: // Turn right
|
9e1f8d093
김태훈
엔코더 구현 대비 선행 수정
|
109
110
111
112
113
114
115
116
117
|
onEncoderRight();
break;
}
}
void ProgrammingAutoConfigWindow::keyReleaseEvent(QKeyEvent *event)
{
switch (event->key())
{
|
01249f413
김태훈
엔코더 방향 반전. 하드웨어가 변경됨
|
118
|
case 0x01000032: // Turn left
|
9e1f8d093
김태훈
엔코더 구현 대비 선행 수정
|
119
120
121
122
123
124
125
126
|
onEncoderLeft();
break;
case 0x01000031: // Push
if (focusWidget() == pushed)
onEncoderClicked(pushed);
pushed = NULL;
break;
|
01249f413
김태훈
엔코더 방향 반전. 하드웨어가 변경됨
|
127
|
case 0x01000030: // Turn right
|
9e1f8d093
김태훈
엔코더 구현 대비 선행 수정
|
128
129
130
131
132
133
134
|
onEncoderRight();
break;
}
}
void ProgrammingAutoConfigWindow::onEncoderLeft()
{
|
51175dd1a
김태훈
엔코더 구현
|
135
|
focusPreviousChild();
|
9e1f8d093
김태훈
엔코더 구현 대비 선행 수정
|
136
137
138
139
|
}
void ProgrammingAutoConfigWindow::onEncoderRight()
{
|
51175dd1a
김태훈
엔코더 구현
|
140
|
focusNextChild();
|
9e1f8d093
김태훈
엔코더 구현 대비 선행 수정
|
141
142
143
144
|
}
void ProgrammingAutoConfigWindow::onEncoderClicked(QWidget *clicked)
{
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
145
146
|
QPushButton *pb = qobject_cast<QPushButton *>(clicked);
if (pb)
|
51175dd1a
김태훈
엔코더 구현
|
147
|
{
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
148
149
|
pb->click();
return;
|
51175dd1a
김태훈
엔코더 구현
|
150
|
}
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
151
152
153
|
Slider *slider = qobject_cast<Slider *>(clicked);
if (slider)
|
51175dd1a
김태훈
엔코더 구현
|
154
|
{
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
155
156
157
158
159
160
161
162
163
164
|
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
김태훈
엔코더 관련 디자인 변경 적용
|
165
166
|
updateView();
|
51175dd1a
김태훈
엔코더 구현
|
167
|
}
|
9e1f8d093
김태훈
엔코더 구현 대비 선행 수정
|
168
|
}
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
169
170
171
172
|
void ProgrammingAutoConfigWindow::setupUi()
{
ui->cookTypeIcon->setPixmap(Define::icon(cook.type));
ui->selectCookButton->setText(cook.name);
|
07441dbd3
김태훈
엔코더 관련 디자인 변경 대비
|
173
174
175
176
177
|
QString styleSheet("\
QPushButton { image: url(%1); }\
QPushButton:pressed,\
QPushButton:focus { image: url(%2); }\
QPushButton:checked { image: url(%3); }");
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
178
179
|
for (int idx = 0; idx < 5; idx++)
{
|
07441dbd3
김태훈
엔코더 관련 디자인 변경 대비
|
180
|
ConfigWidget cw = configWidgets.at(idx);
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
181
182
183
|
CookConfig config = cook.configs[idx];
if (config.type == Define::ConfigNotUsed)
{
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
184
185
186
187
188
189
190
191
|
cw.button->hide();
cw.minimum->hide();
cw.maximum->hide();
cw.current->hide();
cw.slider->hide();
}
else
{
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
192
193
194
195
196
|
cw.button->show();
cw.minimum->show();
cw.maximum->show();
cw.current->show();
cw.slider->show();
|
07441dbd3
김태훈
엔코더 관련 디자인 변경 대비
|
197
198
199
200
|
cw.button->setStyleSheet(styleSheet
.arg(Define::icon(config.type))
.arg(Define::iconOverlay(config.type))
.arg(Define::iconActiveted(config.type)));
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
201
202
203
|
cw.minimum->setText(Define::minimum(config.type));
cw.maximum->setText(Define::maximum(config.type));
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
204
205
206
207
|
switch (config.type)
{
case Define::Time:
|
935b853a4
김태훈
새 슬라이더 적용
|
208
|
cw.slider->setSubPixmap(":/images/slider/sub_white.png");
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
209
210
|
break;
case Define::BurnDegree:
|
935b853a4
김태훈
새 슬라이더 적용
|
211
|
cw.slider->setSubPixmap(":/images/slider/sub_yellow.png");
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
212
213
|
break;
case Define::Brightness:
|
935b853a4
김태훈
새 슬라이더 적용
|
214
|
cw.slider->setSubPixmap(":/images/slider/sub_red.png");
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
215
216
|
break;
default:
|
935b853a4
김태훈
새 슬라이더 적용
|
217
|
cw.slider->setSubPixmap(":/images/slider/sub_blue.png");
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
218
219
|
break;
}
|
935b853a4
김태훈
새 슬라이더 적용
|
220
221
222
223
224
225
226
227
|
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
김태훈
프로그래밍 모드 임시 구현
|
228
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
|
}
}
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
김태훈
자동 요리 만들기 누락 기능 추가
|
260
261
262
263
264
265
266
|
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
김태훈
프로그래밍 모드 임시 구현
|
267
268
269
270
|
}
void ProgrammingAutoConfigWindow::updateConfig()
{
|
935b853a4
김태훈
새 슬라이더 적용
|
271
272
273
274
275
|
cook.setConfig(ui->configSlider_1->sliderPosition(),
ui->configSlider_2->sliderPosition(),
ui->configSlider_3->sliderPosition(),
ui->configSlider_4->sliderPosition(),
ui->configSlider_5->sliderPosition());
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
276
277
278
|
updateView();
}
|
51175dd1a
김태훈
엔코더 구현
|
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
|
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
김태훈
엔코더 관련 디자인 변경 적용
|
294
295
|
updateView();
|
51175dd1a
김태훈
엔코더 구현
|
296
297
|
}
}
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
298
|
void ProgrammingAutoConfigWindow::changeCook(Cook cook)
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
299
|
{
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
300
301
|
if (this->cook.root == cook.root)
return;
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
302
|
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
303
|
this->cook = cook;
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
304
|
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
305
|
setupUi();
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
306
|
}
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
307
|
void ProgrammingAutoConfigWindow::on_selectCookButton_clicked()
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
308
|
{
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
309
310
311
|
AutoCookSelectionPopup *p = new AutoCookSelectionPopup(this, cook.type);
p->showFullScreen();
p->raise();
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
312
|
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
313
314
315
|
connect(p, SIGNAL(selected(Cook)), SLOT(changeCook(Cook)));
connect(p, SIGNAL(selected(Cook)), SLOT(setFocus()));
connect(p, SIGNAL(canceled()), SLOT(setFocus()));
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
316
|
}
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
317
|
void ProgrammingAutoConfigWindow::on_checkCookButton_clicked()
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
318
|
{
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
319
|
setFocus();
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
320
|
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
321
322
323
324
325
|
AutoCookCheckWindow *w = new AutoCookCheckWindow(this, cook);
w->setWindowModality(Qt::WindowModal);
w->showFullScreen();
w->raise();
}
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
326
|
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
327
328
|
void ProgrammingAutoConfigWindow::on_backButton_clicked()
{
|
382b586e9
김태훈
프로그래밍 모드 임시 구현
|
329
330
|
close();
}
|
51175dd1a
김태훈
엔코더 구현
|
331
332
333
334
|
void ProgrammingAutoConfigWindow::on_configButton_1_clicked()
{
ui->configSlider_1->setFocus();
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
335
|
updateView();
|
51175dd1a
김태훈
엔코더 구현
|
336
337
338
339
340
|
}
void ProgrammingAutoConfigWindow::on_configButton_2_clicked()
{
ui->configSlider_2->setFocus();
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
341
|
updateView();
|
51175dd1a
김태훈
엔코더 구현
|
342
343
344
345
346
|
}
void ProgrammingAutoConfigWindow::on_configButton_3_clicked()
{
ui->configSlider_3->setFocus();
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
347
|
updateView();
|
51175dd1a
김태훈
엔코더 구현
|
348
349
350
351
352
|
}
void ProgrammingAutoConfigWindow::on_configButton_4_clicked()
{
ui->configSlider_4->setFocus();
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
353
|
updateView();
|
51175dd1a
김태훈
엔코더 구현
|
354
355
356
357
358
|
}
void ProgrammingAutoConfigWindow::on_configButton_5_clicked()
{
ui->configSlider_5->setFocus();
|
af879dd59
김태훈
자동 요리 만들기 누락 기능 추가
|
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
|
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()
{
}
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
김태훈
엔코더 구현
|
393
|
}
|