source: trunk/src/AddTorrentDialog.hpp @ 495

Revision 495, 6.6 KB checked in by Eoin, 12 years ago (diff)

Changes seem ok.

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