source: trunk/src/NewTorrentTrackerLV.hpp @ 419

Revision 419, 2.7 KB checked in by Eoin, 12 years ago (diff)

Factored out base code for adding and editing items in ListViews?. Made the NewTorrent? Tracker ListView? editable.

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