source: src/HaliteListView.cpp @ 237

Revision 237, 3.6 KB checked in by Eoin, 13 years ago (diff)
Line 
1
2#include "HaliteListView.hpp"
3#include "HaliteWindow.hpp"
4#include "halTorrent.hpp"
5
6HaliteListViewCtrl::HaliteListViewCtrl(HaliteWindow& HalWindow) :
7        iniClass("listviews/halite", "HaliteListView")
8{               
9        HalWindow.connectUiUpdate(bind(&HaliteListViewCtrl::uiUpdate, this, _1));
10        load();
11}
12       
13void HaliteListViewCtrl::OnShowWindow(UINT, INT)
14{
15        SetExtendedListViewStyle(WS_EX_CLIENTEDGE|LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP);
16
17        SetListViewDetails();
18}
19
20void HaliteListViewCtrl::OnDestroy()
21{
22        saveSettings();
23}
24
25void HaliteListViewCtrl::saveSettings()
26{
27        GetListViewDetails();
28        save();
29}
30
31
32void HaliteListViewCtrl::uiUpdate(const hal::TorrentDetails& tD)
33{
34        RedrawLock<HaliteListViewCtrl> rLock(*this);
35       
36        tD.sort(hal::TorrentDetails::name);
37        DeleteAllItems();
38       
39        foreach (const hal::TorrentDetail_ptr td, tD.torrents()) 
40        {
41                LV_FINDINFO findInfo; 
42                findInfo.flags = LVFI_STRING;
43                findInfo.psz = const_cast<LPTSTR>(td->filename().c_str());
44               
45                int itemPos = FindItem(&findInfo, -1);
46                if (itemPos < 0)
47                        itemPos = AddItem(0, 0, td->filename().c_str(), 0);
48               
49                SetItemText(itemPos, 1, td->state().c_str());
50               
51                SetItemText(itemPos, 2, (wformat(L"%1$.2f%%") 
52                                % (td->completion()*100)).str().c_str());
53               
54                SetItemText(itemPos, 3, (wformat(L"%1$.2fkb/s") 
55                                % (td->speed().first/1024)).str().c_str());     
56               
57                SetItemText(itemPos, 4, (wformat(L"%1$.2fkb/s") 
58                                % (td->speed().second/1024)).str().c_str());
59               
60                SetItemText(itemPos, 5, (lexical_cast<wstring>(td->peers())).c_str());
61               
62                SetItemText(itemPos, 6, (lexical_cast<wstring>(td->seeds())).c_str()); 
63
64                if (!td->estimatedTimeLeft().is_special())
65                {
66                        SetItemText(itemPos, 7, (hal::from_utf8(
67                                boost::posix_time::to_simple_string(td->estimatedTimeLeft())).c_str()));
68                }
69                else
70                {
71                        SetItemText(itemPos, 7, L"∞");         
72                }
73               
74                SetItemText(itemPos, 8, (wformat(L"%1$.2f") 
75                                % (td->distributedCopies())
76                        ).str().c_str());       
77        }               
78}
79
80LRESULT HaliteListViewCtrl::OnResume(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
81{
82        std::for_each(manager().allSelected().begin(), manager().allSelected().end(),
83                bind(&hal::BitTorrent::resumeTorrent, &hal::bittorrent(), _1));
84       
85        return 0;
86}
87
88LRESULT HaliteListViewCtrl::OnPause(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
89{
90        std::for_each(manager().allSelected().begin(), manager().allSelected().end(),
91                bind(&hal::BitTorrent::pauseTorrent, &hal::bittorrent(), _1));
92       
93        return 0;
94}
95
96LRESULT HaliteListViewCtrl::OnStop(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
97{
98        std::for_each(manager().allSelected().begin(), manager().allSelected().end(),
99                bind(&hal::BitTorrent::stopTorrent, &hal::bittorrent(), _1));
100       
101        return 0;
102}
103
104LRESULT HaliteListViewCtrl::OnRemove(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
105{
106        std::for_each(manager().allSelected().begin(), manager().allSelected().end(),
107                bind(&hal::BitTorrent::removeTorrent, &hal::bittorrent(), _1));
108
109        manager().clearAllSelected();   
110        return 0;
111}
112
113LRESULT HaliteListViewCtrl::OnRemoveWipeFiles(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
114{
115        std::for_each(manager().allSelected().begin(), manager().allSelected().end(),
116                bind(&hal::BitTorrent::removeTorrentWipeFiles, &hal::bittorrent(), _1));
117       
118        manager().clearAllSelected();
119        return 0;
120}
121
122
123//LRESULT HaliteListViewCtrl::OnDeleteItem(int /*idCtrl*/, LPNMHDR pnmh, BOOL& /*bHandled*/)
124//{
125//      LPNMLISTVIEW pnmv=(LPNMLISTVIEW)pnmh;
126//      T* pItem=(T*)GetItemData(pnmv->iItem);
127//      ATLASSERT(pItem);
128//      if (pItem)      // Delete attached structure
129//              delete pItem;
130//      return 0;
131//}
Note: See TracBrowser for help on using the repository browser.