source: trunk/src/NewTorrentPeersLV.hpp @ 420

Revision 420, 2.6 KB checked in by Eoin, 12 years ago (diff)

Framework for Web seeds and DHT nodes in torrent creation in place.

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#pragma once
8
9#define ID_NTPLVM_BEGIN         19000
10#define ID_NTPLVM_NEW           ID_NTPLVM_BEGIN + 1
11#define ID_NTPLVM_EDIT          ID_NTPLVM_BEGIN + 2
12#define ID_NTPLVM_DELETE        ID_NTPLVM_BEGIN + 3
13#define HAL_NTPLVM_NAMES        ID_NTPLVM_BEGIN + 4
14
15#ifndef RC_INVOKED
16
17#include <boost/signals.hpp>
18#include <boost/function.hpp>
19
20#include "stdAfx.hpp"
21#include "global/string_conv.hpp"
22#include "halIni.hpp"
23#include "HaliteSortListViewCtrl.hpp"
24
25#include "GenericAddListView.hpp"
26
27class NewTorrent_PeersListViewCtrl :
28        public CHaliteSortListViewCtrl<NewTorrent_PeersListViewCtrl>,
29        public hal::IniBase<NewTorrent_PeersListViewCtrl>,
30        public WTLx::GenericAddListView<NewTorrent_PeersListViewCtrl>,
31        private boost::noncopyable
32{
33        typedef NewTorrent_PeersListViewCtrl thisClass;
34        typedef hal::IniBase<thisClass> iniClass;
35        typedef CHaliteSortListViewCtrl<thisClass> listClass;
36        typedef WTLx::GenericAddListView<thisClass> genericAddlistClass;
37
38        friend class listClass;
39       
40public:
41        enum { 
42                LISTVIEW_ID_MENU = HAL_GENERIC_ADD_LV_MENU,
43                LISTVIEW_ID_COLUMNNAMES = HAL_NTPLVM_NAMES,
44                LISTVIEW_ID_COLUMNWIDTHS = HAL_TRACKER_LISTVIEW_DEFAULTS
45        };
46       
47        NewTorrent_PeersListViewCtrl() :
48                listClass(true,false,false),
49                iniClass("listviews/NewTorrentPeers", "NewPeersListView")
50        {
51                std::vector<wstring> names;     
52                wstring column_names = hal::app().res_wstr(LISTVIEW_ID_COLUMNNAMES);
53
54                // "Tracker;Tier"
55                boost::split(names, column_names, boost::is_any_of(L";"));
56               
57                array<int, 2> widths = {287,50};
58                array<int, 2> order = {0,1};
59                array<bool, 2> visible = {true,true};
60               
61                SetDefaults(names, widths, order, visible, true);
62                Load();
63        }
64
65        BEGIN_MSG_MAP_EX(thisClass)
66                MSG_WM_DESTROY(OnDestroy)
67
68                CHAIN_MSG_MAP(genericAddlistClass)
69                CHAIN_MSG_MAP(listClass)
70                DEFAULT_REFLECTION_HANDLER()
71        END_MSG_MAP()
72
73        void uiUpdate(const hal::TorrentDetail_ptr pT);
74        void saveSettings();
75
76    friend class boost::serialization::access;
77    template<class Archive>
78    void serialize(Archive& ar, const unsigned int version)
79    {
80                ar & boost::serialization::make_nvp("listview", boost::serialization::base_object<listClass>(*this));
81    }
82
83        void newItem();
84        void editItem(int);
85        void deleteItem(int);
86
87private:
88        void OnAttach();
89        void OnDestroy();
90};
91
92typedef NewTorrent_PeersListViewCtrl::SelectionManager NewTorrent_PeersListViewManager;
93
94#endif // RC_INVOKED
Note: See TracBrowser for help on using the repository browser.