Ignore:
Timestamp:
12/26/08 21:23:19 (11 years ago)
Author:
Eoin
Message:

Peer list sorting fixed and so more naming conventions consistency work.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/advtabs/Peers.cpp

    r658 r659  
    1818        if (lock)  
    1919        {                
    20                 peerDetails_.clear(); 
     20                peer_details_.clear(); 
    2121                 
    2222                foreach (const hal::torrent_details_ptr torrent, tD.selectedTorrents()) 
    2323                { 
    24                         std::copy(torrent->peerDetails().begin(), torrent->peerDetails().end(),  
    25                                 std::back_inserter(peerDetails_)); 
     24                        std::copy(torrent->get_peer_details().begin(), torrent->get_peer_details().end(),  
     25                                std::back_inserter(peer_details_)); 
    2626                } 
    2727                 
    28                 std::sort(peerDetails_.begin(), peerDetails_.end()); 
     28                std::sort(peer_details_.begin(), peer_details_.end()); 
    2929                 
    3030                // Wipe details not present 
     
    3434                        GetItemText(i, 0, ip_address.c_array(), MAX_PATH); 
    3535                         
    36                         hal::PeerDetail ip(ip_address.data()); 
    37                         hal::PeerDetails::iterator iter =  
    38                                 std::lower_bound(peerDetails_.begin(), peerDetails_.end(), ip); 
     36                        hal::peer_detail ip(ip_address.data()); 
     37                        hal::peer_details_vec::iterator iter =  
     38                                std::lower_bound(peer_details_.begin(), peer_details_.end(), ip); 
    3939                         
    40                         if (iter == peerDetails_.end() || !((*iter) == ip)) 
     40                        if (iter == peer_details_.end() || !((*iter) == ip)) 
    4141                        { 
    4242                                DeleteItem(i); 
     
    4444                        else 
    4545                        { 
    46                                 SetItemData(i, std::distance(peerDetails_.begin(), iter)); 
     46                                SetItemData(i, std::distance(peer_details_.begin(), iter)); 
    4747                                ++i; 
    4848                        } 
    4949                } 
    50                  
     50                         
    5151                int col_sort_index = GetSortColumn(); 
    5252 
    53                 // Add additional details 
    54                 for (hal::PeerDetails::iterator i=peerDetails_.begin(), e=peerDetails_.end(); 
    55                         i != e; ++i) 
    56                 {                        
    57                         LV_FINDINFO findInfo;  
    58                         findInfo.flags = LVFI_STRING; 
    59                         findInfo.psz = const_cast<LPTSTR>((*i).ipAddress.c_str()); 
     53                if (col_sort_index != -1) 
     54                {                
     55                        int index = GetColumnSortType(col_sort_index); 
    6056                         
    61                         int itemPos = FindItem(&findInfo, -1); 
    62                         if (itemPos < 0) 
    63                                 itemPos = AddItem(GetItemCount(), 0, (*i).ipAddress.c_str(), 0); 
     57                        HAL_DEV_MSG(hal::wform(L"col_sort_index() = %1%, index() = %2%")  
     58                                % col_sort_index % index); 
     59 
     60                        if (index > WTL::LVCOLSORT_LAST) 
     61                                hal::peer_details_sort(peer_details_, index - (WTL::LVCOLSORT_LAST+1+hal::peer_detail::ip_address_e),  
     62                                        IsSortDescending()); 
     63                } 
     64 
     65                bool sort_once = IsSortOnce(); 
     66 
     67                // Add additional details        
     68                for (size_t index = 0, e = peer_details_.size(); index < e; ++index) 
     69                { 
     70                        hal::peer_detail& pd = peer_details_[index]; 
     71                 
     72                        int item_pos = index; 
     73                 
     74                        HAL_DEV_SORT_MSG(hal::wform(L"AutoSort() = %1%, SortOnce() = %2%, !AutoSort() && !SortOnce() = %3%")  
     75                                % AutoSort() % sort_once % (!AutoSort() && !sort_once)); 
     76 
     77                        if (!AutoSort() && !sort_once) 
     78                        { 
     79                                LV_FINDINFO findInfo;  
     80                                findInfo.flags = LVFI_STRING; 
     81                                findInfo.psz = const_cast<LPTSTR>(pd.to_wstring(hal::peer_detail::ip_address_e).c_str()); 
     82                                 
     83                                item_pos = FindItem(&findInfo, -1); 
     84                        } 
     85 
     86                        if (item_pos == -1 || item_pos > GetItemCount()) 
     87                                item_pos = AddItem(GetItemCount(), 0, pd.to_wstring(hal::peer_detail::ip_address_e).c_str(), 0); 
    6488                         
    65                         SetItemData(itemPos, std::distance(peerDetails_.begin(), i)); 
    6689                         
    67                         SetItemText(itemPos, 1, (*i).country.c_str()); 
    68                          
    69                         SetItemText(itemPos, 2, getColumnAdapter(2)->print(*i).c_str()); 
    70                          
    71                         SetItemText(itemPos, 3, getColumnAdapter(3)->print(*i).c_str()); 
    72                          
    73                         if ((*i).seed) 
    74                                 SetItemText(itemPos, 4, L"Seed"); 
    75                          
    76                         SetItemText(itemPos, 5, (*i).client.c_str()); 
    77                          
    78                         SetItemText(itemPos, 6, (*i).status.c_str()); 
     90                        HAL_DEV_SORT_MSG(hal::wform(L"item_pos = %1%") % item_pos); 
     91 
     92                        SetItemData(item_pos, index);                    
     93 
     94                        for (size_t i = 0; i < 7; ++i) 
     95                        { 
     96                                SetItemText(item_pos, i, pd.to_wstring(i).c_str()); 
     97                        } 
    7998                } 
    8099                 
     
    85104                } 
    86105        } 
     106} 
     107 
     108LRESULT PeerListView::OnSortChanged(int, LPNMHDR pnmh, BOOL&) 
     109{ 
     110        halite_window_.issueUiUpdate(); 
     111         
     112        return 0; 
    87113} 
    88114 
Note: See TracChangeset for help on using the changeset viewer.