//--------------------------------------------------------------------------- #pragma hdrstop #include "CDSCctvF.h" #include "XCctvList.h" #include "XViewList.h" //--------------------------------------------------------------------------- #pragma package(smart_init) TXCamera::TXCamera() { } //--------------------------------------------------------------------------- TXCamera::~TXCamera() { } //--------------------------------------------------------------------------- TXView::TXView() { FForm = NULL; FCount = 0; InitCamera(); } //--------------------------------------------------------------------------- TXView::~TXView() { } //--------------------------------------------------------------------------- void TXView::InitCamera() { for (int kk = 0; kk < MAX_CAMERA; kk++) { FCamera[kk].Installed = false; FCamera[kk].Index = -1; FCamera[kk].Id = ""; FCamera[kk].Play = true; } } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- TXViewManager *XViewManager = NULL; //--------------------------------------------------------------------------- /* * XCctv Manager */ TXViewManager::TXViewManager() { } //--------------------------------------------------------------------------- TXViewManager::~TXViewManager() { } //--------------------------------------------------------------------------- bool TXViewManager::LoadXml(TXMLDocument *AXMLDocument, String AXmlFile) { try { FLists.Lock(); FLists.RemoveAll(); try { AXMLDocument->LoadFromFile(AXmlFile); _di_IXMLViewListType ViewList = GetViewList(AXMLDocument); for (int ii = 0; ii < ViewList->Count; ii++) { _di_IXMLViewType view = ViewList->Get_View(ii); TXView *pObj = new TXView(); pObj->Id = view->Id; pObj->Name = view->Name; pObj->Layout = view->Layout; pObj->Selected = view->Selected; FLists.Push(pObj->Id, pObj); _di_IXMLCameraTypeList cctvlist = view->Get_Camera(); for (int jj = 0; jj < cctvlist->Count; jj++) { _di_IXMLCameraType cctv = cctvlist->Get_Item(jj); if (cctv->Index < 0 || cctv->Index >= MAX_CAMERA) continue; pObj->FCamera[cctv->Index].Installed = true; pObj->FCamera[cctv->Index].Index = cctv->Index; pObj->FCamera[cctv->Index].Id = cctv->Id; pObj->FCamera[cctv->Index].Play = (cctv->Play) == 1 ? true : false; } } AXMLDocument->Active = false; } catch(...) { } } __finally { FLists.UnLock(); } return true; } //--------------------------------------------------------------------------- bool TXViewManager::LoadFromDb(TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; sQry = "SELECT MONITORING_NM, MONITORING_SEQ, VMS_CTLR_NMBR \r\n" " FROM TB_VMS_MONITORING \r\n" " WHERE MONITORING_TYPE = 3 \r\n" " ORDER BY MONITORING_NM DESC, MONITORING_SEQ \r\n"; TXView *pView = NULL; try { FLists.Lock(); FLists.RemoveAll(); try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Open(); //int nRows = pADO->RecordCount; for( ; !pADO->Eof; pADO->Next()) { String sScrName = pADO->FieldByName("MONITORING_NM")->AsString; String sScrSeq = pADO->FieldByName("MONITORING_SEQ")->AsString; String sVmsNmbr = pADO->FieldByName("VMS_CTLR_NMBR")->AsString; pView = FLists.Find(sScrName); if (!pView) { pView = new TXView(); pView->Id = sScrName; pView->Name = sScrName; pView->Selected = false; FLists.Push(pView->Id, pView); } if (pView->FCount < MAX_CAMERA) { TXCamera *pCam = &pView->FCamera[pView->FCount++]; pCam->Installed = true; pCam->Id = sVmsNmbr; pCam->Play = true; } } } catch(EDatabaseError &E) { throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &exception) { throw Exception(String(exception.ClassName()) + exception.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } FOR_STL(TXView*, pObj, FLists) { switch(pObj->FCount) { case 0: case 1: pObj->Layout = 0; break; //1*1 case 2: case 3: case 4: pObj->Layout = 1; break; //2*2 case 5: case 6: pObj->Layout = 3; break; //3*2 case 7: case 8: case 9: pObj->Layout = 2; break; //3*3 case 10: case 11: case 12: pObj->Layout = 4; break; //4*3 case 13: case 14: case 15: case 16: pObj->Layout = 5; break; //4*4 case 17: case 18: case 19: case 20: pObj->Layout = 7; break; //5*4 case 21: case 22: case 23: case 24: pObj->Layout = 8; break; //6*4 case 25: case 26: case 27: case 28: case 29: case 30: pObj->Layout = 9; break; //6*5 default: if (pObj->FCount <= 42) pObj->Layout = 10; //7*6 else if (pObj->FCount <= 56) pObj->Layout = 11; //8*7 else pObj->Layout = 12; //8*8 break; } } FLists.UnLock(); } return true; } //--------------------------------------------------------------------------- TXCctv::TXCctv() { FGridIndex = -1; FTreeIndex = -1; DEL_YN = "N"; MEM_DEL = "N"; Clear(); } //--------------------------------------------------------------------------- void TXCctv::Clear() { } //--------------------------------------------------------------------------- TXCctv::~TXCctv() { } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- TXCctvManager *XCctvManager = NULL; //--------------------------------------------------------------------------- /* * XCctv Manager */ TXCctvManager::TXCctvManager() { } //--------------------------------------------------------------------------- TXCctvManager::~TXCctvManager() { } //--------------------------------------------------------------------------- bool TXCctvManager::LoadXml(TXMLDocument *AXMLDocument, String AXmlFile) { try { FLists.Lock(); FLists.RemoveAll(); try { AXMLDocument->LoadFromFile(AXmlFile); _di_IXMLCctvListType CctvList = GetCctvList(AXMLDocument); for (int ii = 0; ii < CctvList->Count; ii++) { _di_IXMLCctvType cctv = CctvList->Get_Cctv(ii); TXCctv *pObj = new TXCctv(); pObj->Id = cctv->Id; pObj->Group = cctv->Group; pObj->Name = cctv->Name; pObj->StreamingType = "rtsp";//cctv->StreamingType; pObj->ViewAddress = cctv->ViewAddress; pObj->FullAddress = cctv->FullAddress; FLists.Push(pObj->Id, pObj); pObj->Completed = true; } AXMLDocument->Active = false; } catch(...) { } } __finally { FLists.UnLock(); } return true; } //--------------------------------------------------------------------------- bool TXCctvManager::LoadFromDb(TADOConnection *ADbConn/*=NULL*/) { try { FLists.Lock(); FLists.RemoveAll(); try { FOR_STL(TVmsCtlr*, pVms, VmsManager->FLists) { TXCctv *pObj = new TXCctv(); pObj->Id = pVms->VMS_CTLR_NMBR; pObj->Group = "1"; pObj->Name = pVms->VMS_NM; pObj->StreamingType = "rtsp";//cctv->StreamingType; pObj->ViewAddress = pVms->STRM_SESN_NM; pObj->FullAddress = pVms->STRM_SESN_NM; pObj->WebCamIp = pVms->WEB_CMRA_IP; pObj->CtlrIp = pVms->VMS_CTLR_IP; FLists.Push(pObj->Id, pObj); pObj->Completed = true; } } catch(...) { } } __finally { FLists.UnLock(); } return true; } //---------------------------------------------------------------------------