source: trunk/src/NewTorrentPeersLV.cpp @ 508

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

Major SortList? de-blobbing.

Line 
1
2//         Copyright Eóin O'Callaghan 2006 - 2008.
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#include "stdAfx.hpp"
8#include "halTorrent.hpp"
9
10#include "NewTorrentPeersLV.hpp"
11#include "NewTorrentPeersAD.hpp"
12
13void NewTorrent_PeersListViewCtrl::OnAttach()
14{       
15        WTL::CMenuHandle menu;
16        BOOL menu_created = menu.LoadMenu(HAL_GENERIC_ADD_LV_MENU);
17        InitialSetup(menu);     
18
19        std::vector<wstring> names;     
20        wstring column_names = hal::app().res_wstr(LISTVIEW_ID_COLUMNNAMES);
21
22        // "Tracker;Tier"
23        boost::split(names, column_names, boost::is_any_of(L";"));
24       
25        array<int, 3> widths = {287,50,50};
26        array<int, 3> order = {0,1,2};
27        array<bool, 3> visible = {true,true,true};
28       
29        for (int i=0, e=3; i < e; ++i)
30        {
31                AddColumn(names[i].c_str(), i, visible[i], widths[i]);
32        }       
33
34        load_from_ini();       
35       
36        SetColumnSortType(1, WTL::LVCOLSORT_LONG);
37}
38
39void NewTorrent_PeersListViewCtrl::OnDestroy()
40{
41        saveSettings();
42}
43
44void NewTorrent_PeersListViewCtrl::saveSettings()
45{               
46        GetListViewDetails();
47        save_to_ini();
48}
49
50void NewTorrent_PeersListViewCtrl::newItem()
51{
52        hal::web_seed_or_dht_node_detail peer; 
53        NewTorrent_PeersAddDialog trackDlg(hal::app().res_wstr(HAL_NEWT_ADD_NEW_PEER), peer);
54       
55        if (trackDlg.DoModal() == 1 && !peer.url.empty()) 
56        {
57                int itemPos = AddItem(0, 0, peer.url.c_str(), 0);               
58                SetItemText(itemPos, 1, lexical_cast<wstring>(peer.port).c_str());
59                SetItemText(itemPos, 2, peer.type.c_str());
60        }
61}
62
63void NewTorrent_PeersListViewCtrl::editItem(int index)
64{       
65        try {
66
67        hal::win_c_str<std::wstring> str_url(MAX_PATH); 
68        GetItemText(index, 0, str_url, str_url.size());
69
70        hal::win_c_str<std::wstring> str_port(MAX_PATH);       
71        GetItemText(index, 1, str_port, str_port.size());
72
73        hal::win_c_str<std::wstring> str_type(MAX_PATH);
74        GetItemText(index, 2, str_type, str_type.size());
75       
76        hal::web_seed_or_dht_node_detail peer;
77
78        if (hal::app().res_wstr(HAL_NEWT_ADD_PEERS_WEB) == str_type.str())
79        {
80                peer.url = str_url.str();
81                peer.port = -1;
82                peer.type = hal::app().res_wstr(HAL_NEWT_ADD_PEERS_WEB);
83        }
84        else
85        {
86                peer.url = str_url.str();
87                peer.port = lexical_cast<unsigned>(str_port.str());
88                peer.type = hal::app().res_wstr(HAL_NEWT_ADD_PEERS_DHT);
89        }
90
91        NewTorrent_PeersAddDialog trackDlg(hal::app().res_wstr(HAL_NEWT_EDIT_PEER), peer);
92       
93        if (trackDlg.DoModal() == 1) 
94        {
95                if (peer.url.empty())
96                {
97                        DeleteItem(index);
98                }
99                else
100                {
101                        SetItemText(index, 0, peer.url.c_str());       
102                        SetItemText(index, 1, lexical_cast<wstring>(peer.port).c_str());
103                        SetItemText(index, 2, peer.type.c_str());
104                }               
105        }       
106
107        }
108        catch(const std::exception& e)
109        {
110                hal::event_log.post(boost::shared_ptr<hal::EventDetail>(
111                        new hal::EventStdException(hal::event_logger::critical, e, 
112                                L"NewTorrent_PeersListViewCtrl::editItem")));
113        }
114}
115
116void NewTorrent_PeersListViewCtrl::deleteItem(int index)
117{
118        DeleteItem(index);
119}
Note: See TracBrowser for help on using the repository browser.