#include "charddiskparams.h" #include "publicfuc.h" #include CHardDiskParams::CHardDiskParams(QWidget *parent) : QWidget(parent) { ui.setupUi(this); m_lUserID = -1; memset(m_struHDTableWidget, 0, sizeof(KIT_HD_WIDGET)*MAX_DISKNUM_V30); int i; for(i = 0; i < MAX_CHAN_NUM; i++ ) { m_pCheckChan[i] = NULL;//ÊÍ·ÅÓÉQtableÈ¥Íê³É } ui.tableHDGroup->horizontalHeader()->setResizeMode(QHeaderView::Stretch); connect(ui.comboDGroup, SIGNAL(activated(int)), this, SLOT(comboHDGroupChanged(int))); } CHardDiskParams::~CHardDiskParams() { } int CHardDiskParams::setUserID(long lUserID) { if(lUserID < 0) { return HPR_ERROR; } m_lUserID = lUserID; return HPR_OK; } //»ñȡӲÅÌÐÅÏ¢, °üÀ¨ÉèÖñí¸ñÐÅÏ¢µÄ²Ù×÷ int CHardDiskParams::getHardDiskInfo() { //´ÓÉ豸»ñȡӲÅÌÐÅÏ¢ if(m_lUserID < 0) { return HPR_ERROR; } NET_DVR_HDCFG struHDParams; memset(&struHDParams, 0 , sizeof(NET_DVR_HDCFG)); int iRet; DWORD uiReturnLen; iRet = NET_DVR_GetDVRConfig(m_lUserID, NET_DVR_GET_HDCFG, 0, &struHDParams, sizeof(NET_DVR_HDCFG), &uiReturnLen); if(0 == iRet) { iRet = NET_DVR_GetLastError(); QMessageBox::information(this, "Please check!", tr("The error is \"%1\"").arg(iRet)); return HPR_ERROR; } //1.Çå¿Õ±í¸ñ int iRow; ui.tableHardDisk->clear(); for(iRow = 0; iRow < ui.tableHardDisk->rowCount(); iRow++) { ui.tableHardDisk->removeRow(iRow); } //ÉèÖÃÐÐÊý£¬ÁÐÊý£¬Í· ui.tableHardDisk->setRowCount((int)struHDParams.dwHDCount); ui.tableHardDisk->setColumnCount(7); //ÉèÖÃÍ·²¿ QStringList list; list<<"HD name"<<"Capacity"<<"Last capacity"<<"State"<<"Type"<<"Attribute"<<"Group"; ui.tableHardDisk->setHorizontalHeaderLabels(list); QStringList listHdStatus; //HD״̬ listHdStatus<<"Normal"<<"Not format"<<"Error"<<"S.M.A.R.T"<<"Not match"<<"Sleep"<<"Not connect"; QStringList listHDAttr; //HDÊôÐÔ listHDAttr<<"Default"<<"Redundancy"<<"Read"; QStringList listHDType; //HDÀàÐÍ listHDType<<"Local"<<"ESATA"<<"NFS"; QStringList listHdGroup; //ÅÌ×éºÅ listHdGroup<<"0"<<"1"<<"2"<<"3"<<"4"<<"5"<<"6"<<"7"; listHdGroup<<"8"<<"9"<<"10"<<"11"<<"12"<<"13"<<"14"<<"15"; //2.Íù±í¸ñÖÐдÈëÊý¾Ý ui.tableHardDisk->setEditTriggers(QAbstractItemView::NoEditTriggers); //±í¸ñ²»¿É±à¼­ int i; char strTemp[100]; for(i = 0; i < (int)struHDParams.dwHDCount; i++ ) { //Ó²Å̺Šmemset(strTemp, 0, 100); sprintf(strTemp, "%d", struHDParams.struHDInfo[i].dwHDNo); m_struHDTableWidget[i].pTableItem[0] = new QTableWidgetItem(strTemp); //iTableItemFlags = m_struHDTableWidget[i].pTableItem[0]->flags(); //m_struHDTableWidget[i].pTableItem[0]->setFlags(iTableItemFlags&0xfd); ui.tableHardDisk->setItem(i, 0, m_struHDTableWidget[i].pTableItem[0]); //Ó²ÅÌÈÝÁ¿ memset(strTemp, 0, 100); sprintf(strTemp, "%d", struHDParams.struHDInfo[i].dwCapacity); m_struHDTableWidget[i].pTableItem[1] = new QTableWidgetItem(strTemp); ui.tableHardDisk->setItem(i, 1, m_struHDTableWidget[i].pTableItem[1]); //Ê£ÓàÈÝÁ¿ memset(strTemp, 0, 100); sprintf(strTemp, "%d", struHDParams.struHDInfo[i].dwFreeSpace); m_struHDTableWidget[i].pTableItem[2] = new QTableWidgetItem(strTemp); ui.tableHardDisk->setItem(i, 2, m_struHDTableWidget[i].pTableItem[2]); //״̬ m_struHDTableWidget[i].pTableCombo[0] = new QComboBox(); m_struHDTableWidget[i].pTableCombo[0]->addItems(listHdStatus); m_struHDTableWidget[i].pTableCombo[0]->setCurrentIndex((int)struHDParams.struHDInfo[i].dwHdStatus); ui.tableHardDisk->setCellWidget(i, 3, m_struHDTableWidget[i].pTableCombo[0]); //m_struHDTableWidget[i].pTableCombo[0]->setEditable(FALSE); m_struHDTableWidget[i].pTableCombo[0]->setEnabled(FALSE); //ÊôÐÔ m_struHDTableWidget[i].pTableCombo[1] = new QComboBox(); m_struHDTableWidget[i].pTableCombo[1]->addItems(listHDAttr); m_struHDTableWidget[i].pTableCombo[1]->setCurrentIndex((int)struHDParams.struHDInfo[i].byHDAttr); ui.tableHardDisk->setCellWidget(i, 4, m_struHDTableWidget[i].pTableCombo[1]); //ÀàÐÍ m_struHDTableWidget[i].pTableCombo[2] = new QComboBox(); m_struHDTableWidget[i].pTableCombo[2]->addItems(listHDType); m_struHDTableWidget[i].pTableCombo[2]->setCurrentIndex((int)struHDParams.struHDInfo[i].byHDType); ui.tableHardDisk->setCellWidget(i, 5, m_struHDTableWidget[i].pTableCombo[2]); m_struHDTableWidget[i].pTableCombo[2]->setEnabled(FALSE); //ÅÌ×é m_struHDTableWidget[i].pTableCombo[3] = new QComboBox(); m_struHDTableWidget[i].pTableCombo[3]->addItems(listHdGroup); m_struHDTableWidget[i].pTableCombo[3]->setCurrentIndex((int)struHDParams.struHDInfo[i].dwHdGroup); ui.tableHardDisk->setCellWidget(i, 6, m_struHDTableWidget[i].pTableCombo[3]); } return HPR_ERROR; } //ÉèÖÃÓ²Å̲ÎÊý int CHardDiskParams::setHardDiskInfo() { //QMessageBox::information(this, tr("Please check!"), tr("Please table widget is NULL!")); //´ÓÉ豸»ñȡӲÅÌÐÅÏ¢ if(m_lUserID < 0) { return HPR_ERROR; } NET_DVR_HDCFG struHDParams; memset(&struHDParams, 0 , sizeof(NET_DVR_HDCFG)); int iRet; DWORD uiReturnLen; iRet = NET_DVR_GetDVRConfig(m_lUserID, NET_DVR_GET_HDCFG, 0, &struHDParams, sizeof(NET_DVR_HDCFG), &uiReturnLen); if(0 == iRet) { iRet = NET_DVR_GetLastError(); QMessageBox::information(this, "Please check!", tr("The error is \"%1\"").arg(iRet)); return HPR_ERROR; } //´Óµ±Ç°µÄtable±í¸ñÖлñÈ¡Êý¾Ý int i; for(i = 0; i < (int)struHDParams.dwHDCount; i++ ) { if(NULL == m_struHDTableWidget[i].pTableCombo[1] || NULL == m_struHDTableWidget[i].pTableCombo[3]) { QMessageBox::information(this, tr("Please check!"), tr("Please table widget is NULL!")); return HPR_ERROR; } struHDParams.struHDInfo[i].byHDAttr = m_struHDTableWidget[i].pTableCombo[1]->currentIndex(); struHDParams.struHDInfo[i].dwHdGroup = m_struHDTableWidget[i].pTableCombo[3]->currentIndex(); } //ÉèÖÃÈçÉ豸ÖÐÈ¥ iRet = NET_DVR_SetDVRConfig(m_lUserID, NET_DVR_SET_HDCFG, 0, &struHDParams, sizeof(NET_DVR_HDCFG)); if(0 == iRet) { iRet = NET_DVR_GetLastError(); QMessageBox::information(this, "Please check!", tr("The error is \"%1\"").arg(iRet)); return HPR_ERROR; } return HPR_OK; } //»ñȡӲÅÌ×éÐÅÏ¢ int CHardDiskParams::getHDGroupInfo() { //´ÓÉ豸»ñȡӲÅÌ×éÐÅÏ¢ if(m_lUserID < 0) { return HPR_ERROR; } NET_DVR_HDGROUP_CFG struHDGroupParams; memset(&struHDGroupParams, 0 , sizeof(NET_DVR_HDGROUP_CFG)); int iRet; DWORD uiReturnLen; iRet = NET_DVR_GetDVRConfig(m_lUserID, NET_DVR_GET_HDGROUP_CFG, 0, &struHDGroupParams, sizeof(NET_DVR_HDGROUP_CFG), &uiReturnLen); if(0 == iRet) { iRet = NET_DVR_GetLastError(); QMessageBox::information(this, "Please check!", tr("The error is \"%1\"").arg(iRet)); return HPR_ERROR; } if(GetChanInfoToTable() == HPR_ERROR) //ÏÈ»ñȡͨµÀÐÅÏ¢ { return HPR_ERROR; } //ÉèÖÃÓ²ÅÌ×éÐÅÏ¢ //Ó²Å̺Šchar strTemp[100]; int i; QStringList listHDGroup; for(i = 0; i < ((int)struHDGroupParams.dwHDGroupCount ); i++) { //QMessageBox::information(this, "Please check!", tr("dwHDGroupCount i is \"%1\"").arg(i)); memset(strTemp, 0, 100); sprintf(strTemp, "%d", i + 1); listHDGroup<clear(); ui.comboDGroup->addItems(listHDGroup); comboHDGroupChanged(0);//ÉèÖõÚ1¸öÅÌ×éµÄͨµÀÐÅÏ¢ return HPR_OK; } //ÉèÖÃÓ²ÅÌ×é²ÎÊý int CHardDiskParams::setHDGroupInfo() { //´ÓÉ豸»ñȡӲÅÌ×éÐÅÏ¢ if(m_lUserID < 0) { return HPR_ERROR; } NET_DVR_HDGROUP_CFG struHDGroupParams; memset(&struHDGroupParams, 0 , sizeof(NET_DVR_HDGROUP_CFG)); int iRet; DWORD uiReturnLen; iRet = NET_DVR_GetDVRConfig(m_lUserID, NET_DVR_GET_HDGROUP_CFG, 0, &struHDGroupParams, sizeof(NET_DVR_HDGROUP_CFG), &uiReturnLen); if(0 == iRet) { iRet = NET_DVR_GetLastError(); QMessageBox::information(this, "Please check!", tr("The error is \"%1\"").arg(iRet)); return HPR_ERROR; } //»ñÈ¡½çÃæÉÏÌîÈëµÄÊý¾Ý //µ±Ç°Ñ¡ÖÐÐòºÅ int iCurrentComboIndex; iCurrentComboIndex = ui.comboDGroup->currentIndex(); if(iCurrentComboIndex < 0) { return HPR_ERROR; } int i; for(i=0; i < MAX_CHAN_NUM; i++) { if(m_pCheckChan[i] != NULL) { struHDGroupParams.struHDGroupAttr[iCurrentComboIndex].byHDGroupChans[i] = m_pCheckChan[i]->isChecked(); } } //ÉèÖõ½É豸ÖÐ iRet = NET_DVR_SetDVRConfig(m_lUserID, NET_DVR_SET_HDGROUP_CFG, 0, &struHDGroupParams, sizeof(NET_DVR_HDGROUP_CFG )); if(0 == iRet) { iRet = NET_DVR_GetLastError(); QMessageBox::information(this, "Please check!", tr("The error is \"%1\"").arg(iRet)); return HPR_ERROR; } return HPR_OK; } //Ë¢ÐÂÓ²Å̲ÎÊý void CHardDiskParams::on_btnHDUpdate_clicked() { getHardDiskInfo(); } //±£´æ²ÎÊý void CHardDiskParams::on_btnHDSave_clicked() { setHardDiskInfo(); getHardDiskInfo();//±£´æÍ꣬ˢÐÂÏ } //Ë¢ÐÂÓ²ÅÌ×é¹ÜÀí²ÎÊý void CHardDiskParams::on_btnHDGroupUpdate_clicked() { getHDGroupInfo(); } //±£´æÓ²ÅÌ×é¹ÜÀí²ÎÊý void CHardDiskParams::on_btnHDGroupSave_clicked() { setHDGroupInfo(); getHDGroupInfo();//Ë¢ÐÂÏ } //comboxBoxÑ¡Ôñ void CHardDiskParams::comboHDGroupChanged(int iHDGroupIndex) { //´ÓÉ豸»ñȡӲÅÌ×éÐÅÏ¢ if(m_lUserID < 0) { return ; } NET_DVR_HDGROUP_CFG struHDGroupParams; memset(&struHDGroupParams, 0 , sizeof(NET_DVR_HDGROUP_CFG)); int iRet; DWORD uiReturnLen; iRet = NET_DVR_GetDVRConfig(m_lUserID, NET_DVR_GET_HDGROUP_CFG, 0, &struHDGroupParams, sizeof(NET_DVR_HDGROUP_CFG), &uiReturnLen); if(0 == iRet) { iRet = NET_DVR_GetLastError(); QMessageBox::information(this, "Please check!", tr("The error is \"%1\"").arg(iRet)); return ; } //ÉèÖÃÅÌ×é¶ÔÓ¦µÄͨµÀÐÅÏ¢ int i; for(i=0; i < MAX_CHAN_NUM; i++) { if(m_pCheckChan[i] != NULL) { if(struHDGroupParams.struHDGroupAttr[iHDGroupIndex].byHDGroupChans[i]) { m_pCheckChan[i]->setChecked(TRUE); } else { m_pCheckChan[i]->setChecked(FALSE); } } } } void CHardDiskParams::on_checkAllChan_clicked() { int bState; if(ui.checkAllChan->isChecked()) { //ui.checkAllChan->setChecked(FALSE); bState = TRUE; } else { //ui.checkAllChan->setChecked(TRUE); bState = FALSE; } //ÉèÖÃÆäËûͨµÀ״̬ int i; for(i=0; i < MAX_CHAN_NUM; i++) { if(m_pCheckChan[i] != NULL) { m_pCheckChan[i]->setChecked(bState); } } } void CHardDiskParams::showEvent ( QShowEvent * event ) { if(event == NULL) { } getHardDiskInfo(); //ÔÙ»ñȡӲÅÌ getHDGroupInfo(); } //»ñȡͨµÀÐÅÏ¢ int CHardDiskParams::GetChanInfoToTable() { //1.¸ù¾ÝÉ豸·µ»ØµÄÐÅÏ¢£¬´´½¨checkbox£¬ //new³öÀ´µÄcheckboxÒª×Ô¼ºÊÍ·Å£¬ÕâÀïÓÉQtableÍê³É int iTotalNum; if(KIT_CreateCheckboxChanArr(m_lUserID, m_pCheckChan, &iTotalNum) == HPR_ERROR) { return HPR_ERROR; } //2.Çå¿Õ±í¸ñ int iRow; ui.tableHDGroup->clear(); for(iRow = 0; iRow < ui.tableHDGroup->rowCount(); iRow++) { ui.tableHDGroup->removeRow(iRow); } //ÉèÖÃÐÐÊý£¬ÁÐÊý: 3ÁÐ int iRowCount; //±í¸ñµÄ×ܺ¯Êý iRowCount = (iTotalNum)/3; if((iTotalNum + 1)%3 > 0) { iRowCount++; } ui.tableHDGroup->setRowCount(iRowCount); ui.tableHDGroup->setColumnCount(3); //3.½«Êý¾ÝдÈëtableÖÐ //ui.tableHDGroup->setCellWidget(0, 0, m_pCheckChanAll); int iColumn = 0; iRow = 0; int i; for(i = 0; i < MAX_CHANNUM_V30; i++) { //ÕÒµ½Ò»¸öÒѾ­´´½¨µÄcheckbox if(m_pCheckChan[i] != NULL) { //°´Ë³ÐòÒÀ´Î¼ÓÈëtableÖÐ ui.tableHDGroup->setCellWidget(iRow, iColumn, m_pCheckChan[i]); //ÒѾ­µ½´ïÒ»ÐеÄÐÐÄ©£¬Ôò»»ÐÐ if(iColumn == 2) { ++iRow; iColumn = 0; } else//ϸötableλÖà { ++iColumn; } } } return HPR_OK; }