source: trunk/src/advtabs/TrackerListView.cpp @ 507

Revision 507, 2.8 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 - 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#include "stdAfx.hpp"
8
9#include "../halTorrent.hpp"
10
11#include "TrackerListView.hpp"
12#include "TrackerAddDialog.hpp"
13
14void 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 TrackerListViewCtrl::OnDestroy()
25{
26        saveSettings();
27}
28
29void TrackerListViewCtrl::saveSettings()
30{               
31        GetListViewDetails();
32        save_to_ini();
33}
34
35void 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 TrackerListViewCtrl::newItem()
59{
60        hal::tracker_detail tracker(L"", 0);   
61        TrackerAddDialog trackDlg(L"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                listEdited_(); 
69        }
70}
71
72void TrackerListViewCtrl::editItem(int index)
73{
74        array<wchar_t, MAX_PATH> buffer;
75
76        GetItemText(index, 0, buffer.elems, buffer.size());
77        hal::tracker_detail tracker(wstring(buffer.elems), 0);
78       
79        GetItemText(index, 1, buffer.elems, buffer.size());
80        tracker.tier = lexical_cast<int>(wstring(buffer.elems));
81
82        TrackerAddDialog trackDlg(L"Edit Tracker", tracker);
83       
84        if (trackDlg.DoModal() == 1) 
85        {
86                if (tracker.url.empty())
87                {
88                        DeleteItem(index);
89                }
90                else
91                {
92                        SetItemText(index, 0, tracker.url.c_str());     
93                        SetItemText(index, 1, lexical_cast<wstring>(tracker.tier).c_str());
94                }               
95                listEdited_();
96        }       
97}
98
99void TrackerListViewCtrl::deleteItem(int index)
100{
101        DeleteItem(index);
102        listEdited_();
103}
104
105LRESULT TrackerListViewCtrl::OnPrimary(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
106{       
107        hal::try_update_lock<listClass> lock(*this);
108        if (lock) 
109        {       
110       
111        for (int i=0, e=GetItemCount(); i<e; ++i)
112        {
113                array<wchar_t, MAX_PATH> buffer;               
114                GetItemText(i, 1, buffer.elems, buffer.size());
115               
116                if (wstring(buffer.elems) == L"0")
117                        SetItemText(i, 1, L"1");
118        }
119       
120        SetItemText(manager().selectedIndex(), 1, L"0");
121       
122        listEdited_();
123       
124        }       
125        return 0;
126}
Note: See TracBrowser for help on using the repository browser.