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

Revision 389, 3.0 KB checked in by Eoin, 12 years ago (diff)

Working on New Torrent Dialog.

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           11000
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
23class TrackerListViewCtrl :
24        public CHaliteSortListViewCtrl<TrackerListViewCtrl>,
25        public hal::IniBase<TrackerListViewCtrl>,
26        private boost::noncopyable
27{
28
29        typedef hal::IniBase<TrackerListViewCtrl> iniClass;
30        typedef CHaliteSortListViewCtrl<TrackerListViewCtrl> listClass;
31
32        friend class listClass;
33       
34public:
35        enum { 
36                LISTVIEW_ID_MENU = IDR_TRACKERLV_MENU,
37                LISTVIEW_ID_COLUMNNAMES = HAL_TRACKER_LISTVIEW_COLUMNS,
38                LISTVIEW_ID_COLUMNWIDTHS = HAL_TRACKER_LISTVIEW_DEFAULTS
39        };
40       
41        TrackerListViewCtrl(boost::filesystem::path location, std::string name) :
42                listClass(true,false,false),
43                iniClass(location, name)
44        {
45                std::vector<wstring> names;     
46                wstring column_names = hal::app().res_wstr(HAL_TRACKER_LISTVIEW_COLUMNS);
47
48                // "Tracker;Tier"
49                boost::split(names, column_names, boost::is_any_of(L";"));
50               
51                array<int, 2> widths = {287,50};
52                array<int, 2> order = {0,1};
53                array<bool, 2> visible = {true,true};
54               
55                SetDefaults(names, widths, order, visible, true);
56                Load();
57        }
58
59        BEGIN_MSG_MAP_EX(TrackerListViewCtrl)
60                MSG_WM_DESTROY(OnDestroy)
61
62                COMMAND_ID_HANDLER(ID_TLVM_NEW, OnNew)
63                COMMAND_ID_HANDLER(ID_TLVM_EDIT, OnEdit)
64                COMMAND_ID_HANDLER(ID_TLVM_DELETE, OnDelete)
65                COMMAND_ID_HANDLER(ID_TLVM_PRIMARY, OnPrimary)
66
67                REFLECTED_NOTIFY_CODE_HANDLER(NM_DBLCLK, OnDoubleClick)
68
69                CHAIN_MSG_MAP(listClass)
70                DEFAULT_REFLECTION_HANDLER()
71        END_MSG_MAP()
72
73        void uiUpdate(const hal::TorrentDetail_ptr pT);
74        void enterNewTracker();
75        void saveSettings();
76
77    friend class boost::serialization::access;
78    template<class Archive>
79    void serialize(Archive& ar, const unsigned int version)
80    {
81                ar & boost::serialization::make_nvp("listview", boost::serialization::base_object<listClass>(*this));
82    }
83
84        LRESULT OnDoubleClick(int i, LPNMHDR pnmh, BOOL&);
85        LRESULT OnNew(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
86        LRESULT OnEdit(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
87        LRESULT OnDelete(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
88        LRESULT OnPrimary(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
89
90        void attachEditedConnection(boost::function<void ()> fn) { listEdited_.connect(fn); }
91
92private:
93        void OnAttach();
94        void OnDestroy();
95
96        boost::signal<void ()> listEdited_;
97};
98
99typedef TrackerListViewCtrl::SelectionManager TrackerListViewManager;
100
101#endif // RC_INVOKED
Note: See TracBrowser for help on using the repository browser.