source: trunk/src/NewTorrentTrackerLV.cpp @ 507

Revision 507, 2.5 KB checked in by Eoin, 12 years ago (diff)

Added ListViewIterators?.hpp.

Major find and replace of TorrentDetails? and associated classes to torrent_details.

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
9#include "halTorrent.hpp"
10
11#include "NewTorrentTrackerLV.hpp"
12#include "NewTorrentTrackerAD.hpp"
13
14void NewTorrent_TrackerListViewCtrl::OnAttach()
15{
16        SetExtendedListViewStyle(WS_EX_CLIENTEDGE|LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP);
17        SetSortListViewExtendedStyle(SORTLV_USESHELLBITMAPS, SORTLV_USESHELLBITMAPS);
18       
19        ApplyDetails();
20       
21        SetColumnSortType(1, WTL::LVCOLSORT_LONG);
22}
23
24void NewTorrent_TrackerListViewCtrl::OnDestroy()
25{
26        saveSettings();
27}
28
29void NewTorrent_TrackerListViewCtrl::saveSettings()
30{               
31        GetListViewDetails();
32        save_to_ini();
33}
34
35void NewTorrent_TrackerListViewCtrl::uiUpdate(const hal::torrent_details_ptr pT)
36{
37        if (hal::bit::torrent t = hal::bittorrent().get(pT))
38        {                       
39                hal::try_update_lock<listClass> lock(*this);
40                if (lock) 
41                {                       
42                        std::vector<hal::tracker_detail> trackers =     t.trackers;
43                        clearAll();
44                       
45                        foreach (const hal::tracker_detail& tracker, trackers)
46                        {
47                                int itemPos = AddItem(0, 0, tracker.url.c_str(), 0);
48                                SetItemText(itemPos, 1, lexical_cast<wstring>(tracker.tier).c_str());
49                        }
50                }
51        }
52        else
53        {               
54                clearAll();
55        }
56}
57
58void NewTorrent_TrackerListViewCtrl::newItem()
59{
60        hal::tracker_detail tracker(L"", 0);   
61        NewTorrent_TrackerAddDialog trackDlg(hal::app().res_wstr(HAL_NEWT_ADD_NEW_TRACKER), tracker);
62       
63        if (trackDlg.DoModal() == 1 && !tracker.url.empty()) 
64        {
65                int itemPos = AddItem(0, 0, tracker.url.c_str(), 0);           
66                SetItemText(itemPos, 1, lexical_cast<wstring>(tracker.tier).c_str());
67        }
68}
69
70void NewTorrent_TrackerListViewCtrl::editItem(int index)
71{
72        array<wchar_t, MAX_PATH> buffer;
73
74        GetItemText(index, 0, buffer.elems, buffer.size());
75        hal::tracker_detail tracker(wstring(buffer.elems), 0);
76       
77        GetItemText(index, 1, buffer.elems, buffer.size());
78        tracker.tier = lexical_cast<int>(wstring(buffer.elems));
79
80        NewTorrent_TrackerAddDialog trackDlg(hal::app().res_wstr(HAL_NEWT_EDIT_TRACKER), tracker);
81       
82        if (trackDlg.DoModal() == 1) 
83        {
84                if (tracker.url.empty())
85                {
86                        DeleteItem(index);
87                }
88                else
89                {
90                        SetItemText(index, 0, tracker.url.c_str());     
91                        SetItemText(index, 1, lexical_cast<wstring>(tracker.tier).c_str());
92                }               
93        }       
94}
95
96void NewTorrent_TrackerListViewCtrl::deleteItem(int index)
97{
98        DeleteItem(index);
99}
Note: See TracBrowser for help on using the repository browser.