source: trunk/src/NewTorrentPeersLV.cpp @ 432

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

Torrent creation is working!

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        SetExtendedListViewStyle(WS_EX_CLIENTEDGE|LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP);
16        SetSortListViewExtendedStyle(SORTLV_USESHELLBITMAPS, SORTLV_USESHELLBITMAPS);
17       
18        ApplyDetails();
19       
20        SetColumnSortType(1, LVCOLSORT_LONG);
21}
22
23void NewTorrent_PeersListViewCtrl::OnDestroy()
24{
25        saveSettings();
26}
27
28void NewTorrent_PeersListViewCtrl::saveSettings()
29{               
30        GetListViewDetails();
31        save();
32}
33
34void NewTorrent_PeersListViewCtrl::newItem()
35{
36        hal::web_seed_or_dht_node_detail peer; 
37        NewTorrent_PeersAddDialog trackDlg(hal::app().res_wstr(HAL_NEWT_ADD_NEW_PEER), peer);
38       
39        if (trackDlg.DoModal() == 1 && !peer.url.empty()) 
40        {
41                int itemPos = AddItem(0, 0, peer.url.c_str(), 0);               
42                SetItemText(itemPos, 1, lexical_cast<wstring>(peer.port).c_str());
43                SetItemText(itemPos, 2, peer.type.c_str());
44        }
45}
46
47void NewTorrent_PeersListViewCtrl::editItem(int index)
48{       
49        try {
50
51        hal::win_c_str<std::wstring> str_url(MAX_PATH); 
52        GetItemText(index, 0, str_url, str_url.size());
53
54        hal::win_c_str<std::wstring> str_port(MAX_PATH);       
55        GetItemText(index, 1, str_port, str_port.size());
56
57        hal::win_c_str<std::wstring> str_type(MAX_PATH);
58        GetItemText(index, 2, str_type, str_type.size());
59       
60        hal::web_seed_or_dht_node_detail peer;
61
62        if (hal::app().res_wstr(HAL_NEWT_ADD_PEERS_WEB) == str_type.str())
63        {
64                peer.url = str_url.str();
65                peer.port = -1;
66                peer.type = hal::app().res_wstr(HAL_NEWT_ADD_PEERS_WEB);
67        }
68        else
69        {
70                peer.url = str_url.str();
71                peer.port = lexical_cast<unsigned>(str_port.str());
72                peer.type = hal::app().res_wstr(HAL_NEWT_ADD_PEERS_DHT);
73        }
74
75        NewTorrent_PeersAddDialog trackDlg(hal::app().res_wstr(HAL_NEWT_EDIT_PEER), peer);
76       
77        if (trackDlg.DoModal() == 1) 
78        {
79                if (peer.url.empty())
80                {
81                        DeleteItem(index);
82                }
83                else
84                {
85                        SetItemText(index, 0, peer.url.c_str());       
86                        SetItemText(index, 1, lexical_cast<wstring>(peer.port).c_str());
87                        SetItemText(index, 2, peer.type.c_str());
88                }               
89        }       
90
91        }
92        catch(const std::exception& e)
93        {
94                hal::event().post(boost::shared_ptr<hal::EventDetail>(
95                        new hal::EventStdException(hal::Event::critical, e, 
96                                L"NewTorrent_PeersListViewCtrl::editItem")));
97        }
98}
99
100void NewTorrent_PeersListViewCtrl::deleteItem(int index)
101{
102        DeleteItem(index);
103}
Note: See TracBrowser for help on using the repository browser.