source: src/HaliteListView.hpp @ 251

Revision 251, 3.3 KB checked in by Eoin, 13 years ago (diff)
Line 
1
2#pragma once
3
4#include "stdAfx.hpp"
5#include "global/string_conv.hpp"
6
7#include <boost/array.hpp>
8#include <boost/signals.hpp>
9#include <boost/serialization/vector.hpp>
10
11#include "HaliteIni.hpp"
12#include "HaliteListViewCtrl.hpp"
13#include "HaliteSortListViewCtrl.hpp"
14
15class HaliteWindow;
16
17class HaliteListViewCtrl :
18        public CHaliteSortListViewCtrl<HaliteListViewCtrl, const hal::TorrentDetail_ptr>,
19        public CHaliteIni<HaliteListViewCtrl>,
20        private boost::noncopyable
21{
22protected:
23        typedef CHaliteIni<HaliteListViewCtrl> iniClass;
24        typedef CHaliteSortListViewCtrl<HaliteListViewCtrl, const hal::TorrentDetail_ptr> listClass;
25        typedef const hal::TorrentDetail_ptr tD;
26
27        friend class listClass;
28       
29        struct ColumnAdapters
30        {
31       
32        typedef listClass::ColumnAdapter ColAdapter_t;
33       
34        struct Filename : public ColAdapter_t
35        {       
36                virtual bool less(tD& l, tD& r) { return l->filename() < r->filename(); }               
37                virtual std::wstring print(tD& t) { return t->filename(); }             
38        };
39       
40        struct State : public ColAdapter_t
41        {       
42                virtual bool less(tD& l, tD& r) { return l->state() < r->state(); }             
43                virtual std::wstring print(tD& t) { return t->state(); }               
44        };
45       
46        struct Tracker : public ColAdapter_t
47        {
48                virtual bool less(tD& l, tD& r) { return l->currentTracker() < r->currentTracker(); }           
49                virtual std::wstring print(tD& t) { return t->currentTracker(); }               
50        };
51       
52        struct DistributedCopies : public ColAdapter_t
53        {
54                virtual bool less(tD& l, tD& r) { return l->distributedCopies() < r->distributedCopies(); }             
55                virtual std::wstring print(tD& t) { return L"Eoin"; }           
56        };
57       
58        };
59
60public:
61        enum { 
62                LISTVIEW_ID_MENU = IDR_LISTVIEW_MENU,
63                LISTVIEW_ID_COLUMNNAMES = HAL_LISTVIEW_COLUMNS,
64                LISTVIEW_ID_COLUMNWIDTHS = HAL_LISTVIEW_DEFAULTS
65        };
66
67        HaliteListViewCtrl(HaliteWindow& HalWindow);
68
69        BEGIN_MSG_MAP_EX(HaliteListViewCtrl)
70                MSG_WM_SHOWWINDOW(OnShowWindow)
71                MSG_WM_DESTROY(OnDestroy)
72
73                COMMAND_ID_HANDLER(ID__LVM_PAUSE, OnPause)
74                COMMAND_ID_HANDLER(ID_LVM_STOP, OnStop)
75                COMMAND_ID_HANDLER(ID_LVM_RESUME, OnResume)
76                COMMAND_ID_HANDLER(ID_LVM_REMOVE_T, OnRemove)
77                COMMAND_ID_HANDLER(ID_LVM_REMOVE_TD, OnRemoveWipeFiles)
78
79                CHAIN_MSG_MAP(listClass)
80                DEFAULT_REFLECTION_HANDLER()
81        END_MSG_MAP()
82
83        void OnShowWindow(UINT, INT);
84        void OnDestroy();
85        void saveSettings();
86        void uiUpdate(const hal::TorrentDetails& allTorrents); 
87
88        LRESULT OnPause(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
89        LRESULT OnStop(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
90        LRESULT OnResume(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
91        LRESULT OnRemoveFocused(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
92        LRESULT OnRemove(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
93        LRESULT OnRemoveWipeFiles(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
94
95    friend class boost::serialization::access;
96    template<class Archive>
97    void serialize(Archive& ar, const unsigned int version)
98    {
99                ar & boost::serialization::make_nvp("listview", boost::serialization::base_object<listClass>(*this));
100    }
101       
102        tD CustomItemConversion(LVCompareParam* param, int iSortCol);
103
104private:
105        void OnAttach();
106        void OnDetach();
107       
108        HaliteWindow& halWindow_;
109};
110
111typedef HaliteListViewCtrl::SelectionManager ListViewManager;
Note: See TracBrowser for help on using the repository browser.