source: trunk/src/NewTorrentPeersAD.hpp @ 493

Revision 493, 3.8 KB checked in by Eoin, 12 years ago (diff)

Freedom from automatic ATL and/or WTL namespaces.

Line 
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
26class NewTorrent_PeersAddDialog :
27        public ATL::CDialogImpl<NewTorrent_PeersAddDialog>,
28        public WTLx::GenericAddDialog<NewTorrent_PeersAddDialog, IDD_PEEREDIT>,
29        public WTL::CDialogResize<NewTorrent_PeersAddDialog>,
30        public CWinDataExchangeEx<NewTorrent_PeersAddDialog>
31{
32public:
33        typedef NewTorrent_PeersAddDialog thisClass;
34        typedef WTLx::GenericAddDialog<thisClass, IDD_PEEREDIT> genericBaseClass;
35        typedef WTL::CDialogResize<thisClass> resizeClass;
36       
37public:
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
109private:
110        wstring title_;
111        hal::web_seed_or_dht_node_detail& peer_;
112};
113
114#endif
Note: See TracBrowser for help on using the repository browser.