Changeset 231


Ignore:
Timestamp:
07/08/07 09:21:21 (13 years ago)
Author:
Eoin
Message:
 
Location:
src
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • src/HaliteDialog.cpp

    r229 r231  
    2121void HaliteDialog::selectionChanged(const string& torrent_name) 
    2222{        
     23#       if 0     
    2324        pair<float, float> tranLimit(-1.0, -1.0); 
    2425        pair<int, int> connLimit(-1, -1); 
    2526         
    26 #       if 0     
    2727        if (hal::bittorrent().isTorrent(torrent_name)) 
    2828        { 
     
    7171         
    7272        DoDataExchange(false);   
    73 #       endif 
    7473        m_list.DeleteAllItems();         
    7574        ui().update(); 
     75#       endif 
    7676} 
    7777 
     
    160160} 
    161161 
    162 void HaliteDialog::uiUpdate(const hal::TorrentDetails& torrentDetails) 
    163 { 
    164         hal::TorrentDetails::const_iterator ppTd = torrentDetails.begin(); 
    165         hal::TorrentDetail_ptr pTd; 
    166          
    167         if ((ppTd != torrentDetails.end()) && (pTd = *ppTd))     
    168         { 
    169                 SetDlgItemText(IDC_NAME, pTd->filename().c_str()); 
    170                 SetDlgItemText(IDC_TRACKER, pTd->currentTracker().c_str()); 
    171                 SetDlgItemText(IDC_STATUS, pTd->state().c_str()); 
    172                 m_prog.SetPos(static_cast<int>(pTd->completion()*100)); 
    173                  
    174                 if (!pTd->estimatedTimeLeft().is_special()) 
     162void HaliteDialog::uiUpdate(const hal::TorrentDetails& allTorrents,  
     163                const hal::TorrentDetails& selectedTorrents, const hal::TorrentDetail_ptr selectedTorrent)  
     164{        
     165        if (selectedTorrent)     
     166        { 
     167                SetDlgItemText(IDC_NAME, selectedTorrent->filename().c_str()); 
     168                SetDlgItemText(IDC_TRACKER, selectedTorrent->currentTracker().c_str()); 
     169                SetDlgItemText(IDC_STATUS, selectedTorrent->state().c_str()); 
     170                m_prog.SetPos(static_cast<int>(selectedTorrent->completion()*100)); 
     171                 
     172                if (!selectedTorrent->estimatedTimeLeft().is_special()) 
    175173                { 
    176174                        SetDlgItemText(IDC_AVAIL, 
    177                                 (hal::from_utf8(boost::posix_time::to_simple_string(pTd->estimatedTimeLeft())).c_str())); 
     175                                (hal::from_utf8(boost::posix_time::to_simple_string( 
     176                                        selectedTorrent->estimatedTimeLeft())).c_str())); 
    178177                } 
    179178                else 
     
    184183                SetDlgItemText(IDC_COMPLETE, 
    185184                        (wformat(L"%1$.2fmb of %2$.2fmb")  
    186                                 % (static_cast<float>(pTd->totalWantedDone())/(1024*1024)) 
    187                                 % (static_cast<float>(pTd->totalWanted())/(1024*1024)) 
     185                                % (static_cast<float>(selectedTorrent->totalWantedDone())/(1024*1024)) 
     186                                % (static_cast<float>(selectedTorrent->totalWanted())/(1024*1024)) 
    188187                        ).str().c_str()); 
    189188                                 
     
    191190                m_list.manager().clearAll(); 
    192191                 
    193                 if (!pTd->peerDetails().empty()) 
     192                if (!selectedTorrent->peerDetails().empty()) 
    194193                {                        
    195194                         
    196                         foreach (const hal::PeerDetail& peer, pTd->peerDetails()) 
     195                        foreach (const hal::PeerDetail& peer, selectedTorrent->peerDetails()) 
    197196                        {                        
    198197                                LV_FINDINFO findInfo;  
  • src/HaliteDialog.hpp

    r229 r231  
    152152        void selectionChanged(const string& torrent_name); 
    153153        void updateDialog(); 
    154         void uiUpdate(const hal::TorrentDetails& torrentDetails); 
     154        void uiUpdate(const hal::TorrentDetails& allTorrents,  
     155                const hal::TorrentDetails& selectedTorrents, const hal::TorrentDetail_ptr selectedTorrent);  
    155156         
    156157protected: 
  • src/HaliteDialogBase.hpp

    r229 r231  
    2020                selection_manager_(single_sel) 
    2121        {                
    22                 theDaddy.connectUiUpdate(bind(&TBase::uiUpdate, static_cast<TBase*>(this), _1)); 
     22                theDaddy.connectUiUpdate(bind(&TBase::uiUpdate, static_cast<TBase*>(this), _1, _2, _3)); 
    2323        } 
    2424         
    2525        void InitializeHalDialogBase() 
    2626        {        
    27                 ui_.attach(bind(&TBase::updateDialog, static_cast<TBase*>(this))); 
    28                 selection_manager_.attach(bind(&TBase::selectionChanged, static_cast<TBase*>(this), _1)); 
     27        //      ui_.attach(bind(&TBase::updateDialog, static_cast<TBase*>(this))); 
     28        //      selection_manager_.attach(bind(&TBase::selectionChanged, static_cast<TBase*>(this), _1)); 
    2929        } 
    3030         
    31         void uiUpdate(const hal::TorrentDetails& torrentDetails) {} 
     31        void uiUpdate(const hal::TorrentDetails& allTorrents,  
     32                const hal::TorrentDetails& selectedTorrents, const hal::TorrentDetail_ptr selectedTorrent)  
     33        {} 
    3234         
    3335/*      void save() 
  • src/HaliteListView.cpp

    r229 r231  
    2525{ 
    2626        hal::TorrentDetails TD; 
    27         hal::bittorrent().getAllTorrentDetails(TD, ""); 
     27        hal::bittorrent().getAllTorrentDetails(TD); 
    2828         
    2929        for (hal::TorrentDetails::const_iterator i = TD.begin(); i != TD.end(); ++i)  
  • src/HaliteListView.hpp

    r229 r231  
    7070    } 
    7171                                 
    72         void connectForDetails(boost::function<void (const hal::TorrentDetails&)> fn)  
     72/*      void connectForDetails(boost::function<void (const hal::TorrentDetails&)> fn)  
    7373        {  
    7474                selection_details_.connect(fn);  
    7575        } 
    76  
     76*/ 
    7777private: 
    7878        void OnAttach(); 
    7979        void OnDetach(); 
    8080         
    81         boost::signal<void (const hal::TorrentDetails&)> selection_details_; 
     81//      boost::signal<void (const hal::TorrentDetails&)> selection_details_; 
    8282         
    83         hal::TorrentDetails torrentDetails_; 
     83//      hal::TorrentDetails torrentDetails_; 
    8484}; 
    8585 
  • src/HaliteWindow.cpp

    r229 r231  
    8181        mp_list->Create(m_Split.m_hWnd, rc, NULL,  
    8282                LVS_REPORT|WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS|WS_CLIPCHILDREN|LVS_SHOWSELALWAYS); 
     83        mp_list->manager().attach(bind(&HaliteWindow::issueUiUpdate, this)); 
    8384         
    8485        mp_dlg.reset(new HaliteDialog(*this, ui(), mp_list->manager())), 
     
    213214        if (uTimerID == ID_UPDATE_TIMER)  
    214215        {        
    215                 try 
    216                 { 
    217                  
    218                 hal::TorrentDetails td; 
    219                 hal::bittorrent().getAllTorrentDetails(td, mp_list->manager().selected()); 
    220                 ui_update_signal_(td); 
    221                  
    222                 ui().update(); 
    223                  
    224                 } 
    225                 catch (std::exception& e) 
    226                 { 
    227                         hal::event().post(shared_ptr<hal::EventDetail>(\ 
    228                                 new hal::EventStdException(hal::Event::info, e, L"updateTimer"))); 
    229                 } 
    230  
     216                issueUiUpdate(); 
    231217        } 
    232218        else if (uTimerID == ID_SAVE_TIMER)  
     
    251237         
    252238}        
     239 
     240void HaliteWindow::issueUiUpdate() 
     241{ 
     242        try 
     243        { 
     244         
     245        hal::TorrentDetails allTorrents; 
     246        hal::TorrentDetails selectedTorrents; 
     247        hal::TorrentDetail_ptr selectedTorrent; 
     248         
     249        hal::bittorrent().getAllTorrentDetails(allTorrents); 
     250         
     251        std::set<string> selectedNames; 
     252        selectedNames.insert(mp_list->manager().allSelected().begin(), mp_list->manager().allSelected().end()); 
     253         
     254        selectedTorrents.reserve(selectedNames.size()); 
     255         
     256        foreach (hal::TorrentDetail_ptr t_ptr, allTorrents) 
     257        { 
     258                if (selectedNames.find(hal::to_utf8(t_ptr->filename())) != selectedNames.end()) 
     259                { 
     260                        selectedTorrents.push_back(t_ptr); 
     261                } 
     262                 
     263                if (mp_list->manager().selected() == hal::to_utf8(t_ptr->filename())) 
     264                        selectedTorrent = t_ptr; 
     265        } 
     266                         
     267        ui_update_signal_(allTorrents, selectedTorrents, selectedTorrent); 
     268         
     269//      ui().update(); 
     270         
     271        } 
     272        catch (std::exception& e) 
     273        { 
     274                hal::event().post(shared_ptr<hal::EventDetail>( 
     275                        new hal::EventStdException(hal::Event::info, e, L"updateTimer"))); 
     276        } 
     277} 
    253278 
    254279LRESULT HaliteWindow::OnCopyData(HWND, PCOPYDATASTRUCT pCSD) 
     
    314339        catch(const boost::filesystem::filesystem_error&) 
    315340        { 
    316                 hal::event().post(shared_ptr<hal::EventDetail>(new hal::EventDebug(hal::Event::warning, L"filesystem error"))); 
     341                hal::event().post(shared_ptr<hal::EventDetail>( 
     342                        new hal::EventDebug(hal::Event::warning, L"filesystem error"))); 
    317343        } 
    318344} 
  • src/HaliteWindow.hpp

    r229 r231  
    9898        void ProcessFile(LPCTSTR lpszPath); 
    9999         
    100         void connectUiUpdate(boost::function<void (const hal::TorrentDetails& torrentDetails)> fn)  
     100        void connectUiUpdate(boost::function<void (const hal::TorrentDetails& allTorrents,  
     101                const hal::TorrentDetails& selectedTorrents, const hal::TorrentDetail_ptr selectedTorrent)> fn)  
    101102        {  
    102103                ui_update_signal_.connect(fn);  
    103104        } 
    104105                 
    105         boost::signal<void (const hal::TorrentDetails& torrentDetails)> & ui_sig() { return ui_update_signal_; } 
     106        boost::signal<void (const hal::TorrentDetails& allTorrents,  
     107                const hal::TorrentDetails& selectedTorrents,  
     108                const hal::TorrentDetail_ptr selectedTorrent)> & ui_sig() 
     109        {  
     110                return ui_update_signal_;  
     111        } 
     112         
     113        void issueUiUpdate(); 
    106114         
    107115        void connectSaveState(boost::function<void ()> fn)  
     
    191199        int activeTab; 
    192200         
    193         boost::signal<void (const hal::TorrentDetails& torrentDetails)> ui_update_signal_; 
     201        boost::signal<void (const hal::TorrentDetails& allTorrents,  
     202                const hal::TorrentDetails& selectedTorrents, const hal::TorrentDetail_ptr selectedTorrent)> ui_update_signal_; 
    194203        boost::signal<void ()> save_state_signal_;       
    195204}; 
  • src/advtabs/Torrent.hpp

    r229 r231  
    9393 
    9494        void selectionChanged(const string& torrent_name); 
    95         void updateDialog(); 
    96         void uiUpdate(const hal::TorrentDetails& torrentDetails) {} 
     95        void updateDialog();     
     96        void uiUpdate(const hal::TorrentDetails& allTorrents,  
     97                const hal::TorrentDetails& selectedTorrents, const hal::TorrentDetail_ptr selectedTorrent)  
     98        {} 
    9799 
    98100protected: 
  • src/halTorrent.cpp

    r229 r231  
    238238} 
    239239 
     240const PeerDetails& TorrentDetail::peerDetails() const 
     241{ 
     242        if (!peerDetailsFilled_) 
     243        { 
     244                bittorrent().getAllPeerDetails(hal::to_utf8(filename_), peerDetails_); 
     245                peerDetailsFilled_ = true; 
     246        } 
     247         
     248        return peerDetails_; 
     249} 
     250         
    240251class BitTorrent_impl 
    241252{ 
     
    874885} 
    875886 
    876 void BitTorrent::getAllTorrentDetails(TorrentDetails& torrentsContainer, std::string filename) 
    877 { 
    878         try { 
     887void BitTorrent::getAllTorrentDetails(TorrentDetails& torrentsContainer) 
     888{ 
     889        try { 
     890         
     891        torrentsContainer.reserve(pimpl->torrents.size()); 
    879892         
    880893        foreach (TorrentPair t, pimpl->torrents) 
    881894        { 
    882                 if (t.first == filename)                 
    883                         torrentsContainer.insert(torrentsContainer.begin(), t.second.getTorrentDetails(true));           
    884                 else 
    885                         torrentsContainer.push_back(t.second.getTorrentDetails(false)); 
     895                torrentsContainer.push_back(t.second.getTorrentDetails()); 
    886896        } 
    887897         
     
    897907        if (i != pimpl->torrents.end()) 
    898908        { 
    899                 return i->second.getTorrentDetails(true); 
     909                return i->second.getTorrentDetails(); 
    900910        } 
    901911         
  • src/halTorrent.hpp

    r229 r231  
    8282                ratio_(r), 
    8383                estimatedTimeLeft_(eta), 
    84                 updateTrackerIn_(uIn) 
     84                updateTrackerIn_(uIn), 
     85                peerDetailsFilled_(false) 
    8586        {}               
    8687 
    87         TorrentDetail() {};      
     88        TorrentDetail() :        
     89                peerDetailsFilled_(false) 
     90        {};      
    8891         
    8992        enum state 
     
    114117        const time_duration& updateTrackerIn() { return updateTrackerIn_; } 
    115118         
    116         const PeerDetails peerDetails() { return peerDetails_; } 
     119        const PeerDetails& peerDetails() const; 
    117120         
    118121public: 
     
    137140        time_duration updateTrackerIn_; 
    138141         
    139         PeerDetails peerDetails_; 
     142private: 
     143        mutable bool peerDetailsFilled_; 
     144        mutable PeerDetails peerDetails_; 
    140145}; 
    141146 
     
    204209        void newTorrent(boost::filesystem::wpath filename, boost::filesystem::wpath files); 
    205210        void addTorrent(boost::filesystem::wpath file, wpath saveDirectory); 
    206         void getAllTorrentDetails(TorrentDetails& torrentsContainer, std::string filename); 
     211        void getAllTorrentDetails(TorrentDetails& torrentsContainer); 
    207212        TorrentDetail_ptr getTorrentDetails(std::string filename); 
    208213         
  • src/halTorrentInternal.hpp

    r230 r231  
    5252        {} 
    5353         
    54         TorrentDetail_ptr getTorrentDetails(bool with_peers) const; 
     54        TorrentDetail_ptr getTorrentDetails() const; 
    5555        void setTransferSpeed(float down, float up); 
    5656        void setConnectionLimit(int maxConn, int maxUpload); 
     
    342342} 
    343343 
    344 TorrentDetail_ptr TorrentInternal::getTorrentDetails(bool with_peers) const 
     344TorrentDetail_ptr TorrentInternal::getTorrentDetails() const 
    345345{ 
    346346        if (inSession()) 
     
    395395                totalBase_ = tS.total_payload_upload; 
    396396 
    397                 TorrentDetail_ptr td_p(new TorrentDetail(filename_, state, hal::from_utf8(tS.current_tracker),  
     397                return TorrentDetail_ptr(new TorrentDetail(filename_, state, hal::from_utf8(tS.current_tracker),  
    398398                        pair<float, float>(tS.download_payload_rate, tS.upload_payload_rate), 
    399399                        tS.progress, tS.distributed_copies, tS.total_wanted_done, tS.total_wanted, totalUploaded_, 
    400400                        tS.num_peers, tS.num_seeds, ratio_, td, tS.next_announce)); 
    401                  
    402                 if (with_peers) getPeerDetails(td_p->peerDetails_); 
    403                  
    404                 return td_p; 
    405401        } 
    406402        else 
Note: See TracChangeset for help on using the changeset viewer.