Commit a7e8cc0aad82dace291939746a1b4bb33bd89576

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

버그 및 동작 개선

 - 모델 설정 후 초기화 명령 추가
 - 에러 팝업 발생 후 오븐 중지 명령 추가
app/gui/oven_control/config.cpp
... ... @@ -246,7 +246,8 @@ void Config::applyConfig(){
246 246 ipdata.netmask = QString("%1.%2.%3.%4").arg(configlist.items.netmask.d8.d8_0).arg(configlist.items.netmask.d8.d8_1).arg(configlist.items.netmask.d8.d8_2).arg(configlist.items.netmask.d8.d8_3);
247 247  
248 248 System::setIP(ipdata);
249   -
  249 + //All Error Reset
  250 + UdpHandler::getInstance()->set(TG_ERROR_CLEAR,0xCECE);
250 251 }
251 252  
252 253 Define::config_item Config::getConfigValue(Define::ConfigType idx){
... ...
app/gui/oven_control/errorpopupdlg.cpp
... ... @@ -3,8 +3,9 @@
3 3 #include <QDebug>
4 4  
5 5 #include "soundplayer.h"
  6 +#include "udphandler.h"
6 7  
7   -ErrorPopupDlg::ErrorPopupDlg(QWidget *parent, const QString &MsgDesc, const QString &MsgTitle) :
  8 +ErrorPopupDlg::ErrorPopupDlg(QWidget *parent, const QString &MsgDesc, const QString &MsgTitle, bool sendClrCmd,int erridx) :
8 9 QDialog(parent),
9 10 ui(new Ui::ErrorPopupDlg)
10 11 {
... ... @@ -20,6 +21,8 @@ ErrorPopupDlg::ErrorPopupDlg(QWidget *parent, const QString &amp;MsgDesc, const QStr
20 21  
21 22 foreach (QPushButton *button, findChildren<QPushButton *>())
22 23 connect(button, &QPushButton::pressed, SoundPlayer::playClick);
  24 + m_bClrCmd = sendClrCmd;
  25 + m_nErrIdx = erridx;
23 26 }
24 27  
25 28 ErrorPopupDlg::~ErrorPopupDlg()
... ... @@ -29,8 +32,9 @@ ErrorPopupDlg::~ErrorPopupDlg()
29 32  
30 33 void ErrorPopupDlg::on_ctrlOkBtn_clicked()
31 34 {
32   - //emit closedPopup(m_pParent);
  35 + emit closedErrorPopup(m_nErrIdx);
33 36 qApp->setActiveWindow(m_pParent);
34 37 this->hide();
  38 + if(m_bClrCmd) UdpHandler::getInstance()->set(TG_ERROR_CLEAR,0xCECE);
35 39 close();
36 40 }
... ...
app/gui/oven_control/errorpopupdlg.h
... ... @@ -12,11 +12,12 @@ class ErrorPopupDlg : public QDialog
12 12 Q_OBJECT
13 13  
14 14 public:
15   - explicit ErrorPopupDlg(QWidget *parent = 0, const QString &MsgDesc=0, const QString &MsgTitle=0);
  15 + explicit ErrorPopupDlg(QWidget *parent = 0, const QString &MsgDesc=0, const QString &MsgTitle=0, bool sendClrCmd = false, int erridx = -1);
16 16 ~ErrorPopupDlg();
17 17  
18 18 signals:
19 19 void closedPopup(QWidget* parent=0);
  20 + void closedErrorPopup(int erridx);
20 21  
21 22 private slots:
22 23 void on_ctrlOkBtn_clicked();
... ... @@ -24,6 +25,8 @@ private slots:
24 25 private:
25 26 Ui::ErrorPopupDlg *ui;
26 27 QWidget* m_pParent;
  28 + bool m_bClrCmd;
  29 + int m_nErrIdx;
27 30 };
28 31  
29 32 #endif // ERRORPOPUPDLG_H
... ...
app/gui/oven_control/main.cpp
... ... @@ -19,9 +19,10 @@ int main(int argc, char *argv[])
19 19 UdpHandler *udp = UdpHandler::getInstance();
20 20 interface->setUdpHandler(udp);
21 21  
22   - OvenStatistics::getInstance(oven);
23 22 Config::getInstance(oven);
24 23  
  24 + OvenStatistics::getInstance(oven);
  25 +
25 26 oven->setDefault(Define::CombiMode);
26 27  
27 28 // QTranslator* trans = new QTranslator();
... ...
app/gui/oven_control/mainwindow.cpp
... ... @@ -52,10 +52,17 @@ void MainWindow::killChild()
52 52 instance->child->deleteLater();
53 53 }
54 54  
55   -void MainWindow::killChildCook()
  55 +bool MainWindow::killChildCook()
56 56 {
  57 +
57 58 if (instance->child && !instance->child->inherits("ConfigWindow"))
  59 + {
  60 + qDebug() << "kill child";
  61 + instance->child->hide();
58 62 instance->child->deleteLater();
  63 + return true;
  64 + }
  65 + else return false;
59 66 }
60 67  
61 68 void MainWindow::keyPressEvent(QKeyEvent *event)
... ...
app/gui/oven_control/mainwindow.h
... ... @@ -22,7 +22,7 @@ public:
22 22 static MainWindow *getInstance() { return instance; }
23 23 static void jump(QMainWindow *newChild);
24 24 static void killChild();
25   - static void killChildCook();
  25 + static bool killChildCook();
26 26  
27 27 protected:
28 28 void keyPressEvent(QKeyEvent *event);
... ...
app/gui/oven_control/ovenstatics.cpp
... ... @@ -40,6 +40,7 @@ OvenStatistics::OvenStatistics(QObject* parent) :QObject(parent)
40 40 curSysErrorState = 0;
41 41 curCommErrorState = 0;
42 42 curSensorErrorState = 0;
  43 + curControlErrorState = 0;
43 44 bDataRefreshed = false;
44 45 realdata.d32 = 0;
45 46 m_bPopupShow = false;
... ... @@ -112,9 +113,10 @@ void OvenStatistics::processSensorError(uint16_t errflag, time_t ltime){
112 113 error_item *item;
113 114 QString strMsg = "",strTitle="";
114 115 uint8_t state;
115   - if( control.system==0 && !oven->cooking()) state = SYS_OFF_COOK_OFF;
116   - else if(control.system != 0 && !oven->cooking()) state = SYS_ON_COOK_OFF;
117   - else if(control.system !=0 && oven->cooking()) state = SYS_ON_COOK_ON;
  116 + bool bCookingState = (control.cooking || oven->cooking() || oven->preheating() || oven->cooldown());
  117 + if( control.system==0 && !bCookingState ) state = SYS_OFF_COOK_OFF;
  118 + else if(control.system != 0 && !bCookingState) state = SYS_ON_COOK_OFF;
  119 + else if(control.system !=0 && bCookingState) state = SYS_ON_COOK_ON;
118 120 else state = SYS_ON_COOK_OFF;
119 121  
120 122 if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_1)){
... ... @@ -187,9 +189,10 @@ void OvenStatistics::processCommError(uint16_t errflag, time_t ltime){
187 189 error_item *item;
188 190 QString strMsg = "",strTitle="";
189 191 uint8_t state;
190   - if( control.system==0 && !oven->cooking()) state = SYS_OFF_COOK_OFF;
191   - else if(control.system != 0 && !oven->cooking()) state = SYS_ON_COOK_OFF;
192   - else if(control.system !=0 && oven->cooking()) state = SYS_ON_COOK_ON;
  192 + bool bCookingState = (control.cooking || oven->cooking() || oven->preheating() || oven->cooldown());
  193 + if( control.system==0 && !bCookingState ) state = SYS_OFF_COOK_OFF;
  194 + else if(control.system != 0 && !bCookingState) state = SYS_ON_COOK_OFF;
  195 + else if(control.system !=0 && bCookingState) state = SYS_ON_COOK_ON;
193 196 else state = SYS_ON_COOK_OFF;
194 197  
195 198 if(errflag & MAKE_MASK(COMM_ERR_BUNNER1)){
... ... @@ -228,9 +231,10 @@ void OvenStatistics::processStateError(uint16_t errflag, time_t ltime){
228 231 error_item *item;
229 232 QString strMsg = "",strTitle="";
230 233 uint8_t state;
231   - if( control.system==0 && !oven->cooking()) state = SYS_OFF_COOK_OFF;
232   - else if(control.system != 0 && !oven->cooking()) state = SYS_ON_COOK_OFF;
233   - else if(control.system !=0 && oven->cooking()) state = SYS_ON_COOK_ON;
  234 + bool bCookingState = (control.cooking || oven->cooking() || oven->preheating() || oven->cooldown());
  235 + if( control.system==0 && !bCookingState ) state = SYS_OFF_COOK_OFF;
  236 + else if(control.system != 0 && !bCookingState) state = SYS_ON_COOK_OFF;
  237 + else if(control.system !=0 && bCookingState) state = SYS_ON_COOK_ON;
234 238 else state = SYS_ON_COOK_OFF;
235 239  
236 240 if(errflag & MAKE_MASK(STATE_ERR_BUNNER1)){
... ... @@ -269,9 +273,10 @@ void OvenStatistics::processSystemError(uint16_t errflag,time_t ltime){
269 273 error_item *item;
270 274 QString strMsg = "",strTitle = "";
271 275 uint8_t state;
272   - if( control.system==0 && !oven->cooking()) state = SYS_OFF_COOK_OFF;
273   - else if(control.system != 0 && !oven->cooking()) state = SYS_ON_COOK_OFF;
274   - else if(control.system !=0 && oven->cooking()) state = SYS_ON_COOK_ON;
  276 + bool bCookingState = (control.cooking || oven->cooking() || oven->preheating() || oven->cooldown());
  277 + if( control.system==0 && !bCookingState ) state = SYS_OFF_COOK_OFF;
  278 + else if(control.system != 0 && !bCookingState) state = SYS_ON_COOK_OFF;
  279 + else if(control.system !=0 && bCookingState) state = SYS_ON_COOK_ON;
275 280 else state = SYS_ON_COOK_OFF;
276 281  
277 282 if( errflag & MAKE_MASK(SYS_ERR_FIRE_TRIGGER1)){
... ... @@ -462,14 +467,9 @@ void OvenStatistics::oneSecTimerFired(void){
462 467 realdata.b.snv_open = (state.onoff_state2&LOAD_STATE2_SNV)==0?0:1;
463 468 realdata.b.wsv_open = (state.onoff_state2&LOAD_STATE2_WSV)==0?0:1;
464 469 realdata.b.ssv_open = (state.onoff_state2&LOAD_STATE2_SSV)==0?0:1;
465   - if( (state.reserved11 & 0x0018) !=0){
466   - if( (state.reserved11&0x0008) != 0){
467   - realdata.b.water_level = water_level_high;
468   - }
469   - else if( (state.reserved11 & 0x0010) !=0){
470   - realdata.b.water_level = water_level_low;
471   - }
472   - }
  470 +
  471 + if( (state.reserved11&0x0018) == 0x0018) realdata.b.water_level = water_level_high;
  472 + else if( (state.reserved11&0x0018) == 0x0000) realdata.b.water_level = water_level_low;
473 473 else realdata.b.water_level = water_level_normal;
474 474  
475 475 if(srvdata->sensor_log.items.B1.high_temp.itemp < state.sensor1 ){
... ... @@ -549,7 +549,9 @@ void OvenStatistics::oneSecTimerFired(void){
549 549 }
550 550  
551 551 void OvenStatistics::processErrorItems(error_item *item, error_exe_type errtype, const QString &MsgDesc, const QString &MsgTitle, time_t ltime){
552   - uint32_t erridx = (uint32_t) (item - &(srvdata->err_log.values[0]));
  552 + QWidget* pParent;
  553 + uint32_t erridx = (uint32_t) (item - &(srvdata->err_log.values[0]));
  554 +
553 555 qDebug() << (uint32_t) (item - &(srvdata->err_log.values[0])) << "ERROR Fired!";
554 556 if(m_pLastErrItem == item ){
555 557 srvdata->err_log.items.repeat_error.fired_cnt =item->fired_cnt;
... ... @@ -557,49 +559,78 @@ void OvenStatistics::processErrorItems(error_item *item, error_exe_type errtype,
557 559 srvdata->err_log.items.repeat_error.last_fried = item->last_fried;
558 560 }
559 561 m_pLastErrItem = item;
560   -
  562 + qDebug() << "error type" << errtype;
561 563 if(errtype >= error_type_onlychk){
562 564 item->fired_cnt+=1;
563 565 if(item->first_fired == 0) item->first_fired = ltime;
564 566 item->last_fried = ltime;
565 567 }
566 568  
  569 + if(errtype>=error_type_chkclrstopcmd){
  570 + qDebug() << "exec killchild";
  571 + if(MainWindow::killChildCook()){
  572 + pParent = MainWindow::getInstance();
  573 + }
  574 + else{
  575 + pParent = QApplication::activeWindow();
  576 + }
  577 + }
  578 + else{
  579 + pParent = QApplication::activeWindow();
  580 + }
  581 +
  582 +
  583 +
567 584 switch(errtype){
568 585 case error_type_onlypop:
569 586 case error_type_popclr:
570 587 case error_type_popnonclr:
  588 + case error_type_popclrstopcmd:
571 589 {
572   - ErrorPopupDlg *dlg = new ErrorPopupDlg(QApplication::activeWindow(),MsgDesc,MsgTitle);
573   - dlg->exec();
  590 + if(m_mapPopupList.find(erridx) == m_mapPopupList.end()){
  591 + ErrorPopupDlg *dlg = new ErrorPopupDlg(pParent,MsgDesc,MsgTitle , (errtype > error_type_clrsplit), erridx);
  592 + connect(dlg,SIGNAL(closedErrorPopup(int)), this, SLOT(onErrorPopupClosed(int)));
  593 + m_mapPopupList.insert(erridx,dlg);
  594 + qApp->setActiveWindow(dlg);
  595 + dlg->showFullScreen();
  596 + }
574 597 break;
575 598 }
576   - case error_type_engclr:
  599 + case error_type_engclr:
577 600 case error_type_engnonclr:
578 601 case error_type_onlyeng:
  602 + case error_type_engclrstopcmd:
579 603 {
580 604 //EngineerMenuWindow *w = new EngineerMenuWindow(0);
581 605 //w->showFullScreen();
582   - ErrorPopupDlg *dlg = new ErrorPopupDlg(QApplication::activeWindow(),MsgDesc,MsgTitle);
583   - dlg->exec();
584   - ServicePassInputDlg *w = new ServicePassInputDlg(QApplication::activeWindow());
585   - w->exec();
  606 + if(m_mapPopupList.find(erridx)==m_mapPopupList.end()){
  607 + ErrorPopupDlg *dlg = new ErrorPopupDlg(pParent,MsgDesc,MsgTitle, (errtype > error_type_clrsplit),erridx);
  608 + connect(dlg,SIGNAL(closedErrorPopup(int)),this,SLOT(onErrorPopupClosed(int)));
  609 + m_mapPopupList.insert(erridx,dlg);
  610 + dlg->showFullScreen();
  611 +
  612 + ServicePassInputDlg *w = new ServicePassInputDlg(pParent);
  613 + //w->exec();
  614 + connect(dlg, SIGNAL(destroyed(QObject*)), w, SLOT(showFullScreen()));
  615 + }
586 616 break;
587 617 }
588 618 default:
589 619 break;
590 620 }
591 621  
592   - if(errtype > error_type_clrsplit){
593   - //에러 클리어 명령 송신
594   - if(errtype == error_type_engclr){
595   - //확인 후 송신
596   - bNeedErrorClear = true;
597   - }
598   - else{
599   - //에러클리어 메시지 즉시 송신
600   - udp->set(TG_ERROR_CLEAR,0xCECE);
601   - }
602   - }
  622 +// if(errtype > error_type_clrsplit){
  623 +// //에러 클리어 명령 송신
  624 +//// if(errtype == error_type_engclr){
  625 +//// //확인 후 송신
  626 +//// bNeedErrorClear = true;
  627 +//// }
  628 +//// else{
  629 +//// //에러클리어 메시지 즉시 송신
  630 +// qDebug() << "send error clr";
  631 +// udp->set(TG_ERROR_CLEAR,0xCECE);
  632 +//// }
  633 + //}
603 634  
604 635  
605 636 }
... ... @@ -617,25 +648,9 @@ type_temp OvenStatistics::getCurSensorValueByIdx(uint16_t idx){
617 648 return curSensorValue[idx];
618 649 }
619 650  
620   -void OvenStatistics::onErrorPopupClosed(QWidget* parent){
621   - qDebug() << "Error Popup Closed!";
622   - if(bNeedErrorClear) {
623   - qDebug() << "send error clear command";
624   - bNeedErrorClear = false;
625   - udp->set(TG_ERROR_CLEAR,0xCECE);
626   - }
627   - if(m_mapPopupList.isEmpty()==false){
628   - popup_list_item item;
629   - item = m_mapPopupList.first();
630   - m_nLastPopupidx = m_mapPopupList.firstKey();
631   - bNeedErrorClear = item.bNeedClear;
632   - ErrorPopupDlg *dlg = new ErrorPopupDlg(parent,item.strDesc,item.strTitle);
633   - m_mapPopupList.remove(m_nLastPopupidx);
634   - connect(dlg,SIGNAL(closedPopup(QWidget*)),this, SLOT(onErrorPopupClosed(QWidget*)));
635   - dlg->showFullScreen();
636   - }
637   - else{
638   - m_bPopupShow = false;
639   - m_nLastPopupidx = MAX_ERROR_TYPE_CNT;
  651 +void OvenStatistics::onErrorPopupClosed(int erridx){
  652 + qDebug() << "error idx" << erridx;
  653 + if(m_mapPopupList.find(erridx)!= m_mapPopupList.end()){
  654 + m_mapPopupList.remove(erridx);
640 655 }
641 656 }
... ...
app/gui/oven_control/ovenstatics.h
... ... @@ -137,6 +137,7 @@ enum sensor_err_id{
137 137  
138 138 enum error_exe_type{
139 139 error_type_allnone=0,
  140 + error_type_olnystopcmd,
140 141 error_type_onlypop,
141 142 error_type_onlyeng,
142 143 error_type_onlychk,
... ... @@ -146,6 +147,9 @@ enum error_exe_type{
146 147 error_type_chkclr,
147 148 error_type_popclr,
148 149 error_type_engclr,
  150 + error_type_chkclrstopcmd,
  151 + error_type_popclrstopcmd,
  152 + error_type_engclrstopcmd,
149 153 };
150 154  
151 155  
... ... @@ -206,34 +210,34 @@ private:
206 210 const error_exe_type sys_err_type_def[SYS_STATE_MAX][SYS_ERR_MAX]={ //30047
207 211 {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,
208 212 error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, // SYS_OFF_COOK_OFF state
209   - {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,
210   - error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, // SYS_ON_COOK_OFF state
211   - {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,
212   - error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, // SYS_ON_COOK_ON state
  213 + {error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,
  214 + error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd}, // SYS_ON_COOK_OFF state
  215 + {error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,
  216 + error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd}, // SYS_ON_COOK_ON state
213 217 {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,
214 218 error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, // SYS_OFF_COOK_ON state
215 219 };
216 220  
217 221 const error_exe_type comm_err_type_def[SYS_STATE_MAX][COMM_ERR_MAX] ={ //30048
218 222 {error_type_popnonclr,error_type_popnonclr,error_type_popnonclr,error_type_engnonclr,error_type_engnonclr}, //SYS_OFF_COO_OFF
219   - {error_type_popclr,error_type_popclr,error_type_popclr,error_type_engnonclr,error_type_engnonclr}, //SYS_ON_COO_OFF
220   - {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, //SYS_ON_COO_ON
  223 + {error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd}, //SYS_ON_COO_OFF
  224 + {error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd}, //SYS_ON_COO_ON
221 225 {error_type_popnonclr,error_type_popnonclr,error_type_popnonclr,error_type_engnonclr,error_type_engnonclr}, //SYS_OFF_COO_ON
222 226 };
223 227  
224 228 const error_exe_type state_err_type_def[SYS_STATE_MAX][STATE_ERR_MAX] ={ //30057
225 229 {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, //SYS_OFF_COO_OFF
226   - {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, //SYS_ON_COO_OFF
227   - {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, //SYS_ON_COO_ON
  230 + {error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd}, //SYS_ON_COO_OFF
  231 + {error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd}, //SYS_ON_COO_ON
228 232 {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, //SYS_OFF_COO_ON
229 233 };
230 234  
231 235 const error_exe_type sensor_err_type_def[SYS_STATE_MAX][SENSOR_ERR_MAX]={ //30049
232 236 {error_type_engnonclr,error_type_popnonclr,error_type_allnone,error_type_popnonclr,error_type_onlychk,
233 237 error_type_popnonclr,error_type_allnone,error_type_allnone,error_type_allnone,error_type_popnonclr}, // SYS_OFF_COOK_OFF state
234   - {error_type_engnonclr,error_type_popclr,error_type_allnone,error_type_popclr,error_type_onlychk,
  238 + {error_type_engclrstopcmd,error_type_popclrstopcmd,error_type_allnone,error_type_popclrstopcmd,error_type_popclrstopcmd,
235 239 error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, // SYS_ON_COOK_OFF state
236   - {error_type_onlychk,error_type_onlychk,error_type_allnone,error_type_popclr,error_type_popclr,
  240 + {error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_allnone,error_type_popclrstopcmd,error_type_popclrstopcmd,
237 241 error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, // SYS_ON_COOK_ON state
238 242 {error_type_engnonclr,error_type_popnonclr,error_type_allnone,error_type_popnonclr,error_type_onlychk,
239 243 error_type_popnonclr,error_type_allnone,error_type_allnone,error_type_allnone,error_type_popnonclr}, // SYS_OFF_COOK_ON state same with SYS_OFF_COOK_OFF
... ... @@ -253,7 +257,7 @@ private:
253 257 oven_control_t control;
254 258 oven_state_t state;
255 259 error_item* m_pLastErrItem;
256   - QMap<uint32_t, popup_list_item> m_mapPopupList;
  260 + QMap<uint32_t, QWidget *> m_mapPopupList;
257 261 uint32_t m_nLastPopupidx;
258 262 bool m_bPopupShow;
259 263  
... ... @@ -281,7 +285,7 @@ private:
281 285 public slots:
282 286 void onDataChanged();
283 287 void oneSecTimerFired(void);
284   - void onErrorPopupClosed(QWidget* parent);
  288 + void onErrorPopupClosed(int erridx);
285 289 };
286 290  
287 291 #endif // OVENSTATICS_H
... ...