source: trunk/src/NewTorrentTrackerLV.hpp @ 491

Revision 491, 2.8 KB checked in by Eoin, 12 years ago (diff)

Merging changes from branch into trunk.

Line 
1
2//         Copyright Eóin 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#define ID_NTTLVM_BEGIN                         18000
8#define ID_NTTLVM_NEW                           ID_NTTLVM_BEGIN + 1
9#define ID_NTTLVM_EDIT                          ID_NTTLVM_BEGIN + 2
10#define ID_NTTLVM_DELETE                        ID_NTTLVM_BEGIN + 3
11#define HAL_NEWT_EDIT_TRACKER           ID_NTTLVM_BEGIN + 4
12#define HAL_NEWT_ADD_NEW_TRACKER        ID_NTTLVM_BEGIN + 5
13
14#ifndef RC_INVOKED
15
16#include <boost/signals.hpp>
17#include <boost/function.hpp>
18
19#include "stdAfx.hpp"
20#include "global/string_conv.hpp"
21#include "halIni.hpp"
22#include "HaliteSortListViewCtrl.hpp"
23
24#include "GenericAddListView.hpp"
25
26class NewTorrent_TrackerListViewCtrl :
27        public CHaliteSortListViewCtrl<NewTorrent_TrackerListViewCtrl>,
28        public hal::IniBase<NewTorrent_TrackerListViewCtrl>,
29        public WTLx::GenericAddListView<NewTorrent_TrackerListViewCtrl, true, ID_NTTLVM_NEW, ID_NTTLVM_EDIT, ID_NTTLVM_DELETE>,
30        private boost::noncopyable
31{
32        typedef NewTorrent_TrackerListViewCtrl thisClass;
33        typedef hal::IniBase<thisClass> iniClass;
34        typedef CHaliteSortListViewCtrl<thisClass> listClass;
35        typedef WTLx::GenericAddListView<thisClass, true, ID_NTTLVM_NEW, ID_NTTLVM_EDIT, ID_NTTLVM_DELETE> genericAddlistClass;
36
37        friend class listClass;
38       
39public:
40        enum { 
41                LISTVIEW_ID_MENU = HAL_GENERIC_ADD_LV_MENU,
42                LISTVIEW_ID_COLUMNNAMES = HAL_TRACKER_LISTVIEW_COLUMNS,
43                LISTVIEW_ID_COLUMNWIDTHS = HAL_TRACKER_LISTVIEW_DEFAULTS
44        };
45       
46        NewTorrent_TrackerListViewCtrl() :
47                iniClass("listviews/NewTorrent", "NewTorrentListView")
48        {
49                std::vector<wstring> names;     
50                wstring column_names = hal::app().res_wstr(HAL_TRACKER_LISTVIEW_COLUMNS);
51
52                // "Tracker;Tier"
53                boost::split(names, column_names, boost::is_any_of(L";"));
54               
55                array<int, 2> widths = {287,50};
56                array<int, 2> order = {0,1};
57                array<bool, 2> visible = {true,true};
58               
59                SetDefaults(names, widths, order, visible, true);
60                load_from_ini();
61        }
62
63        BEGIN_MSG_MAP_EX(TrackerListViewCtrl)
64                MSG_WM_DESTROY(OnDestroy)
65
66                CHAIN_MSG_MAP(genericAddlistClass)
67                CHAIN_MSG_MAP(listClass)
68                DEFAULT_REFLECTION_HANDLER()
69        END_MSG_MAP()
70
71        void uiUpdate(const hal::TorrentDetail_ptr pT);
72        void saveSettings();
73
74    friend class boost::serialization::access;
75    template<class Archive>
76    void serialize(Archive& ar, const unsigned int version)
77    {
78                ar & boost::serialization::make_nvp("listview", boost::serialization::base_object<listClass>(*this));
79    }
80
81        void newItem();
82        void editItem(int);
83        void deleteItem(int);
84
85private:
86        void OnAttach();
87        void OnDestroy();
88};
89
90typedef NewTorrent_TrackerListViewCtrl::SelectionManager NewTorrent_TrackerListViewManager;
91
92#endif // RC_INVOKED
Note: See TracBrowser for help on using the repository browser.