#include "chidealarm.h"
|
#include "publicfuc.h"
|
#include <QMessageBox>
|
|
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();
|
}
|