1 | |
---|
2 | // Copyright Eóin O'Callaghan 2006 - 2008. |
---|
3 | // Distributed under the Boost Software License, Version 1.0. |
---|
4 | // (See accompanying file LICENSE_1_0.txt or copy at |
---|
5 | // http://www.boost.org/LICENSE_1_0.txt) |
---|
6 | |
---|
7 | #pragma once |
---|
8 | |
---|
9 | #define HAL_NEWT_ADD_PEERS 14500 |
---|
10 | #define HAL_NEWT_ADD_PEERS_URL_TEXT HAL_NEWT_ADD_PEERS + 1 |
---|
11 | #define HAL_NEWT_ADD_PEERS_URL_EDIT HAL_NEWT_ADD_PEERS + 2 |
---|
12 | #define HAL_NEWT_ADD_PEERS_TYP_TEXT HAL_NEWT_ADD_PEERS + 3 |
---|
13 | #define HAL_NEWT_ADD_PEERS_TYP_CBOX HAL_NEWT_ADD_PEERS + 4 |
---|
14 | #define HAL_NEWT_ADD_DHT_PORT HAL_NEWT_ADD_PEERS + 7 |
---|
15 | #define HAL_NEWT_ADD_DHT_PORT_TEXT HAL_NEWT_ADD_PEERS + 8 |
---|
16 | |
---|
17 | #define HAL_NEWT_ADD_PEERS_WEB HAL_NEWT_ADD_PEERS + 5 |
---|
18 | #define HAL_NEWT_ADD_PEERS_DHT HAL_NEWT_ADD_PEERS + 6 |
---|
19 | #define HAL_NEWT_EDIT_PEER HAL_NEWT_ADD_PEERS + 9 |
---|
20 | #define HAL_NEWT_ADD_NEW_PEER HAL_NEWT_ADD_PEERS + 10 |
---|
21 | |
---|
22 | #ifndef RC_INVOKED |
---|
23 | |
---|
24 | #include "GenericAddDialog.hpp" |
---|
25 | |
---|
26 | class NewTorrent_PeersAddDialog : |
---|
27 | public ATL::CDialogImpl<NewTorrent_PeersAddDialog>, |
---|
28 | public WTLx::GenericAddDialog<NewTorrent_PeersAddDialog, HAL_PEEREDIT>, |
---|
29 | public WTL::CDialogResize<NewTorrent_PeersAddDialog>, |
---|
30 | public CWinDataExchangeEx<NewTorrent_PeersAddDialog> |
---|
31 | { |
---|
32 | public: |
---|
33 | typedef NewTorrent_PeersAddDialog thisClass; |
---|
34 | typedef WTLx::GenericAddDialog<thisClass, HAL_PEEREDIT> genericBaseClass; |
---|
35 | typedef WTL::CDialogResize<thisClass> resizeClass; |
---|
36 | |
---|
37 | public: |
---|
38 | NewTorrent_PeersAddDialog(wstring title, hal::web_seed_or_dht_node_detail& peer) : |
---|
39 | genericBaseClass(title, "genericAddDlgs/NewTorrentAddPeers", "NewTorrentAddPeers"), |
---|
40 | peer_(peer) |
---|
41 | {} |
---|
42 | |
---|
43 | BEGIN_MSG_MAP_EX(thisClass) |
---|
44 | MSG_WM_INITDIALOG(onInitDialog) |
---|
45 | COMMAND_HANDLER_EX(HAL_NEWT_ADD_PEERS_TYP_CBOX, CBN_SELCHANGE, OnTypeChanged) |
---|
46 | |
---|
47 | CHAIN_MSG_MAP(resizeClass) |
---|
48 | CHAIN_MSG_MAP(genericBaseClass) |
---|
49 | END_MSG_MAP() |
---|
50 | |
---|
51 | BEGIN_DDX_MAP(thisClass) |
---|
52 | DDX_EX_STDWSTRING(HAL_NEWT_ADD_PEERS_URL_EDIT, peer_.url); |
---|
53 | DDX_INT(HAL_NEWT_ADD_DHT_PORT, peer_.port) |
---|
54 | DDX_EX_STDWSTRING(HAL_NEWT_ADD_PEERS_TYP_CBOX, peer_.type) |
---|
55 | END_DDX_MAP() |
---|
56 | |
---|
57 | BEGIN_DLGRESIZE_MAP(thisClass) |
---|
58 | DLGRESIZE_CONTROL(HAL_NEWT_ADD_PEERS_URL_EDIT, DLSZ_SIZE_X) |
---|
59 | DLGRESIZE_CONTROL(HAL_NEWT_ADD_PEERS_TYP_CBOX, DLSZ_MOVE_X) |
---|
60 | DLGRESIZE_CONTROL(HAL_NEWT_ADD_PEERS_URL_TEXT, DLSZ_SIZE_X) |
---|
61 | DLGRESIZE_CONTROL(HAL_NEWT_ADD_PEERS_TYP_TEXT, DLSZ_MOVE_X) |
---|
62 | DLGRESIZE_CONTROL(HAL_NEWT_ADD_DHT_PORT_TEXT, DLSZ_MOVE_X) |
---|
63 | DLGRESIZE_CONTROL(HAL_NEWT_ADD_DHT_PORT, DLSZ_MOVE_X) |
---|
64 | DLGRESIZE_CONTROL(IDOK, DLSZ_MOVE_X|DLSZ_MOVE_Y) |
---|
65 | DLGRESIZE_CONTROL(IDCANCEL, DLSZ_MOVE_X|DLSZ_MOVE_Y) |
---|
66 | END_DLGRESIZE_MAP() |
---|
67 | |
---|
68 | LRESULT onInitDialog(HWND, LPARAM) |
---|
69 | { |
---|
70 | WTL::CComboBox peerTypes; |
---|
71 | |
---|
72 | peerTypes.Attach(GetDlgItem(HAL_NEWT_ADD_PEERS_TYP_CBOX)); |
---|
73 | |
---|
74 | peerTypes.AddString(hal::app().res_wstr(HAL_NEWT_ADD_PEERS_WEB).c_str()); |
---|
75 | peerTypes.AddString(hal::app().res_wstr(HAL_NEWT_ADD_PEERS_DHT).c_str()); |
---|
76 | |
---|
77 | if (hal::app().res_wstr(HAL_NEWT_ADD_PEERS_WEB) == peer_.type) |
---|
78 | peerTypes.SetCurSel(1); |
---|
79 | else |
---|
80 | { |
---|
81 | peerTypes.SetCurSel(0); |
---|
82 | ::EnableWindow(GetDlgItem(HAL_NEWT_ADD_DHT_PORT_TEXT), true); |
---|
83 | ::EnableWindow(GetDlgItem(HAL_NEWT_ADD_DHT_PORT), true); |
---|
84 | } |
---|
85 | |
---|
86 | resizeClass::DlgResize_Init(false, true, WS_CLIPCHILDREN); |
---|
87 | |
---|
88 | SetMsgHandled(false); |
---|
89 | return 0; |
---|
90 | } |
---|
91 | |
---|
92 | void OnTypeChanged(UINT uNotifyCode, int nID, CWindow wndCtl) |
---|
93 | { |
---|
94 | hal::win_c_str<std::wstring> str_buf(MAX_PATH); |
---|
95 | wndCtl.GetWindowText(str_buf, str_buf.size()); |
---|
96 | |
---|
97 | if (str_buf.str() == hal::app().res_wstr(HAL_NEWT_ADD_PEERS_WEB)) |
---|
98 | { |
---|
99 | ::EnableWindow(GetDlgItem(HAL_NEWT_ADD_DHT_PORT_TEXT), false); |
---|
100 | ::EnableWindow(GetDlgItem(HAL_NEWT_ADD_DHT_PORT), false); |
---|
101 | } |
---|
102 | else |
---|
103 | { |
---|
104 | ::EnableWindow(GetDlgItem(HAL_NEWT_ADD_DHT_PORT_TEXT), true); |
---|
105 | ::EnableWindow(GetDlgItem(HAL_NEWT_ADD_DHT_PORT), true); |
---|
106 | } |
---|
107 | } |
---|
108 | |
---|
109 | private: |
---|
110 | wstring title_; |
---|
111 | hal::web_seed_or_dht_node_detail& peer_; |
---|
112 | }; |
---|
113 | |
---|
114 | #endif |
---|