source: trunk/src/AddTorrentDialog.hpp @ 403

Revision 403, 9.2 KB checked in by Eoin, 12 years ago (diff)

Added command to recheck torrents.

Line 
1
2//         Copyright Eoin 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 ID_ADD_TORRENT_BEGIN            11000
10#define IDC_ADDT_MOVETO_FOLDER          ID_ADD_TORRENT_BEGIN + 1
11#define IDC_ADDT_MOVETO_BROWSE          ID_ADD_TORRENT_BEGIN + 2
12#define IDC_ADDT_MOVETO_CHECK           ID_ADD_TORRENT_BEGIN + 3
13#define IDC_ADDT_DEFFLD_TEXT            ID_ADD_TORRENT_BEGIN + 6
14#define IDC_ADDT_NOTE_TEXT                      ID_ADD_TORRENT_BEGIN + 8
15
16#ifndef RC_INVOKED
17
18#include <boost/function.hpp>
19#include "halTorrent.hpp"
20
21class AddTorrentDialog :
22        public CDialogImpl<AddTorrentDialog>,
23        public CAutoSizeWindow<AddTorrentDialog, true>,
24    public CWinDataExchangeEx<AddTorrentDialog>
25{
26protected:
27        typedef AddTorrentDialog thisClass;
28        typedef CDialogImpl<thisClass> baseClass;
29        typedef CAutoSizeWindow<thisClass, true> autosizeClass;
30
31public:
32        AddTorrentDialog(wstring& d, wstring& m, bool& u, bool& p, bool& c) :
33                saveDirectory_(d),
34                moveToDirectory_(m),
35                useMove_(u),
36                startPaused_(p),
37                compactStorage_(c)
38        {}
39       
40        enum { IDD = IDD_ADD_TORRENT };
41
42    BEGIN_MSG_MAP_EX(thisClass)
43        MSG_WM_INITDIALOG(OnInitDialog)
44
45                COMMAND_ID_HANDLER_EX(IDCANCEL, OnCancel)
46                COMMAND_ID_HANDLER_EX(IDOK, OnOk)
47                COMMAND_ID_HANDLER_EX(IDC_ADDT_MOVETO_CHECK, OnMoveTo)
48                COMMAND_ID_HANDLER_EX(IDC_BC_SAVEBROWSE, OnBrowse)
49                COMMAND_ID_HANDLER_EX(IDC_ADDT_MOVETO_BROWSE, OnMoveBrowse)
50               
51        CHAIN_MSG_MAP(autosizeClass)
52    END_MSG_MAP()
53       
54    BEGIN_DDX_MAP(thisClass)
55        DDX_CHECK(IDC_CHECK_COMPACT, compactStorage_)
56        DDX_CHECK(IDC_CHECK_PAUSED, startPaused_)
57        DDX_CHECK(IDC_ADDT_MOVETO_CHECK, useMove_)
58                DDX_EX_STDWSTRING(IDC_BC_SAVEFOLDER, saveDirectory_)
59                DDX_EX_STDWSTRING(IDC_ADDT_MOVETO_FOLDER, moveToDirectory_)
60    END_DDX_MAP()       
61
62#define ADD_FOLDERS_LAYOUT \
63        WMB_HEAD(WMB_COLNOMAX(_exp), WMB_COL(_auto)), \
64                WMB_ROW(_auto,  IDC_ADDT_DEFFLD_TEXT, _r), \
65                WMB_ROW(_auto,  IDC_BC_SAVEFOLDER, IDC_BC_SAVEBROWSE), \
66                WMB_ROW(_auto,  IDC_ADDT_MOVETO_CHECK, _r), \
67                WMB_ROW(_auto,  IDC_ADDT_MOVETO_FOLDER, IDC_ADDT_MOVETO_BROWSE), \
68        WMB_END()
69
70#define ADD_BUTTONS_LAYOUT \
71        WMB_HEAD(WMB_COLNOMAX(_exp), WMB_COL(_auto), WMB_COL(_auto)), \
72                WMB_ROW(_auto,  0, IDOK, IDCANCEL), \
73        WMB_END()
74
75        BEGIN_WINDOW_MAP(thisClass, 6, 6, 3, 3)
76                WMB_HEAD(WMB_COLNOMAX(_exp)),
77                        WMB_ROW(_auto,  ADD_FOLDERS_LAYOUT), 
78                        WMB_ROW(_gap,   _d),
79                        WMB_ROW(_auto,  IDC_CHECK_COMPACT), 
80                        WMB_ROW(_auto,  IDC_CHECK_PAUSED), 
81                        WMB_ROW(_auto,  IDC_ADDT_NOTE_TEXT), 
82                        WMB_ROW(_gap,   _d),
83                        WMB_ROW(_auto,  ADD_BUTTONS_LAYOUT), 
84                WMB_END()
85        END_WINDOW_MAP()       
86
87        LRESULT OnInitDialog(HWND hwndFocus, LPARAM lParam)
88        {
89                CenterWindow();         
90
91                CtrlsInitialize();
92                CtrlsArrange();
93               
94                OnMoveTo(0, 0, GetDlgItem(IDC_ADDT_MOVETO_CHECK));
95               
96                BOOL retval =  DoDataExchange(false);
97                return retval;
98        }
99
100        BOOL PreTranslateMessage(MSG* pMsg)
101        {
102                return this->IsDialogMessage(pMsg);
103        }
104       
105        void OnCancel(UINT, int, HWND hWnd)
106        {
107                EndDialog(IDCANCEL);
108        }
109       
110        void OnOk(UINT, int, HWND hWnd)
111        {
112                DoDataExchange(true);
113                EndDialog(IDOK);
114        }
115       
116        void OnMoveTo(UINT, int, HWND hWnd)
117        {
118                LRESULT result = ::SendMessage(hWnd, BM_GETCHECK, 0, 0);
119
120                if (result == BST_CHECKED)
121                {
122                        ::EnableWindow(GetDlgItem(IDC_ADDT_MOVETO_FOLDER), true);
123                        ::EnableWindow(GetDlgItem(IDC_ADDT_MOVETO_BROWSE), true);
124                }
125                else
126                {
127                        ::EnableWindow(GetDlgItem(IDC_ADDT_MOVETO_FOLDER), false);
128                        ::EnableWindow(GetDlgItem(IDC_ADDT_MOVETO_BROWSE), false);
129                }
130        }
131       
132        void OnBrowse(UINT, int, HWND hWnd)
133        {
134                std::wstring save_prompt = hal::app().res_wstr(IDS_SAVEPROMPT);         
135                CFolderDialog fldDlg(NULL, save_prompt.c_str(),
136                        BIF_RETURNONLYFSDIRS|BIF_NEWDIALOGSTYLE);
137               
138                wstring defaultSaveFolder = saveDirectory_;
139                fldDlg.SetInitialFolder(defaultSaveFolder.c_str());
140         
141                if (IDOK == fldDlg.DoModal())
142                {
143                        saveDirectory_ = wstring(fldDlg.m_szFolderPath);
144                        DoDataExchange(false);
145                }
146        }
147       
148        void OnMoveBrowse(UINT, int, HWND hWnd)
149        {
150                std::wstring save_prompt = hal::app().res_wstr(IDS_SAVEPROMPT);         
151                CFolderDialog fldDlg(NULL, save_prompt.c_str(),
152                        BIF_RETURNONLYFSDIRS|BIF_NEWDIALOGSTYLE);
153               
154                wstring defaultMoveFolder = moveToDirectory_;
155                fldDlg.SetInitialFolder(defaultMoveFolder.c_str());
156         
157                if (IDOK == fldDlg.DoModal())
158                {
159                        moveToDirectory_ = wstring(fldDlg.m_szFolderPath);
160                        DoDataExchange(false);
161                }
162        }
163       
164private:
165        wstring& saveDirectory_;
166        wstring& moveToDirectory_;
167        bool& useMove_;
168        bool& startPaused_;
169        bool& compactStorage_;
170};
171
172#endif // RC_INVOKED
Note: See TracBrowser for help on using the repository browser.