source: src/advtabs/Torrent.cpp @ 246

Revision 246, 6.1 KB checked in by Eoin, 13 years ago (diff)

WaitableTimer? not working so temporarly disabled.

Line 
1
2#include <algorithm>
3#include <boost/format.hpp>
4#include <boost/array.hpp>
5
6#include "../stdAfx.hpp"
7#include "../HaliteWindow.hpp"
8#include "../HaliteListViewCtrl.hpp"
9
10#include "Torrent.hpp"
11
12void AdvTorrentDialog::selectionChanged(const string& torrent_name)
13{       
14        pair<float, float> tranLimit(-1.0, -1.0);
15        pair<int, int> connLimit(-1, -1);
16        float ratio = 0;
17
18#       if 0   
19        if (hal::bittorrent().isTorrent(torrent_name))
20        {
21                tranLimit = hal::bittorrent().getTorrentSpeed(torrent_name);
22                connLimit = hal::bittorrent().getTorrentLimit(torrent_name);
23               
24                ratio = hal::bittorrent().getTorrentRatio(torrent_name);
25               
26                if (!hal::bittorrent().isTorrentActive(torrent_name))
27                        SetDlgItemText(BTNPAUSE, L"Resume");
28                else           
29                        SetDlgItemText(BTNPAUSE, L"Pause");
30               
31                ::EnableWindow(GetDlgItem(BTNPAUSE), true);
32                ::EnableWindow(GetDlgItem(BTNREANNOUNCE), true);
33                ::EnableWindow(GetDlgItem(BTNREMOVE), true);
34               
35                ::EnableWindow(GetDlgItem(IDC_EDITTLD), true);
36                ::EnableWindow(GetDlgItem(IDC_EDITTLU), true);
37                ::EnableWindow(GetDlgItem(IDC_EDITNCD), true);
38                ::EnableWindow(GetDlgItem(IDC_EDITNCU), true);
39                ::EnableWindow(GetDlgItem(IDC_EDITRATIO), true);
40        }
41        else
42        {
43                SetDlgItemText(IDC_NAME, L"N/A");
44                SetDlgItemText(IDC_TRACKER, L"N/A");
45                SetDlgItemText(IDC_STATUS, L"N/A");
46                SetDlgItemText(IDC_AVAIL, L"N/A");
47                SetDlgItemText(IDC_TRANS, L"N/A");
48                SetDlgItemText(IDC_COMPLETE, L"N/A");
49               
50                SetDlgItemText(BTNPAUSE, L"Pause");             
51                m_prog.SetPos(0);
52               
53                ::EnableWindow(GetDlgItem(BTNPAUSE), false);
54                ::EnableWindow(GetDlgItem(BTNREANNOUNCE), false);
55                ::EnableWindow(GetDlgItem(BTNREMOVE), false);
56               
57                ::EnableWindow(GetDlgItem(IDC_EDITTLD), false);
58                ::EnableWindow(GetDlgItem(IDC_EDITTLU), false);
59                ::EnableWindow(GetDlgItem(IDC_EDITNCD), false);
60                ::EnableWindow(GetDlgItem(IDC_EDITNCU), false);
61                ::EnableWindow(GetDlgItem(IDC_EDITRATIO), false);
62        }
63       
64        NoConnDown = connLimit.first;
65        NoConnUp = connLimit.second;
66        TranLimitDown = tranLimit.first;
67        TranLimitUp = tranLimit.second;
68        Ratio = ratio;
69#       endif   
70
71        DoDataExchange(false); 
72//      ui().update();
73}
74
75LRESULT AdvTorrentDialog::onInitDialog(HWND, LPARAM)
76{
77        dialogBaseClass::InitializeHalDialogBase();     
78        resizeClass::DlgResize_Init(false, true, WS_CLIPCHILDREN);
79       
80{       m_prog.Attach(GetDlgItem(TORRENTPROG));
81        m_prog.SetRange(0, 100);
82}       
83       
84        NoConnDown = -1;
85        NoConnUp = -1;
86        TranLimitDown = -1;
87        TranLimitUp = -1;       
88       
89        DoDataExchange(false);
90        return 0;
91}
92
93void AdvTorrentDialog::onClose()
94{
95        if(::IsWindow(m_hWnd)) 
96        {
97                ::DestroyWindow(m_hWnd);
98        }
99}
100
101LRESULT AdvTorrentDialog::OnEditKillFocus(UINT uCode, int nCtrlID, HWND hwndCtrl)
102{
103        DoDataExchange(true);
104       
105/*      hal::bittorrent().setTorrentSpeed(selection_manager().selected(), TranLimitDown, TranLimitUp);
106        hal::bittorrent().setTorrentLimit(selection_manager().selected(), NoConnDown, NoConnUp);
107        hal::bittorrent().setTorrentRatio(selection_manager().selected(), Ratio);
108        */
109        return 0;
110}
111
112void AdvTorrentDialog::uiUpdate(const hal::TorrentDetails& tD)
113{
114        uiUpdateSingle(tD.selectedTorrent());
115}
116
117void AdvTorrentDialog::uiUpdateMultiple(const hal::TorrentDetail_vec& torrents)
118{
119}
120
121void AdvTorrentDialog::uiUpdateSingle(const hal::TorrentDetail_ptr& torrent)
122{       
123        if (torrent)   
124        {
125                SetDlgItemText(IDC_NAME, torrent->filename().c_str());
126                SetDlgItemText(IDC_TRACKER, torrent->currentTracker().c_str());
127                SetDlgItemText(IDC_STATUS, torrent->state().c_str());
128                m_prog.SetPos(static_cast<int>(torrent->completion()*100));     
129
130                wstring eta = L"∞";     
131               
132                if (!torrent->estimatedTimeLeft().is_special())
133                {
134                        eta = hal::from_utf8(boost::posix_time::to_simple_string(torrent->estimatedTimeLeft()));
135                }
136               
137                SetDlgItemText(IDC_TRANS_ETA,
138                        (wformat(hal::app().res_wstr(HAL_COMPLETED_SUMMARY)) 
139                                % (static_cast<float>(torrent->totalWantedDone())/(1024*1024))
140                                % (static_cast<float>(torrent->totalWanted())/(1024*1024))
141                                % eta
142                        ).str().c_str());
143                       
144                float ratio = (torrent->totalDownloaded()) 
145                        ? static_cast<float>(torrent->totalUploaded())
146                                / static_cast<float>(torrent->totalDownloaded())
147                        : 0;
148               
149                SetDlgItemInfo(IDC_TRANS,
150                        wformat(hal::app().res_wstr(HAL_DOWNLOADT_SUMMARY)) 
151                                % (static_cast<float>(torrent->totalDownloaded())/(1024*1024))
152                                % (static_cast<float>(torrent->totalUploaded())/(1024*1024))
153                                % ratio);       
154                       
155                if (!torrent->updateTrackerIn().is_special())
156                {
157                        SetDlgItemText(IDC_UPDATE,     
158                                (hal::from_utf8(boost::posix_time::to_simple_string(torrent->updateTrackerIn())).c_str()));
159                }
160                else SetDlgItemText(IDC_UPDATE, L"N/A");       
161        }
162}
163
164void AdvTorrentDialog::uiUpdateNone()
165{
166}
167
168void AdvTorrentDialog::updateDialog()
169{
170#       if 0
171        hal::TorrentDetail_ptr pTD = hal::bittorrent().getTorrentDetail_vec(
172                selection_manager().selected());
173       
174        if (pTD)       
175        {
176                SetDlgItemText(IDC_NAME, pTD->filename().c_str());
177                SetDlgItemText(IDC_TRACKER, pTD->currentTracker().c_str());
178                SetDlgItemText(IDC_STATUS, pTD->state().c_str());
179                m_prog.SetPos(static_cast<int>(pTD->completion()*100));
180               
181                if (!pTD->estimatedTimeLeft().is_special())
182                {
183                        SetDlgItemText(IDC_ETA,
184                                (hal::from_utf8(boost::posix_time::to_simple_string(pTD->estimatedTimeLeft())).c_str()));
185                }
186                else SetDlgItemText(IDC_ETA,L"∞");
187               
188/*              SetDlgItemText(IDC_COMPLETE,
189                        (wformat(L"%1$.2fmb of %2$.2fmb")
190                                % (static_cast<float>(pTD->totalWantedDone())/(1024*1024))
191                                % (static_cast<float>(pTD->totalWanted())/(1024*1024))
192                        ).str().c_str());
193*/                     
194                float ratio = (pTD->totalWantedDone()) 
195                        ? static_cast<float>(pTD->totalUploaded())
196                                / static_cast<float>(pTD->totalWantedDone())
197                        : 0;
198               
199                SetDlgItemText(IDC_TRANS,
200                        (wformat(hal::app().res_wstr(HAL_DOWNLOAD_SUMMARY)) 
201                                % (static_cast<float>(pTD->totalWantedDone())/(1024*1024))
202                                % (static_cast<float>(pTD->totalUploaded())/(1024*1024))
203                                % (ratio)
204                        ).str().c_str());       
205                       
206                if (!pTD->updateTrackerIn().is_special())
207                {
208                        SetDlgItemText(IDC_UPDATE,     
209                                (hal::from_utf8(boost::posix_time::to_simple_string(pTD->updateTrackerIn())).c_str()));
210                }
211                else SetDlgItemText(IDC_UPDATE, L"N/A");               
212        }
213#       endif
214}
Note: See TracBrowser for help on using the repository browser.