source: trunk/src/NewTorrentPeersAD.hpp @ 432

Revision 432, 3.7 KB checked in by Eoin, 12 years ago (diff)

Torrent creation is working!

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 CDialogImpl<NewTorrent_PeersAddDialog>,
28        public WTLx::GenericAddDialog<NewTorrent_PeersAddDialog, IDD_PEEREDIT>,
29        public 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 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                SetMsgHandled(false);
87                return 0;
88        }
89       
90        void OnTypeChanged(UINT uNotifyCode, int nID, CWindow wndCtl)
91        {       
92                hal::win_c_str<std::wstring> str_buf(MAX_PATH);         
93                wndCtl.GetWindowText(str_buf, str_buf.size());
94               
95                if (str_buf.str() == hal::app().res_wstr(HAL_NEWT_ADD_PEERS_WEB))
96                {
97                        ::EnableWindow(GetDlgItem(HAL_NEWT_ADD_DHT_PORT_TEXT), false);
98                        ::EnableWindow(GetDlgItem(HAL_NEWT_ADD_DHT_PORT), false);
99                }
100                else
101                {
102                        ::EnableWindow(GetDlgItem(HAL_NEWT_ADD_DHT_PORT_TEXT), true);
103                        ::EnableWindow(GetDlgItem(HAL_NEWT_ADD_DHT_PORT), true);
104                }               
105        }               
106
107private:
108        wstring title_;
109        hal::web_seed_or_dht_node_detail& peer_;
110};
111
112#endif
Note: See TracBrowser for help on using the repository browser.