#include "chidealarm.h" #include "publicfuc.h" #include CHideAlarm::CHideAlarm(QWidget *parent) : QDialog(parent) { ui.setupUi(this); m_lUserID = -1; m_pstruHideAlarm = NULL; m_iAlarmOutNum = 0; ui.tableAlarmOut->horizontalHeader()->setResizeMode(QHeaderView::Stretch); ui.tableAlarmOut->setColumnCount(1); ui.tableAlarmOut->setEnabled(FALSE); int i; for(i=0; i < MAX_TIMESEGMENT_V30; i++) { ui.vLayStartHour->addWidget(&(m_editStartHour[i])); ui.vLayStartMin->addWidget(&(m_editStartMin[i])); ui.vLayEndHour->addWidget(&(m_editEndHour[i])); ui.vLayEndMin->addWidget(&(m_editEndMin[i])); } for(i = 0; i < MAX_ALARMOUT_V30; i++) { m_pcheckAlarmOut[i] = NULL; } QStringList strings; strings<<"Monday"<<"Tuesday"<<"Wednesday"<<"Thursday"<<"Friday"<<"Saturday"<<"Sunday"; ui.comboWeekDay->addItems(strings); connect(ui.comboWeekDay, SIGNAL(activated(int)), this, SLOT(comboWeekDayChanged(int))); connect(ui.checkbo08, SIGNAL(clicked()), this, SLOT(checkAlarmOut())); } CHideAlarm::~CHideAlarm() { } //µ÷ÓÃÕâ¸ö¶Ô»°¿òǰ±ØÒªµ÷ÓõÄÁ½¸öº¯Êý int CHideAlarm::setStruHideAlarm(NET_DVR_HIDEALARM_V30 *pstruHideAlarm) { if(NULL == pstruHideAlarm) { return HPR_ERROR; } m_pstruHideAlarm = pstruHideAlarm; return HPR_OK; } //µ÷ÓÃÕâ¸ö¶Ô»°¿òǰ±ØÒªµ÷ÓõÄÁ½¸öº¯Êý int CHideAlarm::setAlarmOutNum(int iAlarmOutNum) { if(iAlarmOutNum < 0) { return HPR_ERROR; } else { m_iAlarmOutNum = iAlarmOutNum; } return HPR_OK; } // int CHideAlarm::setUserID(long lUserID) { if(lUserID < 0) { return HPR_ERROR; } else { m_lUserID = lUserID; } return HPR_OK; } //ÉèÖÃÿ¸ö¿Ø¼þµÄÖµ int CHideAlarm::setEachWidgetValue() { if(m_pstruHideAlarm == NULL) { return HPR_ERROR; } createAlarmOutCheck();//´´½¨±¨¾¯Êä³ö //²¼·Àʱ¼ä comboWeekDayChanged(0); //ÕÚµ²ÇøÓò unsigned int uiTemp; uiTemp = m_pstruHideAlarm->wHideAlarmAreaTopLeftX; KIT_intToEdit(ui.editHideAlarmAreaTopLeftX, uiTemp); uiTemp = m_pstruHideAlarm->wHideAlarmAreaTopLeftY; KIT_intToEdit(ui.editHideAlarmAreaTopLeftY, uiTemp); uiTemp = m_pstruHideAlarm->wHideAlarmAreaWidth; KIT_intToEdit(ui.editHideAlarmAreaWidth, uiTemp); uiTemp = m_pstruHideAlarm->wHideAlarmAreaHeight; KIT_intToEdit(ui.editHideAlarmAreaHeight, uiTemp); if(m_pstruHideAlarm->strHideAlarmHandleType.dwHandleType == 0)//ÎÞÏìÓ¦ { return HPR_OK; } //¼àÊÓÆ÷Éϱ¨¾¯ if((m_pstruHideAlarm->strHideAlarmHandleType.dwHandleType & 0x01) == 0x01) { ui.checkbo01->setChecked(TRUE); } else { ui.checkbo01->setChecked(FALSE); } //ÉùÒô±¨¾¯ if((m_pstruHideAlarm->strHideAlarmHandleType.dwHandleType & 0x02) == 0x02) { ui.checkbo02->setChecked(TRUE); } else { ui.checkbo02->setChecked(FALSE); } //ÉÏ´«ÖÐÐÄ if((m_pstruHideAlarm->strHideAlarmHandleType.dwHandleType & 0x04) == 0x04) { ui.checkbo04->setChecked(TRUE); } else { ui.checkbo04->setChecked(FALSE); } //´¥·¢±¨¾¯Êä³ö if((m_pstruHideAlarm->strHideAlarmHandleType.dwHandleType & 0x08) == 0x08) { ui.checkbo08->setChecked(TRUE); ui.tableAlarmOut->setEnabled(TRUE); int i; for(i = 0; i < MAX_ALARMOUT_V30; i++)//±¨¾¯Êä³ö { if(m_pcheckAlarmOut[i] != NULL) { if(m_pstruHideAlarm->strHideAlarmHandleType.byRelAlarmOut[i] == 0) { m_pcheckAlarmOut[i]->setChecked(FALSE); } else { m_pcheckAlarmOut[i]->setChecked(TRUE); } } } } else { ui.checkbo08->setChecked(FALSE); ui.tableAlarmOut->setEnabled(FALSE); } //JPEGץͼ£¬²¢ÉÏ´«ÖÐÐÄ if((m_pstruHideAlarm->strHideAlarmHandleType.dwHandleType & 0x10) == 0x10) { ui.checkbo10->setChecked(TRUE); } else { ui.checkbo10->setChecked(FALSE); } return HPR_OK; } //»ñȡÿ¸ö¿Ø¼þµÄÖµ int CHideAlarm::getEachWidgetValue() { if(m_pstruHideAlarm == NULL) { return HPR_ERROR; } //ÉèÖÃÕÚµ²ÇøÓò int iTemp; KIT_editToInt(ui.editHideAlarmAreaTopLeftX, &iTemp); m_pstruHideAlarm->wHideAlarmAreaTopLeftX = (unsigned short)iTemp; KIT_editToInt(ui.editHideAlarmAreaTopLeftY, &iTemp); m_pstruHideAlarm->wHideAlarmAreaTopLeftY = (unsigned short)iTemp; KIT_editToInt(ui.editHideAlarmAreaWidth, &iTemp); m_pstruHideAlarm->wHideAlarmAreaWidth = (unsigned short)iTemp; KIT_editToInt(ui.editHideAlarmAreaHeight, &iTemp); m_pstruHideAlarm->wHideAlarmAreaHeight = (unsigned short)iTemp; //´¦Àí·½Ê½²ÎÊý int dwHandleType; int i; dwHandleType = 0; if(ui.checkbo01->isChecked()) { dwHandleType += 1; } if(ui.checkbo02->isChecked()) { dwHandleType += 2; } if(ui.checkbo04->isChecked()) { dwHandleType += 4; } if(ui.checkbo08->isChecked()) { dwHandleType += 8; for(i = 0; i < MAX_ALARMOUT_V30; i++) { if(m_pcheckAlarmOut[i] == NULL) { continue; } if(m_pcheckAlarmOut[i]->isChecked()) { m_pstruHideAlarm->strHideAlarmHandleType.byRelAlarmOut[i] = 1; } else { m_pstruHideAlarm->strHideAlarmHandleType.byRelAlarmOut[i] = 0; } } } if(ui.checkbo10->isChecked()) { dwHandleType += 16; } m_pstruHideAlarm->strHideAlarmHandleType.dwHandleType = dwHandleType; //ʱ¼äÖµ int iTime; int iWeekDay; iWeekDay = ui.comboWeekDay->currentIndex(); for(i = 0; i < MAX_TIMESEGMENT_V30; i++) { //¿ªÊ¼Ð¡Ê± KIT_editToInt(&(m_editStartHour[i]), &iTime); m_pstruHideAlarm->struAlarmTime[iWeekDay][i].byStartHour = iTime; //¿ªÊ¼·ÖÖÓ KIT_editToInt(&(m_editStartMin[i]), &iTime); m_pstruHideAlarm->struAlarmTime[iWeekDay][i].byStartMin = iTime; //½áÊøÐ¡Ê± KIT_editToInt(&(m_editEndHour[i]), &iTime); m_pstruHideAlarm->struAlarmTime[iWeekDay][i].byStopHour = iTime; //½áÊø·ÖÖÓ KIT_editToInt(&(m_editEndMin[i]), &iTime); m_pstruHideAlarm->struAlarmTime[iWeekDay][i].byStopMin = iTime; } return HPR_OK; } int CHideAlarm::createAlarmOutCheck() { if(m_lUserID < 0) { return HPR_ERROR; } int iRet; DWORD uiReturnLen; NET_DVR_IPALARMOUTCFG struIPAlarmOut; iRet = NET_DVR_GetDVRConfig(m_lUserID, NET_DVR_GET_IPALARMOUTCFG, -1, &struIPAlarmOut, sizeof(NET_DVR_IPALARMOUTCFG), &uiReturnLen); if(iRet == 0) { memset(&struIPAlarmOut, 0, sizeof(struIPAlarmOut)); iRet = NET_DVR_GetLastError(); //QMessageBox::information(this, tr("Please check!"), tr("Get device parameters error! \"%1\"").arg(iRet)); //return HPR_ERROR; } //»ñÈ¡IP±¨¾¯Êä³öµÄ¸öÊý£¬ÒÔÉèÖñí¸ñµÄÐÐÊý int i; int iRow = 0; for(i = 0; i < MAX_IP_ALARMOUT; i++ ) { if(struIPAlarmOut.struIPAlarmOutInfo[i].byIPID > 0) { iRow++; } } iRow += m_iAlarmOutNum; ui.tableAlarmOut->setRowCount(iRow); ui.tableAlarmOut->setColumnCount(1); QStringList list; list<<"±¨¾¯Êä³ö"; ui.tableAlarmOut->setHorizontalHeaderLabels(list); //Çå³ýÒÔǰ±í¸ñÖÐÊý¾Ý ui.tableAlarmOut->clear(); for(i = 0; i < MAX_ALARMOUT_V30; i++) { m_pcheckAlarmOut[i] = NULL; } //Íù±í¸ñÖмÓÈëÄ£Äⱨ¾¯Êä³ö for(i = 0; i < m_iAlarmOutNum; i++) { //new Ò»¸öеÄcheckbox m_pcheckAlarmOut[i] = new(std::nothrow) QCheckBox; //»ñÈ¡±¨¾¯Êä³öÃû getAlarmOutInfo(i, m_pcheckAlarmOut[i]); //¼ÓÈëµ½tableÖÐÈ¥ ui.tableAlarmOut->setCellWidget(i, 0, (m_pcheckAlarmOut[i])); } //IP±¨¾¯Êä³ö for(i = 0; i < MAX_IP_ALARMOUT; i++) { //ÅжÏIP±¨¾¯Êä³öÊÇ·ñ¿ÉÓà if(struIPAlarmOut.struIPAlarmOutInfo[i].byIPID > 0) { //new³öÀ´Ò»¸öеÄcheckbox m_pcheckAlarmOut[i + MAX_ANALOG_ALARMOUT] = new(std::nothrow) QCheckBox; //»ñÈ¡±¨¾¯Êä³öÃû³Æ getAlarmOutInfo(i + MAX_ANALOG_ALARMOUT, m_pcheckAlarmOut[i + MAX_ANALOG_ALARMOUT]); //¼ÓÈëµ½tableÖÐÈ¥ ui.tableAlarmOut->setCellWidget(i + m_iAlarmOutNum, 0, (m_pcheckAlarmOut[i + MAX_ANALOG_ALARMOUT])); } } return HPR_OK; } //¸ù¾Ý±¨¾¯Êä³öÐòºÅ£¬»ñÈ¡±¨¾¯Êä³öÃû³Æ int CHideAlarm::getAlarmOutInfo(int iAlarmOut, QCheckBox *pQCheckAlarmOut) { char strTemp[100] = {0}; if(iAlarmOut < MAX_ANALOG_ALARMOUT) { sprintf(strTemp, "AlarmOut%d", iAlarmOut + 1); } else { sprintf(strTemp, "IPAlarmOut%d", iAlarmOut - MAX_ANALOG_ALARMOUT + 1); } pQCheckAlarmOut->setText(strTemp); return HPR_OK; } void CHideAlarm::on_btnSave_clicked() { getEachWidgetValue(); } //Ñ¡Öб¨¾¯Êä³ö void CHideAlarm::checkAlarmOut() { if(ui.checkbo08->isChecked()) { ui.tableAlarmOut->setEnabled(TRUE); } else { ui.tableAlarmOut->setEnabled(FALSE); } } void CHideAlarm::comboWeekDayChanged(int iWeekDay) { if(m_pstruHideAlarm == NULL) { return; } int i; int iTemp; for(i = 0; i < MAX_TIMESEGMENT_V30; i++) { //ʱ¼ä iTemp = m_pstruHideAlarm->struAlarmTime[iWeekDay][i].byStartHour; KIT_intToEdit(&(m_editStartHour[i]), iTemp); iTemp = m_pstruHideAlarm->struAlarmTime[iWeekDay][i].byStartMin; KIT_intToEdit(&(m_editStartMin[i]), iTemp); iTemp = m_pstruHideAlarm->struAlarmTime[iWeekDay][i].byStopHour; KIT_intToEdit(&(m_editEndHour[i]), iTemp); iTemp = m_pstruHideAlarm->struAlarmTime[iWeekDay][i].byStopMin; KIT_intToEdit(&(m_editEndMin[i]), iTemp); } } //event void CHideAlarm::showEvent ( QShowEvent * event ) { if(event ==NULL) { } //»ñÈ¡ÏÔʾ²ÎÊý setEachWidgetValue(); }