source: trunk/src/NewTorrentTracker.hpp @ 762

Revision 762, 4.0 KB checked in by Eoin, 10 years ago (diff)

Created the time picker dialog. Have only implemented pausing and exit action so far.

Line 
1
2//         Copyright Eóin O'Callaghan 2006 - 2009.
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_NTTLVM_BEGIN                         18000
10#define ID_NTTLVM_NEW                           ID_NTTLVM_BEGIN + 1
11#define ID_NTTLVM_EDIT                          ID_NTTLVM_BEGIN + 2
12#define ID_NTTLVM_DELETE                        ID_NTTLVM_BEGIN + 3
13#define HAL_NEWT_EDIT_TRACKER           ID_NTTLVM_BEGIN + 4
14#define HAL_NEWT_ADD_NEW_TRACKER                ID_NTTLVM_BEGIN + 5
15
16#define HAL_TRACKER_ADD_BEGIN           15500
17#define IDC_TRACKER_EDIT_URL                    HAL_TRACKER_ADD_BEGIN + 1
18#define IDC_TRACKER_EDIT_TIER           HAL_TRACKER_ADD_BEGIN + 2
19#define IDC_TRACKER_TEXT_URL                    HAL_TRACKER_ADD_BEGIN + 3
20#define IDC_TRACKER_TEXT_TIER           HAL_TRACKER_ADD_BEGIN + 4
21
22#ifndef RC_INVOKED
23
24#include <boost/signals.hpp>
25#include <boost/function.hpp>
26
27#include "stdAfx.hpp"
28#include "global/string_conv.hpp"
29#include "halIni.hpp"
30#include "HaliteSortListViewCtrl.hpp"
31
32#include "GenericAddListView.hpp"
33#include "GenericAddDialog.hpp"
34
35class NewTorrent_TrackerAddDialog :
36        public ATL::CDialogImpl<NewTorrent_TrackerAddDialog>,
37        public WTLx::GenericAddDialog<NewTorrent_TrackerAddDialog, HAL_TRACKEDIT>,
38        public WTL::CDialogResize<NewTorrent_TrackerAddDialog>,
39        public WTLx::WinDataExchangeEx<NewTorrent_TrackerAddDialog>
40{
41public:
42        typedef NewTorrent_TrackerAddDialog thisClass;
43        typedef WTLx::GenericAddDialog<thisClass, HAL_TRACKEDIT> genericBaseClass;
44        typedef WTL::CDialogResize<thisClass> resizeClass;
45       
46public:
47        NewTorrent_TrackerAddDialog(wstring title, hal::tracker_detail& tracker) :
48                genericBaseClass(title, "genericAddDlgs/NewTorrentAddTracker", "NewTorrentAddTracker"),
49                tracker_(tracker)
50        {}
51
52        BEGIN_MSG_MAP_EX(TrackerAddDialog)
53                CHAIN_MSG_MAP(resizeClass)
54                CHAIN_MSG_MAP(genericBaseClass)
55        END_MSG_MAP()
56
57        BEGIN_DDX_MAP(TrackerAddDialog)
58                DDX_EX_STDWSTRING(IDC_TRACKER_EDIT_URL, tracker_.url);
59                DDX_INT(IDC_TRACKER_EDIT_TIER, tracker_.tier)
60        END_DDX_MAP()   
61
62        BEGIN_DLGRESIZE_MAP(thisClass)
63                DLGRESIZE_CONTROL(IDC_TRACKER_EDIT_URL, DLSZ_SIZE_X)
64                DLGRESIZE_CONTROL(IDC_TRACKER_EDIT_TIER, DLSZ_MOVE_X)
65                DLGRESIZE_CONTROL(IDC_TRACKER_TEXT_URL, DLSZ_SIZE_X)
66                DLGRESIZE_CONTROL(IDC_TRACKER_TEXT_TIER, DLSZ_MOVE_X)
67                DLGRESIZE_CONTROL(IDOK, DLSZ_MOVE_X|DLSZ_MOVE_Y)
68                DLGRESIZE_CONTROL(IDCANCEL, DLSZ_MOVE_X|DLSZ_MOVE_Y)
69        END_DLGRESIZE_MAP()
70
71private:
72        wstring title_;
73        hal::tracker_detail& tracker_;
74};
75
76class NewTorrent_TrackerListViewCtrl :
77        public CHaliteSortListViewCtrl<NewTorrent_TrackerListViewCtrl>,
78        public hal::IniBase<NewTorrent_TrackerListViewCtrl>,
79        public WTLx::GenericAddListView<NewTorrent_TrackerListViewCtrl, true>,
80        private boost::noncopyable
81{
82        typedef NewTorrent_TrackerListViewCtrl thisClass;
83        typedef hal::IniBase<thisClass> iniClass;
84        typedef CHaliteSortListViewCtrl<thisClass> listClass;
85        typedef WTLx::GenericAddListView<thisClass, true> genericAddlistClass;
86
87        friend class listClass;
88       
89public:
90        enum { 
91                LISTVIEW_ID_MENU = HAL_GENERIC_ADD_LV_MENU,
92                LISTVIEW_ID_COLUMNNAMES = HAL_TRACKER_LISTVIEW_COLUMNS,
93                LISTVIEW_ID_COLUMNWIDTHS = HAL_TRACKER_LISTVIEW_DEFAULTS
94        };
95       
96        NewTorrent_TrackerListViewCtrl() :
97                iniClass("listviews/NewTorrent", "NewTorrentListView")
98        {}
99
100        BEGIN_MSG_MAP_EX(TrackerListViewCtrl)
101                MSG_WM_DESTROY(OnDestroy)
102
103                CHAIN_MSG_MAP(genericAddlistClass)
104                CHAIN_MSG_MAP(listClass)
105                DEFAULT_REFLECTION_HANDLER()
106        END_MSG_MAP()
107
108        void uiUpdate(const hal::torrent_details_ptr pT);
109        void saveSettings();
110
111        friend class boost::serialization::access;
112        template<class Archive>
113        void serialize(Archive& ar, const unsigned int version)
114        {
115                ar & boost::serialization::make_nvp("listview", boost::serialization::base_object<listClass>(*this));
116        }
117
118        void newItem();
119        void editItem(int);
120        void deleteItem(int);
121
122private:
123        void OnAttach();
124        void OnDestroy();
125};
126
127typedef NewTorrent_TrackerListViewCtrl::SelectionManager NewTorrent_TrackerListViewManager;
128
129#endif
Note: See TracBrowser for help on using the repository browser.