FRAME_FlashMapF.cpp 12 KB

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