FRAME_FlashMapF.cpp 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include "ITSSkinF.h"
  4. #include "ITSUtilF.h"
  5. #include "AppGlobalF.h"
  6. #pragma hdrstop
  7. #include "FRAME_FlashMapF.h"
  8. //---------------------------------------------------------------------------
  9. #pragma package(smart_init)
  10. #pragma link "ImageBtn"
  11. #pragma link "cxContainer"
  12. #pragma link "cxControls"
  13. #pragma link "cxEdit"
  14. #pragma link "cxGraphics"
  15. #pragma link "cxGroupBox"
  16. #pragma link "cxLookAndFeelPainters"
  17. #pragma link "cxLookAndFeels"
  18. #pragma link "dxSkinBlack"
  19. #pragma link "dxSkinBlue"
  20. #pragma link "dxSkinCaramel"
  21. #pragma link "dxSkinCoffee"
  22. #pragma link "dxSkinDarkRoom"
  23. #pragma link "dxSkinDarkSide"
  24. #pragma link "dxSkinFoggy"
  25. #pragma link "dxSkinGlassOceans"
  26. #pragma link "dxSkiniMaginary"
  27. #pragma link "dxSkinLilian"
  28. #pragma link "dxSkinLiquidSky"
  29. #pragma link "dxSkinLondonLiquidSky"
  30. #pragma link "dxSkinMcSkin"
  31. #pragma link "dxSkinMoneyTwins"
  32. #pragma link "dxSkinOffice2007Black"
  33. #pragma link "dxSkinOffice2007Blue"
  34. #pragma link "dxSkinOffice2007Green"
  35. #pragma link "dxSkinOffice2007Pink"
  36. #pragma link "dxSkinOffice2007Silver"
  37. #pragma link "dxSkinOffice2010Black"
  38. #pragma link "dxSkinOffice2010Blue"
  39. #pragma link "dxSkinOffice2010Silver"
  40. #pragma link "dxSkinsCore"
  41. #pragma link "dxSkinSeven"
  42. #pragma link "dxSkinSharp"
  43. #pragma link "dxSkinSilver"
  44. #pragma link "dxSkinStardust"
  45. #pragma link "ShockwaveEx"
  46. #pragma link "ShockwaveFlashObjects_TLB"
  47. #pragma resource "*.dfm"
  48. TFRAMEFlashMap *FRAMEFlashMap;
  49. //---------------------------------------------------------------------------
  50. __fastcall TFRAMEFlashMap::TFRAMEFlashMap(TComponent* Owner)
  51. : TFrame(Owner)
  52. {
  53. FlashCallbackFunc = NULL;
  54. LoadLocalSkin();
  55. FLinkLevel = 1;
  56. FDrawMode = 1;
  57. FMapInit = false;
  58. MapStart = false;
  59. ModeSelect = false;
  60. LoadTraffic= true;
  61. ShockwaveFlash1->Align = alClient;
  62. GrpTool->Enabled = false;
  63. LoadMap();
  64. }
  65. //---------------------------------------------------------------------------
  66. void __fastcall TFRAMEFlashMap::LoadLocalSkin()
  67. {
  68. try
  69. {
  70. ImgPan->NormalPicture->Assign(ImgPan_c->Picture);
  71. ImgPan->Picture->Assign(ImgPan_c->Picture);
  72. ImgPan->TogglePicture->Assign(ImgPan_n->Picture);
  73. ImgPan->ClickedPicture->Assign(ImgPan_c->Picture);
  74. ImgZoomIn->NormalPicture->Assign(ImgZoomIn_n->Picture);
  75. ImgZoomIn->Picture->Assign(ImgZoomIn_n->Picture);
  76. ImgZoomIn->TogglePicture->Assign(ImgZoomIn_c->Picture);
  77. ImgZoomIn->ClickedPicture->Assign(ImgZoomIn_n->Picture);
  78. ImgZoomOut->NormalPicture->Assign(ImgZoomOut_n->Picture);
  79. ImgZoomOut->Picture->Assign(ImgZoomOut_n->Picture);
  80. ImgZoomOut->TogglePicture->Assign(ImgZoomOut_c->Picture);
  81. ImgZoomOut->ClickedPicture->Assign(ImgZoomOut_n->Picture);
  82. ImgSel->NormalPicture->Assign(ImgSel_n->Picture);
  83. ImgSel->Picture->Assign(ImgSel_n->Picture);
  84. ImgSel->TogglePicture->Assign(ImgSel_c->Picture);
  85. ImgSel->ClickedPicture->Assign(ImgSel_n->Picture);
  86. ImgStnd->NormalPicture->Assign(ImgStnd_n->Picture);
  87. ImgStnd->Picture->Assign(ImgStnd_n->Picture);
  88. ImgStnd->TogglePicture->Assign(ImgStnd_c->Picture);
  89. ImgStnd->ClickedPicture->Assign(ImgStnd_n->Picture);
  90. ImgRefresh->NormalPicture->Assign(ImgRefresh_n->Picture);
  91. ImgRefresh->Picture->Assign(ImgRefresh_n->Picture);
  92. ImgRefresh->TogglePicture->Assign(ImgRefresh_c->Picture);
  93. ImgRefresh->ClickedPicture->Assign(ImgRefresh_n->Picture);
  94. }
  95. catch(...)
  96. {
  97. }
  98. }
  99. //---------------------------------------------------------------------------
  100. void __fastcall TFRAMEFlashMap::LoadGisMap()
  101. {
  102. FMapInit = true;
  103. }
  104. //---------------------------------------------------------------------------
  105. void __fastcall TFRAMEFlashMap::SetLinkLevel(int ALinkLevel)
  106. {
  107. switch(ALinkLevel)
  108. {
  109. case 1:
  110. break;
  111. case 2:
  112. break;
  113. case 3:
  114. break;
  115. default: return;
  116. }
  117. FLinkLevel = ALinkLevel;
  118. }
  119. //---------------------------------------------------------------------------
  120. void __fastcall TFRAMEFlashMap::SetDrawMode(int ADrawMode)
  121. {
  122. FDrawMode = ADrawMode;
  123. }
  124. //---------------------------------------------------------------------------
  125. void __fastcall TFRAMEFlashMap::OnGisOperationClick(TObject *Sender)
  126. {
  127. if (!MapStart) return;
  128. TImageBtn *pMenu = (TImageBtn*)Sender;
  129. switch(pMenu->Tag)
  130. {
  131. case 3: //pan
  132. try
  133. {
  134. ImgPan->NormalPicture->Assign(ImgPan_c->Picture);
  135. ImgPan->Picture->Assign(ImgPan_c->Picture);
  136. ImgPan->TogglePicture->Assign(ImgPan_n->Picture);
  137. ImgPan->ClickedPicture->Assign(ImgPan_n->Picture);
  138. ImgSel->NormalPicture->Assign(ImgSel_n->Picture);
  139. ImgSel->Picture->Assign(ImgSel_n->Picture);
  140. ImgSel->TogglePicture->Assign(ImgSel_c->Picture);
  141. ImgSel->ClickedPicture->Assign(ImgSel_c->Picture);
  142. } catch(Exception &e) {}
  143. TCommFlash::CallFunc(ShockwaveFlash1, "SelectMode", "0");
  144. ShockwaveFlash1->Cursor = crDefault;//Drag;
  145. ModeSelect = false;
  146. break;
  147. case 1: //zoomin
  148. TCommFlash::CallFunc(ShockwaveFlash1, "ZoomIn", "");
  149. break;
  150. case 2: //zoomout
  151. TCommFlash::CallFunc(ShockwaveFlash1, "ZoomOut", "");
  152. break;
  153. case 5: //select
  154. try
  155. {
  156. ImgPan->NormalPicture->Assign(ImgPan_n->Picture);
  157. ImgPan->Picture->Assign(ImgPan_n->Picture);
  158. ImgPan->TogglePicture->Assign(ImgPan_c->Picture);
  159. ImgPan->ClickedPicture->Assign(ImgPan_n->Picture);
  160. ImgSel->NormalPicture->Assign(ImgSel_c->Picture);
  161. ImgSel->Picture->Assign(ImgSel_c->Picture);
  162. ImgSel->TogglePicture->Assign(ImgSel_n->Picture);
  163. ImgSel->ClickedPicture->Assign(ImgSel_n->Picture);
  164. } catch(Exception &e) {}
  165. TCommFlash::CallFunc(ShockwaveFlash1, "SelectMode", "1");
  166. ShockwaveFlash1->Cursor = crHelp;
  167. ModeSelect = true;
  168. break;
  169. }
  170. }
  171. //---------------------------------------------------------------------------
  172. void __fastcall TFRAMEFlashMap::ImgStndClick(TObject *Sender)
  173. {
  174. //stand resion
  175. if (!MapStart) return;
  176. TCommFlash::CallFunc(ShockwaveFlash1, "StdExtent", "");
  177. }
  178. //---------------------------------------------------------------------------
  179. void __fastcall TFRAMEFlashMap::ImgRefreshClick(TObject *Sender)
  180. {
  181. //refresh
  182. if (!MapStart) return;
  183. TCommFlash::CallFunc(ShockwaveFlash1, "RefreshMap", "");
  184. }
  185. //---------------------------------------------------------------------------
  186. void __fastcall TFRAMEFlashMap::SelectObjectByPos(double dPosX, double dPosY, bool bArrow/*=false*/)
  187. {
  188. if (!MapStart) return;
  189. TCommFlash::CallFunc(ShockwaveFlash1, "SelectPoint", String(dPosX) + "," + String(dPosY) + "|3");
  190. }
  191. //---------------------------------------------------------------------------
  192. void __fastcall TFRAMEFlashMap::SelectObjectByPos()
  193. {
  194. #if 0
  195. TPoint ptTmp;
  196. ImgSelect->Parent = xclntMap;
  197. ImgSelect->Visible = false;
  198. TmrSelect->Enabled = false;
  199. TmrSelect->Interval = 3000;
  200. ptTmp = xclntMap->RealToScreen(m_ptSelect);
  201. ImgSelect->Left = ptTmp.x - (ImgSelect->Width/2);
  202. ImgSelect->Top = ptTmp.y - (ImgSelect->Height)-10;
  203. TmrSelect->Enabled = true;
  204. ImgSelect->Visible = true;
  205. #endif
  206. }
  207. //---------------------------------------------------------------------------
  208. void __fastcall TFRAMEFlashMap::TmrSelectTimer(TObject *Sender)
  209. {
  210. TmrSelect->Enabled = false;
  211. ImgSelect->Visible = false;
  212. }
  213. //---------------------------------------------------------------------------
  214. void __fastcall TFRAMEFlashMap::OnCloseQuery(bool &CanClose)
  215. {
  216. ShockwaveFlash1->StopPlay();
  217. ShockwaveFlash1->Stop();
  218. }
  219. //---------------------------------------------------------------------------
  220. void __fastcall TFRAMEFlashMap::SelGisItem(int AType, String AId)
  221. {
  222. #if 0
  223. try
  224. {
  225. switch(AType)
  226. {
  227. case 0: TXiMapUtil::MoveNode(xclntMap, AId); break;
  228. case 1: TXiMapUtil::MoveLink(xclntMap, AId); break;
  229. case 2: TXiMapUtil::MoveServiceLink(xclntMap, AId); break;
  230. case 3: TXiMapUtil::MoveRoad(xclntMap, AId); break;
  231. default: return;
  232. }
  233. }
  234. catch(...)
  235. {
  236. }
  237. #endif
  238. }
  239. //---------------------------------------------------------------------------
  240. void __fastcall TFRAMEFlashMap::ShockwaveFlash1FlashCall(TObject *ASender, const WideString request)
  241. {
  242. try
  243. {
  244. String sTemp;
  245. String sFunc;
  246. String sArgs;
  247. //<invoke name="Debug" returntype="xml"><arguments><string>KKK|LinkMap 1</string></arguments></invoke>
  248. sTemp = request;
  249. int nFuncStrIdx = sTemp.Pos("\"");
  250. int nFuncEndIdx = sTemp.Pos("\" returntype");
  251. int nArgsStrIdx = sTemp.Pos("string>");
  252. int nArgsEndIdx = sTemp.Pos("</string");
  253. sFunc = sTemp.SubString(nFuncStrIdx + 1, nFuncEndIdx - (nFuncStrIdx + 1));
  254. sArgs = sTemp.SubString(nArgsStrIdx + 7, nArgsEndIdx - (nArgsStrIdx + 7));
  255. if (Memo1->Visible) Memo1->Lines->Add("[" + sFunc + "] [" + sArgs + "]");
  256. if (sFunc == "OnMapStart")
  257. {
  258. StatusBar->Panels->Items[0]->Text = "레벨: " + sArgs;
  259. MapStart = true;
  260. TmrInit->Enabled = true;
  261. }
  262. else
  263. if (sFunc == "OnZoomChanged")
  264. {
  265. StatusBar->Panels->Items[0]->Text = "레벨: " + sArgs;
  266. }
  267. else
  268. if (sFunc == "OnMousePos")
  269. {
  270. StatusBar->Panels->Items[1]->Text = "클릭좌표: " + sArgs;
  271. }
  272. else
  273. if (sFunc == "OnNodeLoad")
  274. {
  275. }
  276. else
  277. if (sFunc == "OnLinkLoad")
  278. {
  279. TStringList *pStringList = new TStringList;
  280. pStringList->CommaText = sArgs;
  281. String sResult = pStringList->Strings[0];
  282. String sLevel = pStringList->Strings[1];
  283. delete pStringList;
  284. TCommFlash::CallFunc(ShockwaveFlash1, "LoadLinkVertex", sLevel);
  285. }
  286. else
  287. if (sFunc == "OnLinkVertexLoad")
  288. {
  289. //RefreshId();
  290. }
  291. else
  292. if (sFunc == "OnFindLink")
  293. {
  294. TStringList *pStringList = new TStringList;
  295. pStringList->CommaText = sArgs;
  296. String sResult = pStringList->Strings[0]; //Find resule
  297. String sLinkId = pStringList->Strings[1]; //Link Id
  298. delete pStringList;
  299. }
  300. else
  301. if (sFunc == "OnSelLink")
  302. {
  303. TStringList *pStringList = new TStringList;
  304. pStringList->CommaText = sArgs;
  305. String sLevl = pStringList->Strings[0]; //링크레벨
  306. String sId = pStringList->Strings[1]; //링크아이디
  307. String sZoom = pStringList->Strings[2]; //줌레벨
  308. String sPosX = pStringList->Strings[3]; //x
  309. String sPosY = pStringList->Strings[4]; //y
  310. String sMapX = pStringList->Strings[5]; //lat
  311. String sMapY = pStringList->Strings[6]; //lng
  312. delete pStringList;
  313. //StatusBar->Panels->Items[1]->Text = "클릭좌표: " + sMapX + "," + sMapY;
  314. //FPosX = sMapX.ToDouble();
  315. //FPosY = sMapY.ToDouble();
  316. if (true)
  317. {
  318. //UpdateSelect(sId, FPosX, FPosY);
  319. }
  320. }
  321. }
  322. catch(Exception &exception)
  323. {
  324. }
  325. try
  326. {
  327. if (FlashCallbackFunc)
  328. {
  329. FlashCallbackFunc(ASender, request);
  330. }
  331. }
  332. catch(Exception &exception) {}
  333. }
  334. //---------------------------------------------------------------------------
  335. void __fastcall TFRAMEFlashMap::FrameResize(TObject *Sender)
  336. {
  337. ShockwaveFlash1->Align = alClient;
  338. }
  339. //---------------------------------------------------------------------------
  340. void __fastcall TFRAMEFlashMap::LoadMap()
  341. {
  342. try {
  343. ShockwaveFlash1->Stop();
  344. String sFileName = g_AppCfg.flashmap.sLinkMap + "&link="+FLinkLevel;
  345. ShockwaveFlash1->Movie = sFileName;
  346. ShockwaveFlash1->Play();
  347. } catch(...) {}
  348. }
  349. //---------------------------------------------------------------------------
  350. void __fastcall TFRAMEFlashMap::TmrInitTimer(TObject *Sender)
  351. {
  352. TmrInit->Enabled = false;
  353. if (FMapInit == false || !MapStart)
  354. {
  355. TmrInit->Enabled = true;
  356. return;
  357. }
  358. TCommFlash::CallFunc(ShockwaveFlash1, "SetDrawMode", String(FDrawMode));
  359. TCommFlash::CallFunc(ShockwaveFlash1, "SetLinkLevel", String(FLinkLevel));
  360. //TCommFlash::CallFunc(ShockwaveFlash1, "MultiSelect", FMultiSelect ? "1" : "0");
  361. //StatusBar->Panels->Items[0]->Text = "레벨: " + sArgs;
  362. //TCommFlash::CallFunc(ShockwaveFlash1, "LoadNode", "1");
  363. if (LoadTraffic)
  364. {
  365. TCommFlash::CallFunc(ShockwaveFlash1, "LoadLink", String(FLinkLevel));
  366. }
  367. GrpTool->Enabled = true;
  368. }
  369. //---------------------------------------------------------------------------
  370. void __fastcall TFRAMEFlashMap::GrpToolDblClick(TObject *Sender)
  371. {
  372. Memo1->Visible = !Memo1->Visible;
  373. }
  374. //---------------------------------------------------------------------------
  375. void __fastcall TFRAMEFlashMap::Memo1DblClick(TObject *Sender)
  376. {
  377. Memo1->Lines->Clear();
  378. }
  379. //---------------------------------------------------------------------------