source: src/HaliteListView.cpp @ 236

Revision 236, 3.7 KB checked in by Eoin, 13 years ago (diff)

Another but minor change to UI updating.

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, _2, _3));
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::TorrentDetail_vec& allTorrents, 
33        const hal::TorrentDetail_vec& selectedTorrents, const hal::TorrentDetail_ptr selectedTorrent)
34{
35        RedrawLock<HaliteListViewCtrl> rLock(*this);
36       
37        foreach (const hal::TorrentDetail_ptr td, allTorrents) 
38        {
39                LV_FINDINFO findInfo; 
40                findInfo.flags = LVFI_STRING;
41                findInfo.psz = const_cast<LPTSTR>(td->filename().c_str());
42               
43                int itemPos = FindItem(&findInfo, -1);
44                if (itemPos < 0)
45                        itemPos = AddItem(0, 0, td->filename().c_str(), 0);
46               
47                SetItemText(itemPos, 1, td->state().c_str());
48               
49                SetItemText(itemPos, 2, (wformat(L"%1$.2f%%") 
50                                % (td->completion()*100)).str().c_str());
51               
52                SetItemText(itemPos, 3, (wformat(L"%1$.2fkb/s") 
53                                % (td->speed().first/1024)).str().c_str());     
54               
55                SetItemText(itemPos, 4, (wformat(L"%1$.2fkb/s") 
56                                % (td->speed().second/1024)).str().c_str());
57               
58                SetItemText(itemPos, 5, (lexical_cast<wstring>(td->peers())).c_str());
59               
60                SetItemText(itemPos, 6, (lexical_cast<wstring>(td->seeds())).c_str()); 
61
62                if (!td->estimatedTimeLeft().is_special())
63                {
64                        SetItemText(itemPos, 7, (hal::from_utf8(
65                                boost::posix_time::to_simple_string(td->estimatedTimeLeft())).c_str()));
66                }
67                else
68                {
69                        SetItemText(itemPos, 7, L"∞");         
70                }
71               
72                SetItemText(itemPos, 8, (wformat(L"%1$.2f") 
73                                % (td->distributedCopies())
74                        ).str().c_str());       
75        }               
76}
77
78LRESULT HaliteListViewCtrl::OnResume(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
79{
80        std::for_each(manager().allSelected().begin(), manager().allSelected().end(),
81                bind(&hal::BitTorrent::resumeTorrent, &hal::bittorrent(), _1));
82       
83        return 0;
84}
85
86LRESULT HaliteListViewCtrl::OnPause(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
87{
88        std::for_each(manager().allSelected().begin(), manager().allSelected().end(),
89                bind(&hal::BitTorrent::pauseTorrent, &hal::bittorrent(), _1));
90       
91        return 0;
92}
93
94LRESULT HaliteListViewCtrl::OnStop(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
95{
96        std::for_each(manager().allSelected().begin(), manager().allSelected().end(),
97                bind(&hal::BitTorrent::stopTorrent, &hal::bittorrent(), _1));
98       
99        return 0;
100}
101
102LRESULT HaliteListViewCtrl::OnRemove(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
103{
104        std::for_each(manager().allSelected().begin(), manager().allSelected().end(),
105                bind(&hal::BitTorrent::removeTorrent, &hal::bittorrent(), _1));
106
107        manager().clearAllSelected();   
108        return 0;
109}
110
111LRESULT HaliteListViewCtrl::OnRemoveWipeFiles(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
112{
113        std::for_each(manager().allSelected().begin(), manager().allSelected().end(),
114                bind(&hal::BitTorrent::removeTorrentWipeFiles, &hal::bittorrent(), _1));
115       
116        manager().clearAllSelected();
117        return 0;
118}
119
120
121//LRESULT HaliteListViewCtrl::OnDeleteItem(int /*idCtrl*/, LPNMHDR pnmh, BOOL& /*bHandled*/)
122//{
123//      LPNMLISTVIEW pnmv=(LPNMLISTVIEW)pnmh;
124//      T* pItem=(T*)GetItemData(pnmv->iItem);
125//      ATLASSERT(pItem);
126//      if (pItem)      // Delete attached structure
127//              delete pItem;
128//      return 0;
129//}
Note: See TracBrowser for help on using the repository browser.