Commit fa41bb40d6beb9ee34f40b9e23bd91c7236dcbb3

Authored by 고영탁
1 parent d20f8d98a6
Exists in master and in 2 other branches fhd, fhd-demo

HACCP 데이터 파일 다운로드 기능 추가

 - HACCP 데이터 다운로드 다이얼로그 추가
 - HACCP 데이터 다운로드 쓰레드 기능 추가
app/gui/oven_control/config.cpp
@@ -28,6 +28,7 @@ @@ -28,6 +28,7 @@
28 #include "system.h" 28 #include "system.h"
29 #include "unistd.h" 29 #include "unistd.h"
30 #include "configdemomodedlg.h" 30 #include "configdemomodedlg.h"
  31 +#include "haccpdownloaddlg.h"
31 #include <QFontDatabase> 32 #include <QFontDatabase>
32 33
33 using namespace Define; 34 using namespace Define;
@@ -566,6 +567,8 @@ void Config::execConfigWindow(QWidget *parent, Define::ConfigType idx){ @@ -566,6 +567,8 @@ void Config::execConfigWindow(QWidget *parent, Define::ConfigType idx){
566 dlg=new ConfigIpDlg(parent); 567 dlg=new ConfigIpDlg(parent);
567 break; 568 break;
568 case config_haccp_data_download: 569 case config_haccp_data_download:
  570 + dlg = new HaccpDownloadDlg(parent);
  571 + break;
569 case config_info_data_download: 572 case config_info_data_download:
570 case config_service_data_download: 573 case config_service_data_download:
571 case config_program_download: 574 case config_program_download:
app/gui/oven_control/configwindow.h
@@ -32,12 +32,12 @@ class ConfigWindow : public QMainWindow @@ -32,12 +32,12 @@ class ConfigWindow : public QMainWindow
32 32
33 private: 33 private:
34 const uint16_t m_arrMaxMenuCount[7] ={ 34 const uint16_t m_arrMaxMenuCount[7] ={
35 - 6,8,8,2,3,0,6 35 + 6,8,9,2,3,0,6
36 }; 36 };
37 const Define::ConfigType m_arrConfigListInfos[7][20] = { 37 const Define::ConfigType m_arrConfigListInfos[7][20] = {
38 {config_language,config_datetime, config_temptype,config_backlight, config_time_type,config_resttime_format,}, 38 {config_language,config_datetime, config_temptype,config_backlight, config_time_type,config_resttime_format,},
39 {config_marster_vol,config_keypad_sound1,config_keypad_sound2,config_request_loadexec,config_programstep_finish,config_cooktime_finish,config_stoperror_distinguish,config_sound_factory_reset}, 39 {config_marster_vol,config_keypad_sound1,config_keypad_sound2,config_request_loadexec,config_programstep_finish,config_cooktime_finish,config_stoperror_distinguish,config_sound_factory_reset},
40 - {config_info_data_download,config_service_data_download,config_program_download,config_program_upload ,config_program_initialize,config_ip,config_set_download,config_set_upload}, 40 + {config_haccp_data_download, config_info_data_download,config_service_data_download,config_program_download,config_program_upload ,config_program_initialize,config_ip,config_set_download,config_set_upload},
41 {config_set_half_energy,config_set_auto_darkness,}, 41 {config_set_half_energy,config_set_auto_darkness,},
42 {config_duty_wash,config_loading_door_monitoring,config_cooking_door_monitoring}, 42 {config_duty_wash,config_loading_door_monitoring,config_cooking_door_monitoring},
43 {config_invalid,}, 43 {config_invalid,},
app/gui/oven_control/fileprocessdlg.cpp
@@ -18,7 +18,7 @@ @@ -18,7 +18,7 @@
18 18
19 19
20 ProgramCopyWorker::ProgramCopyWorker(){ 20 ProgramCopyWorker::ProgramCopyWorker(){
21 - m_bStop = false; 21 +
22 } 22 }
23 23
24 24
@@ -236,13 +236,55 @@ void ProgramCopyWorker::addSrcFile(QString strfilename){ @@ -236,13 +236,55 @@ void ProgramCopyWorker::addSrcFile(QString strfilename){
236 m_arrSrcFileList.append(strfilename); 236 m_arrSrcFileList.append(strfilename);
237 } 237 }
238 238
239 -void ProgramCopyWorker::workerStop(){  
240 - //QMutexLocker locker(&m_mutex);  
241 - // qDebug() << "stop thread";  
242 - m_bStop = true; 239 +
  240 +
  241 +
  242 +void ProgramCopyWorker::haccpDownloadMain()
  243 +{
  244 + int nDateTotalCount = m_dtStart.daysTo(m_dtEnd)+1;
  245 + int nDateCpltCount=0;
  246 + int year, mon, day;
  247 + QProcess process;
  248 +
  249 + qDebug() << __func__;
  250 + if(nDateTotalCount <= 0){
  251 + qDebug() << "total date" << nDateTotalCount;
  252 + emit progressed(100,0);
  253 + emit finished();
  254 + return;
  255 + }
  256 +
  257 + for(QDate dt = m_dtStart; dt <= m_dtEnd; dt=dt.addDays(1)){
  258 + year = dt.year(); mon = dt.month(); day=dt.day();
  259 + QString path = QString("/prime/haccp/%1/%2/%3/").arg(year,2,10,QLatin1Char('4')).arg(mon, 2,10,QLatin1Char('0')).arg(day,2,10,QLatin1Char('0'));
  260 + QDir dir(path);
  261 + QString cmd = QString("sh -c \"zip -P primeov980308 -r %1/%2%3%4.zip *\"").arg(m_strDestDir).arg(year,2,10,QLatin1Char('4')).arg(mon, 2,10,QLatin1Char('0')).arg(day,2,10,QLatin1Char('0'));
  262 +
  263 + if(dir.exists()){
  264 + qDebug() << "path is " << path<< "cmd is "<< cmd;
  265 + process.setWorkingDirectory(path);
  266 + process.start(cmd);
  267 + if(!process.waitForFinished(30000)){
  268 + qDebug() << "zip failed";
  269 + }
  270 + process.start("sync");
  271 + process.waitForFinished();
  272 + nDateCpltCount++;
  273 + emit progressed(nDateCpltCount*100/nDateTotalCount , nDateTotalCount - nDateCpltCount);
  274 + QThread::currentThread()->msleep(300);
  275 + }
  276 + else {
  277 + nDateCpltCount++;
  278 + emit progressed( nDateCpltCount*100/nDateTotalCount , nDateTotalCount - nDateCpltCount);
  279 + QThread::currentThread()->msleep(500);
  280 + }
  281 + }
  282 + sync();
  283 + emit finished();
243 } 284 }
244 285
245 286
  287 +
246 FileProcessDlg::FileProcessDlg(QWidget *parent, ConfigType type, bool isDown) : 288 FileProcessDlg::FileProcessDlg(QWidget *parent, ConfigType type, bool isDown) :
247 QDialog(parent), 289 QDialog(parent),
248 ui(new Ui::FileProcessDlg) 290 ui(new Ui::FileProcessDlg)
@@ -261,12 +303,15 @@ FileProcessDlg::FileProcessDlg(QWidget *parent, ConfigType type, bool isDown) : @@ -261,12 +303,15 @@ FileProcessDlg::FileProcessDlg(QWidget *parent, ConfigType type, bool isDown) :
261 ui->ctrWjProcess->setMinimum(0); 303 ui->ctrWjProcess->setMinimum(0);
262 ui->ctrWjProcess->setMaximum(100); 304 ui->ctrWjProcess->setMaximum(100);
263 305
  306 +
264 if(isDown){ 307 if(isDown){
265 QPixmap pxmap; 308 QPixmap pxmap;
266 pxmap.load(":/images/config/102_usb_upload_icon.png"); 309 pxmap.load(":/images/config/102_usb_upload_icon.png");
267 ui->label_2->setPixmap(pxmap); 310 ui->label_2->setPixmap(pxmap);
268 } 311 }
269 312
  313 +
  314 +
270 switch(type){ 315 switch(type){
271 case config_haccp_data_download: 316 case config_haccp_data_download:
272 QTimer::singleShot(100,this,SLOT(haccpdataDownload())); 317 QTimer::singleShot(100,this,SLOT(haccpdataDownload()));
@@ -298,6 +343,34 @@ FileProcessDlg::FileProcessDlg(QWidget *parent, ConfigType type, bool isDown) : @@ -298,6 +343,34 @@ FileProcessDlg::FileProcessDlg(QWidget *parent, ConfigType type, bool isDown) :
298 } 343 }
299 } 344 }
300 345
  346 +FileProcessDlg::FileProcessDlg(QDate startdt, QDate enddt, QWidget *parent):
  347 + QDialog(parent),
  348 + ui(new Ui::FileProcessDlg)
  349 +{
  350 + ui->setupUi(this);
  351 + setAttribute(Qt::WA_DeleteOnClose);
  352 + setAttribute(Qt::WA_TranslucentBackground);
  353 + setWindowFlags(Qt::FramelessWindowHint);
  354 + qApp->setActiveWindow(this);
  355 + this->setFocus();
  356 + ui->ctrBtnCancel->setFocus();
  357 +
  358 + m_bRst = true;
  359 + m_nCfgtype = config_haccp_data_download;
  360 +
  361 + ui->ctrWjProcess->setMinimum(0);
  362 + ui->ctrWjProcess->setMaximum(100);
  363 +
  364 + m_dtStart = startdt;
  365 + m_dtEnd = enddt;
  366 +
  367 + QPixmap pxmap;
  368 + pxmap.load(":/images/config/102_usb_upload_icon.png");
  369 + ui->label_2->setPixmap(pxmap);
  370 +
  371 + QTimer::singleShot(100,this,SLOT(haccpdataDownload()));
  372 +}
  373 +
301 FileProcessDlg::~FileProcessDlg() 374 FileProcessDlg::~FileProcessDlg()
302 { 375 {
303 delete ui; 376 delete ui;
@@ -306,7 +379,6 @@ FileProcessDlg::~FileProcessDlg() @@ -306,7 +379,6 @@ FileProcessDlg::~FileProcessDlg()
306 void FileProcessDlg::on_ctrBtnCancel_clicked() 379 void FileProcessDlg::on_ctrBtnCancel_clicked()
307 { 380 {
308 381
309 - //emit stopcopy();  
310 programCopyThd.requestInterruption(); 382 programCopyThd.requestInterruption();
311 //close(); 383 //close();
312 } 384 }
@@ -574,10 +646,8 @@ void FileProcessDlg::programDownload(){ @@ -574,10 +646,8 @@ void FileProcessDlg::programDownload(){
574 connect(&programCopyThd,SIGNAL(started()), &worker, SLOT(workerMain())); 646 connect(&programCopyThd,SIGNAL(started()), &worker, SLOT(workerMain()));
575 connect(&worker, SIGNAL(progressed(int,int)), this, SLOT(onProgressed(int,int))); 647 connect(&worker, SIGNAL(progressed(int,int)), this, SLOT(onProgressed(int,int)));
576 connect(&worker, SIGNAL(errorFired(QString)), this, SLOT(onErrorFired(QString))); 648 connect(&worker, SIGNAL(errorFired(QString)), this, SLOT(onErrorFired(QString)));
577 - connect(this, SIGNAL(stopcopy()), &worker, SLOT(workerStop()));  
578 connect(&worker, SIGNAL(finished()), &programCopyThd,SLOT(quit())); 649 connect(&worker, SIGNAL(finished()), &programCopyThd,SLOT(quit()));
579 connect(&programCopyThd, SIGNAL(finished()), this, SLOT(onProgressFinished())); 650 connect(&programCopyThd, SIGNAL(finished()), this, SLOT(onProgressFinished()));
580 - //connect(ui->ctrBtnCancel, SIGNAL(clicked(bool)), &worker, SLOT(workerStop()));  
581 651
582 programCopyThd.start(); 652 programCopyThd.start();
583 qDebug() << "thread start"; 653 qDebug() << "thread start";
@@ -665,6 +735,7 @@ void FileProcessDlg::onErrorFired(QString Desc) @@ -665,6 +735,7 @@ void FileProcessDlg::onErrorFired(QString Desc)
665 void FileProcessDlg::onProgressed(int progress, int sec){ 735 void FileProcessDlg::onProgressed(int progress, int sec){
666 int min, _sec; 736 int min, _sec;
667 QString strTemp; 737 QString strTemp;
  738 + qDebug() << __func__<< progress << sec;
668 ui->ctrWjProcess->setValue(progress); 739 ui->ctrWjProcess->setValue(progress);
669 min = sec/60; 740 min = sec/60;
670 _sec = sec%60; 741 _sec = sec%60;
@@ -673,9 +744,11 @@ void FileProcessDlg::onProgressed(int progress, int sec){ @@ -673,9 +744,11 @@ void FileProcessDlg::onProgressed(int progress, int sec){
673 ui->ctrLbRemainTime->setText(strTemp); 744 ui->ctrLbRemainTime->setText(strTemp);
674 } 745 }
675 else{ 746 else{
676 - strTemp = tr("남은 예상 시간 : %1초").arg(_sec); 747 + strTemp = QString(tr("남은 예상 시간 : %1초")).arg(_sec);
  748 + qDebug() << strTemp;
677 ui->ctrLbRemainTime->setText(strTemp); 749 ui->ctrLbRemainTime->setText(strTemp);
678 } 750 }
  751 + update();
679 } 752 }
680 753
681 void FileProcessDlg::programUpload(){ 754 void FileProcessDlg::programUpload(){
@@ -704,10 +777,8 @@ void FileProcessDlg::programUpload(){ @@ -704,10 +777,8 @@ void FileProcessDlg::programUpload(){
704 connect(&programCopyThd,SIGNAL(started()), &worker, SLOT(workerMain())); 777 connect(&programCopyThd,SIGNAL(started()), &worker, SLOT(workerMain()));
705 connect(&worker, SIGNAL(progressed(int,int)), this, SLOT(onProgressed(int,int))); 778 connect(&worker, SIGNAL(progressed(int,int)), this, SLOT(onProgressed(int,int)));
706 connect(&worker,SIGNAL(errorFired(QString)),this,SLOT(onErrorFired(QString))); 779 connect(&worker,SIGNAL(errorFired(QString)),this,SLOT(onErrorFired(QString)));
707 - connect(this, SIGNAL(stopcopy()), &worker, SLOT(workerStop()));  
708 connect(&worker, SIGNAL(finished()), &programCopyThd,SLOT(quit())); 780 connect(&worker, SIGNAL(finished()), &programCopyThd,SLOT(quit()));
709 connect(&programCopyThd, SIGNAL(finished()), this, SLOT(onProgressFinished())); 781 connect(&programCopyThd, SIGNAL(finished()), this, SLOT(onProgressFinished()));
710 - //connect(ui->ctrBtnCancel, SIGNAL(clicked(bool)), &worker, SLOT(workerStop()));  
711 782
712 programCopyThd.start(); 783 programCopyThd.start();
713 qDebug() << "thread start"; 784 qDebug() << "thread start";
@@ -816,9 +887,37 @@ void FileProcessDlg::configUpload(){ @@ -816,9 +887,37 @@ void FileProcessDlg::configUpload(){
816 } 887 }
817 888
818 void FileProcessDlg::haccpdataDownload(){ 889 void FileProcessDlg::haccpdataDownload(){
819 - ui->ctrWjProcess->setValue(100);  
820 - ui->ctrLbRemainTime->setText(tr("남은 예상 시간 : 완료"));  
821 - QTimer::singleShot(1000,this,SLOT(close())); 890 + QString strSrcPath;
  891 +
  892 + if(FileProcessor::detectUSB(strSrcPath)){
  893 + strSrcPath = QString("%1/prime/haccp").arg(strSrcPath);
  894 + QDir dir(strSrcPath);
  895 + if(dir.exists()){
  896 + qDebug() << "remove dirs " << strSrcPath;
  897 + dir.removeRecursively();
  898 + sync();
  899 + sleep(1);
  900 + }
  901 + qDebug() << "src paht is " << strSrcPath;
  902 + dir.mkpath(strSrcPath);
  903 + sync();
  904 + worker.setDestPath(strSrcPath);
  905 + worker.setStartDate(m_dtStart);
  906 + worker.setEndDate(m_dtEnd);
  907 + worker.moveToThread(&programCopyThd);
  908 +
  909 + connect(&programCopyThd,SIGNAL(started()), &worker, SLOT(haccpDownloadMain()));
  910 + connect(&worker, SIGNAL(progressed(int,int)), this, SLOT(onProgressed(int,int)));
  911 + connect(&worker,SIGNAL(errorFired(QString)),this,SLOT(onErrorFired(QString)));
  912 + connect(&worker, SIGNAL(finished()), &programCopyThd,SLOT(quit()));
  913 + connect(&programCopyThd, SIGNAL(finished()), this, SLOT(onProgressFinished()));
  914 +
  915 + programCopyThd.start();
  916 + }
  917 + else{
  918 + ui->ctrLbRemainTime->setText(tr("USB 인식을 실패하였습니다."));
  919 + QTimer::singleShot(1000,this,SLOT(close()));
  920 + }
822 } 921 }
823 922
824 void FileProcessDlg::standardInfoUpload() 923 void FileProcessDlg::standardInfoUpload()
app/gui/oven_control/fileprocessdlg.h
@@ -8,6 +8,7 @@ @@ -8,6 +8,7 @@
8 #include <QList> 8 #include <QList>
9 #include <QMutex> 9 #include <QMutex>
10 #include <QKeyEvent> 10 #include <QKeyEvent>
  11 +#include <QDate>
11 #include "config.h" 12 #include "config.h"
12 #include "servicedata.h" 13 #include "servicedata.h"
13 #include "historylistwindow.h" 14 #include "historylistwindow.h"
@@ -26,17 +27,22 @@ class ProgramCopyWorker : public QObject{ @@ -26,17 +27,22 @@ class ProgramCopyWorker : public QObject{
26 QList<QString> m_arrSrcDirList; 27 QList<QString> m_arrSrcDirList;
27 QMutex m_mutex; 28 QMutex m_mutex;
28 bool m_bStop; 29 bool m_bStop;
  30 + QDate m_dtStart;
  31 + QDate m_dtEnd;
  32 +
29 public: 33 public:
30 explicit ProgramCopyWorker(QString strDest); 34 explicit ProgramCopyWorker(QString strDest);
31 explicit ProgramCopyWorker(); 35 explicit ProgramCopyWorker();
32 void setDestPath(QString strDest); 36 void setDestPath(QString strDest);
33 void addSrcFile(QString strfilename); 37 void addSrcFile(QString strfilename);
34 void addSrcDir(QString strDirPath); 38 void addSrcDir(QString strDirPath);
  39 + void setStartDate(QDate &dt){m_dtStart = dt;}
  40 + void setEndDate(QDate &dt){m_dtEnd = dt;}
35 41
36 42
37 public slots: 43 public slots:
38 void workerMain(); 44 void workerMain();
39 - void workerStop(); 45 + void haccpDownloadMain();
40 46
41 signals: 47 signals:
42 void finished(); 48 void finished();
@@ -52,6 +58,7 @@ class FileProcessDlg : public QDialog @@ -52,6 +58,7 @@ class FileProcessDlg : public QDialog
52 58
53 public: 59 public:
54 explicit FileProcessDlg(QWidget *parent = 0, ConfigType type = config_invalid, bool isDown = true); 60 explicit FileProcessDlg(QWidget *parent = 0, ConfigType type = config_invalid, bool isDown = true);
  61 + explicit FileProcessDlg(QDate startdt, QDate enddt, QWidget *parent = 0);
55 ~FileProcessDlg(); 62 ~FileProcessDlg();
56 63
57 private slots: 64 private slots:
@@ -66,7 +73,6 @@ private slots: @@ -66,7 +73,6 @@ private slots:
66 void standardInfoUpload(); 73 void standardInfoUpload();
67 74
68 signals: 75 signals:
69 - void stopcopy();  
70 76
71 public slots: 77 public slots:
72 void onProgressed(int progress,int sec); 78 void onProgressed(int progress,int sec);
@@ -82,6 +88,8 @@ private: @@ -82,6 +88,8 @@ private:
82 ConfigType m_nCfgtype; 88 ConfigType m_nCfgtype;
83 QThread programCopyThd; 89 QThread programCopyThd;
84 ProgramCopyWorker worker; 90 ProgramCopyWorker worker;
  91 + QDate m_dtStart;
  92 + QDate m_dtEnd;
85 bool m_bRst; 93 bool m_bRst;
86 }; 94 };
87 95
app/gui/oven_control/haccpdownloaddlg.cpp
@@ -0,0 +1,144 @@ @@ -0,0 +1,144 @@
  1 +#include <QSignalMapper>
  2 +#include <QDate>
  3 +#include <QKeyEvent>
  4 +#include <QDebug>
  5 +#include "haccpdownloaddlg.h"
  6 +#include "ui_haccpdownloaddlg.h"
  7 +#include "soundplayer.h"
  8 +#include "fileprocessdlg.h"
  9 +#include "config.h"
  10 +
  11 +HaccpDownloadDlg::HaccpDownloadDlg(QWidget *parent) :
  12 + QDialog(parent),
  13 + ui(new Ui::HaccpDownloadDlg)
  14 +{
  15 + ui->setupUi(this);
  16 + this->setWindowFlags(Qt::FramelessWindowHint);
  17 + setAttribute(Qt::WA_DeleteOnClose);
  18 + qApp->setActiveWindow(this);
  19 + this->setFocus();
  20 +
  21 + foreach (QPushButton *button, findChildren<QPushButton *>())
  22 + connect(button, &QPushButton::pressed, SoundPlayer::playClick);
  23 +
  24 + ui->ctrSpBxYearStart->setFormatterWidth(4);
  25 + ui->ctrSpBxYearEnd->setFormatterWidth(4);
  26 + QDate date = QDate::currentDate();
  27 + ui->ctrSpBxDayEnd->setValue(date.day());
  28 + ui->ctrSpBxDayStart->setValue(date.day());
  29 + ui->ctrSpBxMonthEnd->setValue(date.month());
  30 + ui->ctrSpBxMonthStart->setValue(date.month());
  31 + ui->ctrSpBxYearStart->setValue(date.year());
  32 + ui->ctrSpBxYearEnd->setValue(date.year());
  33 +
  34 + ui->ctrSpBxYearStart->setFocus();
  35 +
  36 +
  37 +
  38 + connect(ui->keyboardwidget, SIGNAL(onOkKeyClicked()), this, SLOT(keyEnter_clicked()));
  39 + connect(ui->keyboardwidget, SIGNAL(onCancelKeyClicked()), this, SLOT(keyCancel_clicked()));
  40 +
  41 + QSignalMapper* mapper = new QSignalMapper(this);
  42 + mapper->setMapping(ui->ctrSpBxYearStart, ui->ctrSpBxYearStart);
  43 + mapper->setMapping(ui->ctrSpBxYearEnd, ui->ctrSpBxYearEnd);
  44 + mapper->setMapping(ui->ctrSpBxMonthStart, ui->ctrSpBxMonthStart);
  45 + mapper->setMapping(ui->ctrSpBxMonthEnd, ui->ctrSpBxMonthEnd);
  46 + mapper->setMapping(ui->ctrSpBxDayStart, ui->ctrSpBxDayStart);
  47 +
  48 + connect(ui->ctrSpBxDayEnd, SIGNAL(focusInEdit()), mapper,SLOT(map()));
  49 + connect(ui->ctrSpBxDayStart, SIGNAL(focusInEdit()), mapper,SLOT(map()));
  50 + connect(ui->ctrSpBxMonthEnd, SIGNAL(focusInEdit()), mapper,SLOT(map()));
  51 + connect(ui->ctrSpBxMonthStart, SIGNAL(focusInEdit()), mapper,SLOT(map()));
  52 + connect(ui->ctrSpBxYearStart, SIGNAL(focusInEdit()), mapper,SLOT(map()));
  53 + connect(ui->ctrSpBxYearEnd, SIGNAL(focusInEdit()), mapper,SLOT(map()));
  54 +
  55 + connect(mapper, SIGNAL(mapped(QWidget*)), this, SLOT(focusInSpinBox(QWidget*)));
  56 +
  57 +
  58 +}
  59 +
  60 +HaccpDownloadDlg::~HaccpDownloadDlg()
  61 +{
  62 + delete ui;
  63 +}
  64 +
  65 +void HaccpDownloadDlg::on_ctrBtnCancel_clicked()
  66 +{
  67 + deleteLater();
  68 +}
  69 +
  70 +void HaccpDownloadDlg::on_ctrBtnOk_clicked()
  71 +{
  72 + FileProcessDlg* dlg = new FileProcessDlg(QDate(ui->ctrSpBxYearStart->value(), ui->ctrSpBxMonthStart->value(), ui->ctrSpBxDayStart->value()),
  73 + QDate(ui->ctrSpBxYearEnd->value(),ui->ctrSpBxMonthEnd->value(), ui->ctrSpBxDayEnd->value()),
  74 + this);
  75 + connect(dlg, SIGNAL(destroyed(QObject*)), SLOT(deleteLater()));
  76 + dlg->setWindowModality(Qt::WindowModal);
  77 + dlg->show();
  78 + dlg->exec();
  79 +}
  80 +
  81 +void HaccpDownloadDlg::keyCancel_clicked()
  82 +{
  83 + QSpinBox *spbx = qobject_cast<QSpinBox*>(focusWidget());
  84 + if(spbx != NULL){
  85 + spbx->setValue(m_nFocusValue);
  86 + }
  87 + ui->keyboardwidget->focusOutKeyboard();
  88 +}
  89 +
  90 +void HaccpDownloadDlg::keyEnter_clicked(){
  91 + ui->keyboardwidget->focusOutKeyboard();
  92 +}
  93 +
  94 +
  95 +void HaccpDownloadDlg::focusInSpinBox(QWidget *widget){
  96 + QSpinBox *spbx = qobject_cast<QSpinBox*>(widget);
  97 + if(spbx != NULL){
  98 + m_nFocusValue = spbx->value();
  99 + }
  100 +}
  101 +
  102 +void HaccpDownloadDlg::keyReleaseEvent(QKeyEvent *event)
  103 +{
  104 + switch (event->key())
  105 + {
  106 + case 0x01000032: // Turn left
  107 + if(focusWidget() == ui->ctrSpBxYearStart) ui->ctrBtnCancel->setFocus();
  108 + else focusPreviousChild();
  109 + break;
  110 + case 0x01000031: // Push
  111 + {
  112 + QPushButton *btn = qobject_cast<QPushButton*>(focusWidget());
  113 + if(btn != NULL){
  114 + btn->click();
  115 + }
  116 + else{
  117 + QSpinBox *spbx = qobject_cast<QSpinBox*>(focusWidget());
  118 + qDebug() << "grab keyboard";
  119 + if(spbx != NULL) ui->keyboardwidget->focusInKeyboard();
  120 + }
  121 + break;
  122 + }
  123 + case 0x01000030: // Turn right
  124 + if(focusWidget() == ui->ctrBtnCancel) ui->ctrSpBxYearStart->setFocus();
  125 + else focusNextChild();
  126 + break;
  127 + }
  128 +}
  129 +
  130 +void HaccpDownloadDlg::keyPressEvent(QKeyEvent *event){
  131 + switch (event->key())
  132 + {
  133 + case 0x01000032: // Turn left
  134 + if(focusWidget() == ui->ctrSpBxYearStart) ui->ctrBtnCancel->setFocus();
  135 + else focusPreviousChild();
  136 + break;
  137 + case 0x01000031: // Push
  138 + break;
  139 + case 0x01000030: // Turn right
  140 + if(focusWidget() == ui->ctrBtnCancel) ui->ctrSpBxYearStart->setFocus();
  141 + else focusNextChild();
  142 + break;
  143 + }
  144 +}
app/gui/oven_control/haccpdownloaddlg.h
@@ -0,0 +1,37 @@ @@ -0,0 +1,37 @@
  1 +#ifndef HACCPDOWNLOADDLG_H
  2 +#define HACCPDOWNLOADDLG_H
  3 +
  4 +#include <QDialog>
  5 +
  6 +namespace Ui {
  7 +class HaccpDownloadDlg;
  8 +}
  9 +
  10 +class HaccpDownloadDlg : public QDialog
  11 +{
  12 + Q_OBJECT
  13 +
  14 +public:
  15 + explicit HaccpDownloadDlg(QWidget *parent = 0);
  16 + ~HaccpDownloadDlg();
  17 +
  18 +private slots:
  19 + void on_ctrBtnCancel_clicked();
  20 +
  21 + void on_ctrBtnOk_clicked();
  22 +
  23 + void keyCancel_clicked();
  24 + void keyEnter_clicked();
  25 +
  26 + void focusInSpinBox(QWidget *widget);
  27 +
  28 +protected:
  29 + void keyReleaseEvent(QKeyEvent* event);
  30 + void keyPressEvent(QKeyEvent* event);
  31 +
  32 +private:
  33 + Ui::HaccpDownloadDlg *ui;
  34 + int m_nFocusValue;
  35 +};
  36 +
  37 +#endif // HACCPDOWNLOADDLG_H
app/gui/oven_control/haccpdownloaddlg.ui
@@ -0,0 +1,609 @@ @@ -0,0 +1,609 @@
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<ui version="4.0">
  3 + <class>HaccpDownloadDlg</class>
  4 + <widget class="QDialog" name="HaccpDownloadDlg">
  5 + <property name="geometry">
  6 + <rect>
  7 + <x>0</x>
  8 + <y>0</y>
  9 + <width>900</width>
  10 + <height>1600</height>
  11 + </rect>
  12 + </property>
  13 + <property name="styleSheet">
  14 + <string notr="true">#ConfigDateTimeDlg{
  15 + /*background-color : transparent;*/
  16 +}
  17 +
  18 +#centralwidget{
  19 + background-image : url(:/images/background/popup/913.png);
  20 +}
  21 +
  22 +QLabel {
  23 + color : white;
  24 +}
  25 +QLineEdit{
  26 + background-color : transparent;
  27 + color : white;
  28 +}
  29 +
  30 +QSpinBox{
  31 + background-color : transparent;
  32 + color : white;
  33 +}
  34 +
  35 +QPushButton{
  36 + border-color : transparent;
  37 + background-color : transparent;
  38 + color : white;
  39 +}
  40 +QPushButton::pressed, QPushButton::focus{
  41 + color : yellow;
  42 +}</string>
  43 + </property>
  44 + <widget class="QWidget" name="centralwidget" native="true">
  45 + <property name="geometry">
  46 + <rect>
  47 + <x>0</x>
  48 + <y>425</y>
  49 + <width>900</width>
  50 + <height>1025</height>
  51 + </rect>
  52 + </property>
  53 + <widget class="QWidget" name="verticalLayoutWidget">
  54 + <property name="geometry">
  55 + <rect>
  56 + <x>0</x>
  57 + <y>0</y>
  58 + <width>901</width>
  59 + <height>421</height>
  60 + </rect>
  61 + </property>
  62 + <layout class="QVBoxLayout" name="verticalLayout" stretch="10,10,10,10,8">
  63 + <property name="spacing">
  64 + <number>10</number>
  65 + </property>
  66 + <property name="sizeConstraint">
  67 + <enum>QLayout::SetDefaultConstraint</enum>
  68 + </property>
  69 + <item>
  70 + <widget class="QLabel" name="label">
  71 + <property name="maximumSize">
  72 + <size>
  73 + <width>16777215</width>
  74 + <height>94</height>
  75 + </size>
  76 + </property>
  77 + <property name="font">
  78 + <font>
  79 + <family>나눔고딕</family>
  80 + <pointsize>18</pointsize>
  81 + <weight>75</weight>
  82 + <bold>true</bold>
  83 + </font>
  84 + </property>
  85 + <property name="styleSheet">
  86 + <string notr="true">color : white;</string>
  87 + </property>
  88 + <property name="text">
  89 + <string>HACCP 데이터 다운로드</string>
  90 + </property>
  91 + <property name="alignment">
  92 + <set>Qt::AlignCenter</set>
  93 + </property>
  94 + </widget>
  95 + </item>
  96 + <item>
  97 + <widget class="Line" name="line">
  98 + <property name="styleSheet">
  99 + <string notr="true">color: rgb(255, 255, 255);</string>
  100 + </property>
  101 + <property name="orientation">
  102 + <enum>Qt::Horizontal</enum>
  103 + </property>
  104 + </widget>
  105 + </item>
  106 + <item>
  107 + <layout class="QHBoxLayout" name="horizontalLayout_2" stretch="0,0,1,0,1,0,1">
  108 + <property name="spacing">
  109 + <number>15</number>
  110 + </property>
  111 + <property name="leftMargin">
  112 + <number>150</number>
  113 + </property>
  114 + <property name="rightMargin">
  115 + <number>150</number>
  116 + </property>
  117 + <item>
  118 + <widget class="QLabel" name="label_8">
  119 + <property name="font">
  120 + <font>
  121 + <family>나눔고딕</family>
  122 + <pointsize>18</pointsize>
  123 + <weight>75</weight>
  124 + <bold>true</bold>
  125 + </font>
  126 + </property>
  127 + <property name="text">
  128 + <string/>
  129 + </property>
  130 + <property name="pixmap">
  131 + <pixmap resource="resources.qrc">:/images/symbol/up_date.png</pixmap>
  132 + </property>
  133 + </widget>
  134 + </item>
  135 + <item>
  136 + <widget class="FormatterSpinBox" name="ctrSpBxYearStart">
  137 + <property name="sizePolicy">
  138 + <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
  139 + <horstretch>0</horstretch>
  140 + <verstretch>0</verstretch>
  141 + </sizepolicy>
  142 + </property>
  143 + <property name="font">
  144 + <font>
  145 + <family>나눔고딕</family>
  146 + <pointsize>18</pointsize>
  147 + <underline>true</underline>
  148 + </font>
  149 + </property>
  150 + <property name="focusPolicy">
  151 + <enum>Qt::StrongFocus</enum>
  152 + </property>
  153 + <property name="frame">
  154 + <bool>false</bool>
  155 + </property>
  156 + <property name="alignment">
  157 + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
  158 + </property>
  159 + <property name="buttonSymbols">
  160 + <enum>QAbstractSpinBox::NoButtons</enum>
  161 + </property>
  162 + <property name="minimum">
  163 + <number>2000</number>
  164 + </property>
  165 + <property name="maximum">
  166 + <number>2100</number>
  167 + </property>
  168 + <property name="value">
  169 + <number>2000</number>
  170 + </property>
  171 + </widget>
  172 + </item>
  173 + <item>
  174 + <widget class="QLabel" name="label_2">
  175 + <property name="font">
  176 + <font>
  177 + <family>나눔고딕</family>
  178 + <pointsize>18</pointsize>
  179 + <weight>75</weight>
  180 + <bold>true</bold>
  181 + </font>
  182 + </property>
  183 + <property name="text">
  184 + <string>년</string>
  185 + </property>
  186 + </widget>
  187 + </item>
  188 + <item>
  189 + <widget class="FormatterSpinBox" name="ctrSpBxMonthStart">
  190 + <property name="sizePolicy">
  191 + <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
  192 + <horstretch>0</horstretch>
  193 + <verstretch>0</verstretch>
  194 + </sizepolicy>
  195 + </property>
  196 + <property name="font">
  197 + <font>
  198 + <family>나눔고딕</family>
  199 + <pointsize>18</pointsize>
  200 + <underline>true</underline>
  201 + </font>
  202 + </property>
  203 + <property name="focusPolicy">
  204 + <enum>Qt::StrongFocus</enum>
  205 + </property>
  206 + <property name="frame">
  207 + <bool>false</bool>
  208 + </property>
  209 + <property name="alignment">
  210 + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
  211 + </property>
  212 + <property name="buttonSymbols">
  213 + <enum>QAbstractSpinBox::NoButtons</enum>
  214 + </property>
  215 + <property name="minimum">
  216 + <number>1</number>
  217 + </property>
  218 + <property name="maximum">
  219 + <number>12</number>
  220 + </property>
  221 + <property name="value">
  222 + <number>12</number>
  223 + </property>
  224 + </widget>
  225 + </item>
  226 + <item>
  227 + <widget class="QLabel" name="label_4">
  228 + <property name="font">
  229 + <font>
  230 + <family>나눔고딕</family>
  231 + <pointsize>18</pointsize>
  232 + <weight>75</weight>
  233 + <bold>true</bold>
  234 + </font>
  235 + </property>
  236 + <property name="text">
  237 + <string>월</string>
  238 + </property>
  239 + </widget>
  240 + </item>
  241 + <item>
  242 + <widget class="FormatterSpinBox" name="ctrSpBxDayStart">
  243 + <property name="sizePolicy">
  244 + <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
  245 + <horstretch>0</horstretch>
  246 + <verstretch>0</verstretch>
  247 + </sizepolicy>
  248 + </property>
  249 + <property name="font">
  250 + <font>
  251 + <family>나눔고딕</family>
  252 + <pointsize>18</pointsize>
  253 + <underline>true</underline>
  254 + </font>
  255 + </property>
  256 + <property name="focusPolicy">
  257 + <enum>Qt::StrongFocus</enum>
  258 + </property>
  259 + <property name="frame">
  260 + <bool>false</bool>
  261 + </property>
  262 + <property name="alignment">
  263 + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
  264 + </property>
  265 + <property name="buttonSymbols">
  266 + <enum>QAbstractSpinBox::NoButtons</enum>
  267 + </property>
  268 + <property name="minimum">
  269 + <number>1</number>
  270 + </property>
  271 + <property name="maximum">
  272 + <number>31</number>
  273 + </property>
  274 + <property name="value">
  275 + <number>1</number>
  276 + </property>
  277 + </widget>
  278 + </item>
  279 + <item>
  280 + <widget class="QLabel" name="label_3">
  281 + <property name="font">
  282 + <font>
  283 + <family>나눔고딕</family>
  284 + <pointsize>18</pointsize>
  285 + <weight>75</weight>
  286 + <bold>true</bold>
  287 + </font>
  288 + </property>
  289 + <property name="text">
  290 + <string>일</string>
  291 + </property>
  292 + </widget>
  293 + </item>
  294 + </layout>
  295 + </item>
  296 + <item>
  297 + <layout class="QHBoxLayout" name="horizontalLayout_3" stretch="0,0,1,0,1,0,1">
  298 + <property name="spacing">
  299 + <number>15</number>
  300 + </property>
  301 + <property name="leftMargin">
  302 + <number>150</number>
  303 + </property>
  304 + <property name="rightMargin">
  305 + <number>150</number>
  306 + </property>
  307 + <item>
  308 + <widget class="QLabel" name="label_9">
  309 + <property name="font">
  310 + <font>
  311 + <family>나눔고딕</family>
  312 + <pointsize>18</pointsize>
  313 + <weight>75</weight>
  314 + <bold>true</bold>
  315 + </font>
  316 + </property>
  317 + <property name="text">
  318 + <string/>
  319 + </property>
  320 + <property name="pixmap">
  321 + <pixmap resource="resources.qrc">:/images/symbol/down_date.png</pixmap>
  322 + </property>
  323 + </widget>
  324 + </item>
  325 + <item>
  326 + <widget class="FormatterSpinBox" name="ctrSpBxYearEnd">
  327 + <property name="sizePolicy">
  328 + <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
  329 + <horstretch>0</horstretch>
  330 + <verstretch>0</verstretch>
  331 + </sizepolicy>
  332 + </property>
  333 + <property name="font">
  334 + <font>
  335 + <family>나눔고딕</family>
  336 + <pointsize>18</pointsize>
  337 + <underline>true</underline>
  338 + </font>
  339 + </property>
  340 + <property name="focusPolicy">
  341 + <enum>Qt::StrongFocus</enum>
  342 + </property>
  343 + <property name="frame">
  344 + <bool>false</bool>
  345 + </property>
  346 + <property name="alignment">
  347 + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
  348 + </property>
  349 + <property name="buttonSymbols">
  350 + <enum>QAbstractSpinBox::NoButtons</enum>
  351 + </property>
  352 + <property name="minimum">
  353 + <number>2000</number>
  354 + </property>
  355 + <property name="maximum">
  356 + <number>2100</number>
  357 + </property>
  358 + <property name="value">
  359 + <number>2000</number>
  360 + </property>
  361 + </widget>
  362 + </item>
  363 + <item>
  364 + <widget class="QLabel" name="label_5">
  365 + <property name="font">
  366 + <font>
  367 + <family>나눔고딕</family>
  368 + <pointsize>18</pointsize>
  369 + <weight>75</weight>
  370 + <bold>true</bold>
  371 + </font>
  372 + </property>
  373 + <property name="text">
  374 + <string>년</string>
  375 + </property>
  376 + </widget>
  377 + </item>
  378 + <item>
  379 + <widget class="FormatterSpinBox" name="ctrSpBxMonthEnd">
  380 + <property name="sizePolicy">
  381 + <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
  382 + <horstretch>0</horstretch>
  383 + <verstretch>0</verstretch>
  384 + </sizepolicy>
  385 + </property>
  386 + <property name="font">
  387 + <font>
  388 + <family>나눔고딕</family>
  389 + <pointsize>18</pointsize>
  390 + <underline>true</underline>
  391 + </font>
  392 + </property>
  393 + <property name="focusPolicy">
  394 + <enum>Qt::StrongFocus</enum>
  395 + </property>
  396 + <property name="frame">
  397 + <bool>false</bool>
  398 + </property>
  399 + <property name="alignment">
  400 + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
  401 + </property>
  402 + <property name="buttonSymbols">
  403 + <enum>QAbstractSpinBox::NoButtons</enum>
  404 + </property>
  405 + <property name="minimum">
  406 + <number>1</number>
  407 + </property>
  408 + <property name="maximum">
  409 + <number>12</number>
  410 + </property>
  411 + <property name="value">
  412 + <number>12</number>
  413 + </property>
  414 + </widget>
  415 + </item>
  416 + <item>
  417 + <widget class="QLabel" name="label_6">
  418 + <property name="font">
  419 + <font>
  420 + <family>나눔고딕</family>
  421 + <pointsize>18</pointsize>
  422 + <weight>75</weight>
  423 + <bold>true</bold>
  424 + </font>
  425 + </property>
  426 + <property name="text">
  427 + <string>월</string>
  428 + </property>
  429 + </widget>
  430 + </item>
  431 + <item>
  432 + <widget class="FormatterSpinBox" name="ctrSpBxDayEnd">
  433 + <property name="sizePolicy">
  434 + <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
  435 + <horstretch>0</horstretch>
  436 + <verstretch>0</verstretch>
  437 + </sizepolicy>
  438 + </property>
  439 + <property name="font">
  440 + <font>
  441 + <family>나눔고딕</family>
  442 + <pointsize>18</pointsize>
  443 + <underline>true</underline>
  444 + </font>
  445 + </property>
  446 + <property name="focusPolicy">
  447 + <enum>Qt::StrongFocus</enum>
  448 + </property>
  449 + <property name="frame">
  450 + <bool>false</bool>
  451 + </property>
  452 + <property name="alignment">
  453 + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
  454 + </property>
  455 + <property name="buttonSymbols">
  456 + <enum>QAbstractSpinBox::NoButtons</enum>
  457 + </property>
  458 + <property name="minimum">
  459 + <number>1</number>
  460 + </property>
  461 + <property name="maximum">
  462 + <number>31</number>
  463 + </property>
  464 + <property name="value">
  465 + <number>30</number>
  466 + </property>
  467 + </widget>
  468 + </item>
  469 + <item>
  470 + <widget class="QLabel" name="label_7">
  471 + <property name="font">
  472 + <font>
  473 + <family>나눔고딕</family>
  474 + <pointsize>18</pointsize>
  475 + <weight>75</weight>
  476 + <bold>true</bold>
  477 + </font>
  478 + </property>
  479 + <property name="text">
  480 + <string>일</string>
  481 + </property>
  482 + </widget>
  483 + </item>
  484 + </layout>
  485 + </item>
  486 + <item>
  487 + <layout class="QGridLayout" name="gridLayout_" columnstretch="0,0" columnminimumwidth="0,0">
  488 + <property name="leftMargin">
  489 + <number>100</number>
  490 + </property>
  491 + <property name="rightMargin">
  492 + <number>100</number>
  493 + </property>
  494 + <property name="bottomMargin">
  495 + <number>10</number>
  496 + </property>
  497 + <property name="spacing">
  498 + <number>0</number>
  499 + </property>
  500 + <item row="0" column="0">
  501 + <widget class="QPushButton" name="ctrBtnOk">
  502 + <property name="sizePolicy">
  503 + <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
  504 + <horstretch>0</horstretch>
  505 + <verstretch>0</verstretch>
  506 + </sizepolicy>
  507 + </property>
  508 + <property name="minimumSize">
  509 + <size>
  510 + <width>157</width>
  511 + <height>77</height>
  512 + </size>
  513 + </property>
  514 + <property name="font">
  515 + <font>
  516 + <weight>75</weight>
  517 + <bold>true</bold>
  518 + <underline>true</underline>
  519 + </font>
  520 + </property>
  521 + <property name="styleSheet">
  522 + <string notr="true">QPushButton{
  523 + border-image : url(:/images/config/105_icon_download.png);
  524 +}
  525 +
  526 +QPushButton::pressed, QPushButton::focus{
  527 + border-image : url(:/images/config/105_icon_download_ov.png);
  528 +}</string>
  529 + </property>
  530 + <property name="text">
  531 + <string/>
  532 + </property>
  533 + </widget>
  534 + </item>
  535 + <item row="0" column="1">
  536 + <widget class="QPushButton" name="ctrBtnCancel">
  537 + <property name="sizePolicy">
  538 + <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
  539 + <horstretch>0</horstretch>
  540 + <verstretch>0</verstretch>
  541 + </sizepolicy>
  542 + </property>
  543 + <property name="minimumSize">
  544 + <size>
  545 + <width>82</width>
  546 + <height>82</height>
  547 + </size>
  548 + </property>
  549 + <property name="font">
  550 + <font>
  551 + <weight>75</weight>
  552 + <bold>true</bold>
  553 + <underline>true</underline>
  554 + </font>
  555 + </property>
  556 + <property name="styleSheet">
  557 + <string notr="true">QPushButton{
  558 + border-image : url(:/images/config/105_icon_cancel.png);
  559 +}
  560 +
  561 +QPushButton::pressed, QPushButton::focus{
  562 + border-image : url(:/images/config/105_icon_cancel_ov.png);
  563 +}
  564 +</string>
  565 + </property>
  566 + <property name="text">
  567 + <string/>
  568 + </property>
  569 + </widget>
  570 + </item>
  571 + </layout>
  572 + </item>
  573 + </layout>
  574 + </widget>
  575 + <widget class="KeyboardWidget" name="keyboardwidget" native="true">
  576 + <property name="geometry">
  577 + <rect>
  578 + <x>0</x>
  579 + <y>425</y>
  580 + <width>900</width>
  581 + <height>600</height>
  582 + </rect>
  583 + </property>
  584 + </widget>
  585 + </widget>
  586 + </widget>
  587 + <customwidgets>
  588 + <customwidget>
  589 + <class>KeyboardWidget</class>
  590 + <extends>QWidget</extends>
  591 + <header>keyboardwidget.h</header>
  592 + <container>1</container>
  593 + </customwidget>
  594 + <customwidget>
  595 + <class>FormatterSpinBox</class>
  596 + <extends>QSpinBox</extends>
  597 + <header>formatterspinbox.h</header>
  598 + </customwidget>
  599 + </customwidgets>
  600 + <tabstops>
  601 + <tabstop>ctrSpBxYearStart</tabstop>
  602 + <tabstop>ctrSpBxMonthStart</tabstop>
  603 + <tabstop>ctrSpBxDayStart</tabstop>
  604 + </tabstops>
  605 + <resources>
  606 + <include location="resources.qrc"/>
  607 + </resources>
  608 + <connections/>
  609 +</ui>
app/gui/oven_control/images/not_recognized/config_service/104_dwon.png

530 Bytes

app/gui/oven_control/images/not_recognized/config_service/104_update.png

527 Bytes

app/gui/oven_control/images/symbol/down_date.png

530 Bytes

app/gui/oven_control/images/symbol/up_date.png

527 Bytes

app/gui/oven_control/mainwindow.cpp
@@ -61,8 +61,9 @@ void MainWindow::jump(QMainWindow *newChild) @@ -61,8 +61,9 @@ void MainWindow::jump(QMainWindow *newChild)
61 61
62 void MainWindow::killChild() 62 void MainWindow::killChild()
63 { 63 {
64 - if (instance->child) 64 + if (instance->child){
65 instance->child->deleteLater(); 65 instance->child->deleteLater();
  66 + }
66 } 67 }
67 68
68 bool MainWindow::killChildCook() 69 bool MainWindow::killChildCook()
app/gui/oven_control/oven_control.pro
@@ -144,7 +144,8 @@ SOURCES += main.cpp\ @@ -144,7 +144,8 @@ SOURCES += main.cpp\
144 multicookbook.cpp \ 144 multicookbook.cpp \
145 haccp.cpp \ 145 haccp.cpp \
146 canvas.cpp \ 146 canvas.cpp \
147 - touchtestwindow.cpp 147 + touchtestwindow.cpp \
  148 + haccpdownloaddlg.cpp
148 149
149 150
150 HEADERS += mainwindow.h \ 151 HEADERS += mainwindow.h \
@@ -279,7 +280,8 @@ HEADERS += mainwindow.h \ @@ -279,7 +280,8 @@ HEADERS += mainwindow.h \
279 multicookbook.h \ 280 multicookbook.h \
280 haccp.h \ 281 haccp.h \
281 canvas.h \ 282 canvas.h \
282 - touchtestwindow.h 283 + touchtestwindow.h \
  284 + haccpdownloaddlg.h
283 285
284 FORMS += mainwindow.ui \ 286 FORMS += mainwindow.ui \
285 manualcookwindow.ui \ 287 manualcookwindow.ui \
@@ -364,7 +366,8 @@ FORMS += mainwindow.ui \ @@ -364,7 +366,8 @@ FORMS += mainwindow.ui \
364 multicookselectionwindow.ui \ 366 multicookselectionwindow.ui \
365 multicookmanualwindow.ui \ 367 multicookmanualwindow.ui \
366 multicookautowindow.ui \ 368 multicookautowindow.ui \
367 - touchtestwindow.ui 369 + touchtestwindow.ui \
  370 + haccpdownloaddlg.ui
368 371
369 RESOURCES += \ 372 RESOURCES += \
370 resources.qrc 373 resources.qrc
app/gui/oven_control/resources.qrc
@@ -630,5 +630,7 @@ @@ -630,5 +630,7 @@
630 <file>images/help/page_prev.png</file> 630 <file>images/help/page_prev.png</file>
631 <file>images/help/page_prev_over.png</file> 631 <file>images/help/page_prev_over.png</file>
632 <file>images/background/popup/509.png</file> 632 <file>images/background/popup/509.png</file>
  633 + <file>images/symbol/up_date.png</file>
  634 + <file>images/symbol/down_date.png</file>
633 </qresource> 635 </qresource>
634 </RCC> 636 </RCC>
release/application.tar
No preview for this file type