MainDlg.cpp 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301
  1. // MainDlg.cpp : implementation of the CMainDlg class
  2. //
  3. /////////////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "MainDlg.h"
  6. #include "StabtypeControl.h"
  7. #include "CLashConfig.h"
  8. CMainDlg::CMainDlg() : SHostWnd(_T("LAYOUT:XML_MAINWND")), m_base_clash(nullptr)
  9. {
  10. m_bLayoutInited = FALSE;
  11. }
  12. CMainDlg::~CMainDlg()
  13. {
  14. if (m_base_clash)
  15. {
  16. delete m_base_clash;
  17. m_base_clash = nullptr;
  18. }
  19. }
  20. int CMainDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
  21. {
  22. SetMsgHandled(FALSE);
  23. return 0;
  24. }
  25. BOOL CMainDlg::OnInitDialog(HWND hWnd, LPARAM lParam)
  26. {
  27. m_bLayoutInited = TRUE;
  28. Init();
  29. OnConnecting_UdateUi(false, CONNECT_NODE_MSG,L"");
  30. /*CManageNetWork m_manageNetwork;
  31. m_manageNetwork.GetNodeList();*/
  32. CManageNetWork::getSingletonPtr()->GetNodeList();
  33. return 0;
  34. }
  35. void CMainDlg::Init()
  36. {
  37. CApp::getSingletonPtr()->SetupDataDirectory();
  38. //FindChildByName2<STabCtrl>(L"tabmain");
  39. if (!m_base_clash)
  40. {
  41. m_base_clash = new CLashConfig();
  42. m_base_clash->InitClash();
  43. m_base_clash->StartClash();
  44. }
  45. SysMode list;
  46. list.id = 0;
  47. list.name = L"系统代理";
  48. list.proxy_mode = PROXY_MODE::sys_mode;
  49. SysMode list1;
  50. list1.id = 1;
  51. list1.name = L"网卡代理";
  52. list1.proxy_mode = PROXY_MODE::tun_mode;
  53. m_sysmode_vctor.push_back(list);
  54. m_sysmode_vctor.push_back(list1);
  55. RouteMode route;
  56. route.id = 0;
  57. route.name = L"智能";
  58. route.route_mode = ROUT_MODE::cn_mode;
  59. RouteMode route2;
  60. route2.id = 1;
  61. route2.name = L"全局";
  62. route2.route_mode = ROUT_MODE::qg_mode;
  63. m_route_vctor.push_back(route);
  64. m_route_vctor.push_back(route2);
  65. StabtypeControl* tabtype = FindChildByName2<StabtypeControl>(L"sysmode");
  66. if (tabtype)
  67. {
  68. for (auto i = 0; i < m_sysmode_vctor.size(); i++)
  69. {
  70. tabtype->ItemCreateChildren(m_sysmode_vctor[i].id, m_sysmode_vctor[i].name,i == 0 ? true : false );
  71. }
  72. if (m_sysmode_vctor.size() > 0)
  73. {
  74. CApp::getSingletonPtr()->SetSysMode(m_sysmode_vctor[0].proxy_mode);
  75. }
  76. tabtype->GetEventSet()->subscribeEvent(EVT_TABTYPE_CONTROL,
  77. Subscriber(&CMainDlg::OnSysModeType, this));
  78. }
  79. StabtypeControl* routetype = FindChildByName2<StabtypeControl>(L"routemode");
  80. if (routetype)
  81. {
  82. for (auto i = 0; i < m_route_vctor.size(); i++)
  83. {
  84. routetype->ItemCreateChildren(m_route_vctor[i].id, m_route_vctor[i].name, i == 0 ? true : false);
  85. }
  86. if (m_route_vctor.size() > 0)
  87. {
  88. CApp::getSingletonPtr()->SetRouteMode(m_route_vctor[0].route_mode);
  89. }
  90. routetype->GetEventSet()->subscribeEvent(EVT_TABTYPE_CONTROL,
  91. Subscriber(&CMainDlg::OnRouteModeType, this));
  92. }
  93. }
  94. void CMainDlg::OnNode()
  95. {
  96. STabCtrl* m_tab_main = FindChildByName2<STabCtrl>(L"tabmain");
  97. if (m_tab_main)
  98. {
  99. m_tab_main->SetCurSel(1);
  100. m_tab_main->Invalidate();
  101. }
  102. }
  103. void CMainDlg::OnBackNode()
  104. {
  105. STabCtrl* m_tab_main = FindChildByName2<STabCtrl>(L"tabmain");
  106. if (m_tab_main)
  107. {
  108. m_tab_main->SetCurSel(0);
  109. m_tab_main->Invalidate();
  110. }
  111. }
  112. bool CMainDlg::OnSysModeType(SOUI::EventArgs* pEvt)
  113. {
  114. SOUI::EventTabtypeControl* pTestControlEvent =
  115. SOUI::sobj_cast<SOUI::EventTabtypeControl>(pEvt);
  116. if (!pTestControlEvent)
  117. {
  118. return false;
  119. }
  120. CApp::getSingletonPtr()->SetSysMode(m_sysmode_vctor[pTestControlEvent->nIndex].proxy_mode);
  121. return true;
  122. }
  123. bool CMainDlg::OnRouteModeType(SOUI::EventArgs* pEvt)
  124. {
  125. SOUI::EventTabtypeControl* pTestControlEvent =
  126. SOUI::sobj_cast<SOUI::EventTabtypeControl>(pEvt);
  127. if (!pTestControlEvent)
  128. {
  129. return false;
  130. }
  131. CApp::getSingletonPtr()->SetRouteMode(m_route_vctor[pTestControlEvent->nIndex].route_mode);
  132. return true;
  133. }
  134. void CMainDlg::OnServerListFinish(SOUI::EventArgs* pEvt)
  135. {
  136. EventNodeList* e2 = sobj_cast<EventNodeList>(pEvt);
  137. if (!e2)
  138. {
  139. return;
  140. }
  141. if (e2->status == 0)
  142. {
  143. UPdateMsgStatus(e2->msg);
  144. }
  145. else if (e2->status == -1)
  146. {
  147. UPdateMsgStatus(e2->msg);
  148. }
  149. else if (e2->status == 200)
  150. {
  151. }
  152. }
  153. void CMainDlg::UPdateMsgStatus(SStringW msg)
  154. {
  155. //text_touch
  156. SStatic* text_touch = FindChildByName2<SStatic>(L"text_touch");
  157. if (text_touch)
  158. {
  159. text_touch->SetWindowTextW(msg);
  160. text_touch->EnableWindow(FALSE);
  161. text_touch->Invalidate();
  162. }
  163. }
  164. //连接状态 更新UI
  165. void CMainDlg::OnConnecting_UdateUi(bool b,SStringW msg,SStringW acc_msg)
  166. {
  167. SWindow* selectnode = FindChildByName2<SWindow>(L"selectnode");
  168. if (selectnode)
  169. {
  170. selectnode->EnableWindow(b);
  171. selectnode->Invalidate();
  172. }
  173. SStatic* text_touch = FindChildByName2<SStatic>(L"text_touch");
  174. if (text_touch)
  175. {
  176. text_touch->SetWindowTextW(msg);
  177. text_touch->EnableWindow(b);
  178. text_touch->Invalidate();
  179. }
  180. SImageButton* connect_touch = FindChildByName2<SImageButton>(L"connect_touch");
  181. if (connect_touch)
  182. {
  183. connect_touch->EnableWindow(b);
  184. connect_touch->Invalidate();
  185. }
  186. SImageButton* connect_status = FindChildByName2<SImageButton>(L"connect_status");
  187. if (connect_status)
  188. {
  189. connect_status->EnableWindow(b);
  190. connect_status->Invalidate();
  191. }
  192. SImageButton* start_Acc = FindChildByName2<SImageButton>(L"start_Acc");
  193. if (start_Acc)
  194. {
  195. if (acc_msg.IsEmpty())
  196. {
  197. acc_msg = msg;
  198. }
  199. start_Acc->SetWindowTextW(acc_msg);
  200. start_Acc->EnableWindow(b);
  201. start_Acc->Invalidate();
  202. }
  203. }
  204. //TODO:消息映射
  205. void CMainDlg::OnClose()
  206. {
  207. OnMinimize();
  208. }
  209. void CMainDlg::OnMaximize()
  210. {
  211. SendMessage(WM_SYSCOMMAND, SC_MAXIMIZE);
  212. }
  213. void CMainDlg::OnRestore()
  214. {
  215. SendMessage(WM_SYSCOMMAND, SC_RESTORE);
  216. }
  217. void CMainDlg::OnMinimize()
  218. {
  219. SendMessage(WM_SYSCOMMAND, SC_MINIMIZE);
  220. }
  221. void ShowConsoleWindow(bool show) {
  222. const HWND hWnd = CProcessManager::getSingletonPtr()->GetConsoleWindow();
  223. if (hWnd)
  224. {
  225. ShowWindow(hWnd, show ? SW_SHOW : SW_HIDE);
  226. if (show)
  227. SetForegroundWindow(hWnd);
  228. }
  229. }
  230. void CMainDlg::OnCommand(UINT uNotifyCode, int nID, HWND wndCtl) {
  231. if (uNotifyCode == 0)
  232. {
  233. if (nID == 2)
  234. {
  235. const HWND hWndConsole = CProcessManager::getSingletonPtr()->GetConsoleWindow();
  236. if (hWndConsole)
  237. {
  238. ShowConsoleWindow(!::IsWindowVisible(hWndConsole));
  239. }
  240. else
  241. ShowConsoleWindow(false);
  242. }
  243. else if (nID == 6) {
  244. if (m_base_clash)
  245. {
  246. m_base_clash->StopClash();
  247. delete m_base_clash;
  248. m_base_clash = nullptr;
  249. }
  250. CSimpleWnd::DestroyWindow();
  251. }
  252. }
  253. }