Changeset 721


Ignore:
Timestamp:
02/13/09 13:32:44 (11 years ago)
Author:
Eoin
Message:

Going to switch peers listview over the IP address key as before.

Location:
trunk/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/HaliteListView.cpp

    r720 r721  
    129129                        int index = GetColumnSortType(GetSecondarySortColumn()); 
    130130                         
    131                         if (index > WTL::LVCOLSORT_LAST) 
     131                        if (index > WTL::LVCOLSORT_LAST); 
    132132                                sort(index - (WTL::LVCOLSORT_LAST+1+hal::torrent_details::name_e), IsSecondarySortDescending()); 
    133133                } 
     
    135135                int index = GetColumnSortType(col_sort_index); 
    136136                 
    137                 if (index > WTL::LVCOLSORT_LAST) 
     137                if (index > WTL::LVCOLSORT_LAST); 
    138138                        sort(index - (WTL::LVCOLSORT_LAST+1+hal::torrent_details::name_e), IsSortDescending()); 
    139139        } 
    140140 
    141         if (queue_view_) 
    142                 sort(hal::torrent_details::managed_e, false); 
     141        if (queue_view_); 
     142//              sort(hal::torrent_details::managed_e, false); 
    143143 
    144144        bool sort_once = IsSortOnce(); 
     
    148148        HAL_DEV_MSG(hal::wform(L" >> set name %1%") % str.str()); 
    149149 
     150        selection_from_listview(); 
     151         
    150152        // Update details here. 
    151153        for (size_t td_index=0, e=tD.torrents().size(); td_index<e; ++td_index) 
     
    182184                lvItem.mask |= LVIF_IMAGE; 
    183185                lvItem.iImage = 0; 
    184                 item_pos = InsertKeyItem(td->name(), &lvItem); 
     186                item_pos = set_key_item(td->name(), &lvItem); 
    185187 
    186188                InvalidateRect(NULL,true); 
  • trunk/src/HaliteSortListViewCtrl.hpp

    r720 r721  
    621621 
    622622        struct by_key {}; 
    623         typedef std::pair<bool, DataType> list_pair_t; 
     623 
     624        template <typename T> 
     625        struct first_mutable_pair 
     626        { 
     627                first_mutable_pair(const bool& f, const T& s) : 
     628                        first(f), 
     629                        second(s) 
     630                {} 
     631 
     632                mutable bool first; 
     633                T second; 
     634        }; 
     635        typedef first_mutable_pair<DataType> list_pair_t; 
    624636 
    625637        typedef boost::multi_index_container< 
     
    635647        typedef typename pair_container::index_iterator<by_key>::type key_iterator; 
    636648 
    637         int InsertKeyItem(DataType key) 
     649        int set_key(DataType key) 
    638650        { 
    639651                LVITEM lvItem = { 0 }; 
     
    643655                lvItem.iSubItem = 0; 
    644656 
    645                 return InsertKeyItem(key, &lvItem); 
    646         } 
    647  
    648         int InsertKeyItem(DataType key, LVITEM* pItem) 
     657                return set_key_item(key, &lvItem); 
     658        } 
     659 
     660        int set_key_item(DataType key, LVITEM* pItem) 
    649661        { 
    650662                key_iterator i = pair_container_.get<by_key>().find(key); 
     
    658670                        pItem->iItem = list_item_index; 
    659671 
     672                        HAL_DEV_SORT_MSG(hal::wform(L" index %1%, selected %2%") % list_item_index % (*i).first); 
     673 
    660674                        if ((*i).first) 
    661675                        { 
    662                                 pItem->stateMask |= LVIS_SELECTED; 
    663                                 pItem->state |= LVIS_SELECTED; 
     676                                SetItemState(list_item_index, LVIS_SELECTED, LVIS_SELECTED); 
     677                        //      pItem->stateMask |= LVIS_SELECTED; 
     678                        //      pItem->state |= LVIS_SELECTED; 
    664679                        } 
    665  
    666                         SetItem(pItem); 
    667  
    668                         hal::win_c_str<std::wstring> str(MAX_PATH); 
    669                         GetItemText(4, 0, str, str.size()); 
     680                        else 
     681                                SetItemState(list_item_index, 0, LVIS_SELECTED); 
    670682                } 
    671683                else 
     
    674686 
    675687                        bool selected = (pItem->stateMask & LVIS_SELECTED) && (pItem->state & LVIS_SELECTED); 
    676                         list_pair_t lp = std::make_pair(selected, key); 
     688                        list_pair_t lp = list_pair_t(selected, key); 
    677689 
    678690                        pair_container_.push_back(lp); 
    679691 
    680                         pItem->iItem = list_item_index; 
    681                         int list_pos = InsertItem(pItem); 
     692                        SetItemCountEx(pair_container_.size(), LVSICF_NOSCROLL); 
     693                        SetItemState(list_item_index, 0, LVIS_SELECTED); 
    682694                } 
    683695 
     
    697709                foreach(const list_value_type val, std::make_pair(const_begin(), const_end())) 
    698710                { 
    699                         list_pair_t pi = pair_container_[val.index()]; 
     711                        const list_pair_t& i_pos = pair_container_.get<0>()[val.index()]; 
    700712 
    701713                        if (val.state() & LVIS_SELECTED) 
    702                                 pi.first = true; 
     714                                i_pos.first = true; 
    703715                        else 
    704                                 pi.first = false; 
    705                 } 
     716                                i_pos.first = false; 
     717 
     718                         
     719                        HAL_DEV_SORT_MSG(hal::wform(L" Name %1%, index %2%, selected %3%") % val.text() % val.index() % i_pos.first); 
     720                } 
     721                 
     722                HAL_DEV_SORT_MSG(hal::wform(L" -----")); 
    706723        } 
    707724 
     
    724741 
    725742                return pi.second; 
     743        } 
     744 
     745        boost::optional<size_t> index_from_key(const DataType& key) 
     746        { 
     747                key_iterator i = pair_container_.get<by_key>().find(key);        
     748                 
     749                if (i != pair_container_.get<by_key>().end()) 
     750                { 
     751                        pair_container::iterator i_pos = pair_container_.project<0>(i);  
     752                        return = std::distance(pair_container_.begin(), i_pos); 
     753                } 
     754                else 
     755                        return boost::optional<size_t>(); 
    726756        } 
    727757 
  • trunk/src/advtabs/Peers.cpp

    r720 r721  
    2424LRESULT PeerListView::OnGetDispInfo(int, LPNMHDR pnmh, BOOL&) 
    2525{        
     26        NMLVDISPINFO* pdi = (NMLVDISPINFO*)pnmh; 
     27 
     28        HAL_DEV_MSG(hal::wform(L"OnGetDispInfo index = %1% size = %2%") % pdi->item.iItem % peer_details_.size()); 
     29 
    2630        hal::try_update_lock<listClass> lock(*this); 
    27         if (lock)  
     31        if (lock && peer_details_.size() >= pdi->item.iItem)  
    2832        {        
    2933 
    30         NMLVDISPINFO* pdi = (NMLVDISPINFO*)pnmh; 
    3134        hal::peer_detail& pd = peer_details_[pdi->item.iItem]; 
    3235 
     
    8891                                int index = GetColumnSortType(GetSecondarySortColumn()); 
    8992                                 
    90                                 if (index > WTL::LVCOLSORT_LAST) 
    91                                         sort(index - (WTL::LVCOLSORT_LAST+1+hal::peer_detail::ip_address_e), IsSecondarySortDescending()); 
     93                                if (index > WTL::LVCOLSORT_LAST); 
     94                        //              sort(index - (WTL::LVCOLSORT_LAST+1+hal::peer_detail::ip_address_e), IsSecondarySortDescending()); 
    9295                        } 
    9396 
    9497                        int index = GetColumnSortType(col_sort_index); 
    9598                         
    96                         if (index > WTL::LVCOLSORT_LAST) 
    97                                 sort(index - (WTL::LVCOLSORT_LAST+1+hal::peer_detail::ip_address_e), IsSortDescending()); 
     99                        if (index > WTL::LVCOLSORT_LAST); 
     100                //              sort(index - (WTL::LVCOLSORT_LAST+1+hal::peer_detail::ip_address_e), IsSortDescending()); 
    98101                } 
    99102 
    100103                bool sort_once = IsSortOnce(); 
    101104                 
    102                 SetItemCountEx(peer_details_.size(), LVSICF_NOSCROLL); 
    103                 InvalidateRect(NULL,true); 
     105        //      SetItemCountEx(peer_details_.size(), LVSICF_NOSCROLL); 
     106        //      InvalidateRect(NULL,true); 
    104107 
    105                 return; 
     108        //      return; 
     109                erase_all_from_list(); 
    106110 
    107111                // Add additional details        
     
    115119                                % AutoSort() % sort_once % (!AutoSort() && !sort_once)); 
    116120 
    117                         if (!AutoSort() && !sort_once) 
     121        /*              if (!AutoSort() && !sort_once) 
    118122                        { 
    119123                                LV_FINDINFO findInfo;  
     
    127131                                item_pos = AddItem(GetItemCount(), 0, pd.to_wstring(hal::peer_detail::ip_address_e).c_str(), 0); 
    128132                         
    129                          
     133        */               
    130134                        HAL_DEV_SORT_MSG(hal::wform(L"item_pos = %1%") % item_pos); 
    131                         item_pos = InsertKeyItem(index); 
     135                        item_pos = set_key(index); 
    132136 
    133                         InvalidateRect(NULL,true); 
     137                        InvalidateRect(NULL, true); 
    134138 
    135139        /*              SetItemData(item_pos, index);                    
Note: See TracChangeset for help on using the changeset viewer.