source: src/HaliteDialog.hpp @ 237

Revision 237, 4.8 KB checked in by Eoin, 13 years ago (diff)
Line 
1
2#pragma once
3
4#include "stdAfx.hpp"
5#include "DdxEx.hpp"
6#include "HaliteListViewCtrl.hpp"
7#include "HaliteDialogBase.hpp"
8#include "HaliteIni.hpp"
9
10#include "halTorrent.hpp"
11#include "halEvent.hpp"
12
13class ui_signal;
14
15class HaliteListViewCtrl;
16typedef CHaliteListViewCtrl<HaliteListViewCtrl>::selection_manage_class ListViewManager;
17
18class HaliteDialog :
19        public CDialogImpl<HaliteDialog>,
20        public CDialogResize<HaliteDialog>,
21        public CWinDataExchangeEx<HaliteDialog>,
22        public CHaliteDialogBase<HaliteDialog>,
23//      public CHaliteIni<HaliteDialog>,
24        private boost::noncopyable
25{       
26
27        typedef HaliteDialog thisClass;
28        typedef CDialogImpl<HaliteDialog> baseClass;
29        typedef CDialogResize<HaliteDialog> resizeClass;
30//      typedef CHaliteIni<HaliteDialog> iniClass;
31        typedef CHaliteDialogBase<HaliteDialog> dialogBaseClass;
32               
33        class DialogListView :
34                public CHaliteListViewCtrl<DialogListView>,
35                public CHaliteIni<DialogListView>,
36                private boost::noncopyable
37        {
38        protected:
39                typedef HaliteDialog::DialogListView thisClass;
40                typedef CHaliteIni<thisClass> iniClass;
41                typedef CHaliteListViewCtrl<thisClass> listClass;
42       
43                friend class listClass;
44       
45        public: 
46                enum { 
47                        LISTVIEW_ID_MENU = 0,
48                        LISTVIEW_ID_COLUMNNAMES = HAL_DIALOGPEER_LISTVIEW_COS,
49                        LISTVIEW_ID_COLUMNWIDTHS = HAL_DIALOGPEER_LISTVIEW_COS_DEFAULTS
50                };
51       
52                BEGIN_MSG_MAP_EX(DialogListView)
53                        MSG_WM_DESTROY(OnDestroy)
54       
55                        CHAIN_MSG_MAP(CHaliteListViewCtrl<DialogListView>)
56                        DEFAULT_REFLECTION_HANDLER()
57                END_MSG_MAP()
58       
59                DialogListView() :
60                        iniClass("listviews/dialog", "DialogPeersList")
61                {                                       
62                        load();
63                }
64               
65                void saveSettings()
66                {
67                        GetListViewDetails();
68                        save();
69                }
70               
71                void OnAttach()
72                {
73                        SetExtendedListViewStyle(WS_EX_CLIENTEDGE|LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP);                 
74                        SetListViewDetails();
75                }
76               
77                void OnDestroy()
78                {
79                        saveSettings();
80                }
81                               
82                friend class boost::serialization::access;
83                template<class Archive>
84                void serialize(Archive& ar, const unsigned int version)
85                {
86                        ar & boost::serialization::make_nvp("listview", 
87                                boost::serialization::base_object<listClass>(*this));
88                }
89        };
90       
91public:
92        enum { IDD = IDD_HALITEDLG };
93
94        HaliteDialog(HaliteWindow& HalWindow, ui_signal& ui_sig, ListViewManager& single_sel);
95        BOOL PreTranslateMessage(MSG* pMsg)     { return this->IsDialogMessage(pMsg); }
96
97        void saveStatus();
98
99        BEGIN_MSG_MAP_EX(thisClass)
100                MSG_WM_INITDIALOG(onInitDialog)
101                MSG_WM_CLOSE(onClose)
102                COMMAND_RANGE_CODE_HANDLER_EX(IDC_EDITTLU, IDC_EDITNCU, EN_KILLFOCUS, OnEditKillFocus)
103
104                if(uMsg == WM_FORWARDMSG)
105                        if(PreTranslateMessage((LPMSG)lParam)) return TRUE;
106
107                COMMAND_ID_HANDLER_EX(BTNPAUSE, onPause)
108                COMMAND_ID_HANDLER_EX(BTNREANNOUNCE, onReannounce)
109                COMMAND_ID_HANDLER_EX(BTNREMOVE, onRemove)
110
111        //      MSG_WM_CTLCOLORSTATIC(OnCltColor)
112
113                CHAIN_MSG_MAP(resizeClass)
114                REFLECT_NOTIFICATIONS()
115        END_MSG_MAP()
116
117        BEGIN_DDX_MAP(thisClass)
118        DDX_EX_INT_POSITIVE_LIMIT(IDC_EDITNCD, NoConnDown, 2, true)
119        DDX_EX_INT_POSITIVE_LIMIT(IDC_EDITNCU, NoConnUp, 2, true)
120        DDX_EX_FLOAT_POSITIVE(IDC_EDITTLD, TranLimitDown)
121        DDX_EX_FLOAT_POSITIVE(IDC_EDITTLU, TranLimitUp)
122    END_DDX_MAP()
123
124        BEGIN_DLGRESIZE_MAP(thisClass)
125                DLGRESIZE_CONTROL(BTNPAUSE, (DLSZ_MOVE_X))
126                DLGRESIZE_CONTROL(BTNREANNOUNCE, (DLSZ_MOVE_X))
127                DLGRESIZE_CONTROL(BTNREMOVE, (DLSZ_MOVE_X))
128
129                DLGRESIZE_CONTROL(IDC_TL, (DLSZ_MOVE_X))
130                DLGRESIZE_CONTROL(IDC_NC, (DLSZ_MOVE_X))
131                DLGRESIZE_CONTROL(IDC_TLD, (DLSZ_MOVE_X))
132                DLGRESIZE_CONTROL(IDC_TLU, (DLSZ_MOVE_X))
133                DLGRESIZE_CONTROL(IDC_NCU, (DLSZ_MOVE_X))
134                DLGRESIZE_CONTROL(IDC_NCD, (DLSZ_MOVE_X))
135
136                DLGRESIZE_CONTROL(IDC_EDITNCD, (DLSZ_MOVE_X))
137                DLGRESIZE_CONTROL(IDC_EDITTLD, (DLSZ_MOVE_X))
138                DLGRESIZE_CONTROL(IDC_EDITTLU, (DLSZ_MOVE_X))
139                DLGRESIZE_CONTROL(IDC_EDITNCU, (DLSZ_MOVE_X))
140
141                DLGRESIZE_CONTROL(TORRENTPROG, (DLSZ_SIZE_X))
142
143                DLGRESIZE_CONTROL(IDC_NAME, (DLSZ_SIZE_X))
144                DLGRESIZE_CONTROL(IDC_TRACKER, (DLSZ_SIZE_X))
145                DLGRESIZE_CONTROL(IDC_STATUS, (DLSZ_SIZE_X))
146                DLGRESIZE_CONTROL(IDC_COMPLETE, (DLSZ_SIZE_X))
147
148                DLGRESIZE_CONTROL(LISTPEERS, (DLSZ_SIZE_X | DLSZ_SIZE_Y))
149                DLGRESIZE_CONTROL(IDC_DETAILS_GROUP, (DLSZ_SIZE_X | DLSZ_SIZE_Y))
150        END_DLGRESIZE_MAP()
151       
152        void selectionChanged(const string& torrent_name);
153        void updateDialog();
154        void uiUpdate(const hal::TorrentDetails& allTorrents); 
155       
156protected:
157        LRESULT onInitDialog(HWND, LPARAM);
158        void onClose();
159
160        void onPause(UINT, int, HWND);
161        void onReannounce(UINT, int, HWND);
162        void onRemove(UINT, int, HWND);
163
164        LRESULT OnEditKillFocus(UINT uCode, int nCtrlID, HWND hwndCtrl);
165        LRESULT OnCltColor(HDC hDC, HWND hWnd);
166
167private:
168        CButton m_btn_start;
169        DialogListView m_list;
170        CContainedWindow m_wndNCD;
171        CProgressBarCtrl m_prog;
172
173        int NoConnDown, NoConnUp;
174        float TranLimitDown, TranLimitUp;
175};
Note: See TracBrowser for help on using the repository browser.