Changeset 260


Ignore:
Timestamp:
08/22/07 10:45:25 (13 years ago)
Author:
Eoin
Message:
 
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • Halite.pnproj

    r251 r260  
    1 <Project name="Halite"><MagicFolder excludeFolders="CVS;.svn" filter="*.*" name="res" path="res\"><File path="afxres.h"></File><File path="Halite.aps"></File><File path="Halite.ico"></File><File path="Halite.rc"></File><File path="Manifest.xml"></File><File path="resource.h"></File><File path="toolbar.bmp"></File></MagicFolder><MagicFolder excludeFolders="CVS;.svn" filter="*.*" name="src" path="src\"><MagicFolder excludeFolders="CVS;.svn" filter="*.*" name="advtabs" path="advtabs\"><File path="Debug.cpp"></File><File path="Debug.hpp"></File><File path="Peers.cpp"></File><File path="Peers.hpp"></File><File path="ThemeTestDialog.hpp"></File><File path="Torrent.cpp"></File><File path="Torrent.hpp"></File><File path="Tracker.cpp"></File><File path="Tracker.hpp"></File><File path="TrackerAddDialog.hpp"></File><File path="TrackerListView.cpp"></File><File path="TrackerListView.hpp"></File></MagicFolder><MagicFolder excludeFolders="CVS;.svn" filter="*.*" name="global" path="global\"><File path="InheritEnum.hpp"></File><File path="ini.cpp"></File><File path="ini.hpp"></File><File path="ini_adapter.cpp"></File><File path="ini_adapter.hpp"></File><File path="logger.cpp"></File><File path="logger.hpp"></File><File path="string_conv.cpp"></File><File path="string_conv.hpp"></File><File path="tinyxml.cpp"></File><File path="tinyxml.hpp"></File><File path="tinyxmlerror.cpp"></File><File path="tinyxmlparser.cpp"></File><File path="unicode.hpp"></File><File path="utf8.hpp"></File><File path="wtl_app.cpp"></File><File path="wtl_app.hpp"></File></MagicFolder><File path="AdvHaliteDialog.cpp"></File><File path="AdvHaliteDialog.hpp"></File><File path="ConfigOptions.cpp"></File><File path="ConfigOptions.hpp"></File><File path="CSSFileDialog.hpp"></File><File path="DdxEx.hpp"></File><File path="DebugDialog.hpp"></File><File path="DropFileTarget.h"></File><File path="halConfig.cpp"></File><File path="halConfig.hpp"></File><File path="halEvent.cpp"></File><File path="halEvent.hpp"></File><File path="Halite.cpp"></File><File path="Halite.hpp"></File><File path="HaliteDialog.cpp"></File><File path="HaliteDialog.hpp"></File><File path="HaliteDialogBase.hpp"></File><File path="HaliteEditCtrl.hpp"></File><File path="HaliteIni.hpp"></File><File path="HaliteListManager.hpp"></File><File path="HaliteListView.cpp"></File><File path="HaliteListView.hpp"></File><File path="HaliteListViewCtrl.hpp"></File><File path="HaliteSortListViewCtrl.hpp"></File><File path="HaliteTabCtrl.hpp"></File><File path="HaliteTabPage.hpp"></File><File path="HaliteWindow.cpp"></File><File path="HaliteWindow.hpp"></File><File path="halTorrent.cpp"></File><File path="halTorrent.hpp"></File><File path="halTorrentInternal.hpp"></File><File path="halXmlRpc.cpp"></File><File path="halXmlRpc.hpp"></File><File path="NTray.cpp"></File><File path="NTray.hpp"></File><File path="ProgressDialog.hpp"></File><File path="SimpleHtml.h"></File><File path="SplashDialog.hpp"></File><File path="SSFileDialog.hpp"></File><File path="stdAfx.cpp"></File><File path="stdAfx.hpp"></File><File path="UxthemeWrapper.cpp"></File><File path="UxthemeWrapper.hpp"></File><File path="WinAPIMutex.hpp"></File><File path="WinAPIWaitableTimer.hpp"></File></MagicFolder><File path="Jamfile.v2"></File></Project> 
     1<Project name="Halite"><MagicFolder excludeFolders="CVS;.svn" filter="*.*" name="res" path="res\"><File path="afxres.h"></File><File path="Document.rtf"></File><File path="Halite.aps"></File><File path="Halite.ico"></File><File path="Halite.rc"></File><File path="Manifest.xml"></File><File path="resource.h"></File><File path="toolbar.bmp"></File></MagicFolder><MagicFolder excludeFolders="CVS;.svn" filter="*.*" name="src" path="src\"><MagicFolder excludeFolders="CVS;.svn" filter="*.*" name="advtabs" path="advtabs\"><File path="Debug.cpp"></File><File path="Debug.hpp"></File><File path="Peers.cpp"></File><File path="Peers.hpp"></File><File path="ThemeTestDialog.hpp"></File><File path="Torrent.cpp"></File><File path="Torrent.hpp"></File><File path="Tracker.cpp"></File><File path="Tracker.hpp"></File><File path="TrackerAddDialog.hpp"></File><File path="TrackerListView.cpp"></File><File path="TrackerListView.hpp"></File></MagicFolder><MagicFolder excludeFolders="CVS;.svn" filter="*.*" name="global" path="global\"><File path="InheritEnum.hpp"></File><File path="ini.cpp"></File><File path="ini.hpp"></File><File path="ini_adapter.cpp"></File><File path="ini_adapter.hpp"></File><File path="logger.cpp"></File><File path="logger.hpp"></File><File path="string_conv.cpp"></File><File path="string_conv.hpp"></File><File path="tinyxml.cpp"></File><File path="tinyxml.hpp"></File><File path="tinyxmlerror.cpp"></File><File path="tinyxmlparser.cpp"></File><File path="unicode.hpp"></File><File path="utf8.hpp"></File><File path="wtl_app.cpp"></File><File path="wtl_app.hpp"></File></MagicFolder><File path="AdvHaliteDialog.cpp"></File><File path="AdvHaliteDialog.hpp"></File><File path="ConfigOptions.cpp"></File><File path="ConfigOptions.hpp"></File><File path="CSSFileDialog.hpp"></File><File path="DdxEx.hpp"></File><File path="DebugDialog.hpp"></File><File path="DropFileTarget.h"></File><File path="halConfig.cpp"></File><File path="halConfig.hpp"></File><File path="halEvent.cpp"></File><File path="halEvent.hpp"></File><File path="Halite.cpp"></File><File path="Halite.hpp"></File><File path="HaliteDialog.cpp"></File><File path="HaliteDialog.hpp"></File><File path="HaliteDialogBase.hpp"></File><File path="HaliteEditCtrl.hpp"></File><File path="HaliteIni.hpp"></File><File path="HaliteListManager.hpp"></File><File path="HaliteListView.cpp"></File><File path="HaliteListView.hpp"></File><File path="HaliteListViewCtrl.hpp"></File><File path="HaliteSortListViewCtrl.hpp"></File><File path="HaliteTabCtrl.hpp"></File><File path="HaliteTabPage.hpp"></File><File path="HaliteWindow.cpp"></File><File path="HaliteWindow.hpp"></File><File path="halTorrent.cpp"></File><File path="halTorrent.hpp"></File><File path="halTorrentInternal.hpp"></File><File path="halXmlRpc.cpp"></File><File path="halXmlRpc.hpp"></File><File path="NTray.cpp"></File><File path="NTray.hpp"></File><File path="ProgressDialog.hpp"></File><File path="SimpleHtml.h"></File><File path="SplashDialog.hpp"></File><File path="SSFileDialog.hpp"></File><File path="stdAfx.cpp"></File><File path="stdAfx.hpp"></File><File path="UxthemeWrapper.cpp"></File><File path="UxthemeWrapper.hpp"></File><File path="WinAPIMutex.hpp"></File><File path="WinAPIWaitableTimer.hpp"></File></MagicFolder><File path="Jamfile.v2"></File></Project> 
  • res/Halite.rc

    r259 r260  
    2626         
    2727    LTEXT           "N/A",IDC_NAME_STATUS,10,16,170,8,SS_WORDELLIPSIS 
    28  // LTEXT           "N/A",IDC_SECOND,10,28,170,8,SS_WORDELLIPSIS 
     28   LTEXT           "N/A",IDC_SECOND,10,28,170,8,SS_WORDELLIPSIS 
    2929    LTEXT           "N/A",IDC_TRANSFERED,10,40,170,8,SS_WORDELLIPSIS 
    3030    LTEXT           "N/A",IDC_REMAINING,10,52,170,8,SS_WORDELLIPSIS 
     
    271271    RTEXT           HALITE_VERSION_STRING,IDC_STATIC,145,145,129,9 
    272272    LTEXT           "",IDC_EDITABOUT,8,15,265,125 
     273    CONTROL         "",IDC_RICHEDITABOUT,"RichEdit20A",ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP,13,17,258,117 
    273274END 
    274275 
     
    431432    HAL_PAYLOAD_SUMMARY           "Total transfer including protocol overhead; %1$.2fMB down and %2$.2fMB up." 
    432433        HAL_NAME_STATUS                           "Name: %1%, %2%." 
    433         HAL_SECOND                                        "" 
     434        HAL_SECOND                                        "Connected to %1% peer(s) out of %2%. Connected to %3% seed(s)." 
    434435    HAL_TRANSFERED                                "Transfered (Overhead): %1$.2fMB (%2$.2fMB) Down, %3$.2fMB (%4$.2fMB) Up." 
    435     HAL_REMAINING                                 "Remaining: %1$.2fMB, ETA %2%." 
     436    HAL_REMAINING                                 "Remaining: %1$.2fMB of %2$.2fMB, ETA %3%." 
    436437    HAL_RATE                                      "Downloading at %1$.2fkb/s, Uploading at %2$.2fkb/s, Ratio %3$.2f." 
    437438    HAL_DHT_ON                    "%1% DHT node(s)" 
  • res/resource.h

    r259 r260  
    258258#define HAL_REMAINING                                   40108 
    259259#define HAL_RATE                                                40109 
     260#define IDC_RICHEDITABOUT                               40110 
     261 
  • src/ConfigOptions.hpp

    r234 r260  
    463463    BOOL OnInitDialog (HWND hwndFocus, LPARAM lParam) 
    464464        { 
    465                  
     465                richEdit_.Attach(GetDlgItem(IDC_RICHEDITABOUT)); 
    466466                return true; 
    467467        } 
    468468         
    469469private: 
     470        CRichEditCtrl richEdit_; 
    470471}; 
    471472 
  • src/Halite.cpp

    r255 r260  
    8080        boost::filesystem::path::default_name_check(boost::filesystem::native); 
    8181 
    82         AtlInitCommonControls(ICC_COOL_CLASSES | ICC_BAR_CLASSES); 
     82        AtlInitCommonControls(ICC_COOL_CLASSES | ICC_BAR_CLASSES);       
     83        HINSTANCE hInstRich = ::LoadLibrary(CRichEditCtrl::GetLibraryName()); 
     84        ATLASSERT(hInstRich != NULL); 
    8385    
    8486        int nRet;        
     
    164166        } 
    165167        } 
    166          
     168 
     169        ::FreeLibrary(hInstRich);        
    167170        _Module.Term(); 
    168171         
  • src/HaliteWindow.cpp

    r257 r260  
    251251                                   &hal::to_utf8);       
    252252 
    253         hal::TorrentDetails& torrents = hal::bittorrent().getTorrentDetails( 
     253        const hal::TorrentDetails& torrents = hal::bittorrent().updateTorrentDetails( 
    254254                hal::to_utf8(haliteList.manager().selected()), allSelected); 
    255255 
  • src/advtabs/Torrent.cpp

    r259 r260  
    128128        { 
    129129/*              HAL_NAME_STATUS           "Name: %1%, %2%." 
    130                 HAL_SECOND                        "" 
     130                HAL_SECOND                        "Connected to %1% peers out of %2%. %3% seeds connected." 
    131131                HAL_TRANSFERED            "Transfered (Overhead): %1$.2fMB (%2$.2fMB) Down, %3$.2fMB (%4$.2fMB) Up." 
    132                 HAL_REMAINING             "Remaining: %1$.2fMB, ETA %2%." 
     132                HAL_REMAINING             "Remaining: %1$.2fMB of %2$.2fMB, ETA %3%." 
    133133                HAL_RATE                          "Downloading at %1$.2fkb/s, Uploading at %2$.2fkb/s, Ratio %3$.2f." 
    134134*/       
     
    138138                                % torrent->filename() 
    139139                                % torrent->state()); 
     140 
     141                SetDlgItemInfo(IDC_SECOND, 
     142                        wformat(hal::app().res_wstr(HAL_SECOND))  
     143                                % torrent->peers() 
     144                                % torrent->totalPeers() 
     145                                % torrent->seeds()); 
    140146 
    141147                SetDlgItemInfo(IDC_TRANSFERED, 
     
    153159                        wformat(hal::app().res_wstr(HAL_REMAINING)) 
    154160                                % (static_cast<float>(torrent->totalWanted()-torrent->totalWantedDone())/(1024*1024)) 
     161                                % (static_cast<float>(torrent->totalWanted())/(1024*1024)) 
    155162                                % eta); 
    156163 
  • src/advtabs/Torrent.hpp

    r259 r260  
    8181 
    8282                DLGRESIZE_CONTROL(IDC_NAME_STATUS, (DLSZ_SIZE_X)) 
    83 //              DLGRESIZE_CONTROL(IDC_SECOND, (DLSZ_SIZE_X)) 
     83                DLGRESIZE_CONTROL(IDC_SECOND, (DLSZ_SIZE_X)) 
    8484                DLGRESIZE_CONTROL(IDC_TRANSFERED, (DLSZ_SIZE_X)) 
    8585                DLGRESIZE_CONTROL(IDC_REMAINING, (DLSZ_SIZE_X)) 
  • src/halConfig.cpp

    r234 r260  
    3333        { 
    3434                hal::event().post(boost::shared_ptr<hal::EventDetail>( 
    35                                 new hal::EventStdException(Event::critical, e, L"settingsThread, Load IP Filter")));  
     35                        new hal::EventStdException(Event::critical, e, L"settingsThread, Load IP Filter")));  
    3636        } 
    3737         
  • src/halTorrent.cpp

    r259 r260  
    10001000} 
    10011001 
    1002 TorrentDetails& BitTorrent::getTorrentDetails(std::string selected, std::set<std::string> allSelected) 
     1002/*const TorrentDetails& BitTorrent::getTorrentDetails(std::string selected, std::set<std::string> allSelected) 
    10031003{ 
    10041004        return updateTorrentDetails(selected, allSelected); 
    10051005} 
    1006  
    1007 TorrentDetails& BitTorrent::torrentDetails() 
     1006*/ 
     1007const TorrentDetails& BitTorrent::torrentDetails() 
    10081008{ 
    10091009        return torrentDetails_; 
    10101010} 
    10111011 
    1012 TorrentDetails& BitTorrent::updateTorrentDetails(std::string focused, std::set<std::string> selected) 
     1012const TorrentDetails& BitTorrent::updateTorrentDetails(std::string focused, std::set<std::string> selected) 
    10131013{ 
    10141014        mutex_t::scoped_lock l(torrentDetails_.mutex_);  
     
    11411141#endif   
    11421142 
    1143 #ifndef TORRENT_DISABLE_ENCRYPTION               
    1144         if (peerInfo.flags & lbt::peer_info::rc4_encrypted) 
    1145                 status_vec.push_back(app().res_wstr(HAL_PEER_RC4_ENCRYPTED));            
    1146         if (peerInfo.flags & lbt::peer_info::plaintext_encrypted) 
    1147                 status_vec.push_back(app().res_wstr(HAL_PEER_PLAINTEXT_ENCRYPTED)); 
    1148 #endif 
    1149          
    1150         if (peerInfo.flags & lbt::peer_info::interesting) 
    1151                 status_vec.push_back(app().res_wstr(HAL_PEER_INTERESTING));      
    1152         if (peerInfo.flags & lbt::peer_info::choked) 
    1153                 status_vec.push_back(app().res_wstr(HAL_PEER_CHOKED));   
    1154         if (peerInfo.flags & lbt::peer_info::remote_interested) 
    1155                 status_vec.push_back(app().res_wstr(HAL_PEER_REMOTE_INTERESTING));       
    1156         if (peerInfo.flags & lbt::peer_info::remote_choked) 
    1157                 status_vec.push_back(app().res_wstr(HAL_PEER_REMOTE_CHOKED));    
    1158         if (peerInfo.flags & lbt::peer_info::supports_extensions) 
    1159                 status_vec.push_back(app().res_wstr(HAL_PEER_SUPPORT_EXTENSIONS));       
    1160 //      if (peerInfo.flags & lbt::peer_info::local_connection)                                          // Not sure whats up here? 
    1161 //              status_vec.push_back(app().res_wstr(HAL_PEER_LOCAL_CONNECTION));                 
    11621143        if (peerInfo.flags & lbt::peer_info::handshake) 
    1163                 status_vec.push_back(app().res_wstr(HAL_PEER_HANDSHAKE));                
    1164         if (peerInfo.flags & lbt::peer_info::connecting) 
    1165                 status_vec.push_back(app().res_wstr(HAL_PEER_CONNECTING));               
    1166         if (peerInfo.flags & lbt::peer_info::queued) 
    1167                 status_vec.push_back(app().res_wstr(HAL_PEER_QUEUED)); 
    1168                  
     1144        { 
     1145                status_vec.push_back(app().res_wstr(HAL_PEER_HANDSHAKE)); 
     1146        }                
     1147        else if (peerInfo.flags & lbt::peer_info::connecting) 
     1148        { 
     1149                status_vec.push_back(app().res_wstr(HAL_PEER_CONNECTING)); 
     1150        } 
     1151        else 
     1152        { 
     1153        #ifndef TORRENT_DISABLE_ENCRYPTION               
     1154                if (peerInfo.flags & lbt::peer_info::rc4_encrypted) 
     1155                        status_vec.push_back(app().res_wstr(HAL_PEER_RC4_ENCRYPTED));            
     1156                if (peerInfo.flags & lbt::peer_info::plaintext_encrypted) 
     1157                        status_vec.push_back(app().res_wstr(HAL_PEER_PLAINTEXT_ENCRYPTED)); 
     1158        #endif 
     1159                 
     1160                if (peerInfo.flags & lbt::peer_info::interesting) 
     1161                        status_vec.push_back(app().res_wstr(HAL_PEER_INTERESTING));      
     1162                if (peerInfo.flags & lbt::peer_info::choked) 
     1163                        status_vec.push_back(app().res_wstr(HAL_PEER_CHOKED));   
     1164                if (peerInfo.flags & lbt::peer_info::remote_interested) 
     1165                        status_vec.push_back(app().res_wstr(HAL_PEER_REMOTE_INTERESTING));       
     1166                if (peerInfo.flags & lbt::peer_info::remote_choked) 
     1167                        status_vec.push_back(app().res_wstr(HAL_PEER_REMOTE_CHOKED));    
     1168                if (peerInfo.flags & lbt::peer_info::supports_extensions) 
     1169                        status_vec.push_back(app().res_wstr(HAL_PEER_SUPPORT_EXTENSIONS));       
     1170        //      if (peerInfo.flags & lbt::peer_info::local_connection)                                          // Not sure whats up here? 
     1171        //              status_vec.push_back(app().res_wstr(HAL_PEER_LOCAL_CONNECTION));                         
     1172                if (peerInfo.flags & lbt::peer_info::queued) 
     1173                        status_vec.push_back(app().res_wstr(HAL_PEER_QUEUED)); 
     1174        } 
     1175         
    11691176        seed = (peerInfo.flags & lbt::peer_info::seed) ? true : false; 
    11701177         
     
    11881195         
    11891196        if (i != pimpl->torrents.end()) 
    1190         { 
    1191                 std::vector<lbt::peer_info> peerInfo; 
    1192                 (*i).second.handle().get_peer_info(peerInfo); 
    1193                  
    1194                 for (std::vector<lbt::peer_info>::iterator j = peerInfo.begin();  
    1195                         j != peerInfo.end(); ++j) 
    1196                 { 
    1197                         peerContainer.push_back(PeerDetail(*j)); 
    1198                 }                
    1199         } 
     1197                (*i).second.getPeerDetails(peerContainer); 
    12001198         
    12011199        } HAL_GENERIC_TORRENT_EXCEPTION_CATCH(filename, "getAllPeerDetails") 
  • src/halTorrent.hpp

    r252 r260  
    6969public: 
    7070        TorrentDetail(std::wstring f, std::wstring s, std::wstring cT, std::pair<float,float> sp=std::pair<float,float>(0,0), 
    71                         float c=0, float d=0, boost::int64_t tWD=0, boost::int64_t tW=0, boost::int64_t tU=0, boost::int64_t tpU=0, boost::int64_t tD=0, boost::int64_t tpD=0, int p=0, int sd=0, float r=0,  
     71                        float c=0, float d=0, boost::int64_t tWD=0, boost::int64_t tW=0, boost::int64_t tU=0, boost::int64_t tpU=0, boost::int64_t tD=0, boost::int64_t tpD=0, int prs=0, int prsCnt=0, int sds=0, int sdsCnt=0, float r=0,  
    7272                        time_duration eta=boost::posix_time::seconds(0), time_duration uIn=boost::posix_time::seconds(0)) : 
    7373                filename_(f), 
     
    8383                totalDownloaded_(tD), 
    8484                totalPayloadDownloaded_(tpD), 
    85                 peers_(p), 
    86                 seeds_(sd), 
     85                peers_(prs), 
     86                connectedPeers_(prsCnt), 
     87                seeds_(sds), 
     88                connectedSeeds_(sdsCnt), 
    8789                ratio_(r), 
    8890                estimatedTimeLeft_(eta), 
     
    117119        const boost::int64_t& totalWanted() const { return totalWanted_; } 
    118120         
    119         const int& peers() const { return peers_; } 
    120         const int& seeds() const { return seeds_; } 
     121        int peers() const { return peers_; } 
     122        int peersConnected() const { return connectedPeers_; } 
     123        int seeds() const { return seeds_; } 
     124        int seedsConnected() const { return connectedSeeds_; } 
    121125         
    122126        float ratio() { return ratio_; } 
     
    144148         
    145149        int peers_; 
     150        int connectedPeers_; 
    146151        int seeds_; 
     152        int connectedSeeds_; 
    147153         
    148154        float ratio_; 
     
    288294        TorrentDetail_ptr getTorrentDetail_vec(std::string filename);    
    289295         
    290         TorrentDetails& getTorrentDetails(std::string selected, std::set<std::string> allSelected); 
    291          
    292296        void setTorrentRatio(std::string, float ratio); 
    293297        float getTorrentRatio(std::string); 
     
    333337        float defTorrentDownload(); 
    334338        float defTorrentUpload();        
    335          
    336         TorrentDetails& torrentDetails(); 
    337         TorrentDetails& updateTorrentDetails(std::string focused, std::set<std::string> selected); 
     339 
     340        const TorrentDetails& torrentDetails(); 
     341//      const TorrentDetails& getTorrentDetails(std::string selected, std::set<std::string> allSelected);        
     342        const TorrentDetails& updateTorrentDetails(std::string focused, std::set<std::string> selected); 
    338343         
    339344private: 
  • src/halTorrentInternal.hpp

    r243 r260  
    254254                applyTrackers(); 
    255255        } 
    256          
     256 
    257257        bool inSession() const { return in_session_; } 
    258258        const wstring& saveDirectory() { return save_directory_; } 
     
    311311        } 
    312312         
     313        std::vector<lbt::peer_info>& peers() { return peers_; } 
     314         
     315        void updatePeers() const 
     316        { 
     317                if (in_session_) 
     318                        handle_.get_peer_info(peers_); 
     319        } 
     320         
    313321        void getPeerDetails(PeerDetails& peerDetails) const 
    314322        { 
    315323                if (in_session_) 
    316                 { 
    317                         std::vector<lbt::peer_info> peerInfo; 
    318                         handle_.get_peer_info(peerInfo); 
    319                          
    320                         foreach (lbt::peer_info peer, peerInfo)  
     324                        foreach (lbt::peer_info peer, peers_)  
    321325                        { 
    322326                                peerDetails.push_back(peer); 
    323327                        }        
    324                 } 
    325328        } 
    326329         
     
    357360        std::vector<TrackerDetail> trackers_; 
    358361        std::vector<lbt::announce_entry> torrent_trackers_; 
     362        mutable std::vector<lbt::peer_info> peers_; 
    359363}; 
    360364 
     
    462466                downloaded_.update(tS.total_download); 
    463467                payloadDownloaded_.update(tS.total_payload_download); 
     468                 
     469                updatePeers(); 
     470                 
     471                size_t totalPeers = 0; 
     472                size_t peersConnected = 0; 
     473                size_t totalSeeds = 0; 
     474                size_t seedsConnected = 0; 
     475                 
     476                foreach (lbt::peer_info peer, peers_)  
     477                { 
     478                        float speedSum = peer.down_speed + peer.up_speed; 
     479                         
     480                        if (!peer.flags & lbt::peer_info::seed) 
     481                        { 
     482                                ++totalPeers; 
     483                                 
     484                                if (speedSum > 0) 
     485                                        ++peersConnected; 
     486                        } 
     487                        else 
     488                        { 
     489                                ++totalSeeds; 
     490                                 
     491                                if (speedSum > 0) 
     492                                        ++seedsConnected; 
     493                        } 
     494                }                        
    464495 
    465496                return TorrentDetail_ptr(new TorrentDetail(filename_, state, hal::from_utf8(tS.current_tracker),  
    466497                        pair<float, float>(tS.download_payload_rate, tS.upload_payload_rate), 
    467498                        tS.progress, tS.distributed_copies, tS.total_wanted_done, tS.total_wanted, uploaded_, payloadUploaded_, 
    468                         downloaded_, payloadDownloaded_, tS.num_peers, tS.num_seeds, ratio_, td, tS.next_announce)); 
     499                        downloaded_, payloadDownloaded_, totalPeers, peersConnected, totalSeeds, seedsConnected, ratio_, td, tS.next_announce)); 
    469500        } 
    470501        else 
Note: See TracChangeset for help on using the changeset viewer.