source: trunk/src/HaliteListView.hpp @ 727

Revision 727, 10.4 KB checked in by Eoin, 11 years ago (diff)

Basic Dialog button functions reimplemented. Some warnings corrected.

Line 
1
2//         Copyright Eóin O'Callaghan 2006 - 2009.
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#pragma once
8
9#define HAL_MAIN_LISTVIEW_BEGIN                 30000
10#define ID_LVM_DOWNLOAD_FOLDER          HAL_MAIN_LISTVIEW_BEGIN + 1
11#define ID_LVM_RECHECK                                  HAL_MAIN_LISTVIEW_BEGIN + 2
12#define ID_LVM_EDIT_FOLDERS                             HAL_MAIN_LISTVIEW_BEGIN + 3
13#define HAL_LISTVIEW_CONFIRMDELETE              HAL_MAIN_LISTVIEW_BEGIN + 4
14#define HAL_LVM_QUEUE_VIEW                              HAL_MAIN_LISTVIEW_BEGIN + 5
15#define HAL_AUTO_MANAGED                                HAL_MAIN_LISTVIEW_BEGIN + 6
16#define HAL_UNMANAGED                                   HAL_MAIN_LISTVIEW_BEGIN + 7
17#define HAL_MANAGED_DOWNLOADING                 HAL_MAIN_LISTVIEW_BEGIN + 8
18#define HAL_MANAGED_SEEDING                             HAL_MAIN_LISTVIEW_BEGIN + 9
19#define HAL_QUEUE_MOVE_TOP                              HAL_MAIN_LISTVIEW_BEGIN + 10
20#define HAL_QUEUE_MOVE_UP                               HAL_MAIN_LISTVIEW_BEGIN + 11
21#define HAL_QUEUE_MOVE_DOWN                             HAL_MAIN_LISTVIEW_BEGIN + 12
22#define HAL_QUEUE_MOVE_BOTTOM                   HAL_MAIN_LISTVIEW_BEGIN + 13
23
24#ifndef RC_INVOKED
25
26#include "Halite.hpp"
27
28#include <boost/array.hpp>
29#include <boost/signals.hpp>
30
31#include "global/string_conv.hpp"
32
33#include "halIni.hpp"
34#include "HaliteListViewCtrl.hpp"
35#include "HaliteSortListViewCtrl.hpp"
36
37class HaliteWindow;
38
39class HaliteListViewCtrl :
40        public CHaliteSortListViewCtrl<HaliteListViewCtrl, std::wstring >,
41        public WTL::CCustomDraw<HaliteListViewCtrl>,
42        private hal::IniBase<HaliteListViewCtrl>,
43        private boost::noncopyable
44{
45public:
46        typedef HaliteListViewCtrl thisClass;
47        typedef hal::IniBase<thisClass> iniClass;
48        typedef CHaliteSortListViewCtrl<thisClass, std::wstring > listClass;
49        typedef WTL::CCustomDraw<thisClass> ownDrawClass;
50
51        friend class listClass;
52
53public:
54        enum { 
55                LISTVIEW_ID_MENU = HAL_LISTVIEW_MENU,
56                LISTVIEW_ID_COLUMNNAMES = HAL_LISTVIEW_COLUMNS,
57                LISTVIEW_ID_COLUMNWIDTHS = HAL_LISTVIEW_DEFAULTS
58        };
59
60        HaliteListViewCtrl(HaliteWindow& HalWindow);
61
62        BEGIN_MSG_MAP_EX(HaliteListViewCtrl)
63                MSG_WM_SHOWWINDOW(OnShowWindow)
64                MSG_WM_DESTROY(OnDestroy)
65
66                COMMAND_ID_HANDLER(ID__LVM_PAUSE, OnPause)
67                COMMAND_ID_HANDLER(ID_LVM_STOP, OnStop)
68                COMMAND_ID_HANDLER(ID_LVM_RESUME, OnResume)
69                COMMAND_ID_HANDLER(ID_LVM_RECHECK, OnRecheck)
70                COMMAND_ID_HANDLER(ID_LVM_REMOVE_T, OnRemove)
71                COMMAND_ID_HANDLER(ID_LVM_REMOVE_TD, OnRemoveWipeFiles)
72                COMMAND_ID_HANDLER(ID_LVM_DOWNLOAD_FOLDER, OnDownloadFolder)
73                COMMAND_ID_HANDLER(ID_LVM_EDIT_FOLDERS, OnEditFolders)
74
75                COMMAND_ID_HANDLER(HAL_AUTO_MANAGED, OnSetManaged)
76                COMMAND_ID_HANDLER(HAL_UNMANAGED, OnSetUnmanaged)
77                COMMAND_RANGE_HANDLER(HAL_QUEUE_MOVE_TOP, HAL_QUEUE_MOVE_BOTTOM, OnAdjustQueuePosition)
78                COMMAND_ID_HANDLER(HAL_LVM_QUEUE_VIEW, OnQueueView)
79
80                REFLECTED_NOTIFY_CODE_HANDLER(SLVN_SORTCHANGED, OnSortChanged)
81                REFLECTED_NOTIFY_CODE_HANDLER(LVN_GETDISPINFO, OnGetDispInfo)
82
83        CHAIN_MSG_MAP_ALT(ownDrawClass, 1)
84                CHAIN_MSG_MAP(listClass)
85                DEFAULT_REFLECTION_HANDLER()
86        END_MSG_MAP()
87
88        void OnShowWindow(UINT, INT);
89        void OnDestroy();
90        void SaveSettings();
91        void uiUpdate(const hal::torrent_details_manager& allTorrents); 
92
93        DWORD OnPrePaint(int idCtrl, LPNMCUSTOMDRAW lpNMCD);
94        DWORD OnItemPrePaint(int idCtrl, LPNMCUSTOMDRAW lpNMCD);
95
96        LRESULT OnPause(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
97        LRESULT OnStop(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
98        LRESULT OnResume(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
99        LRESULT OnRecheck(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
100        LRESULT OnRemoveFocused(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
101        LRESULT OnRemove(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
102        LRESULT OnRemoveWipeFiles(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
103        LRESULT OnDownloadFolder(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
104        LRESULT OnEditFolders(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
105
106        LRESULT OnSetManaged(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
107        LRESULT OnSetUnmanaged(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
108        LRESULT OnAdjustQueuePosition(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
109        LRESULT OnQueueView(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
110        LRESULT OnGetDispInfo(int, LPNMHDR pnmh, BOOL&);
111        LRESULT OnSortChanged(int, LPNMHDR pnmh, BOOL&);
112
113        friend class boost::serialization::access;
114        template<class Archive>
115        void serialize(Archive& ar, const unsigned int version)
116        {
117                using boost::serialization::make_nvp;
118
119                if (version > 2)
120                        ar & boost::serialization::make_nvp("listview", 
121                                boost::serialization::base_object<listClass>(*this));
122               
123                ar & make_nvp("queue_view", queue_view_);
124        }
125
126        void erase_torrent_name(wstring name);
127        bool sort_list_comparison(std::wstring l,  std::wstring r, size_t index, bool ascending);
128
129private:
130        void queue_view_mode();
131        bool queue_view_;
132       
133        enum { NumberOfColumns_s = 23 };
134        std::vector<const hal::torrent_details_ptr> data_elements_;
135       
136        HaliteWindow& halite_window_;
137};
138
139BOOST_CLASS_VERSION(HaliteListViewCtrl, 3)
140typedef HaliteListViewCtrl::SelectionManager ListViewManager;
141
142#endif // RC_INVOKED
Note: See TracBrowser for help on using the repository browser.