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

Revision 495, 2.9 KB checked in by Eoin, 12 years ago (diff)

Changes seem ok.

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, false, 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, false, ID_TLVM_NEW, ID_TLVM_EDIT, ID_TLVM_DELETE> genericAddlistClass;
34
35        friend class listClass;
36       
37public:
38        enum { 
39                LISTVIEW_ID_MENU = HAL_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                iniClass(location, name)
46        {
47                std::vector<wstring> names;     
48                wstring column_names = hal::app().res_wstr(HAL_TRACKER_LISTVIEW_COLUMNS);
49
50                // "Tracker;Tier"
51                boost::split(names, column_names, boost::is_any_of(L";"));
52               
53                array<int, 2> widths = {287,50};
54                array<int, 2> order = {0,1};
55                array<bool, 2> visible = {true,true};
56               
57                SetDefaults(names, widths, order, visible, true);
58                load_from_ini();
59        }
60
61        BEGIN_MSG_MAP_EX(TrackerListViewCtrl)
62                MSG_WM_DESTROY(OnDestroy)
63                COMMAND_ID_HANDLER(ID_TLVM_PRIMARY, OnPrimary)
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 enterNewTracker();
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        LRESULT OnPrimary(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
82
83        void newItem();
84        void editItem(int);
85        void deleteItem(int);
86
87        void attachEditedConnection(boost::function<void ()> fn) { listEdited_.connect(fn); }
88
89private:
90        void OnAttach();
91        void OnDestroy();
92
93        boost::signal<void ()> listEdited_;
94};
95
96typedef TrackerListViewCtrl::SelectionManager TrackerListViewManager;
97
98#endif // RC_INVOKED
Note: See TracBrowser for help on using the repository browser.