source: trunk/src/advtabs/TrackerListView.hpp @ 419

Revision 419, 2.9 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_TLVM_BEGIN                   17000
8#define ID_TLVM_NEW                     ID_TLVM_BEGIN + 1
9#define ID_TLVM_EDIT                    ID_TLVM_BEGIN + 2
10#define ID_TLVM_DELETE                  ID_TLVM_BEGIN + 3
11#define ID_TLVM_PRIMARY                 ID_TLVM_BEGIN + 4
12
13#ifndef RC_INVOKED
14
15#include <boost/signals.hpp>
16#include <boost/function.hpp>
17
18#include "../stdAfx.hpp"
19#include "../global/string_conv.hpp"
20#include "../halIni.hpp"
21#include "../HaliteSortListViewCtrl.hpp"
22
23#include "GenericAddListView.hpp"
24
25class TrackerListViewCtrl :
26        public CHaliteSortListViewCtrl<TrackerListViewCtrl>,
27        public hal::IniBase<TrackerListViewCtrl>,
28        public WTLx::GenericAddListView<TrackerListViewCtrl, ID_TLVM_NEW, ID_TLVM_EDIT, ID_TLVM_DELETE>,
29        private boost::noncopyable
30{
31        typedef hal::IniBase<TrackerListViewCtrl> iniClass;
32        typedef CHaliteSortListViewCtrl<TrackerListViewCtrl> listClass;
33        typedef WTLx::GenericAddListView<TrackerListViewCtrl, ID_TLVM_NEW, ID_TLVM_EDIT, ID_TLVM_DELETE> genericAddlistClass;
34
35        friend class listClass;
36       
37public:
38        enum { 
39                LISTVIEW_ID_MENU = IDR_TRACKERLV_MENU,
40                LISTVIEW_ID_COLUMNNAMES = HAL_TRACKER_LISTVIEW_COLUMNS,
41                LISTVIEW_ID_COLUMNWIDTHS = HAL_TRACKER_LISTVIEW_DEFAULTS
42        };
43       
44        TrackerListViewCtrl(boost::filesystem::path location, std::string name) :
45                listClass(true,false,false),
46                iniClass(location, name)
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                COMMAND_ID_HANDLER(ID_TLVM_PRIMARY, OnPrimary)
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 enterNewTracker();
73        void saveSettings();
74
75    friend class boost::serialization::access;
76    template<class Archive>
77    void serialize(Archive& ar, const unsigned int version)
78    {
79                ar & boost::serialization::make_nvp("listview", boost::serialization::base_object<listClass>(*this));
80    }
81
82        LRESULT OnPrimary(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
83
84        void newItem();
85        void editItem(int);
86        void deleteItem(int);
87
88        void attachEditedConnection(boost::function<void ()> fn) { listEdited_.connect(fn); }
89
90private:
91        void OnAttach();
92        void OnDestroy();
93
94        boost::signal<void ()> listEdited_;
95};
96
97typedef TrackerListViewCtrl::SelectionManager TrackerListViewManager;
98
99#endif // RC_INVOKED
Note: See TracBrowser for help on using the repository browser.