source: trunk/src/AddTorrentDialog.hpp @ 437

Revision 437, 6.5 KB checked in by Eoin, 12 years ago (diff)

Editing torrent folders added.

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 HAL_ADJUST_DLG_HOLDER           ID_ADD_TORRENT_BEGIN + 1
11
12#ifndef RC_INVOKED
13
14#include <boost/function.hpp>
15#include "HaliteListViewDlg.hpp"
16#include "halTorrent.hpp"
17
18class AddTorrentDialog :
19        public CDialogImpl<AddTorrentDialog>,
20        public CAutoSizeWindow<AddTorrentDialog, true>,
21    public CWinDataExchangeEx<AddTorrentDialog>,
22        private hal::IniBase<AddTorrentDialog>
23{
24protected:
25        typedef AddTorrentDialog thisClass;
26        typedef CDialogImpl<thisClass> baseClass;
27        typedef CAutoSizeWindow<thisClass, true> autosizeClass;
28        typedef hal::IniBase<thisClass> iniClass;
29
30public:
31        AddTorrentDialog(wstring& d, wstring& m, bool& u, bool& p, bool& c) :     
32                iniClass("AddTorrentDialog", "settings"),
33                rect_(0,0,0,0),
34                adjustDlg_(d, m, u),
35                startPaused_(p),
36                compactStorage_(c)
37        { Load(); }
38
39        ~AddTorrentDialog() 
40        { Save(); }     
41
42        enum { IDD = IDD_ADD_TORRENT };
43
44    BEGIN_MSG_MAP_EX(thisClass)
45        MSG_WM_INITDIALOG(OnInitDialog)
46
47                COMMAND_ID_HANDLER_EX(IDCANCEL, OnCancel)
48                COMMAND_ID_HANDLER_EX(IDOK, OnOk)
49               
50        CHAIN_MSG_MAP(autosizeClass)
51    END_MSG_MAP()
52       
53    BEGIN_DDX_MAP(thisClass)
54        DDX_CHECK(IDC_CHECK_COMPACT, compactStorage_)
55        DDX_CHECK(IDC_CHECK_PAUSED, startPaused_)
56    END_DDX_MAP()       
57
58#define ADD_BUTTONS_LAYOUT \
59        WMB_HEAD(WMB_COLNOMAX(_exp), WMB_COL(_auto), WMB_COL(_auto)), \
60                WMB_ROW(_auto,  0, IDOK, IDCANCEL), \
61        WMB_END()
62
63        BEGIN_WINDOW_MAP(thisClass, 6, 6, 3, 3)
64                WMB_HEAD(WMB_COLNOMAX(_exp)),
65                        WMB_ROW(_exp,   HAL_ADJUST_DLG), 
66                        WMB_ROW(_gap,   _d),
67                        WMB_ROW(_auto,  IDC_CHECK_COMPACT), 
68                        WMB_ROW(_auto,  IDC_CHECK_PAUSED), 
69                        WMB_ROW(_auto,  IDC_ADDT_NOTE_TEXT), 
70                        WMB_ROW(_gap,   _d),
71                        WMB_ROW(_auto,  ADD_BUTTONS_LAYOUT), 
72                WMB_END()
73        END_WINDOW_MAP()       
74
75        LRESULT OnInitDialog(HWND hwndFocus, LPARAM lParam)
76        {
77                if (rect_.left == rect_.right)
78                {
79                        CenterWindow();
80                        GetWindowRect(rect_);
81                }
82                else 
83                {
84                        MoveWindow(rect_.left, rect_.top, rect_.right-rect_.left, rect_.bottom-rect_.top, false);               
85                }
86
87                adjustDlg_.Create(*this);
88                adjustDlg_.ShowWindow(SW_SHOW);
89                adjustDlg_.SetDlgCtrlID(HAL_ADJUST_DLG);
90
91                CtrlsInitialize();
92                CtrlsArrange();
93               
94                BOOL retval =  DoAllDataxchange(false);
95                return retval;
96        }
97
98        BOOL PreTranslateMessage(MSG* pMsg)
99        {
100                return this->IsDialogMessage(pMsg);
101        }
102       
103        void OnCancel(UINT, int, HWND hWnd)
104        {
105                GetWindowRect(rect_);
106                EndDialog(IDCANCEL);
107        }
108       
109        void OnOk(UINT, int, HWND hWnd)
110        {
111                DoAllDataxchange(true);
112
113                GetWindowRect(rect_);
114                EndDialog(IDOK);
115        }
116
117    friend class boost::serialization::access;
118    template<class Archive>
119    void serialize(Archive& ar, const unsigned int version)
120        {
121                ar & boost::serialization::make_nvp("rect", rect_);
122        }
123
124private:
125        BOOL DoAllDataxchange(bool direction)
126        {
127                adjustDlg_.DoDataExchange(direction);
128                return DoDataExchange(direction);
129        }
130
131        HaliteSaveAndMoveToDlg adjustDlg_;
132
133        WTL::CRect rect_;
134        bool& startPaused_;
135        bool& compactStorage_;
136};
137
138#endif // RC_INVOKED
Note: See TracBrowser for help on using the repository browser.