CDSCctvF.cpp 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350
  1. //---------------------------------------------------------------------------
  2. #pragma hdrstop
  3. #include "CDSCctvF.h"
  4. #include "XCctvList.h"
  5. #include "XViewList.h"
  6. //---------------------------------------------------------------------------
  7. #pragma package(smart_init)
  8. TXCamera::TXCamera()
  9. {
  10. }
  11. //---------------------------------------------------------------------------
  12. TXCamera::~TXCamera()
  13. {
  14. }
  15. //---------------------------------------------------------------------------
  16. TXView::TXView()
  17. {
  18. FForm = NULL;
  19. FCount = 0;
  20. InitCamera();
  21. }
  22. //---------------------------------------------------------------------------
  23. TXView::~TXView()
  24. {
  25. }
  26. //---------------------------------------------------------------------------
  27. void TXView::InitCamera()
  28. {
  29. for (int kk = 0; kk < MAX_CAMERA; kk++)
  30. {
  31. FCamera[kk].Installed = false;
  32. FCamera[kk].Index = -1;
  33. FCamera[kk].Id = "";
  34. FCamera[kk].Play = true;
  35. }
  36. }
  37. //---------------------------------------------------------------------------
  38. //---------------------------------------------------------------------------
  39. TXViewManager *XViewManager = NULL;
  40. //---------------------------------------------------------------------------
  41. /*
  42. * XCctv Manager
  43. */
  44. TXViewManager::TXViewManager()
  45. {
  46. }
  47. //---------------------------------------------------------------------------
  48. TXViewManager::~TXViewManager()
  49. {
  50. }
  51. //---------------------------------------------------------------------------
  52. bool TXViewManager::LoadXml(TXMLDocument *AXMLDocument, String AXmlFile)
  53. {
  54. try
  55. {
  56. FLists.Lock();
  57. FLists.RemoveAll();
  58. try
  59. {
  60. AXMLDocument->LoadFromFile(AXmlFile);
  61. _di_IXMLViewListType ViewList = GetViewList(AXMLDocument);
  62. for (int ii = 0; ii < ViewList->Count; ii++)
  63. {
  64. _di_IXMLViewType view = ViewList->Get_View(ii);
  65. TXView *pObj = new TXView();
  66. pObj->Id = view->Id;
  67. pObj->Name = view->Name;
  68. pObj->Layout = view->Layout;
  69. pObj->Selected = view->Selected;
  70. FLists.Push(pObj->Id, pObj);
  71. _di_IXMLCameraTypeList cctvlist = view->Get_Camera();
  72. for (int jj = 0; jj < cctvlist->Count; jj++)
  73. {
  74. _di_IXMLCameraType cctv = cctvlist->Get_Item(jj);
  75. if (cctv->Index < 0 || cctv->Index >= MAX_CAMERA) continue;
  76. pObj->FCamera[cctv->Index].Installed = true;
  77. pObj->FCamera[cctv->Index].Index = cctv->Index;
  78. pObj->FCamera[cctv->Index].Id = cctv->Id;
  79. pObj->FCamera[cctv->Index].Play = (cctv->Play) == 1 ? true : false;
  80. }
  81. }
  82. AXMLDocument->Active = false;
  83. }
  84. catch(...)
  85. {
  86. }
  87. }
  88. __finally
  89. {
  90. FLists.UnLock();
  91. }
  92. return true;
  93. }
  94. //---------------------------------------------------------------------------
  95. bool TXViewManager::LoadFromDb(TADOConnection *ADbConn/*=NULL*/)
  96. {
  97. String sQry;
  98. TADOQuery *pADO = NULL;
  99. sQry = "SELECT MONITORING_NM, MONITORING_SEQ, VMS_CTLR_NMBR \r\n"
  100. " FROM TB_VMS_MONITORING \r\n"
  101. " WHERE MONITORING_TYPE = 3 \r\n"
  102. " ORDER BY MONITORING_NM DESC, MONITORING_SEQ \r\n";
  103. TXView *pView = NULL;
  104. try
  105. {
  106. FLists.Lock();
  107. FLists.RemoveAll();
  108. try
  109. {
  110. pADO = new TADOQuery(NULL);
  111. pADO->Close();
  112. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  113. pADO->SQL->Clear();
  114. pADO->SQL->Text = sQry;
  115. pADO->Open();
  116. //int nRows = pADO->RecordCount;
  117. for( ; !pADO->Eof; pADO->Next())
  118. {
  119. String sScrName = pADO->FieldByName("MONITORING_NM")->AsString;
  120. String sScrSeq = pADO->FieldByName("MONITORING_SEQ")->AsString;
  121. String sVmsNmbr = pADO->FieldByName("VMS_CTLR_NMBR")->AsString;
  122. pView = FLists.Find(sScrName);
  123. if (!pView)
  124. {
  125. pView = new TXView();
  126. pView->Id = sScrName;
  127. pView->Name = sScrName;
  128. pView->Selected = false;
  129. FLists.Push(pView->Id, pView);
  130. }
  131. if (pView->FCount < MAX_CAMERA)
  132. {
  133. TXCamera *pCam = &pView->FCamera[pView->FCount++];
  134. pCam->Installed = true;
  135. pCam->Id = sVmsNmbr;
  136. pCam->Play = true;
  137. }
  138. }
  139. }
  140. catch(EDatabaseError &E)
  141. {
  142. throw Exception(String(E.ClassName()) + E.Message);
  143. }
  144. catch(Exception &exception)
  145. {
  146. throw Exception(String(exception.ClassName()) + exception.Message);
  147. }
  148. }
  149. __finally
  150. {
  151. if (pADO)
  152. {
  153. pADO->Close();
  154. delete pADO;
  155. }
  156. FOR_STL(TXView*, pObj, FLists)
  157. {
  158. switch(pObj->FCount)
  159. {
  160. case 0: case 1: pObj->Layout = 0; break; //1*1
  161. case 2: case 3: case 4: pObj->Layout = 1; break; //2*2
  162. case 5: case 6: pObj->Layout = 3; break; //3*2
  163. case 7: case 8: case 9: pObj->Layout = 2; break; //3*3
  164. case 10: case 11: case 12: pObj->Layout = 4; break; //4*3
  165. case 13: case 14: case 15: case 16: pObj->Layout = 5; break; //4*4
  166. case 17: case 18: case 19: case 20: pObj->Layout = 7; break; //5*4
  167. case 21: case 22: case 23: case 24: pObj->Layout = 8; break; //6*4
  168. case 25: case 26: case 27: case 28:
  169. case 29: case 30: pObj->Layout = 9; break; //6*5
  170. default:
  171. if (pObj->FCount <= 42) pObj->Layout = 10; //7*6
  172. else if (pObj->FCount <= 56) pObj->Layout = 11; //8*7
  173. else pObj->Layout = 12; //8*8
  174. break;
  175. }
  176. }
  177. FLists.UnLock();
  178. }
  179. return true;
  180. }
  181. //---------------------------------------------------------------------------
  182. TXCctv::TXCctv()
  183. {
  184. FGridIndex = -1;
  185. FTreeIndex = -1;
  186. DEL_YN = "N";
  187. MEM_DEL = "N";
  188. Clear();
  189. }
  190. //---------------------------------------------------------------------------
  191. void TXCctv::Clear()
  192. {
  193. }
  194. //---------------------------------------------------------------------------
  195. TXCctv::~TXCctv()
  196. {
  197. }
  198. //---------------------------------------------------------------------------
  199. //---------------------------------------------------------------------------
  200. TXCctvManager *XCctvManager = NULL;
  201. //---------------------------------------------------------------------------
  202. /*
  203. * XCctv Manager
  204. */
  205. TXCctvManager::TXCctvManager()
  206. {
  207. }
  208. //---------------------------------------------------------------------------
  209. TXCctvManager::~TXCctvManager()
  210. {
  211. }
  212. //---------------------------------------------------------------------------
  213. bool TXCctvManager::LoadXml(TXMLDocument *AXMLDocument, String AXmlFile)
  214. {
  215. try
  216. {
  217. FLists.Lock();
  218. FLists.RemoveAll();
  219. try
  220. {
  221. AXMLDocument->LoadFromFile(AXmlFile);
  222. _di_IXMLCctvListType CctvList = GetCctvList(AXMLDocument);
  223. for (int ii = 0; ii < CctvList->Count; ii++)
  224. {
  225. _di_IXMLCctvType cctv = CctvList->Get_Cctv(ii);
  226. TXCctv *pObj = new TXCctv();
  227. pObj->Id = cctv->Id;
  228. pObj->Group = cctv->Group;
  229. pObj->Name = cctv->Name;
  230. pObj->StreamingType = "rtsp";//cctv->StreamingType;
  231. pObj->ViewAddress = cctv->ViewAddress;
  232. pObj->FullAddress = cctv->FullAddress;
  233. FLists.Push(pObj->Id, pObj);
  234. pObj->Completed = true;
  235. }
  236. AXMLDocument->Active = false;
  237. }
  238. catch(...)
  239. {
  240. }
  241. }
  242. __finally
  243. {
  244. FLists.UnLock();
  245. }
  246. return true;
  247. }
  248. //---------------------------------------------------------------------------
  249. bool TXCctvManager::LoadFromDb(TADOConnection *ADbConn/*=NULL*/)
  250. {
  251. try
  252. {
  253. FLists.Lock();
  254. FLists.RemoveAll();
  255. try
  256. {
  257. FOR_STL(TVmsCtlr*, pVms, VmsManager->FLists)
  258. {
  259. TXCctv *pObj = new TXCctv();
  260. pObj->Id = String(pVms->VMS_CTLR_NMBR);
  261. pObj->CAMID = pVms->VMS_CTLR_ID;
  262. pObj->Group = "1";
  263. pObj->Name = pVms->VMS_NM;
  264. pObj->StreamingType = RTSP;
  265. #if 0
  266. if (pVms->STRM_SESN_NM.Trim() == ICSVIEW)
  267. {
  268. pObj->StreamingType = ICSVIEW;
  269. }
  270. else
  271. if (pVms->STRM_SESN_NM.Trim() == SAMSUNG)
  272. {
  273. pObj->StreamingType = SAMSUNG;
  274. }
  275. else
  276. {
  277. pObj->StreamingType = RTSP;
  278. }
  279. #endif
  280. pObj->ViewAddress = pVms->STRM_SESN_NM;
  281. pObj->FullAddress = pVms->STRM_SESN_NM;
  282. pObj->WebCamIp = pVms->WEB_CMRA_IP;
  283. pObj->CtlrIp = pVms->VMS_CTLR_IP;
  284. pObj->WebCamUser = pVms->WEB_CMRA_ID;
  285. pObj->WebCamPswd = pVms->WEB_CMRA_PWD;
  286. FLists.Push(pObj->Id, pObj);
  287. pObj->Completed = true;
  288. }
  289. }
  290. catch(...)
  291. {
  292. }
  293. }
  294. __finally
  295. {
  296. FLists.UnLock();
  297. }
  298. return true;
  299. }
  300. //---------------------------------------------------------------------------