Changeset 725


Ignore:
Timestamp:
02/20/09 15:36:55 (11 years ago)
Author:
Eoin
Message:

Autosorting working.

Location:
trunk/src
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/HaliteListView.cpp

    r723 r725  
    119119        if (lock)  
    120120        {                
    121          
    122         int col_sort_index = GetSortColumn(); 
    123  
    124         // Perform external ListView sort here. 
    125         if (col_sort_index != -1) 
    126         {                
     121 
     122        selection_from_listview(); 
     123                 
     124        std::set<std::wstring> torrent_set; 
     125        for (size_t td_index=0, e=tD.torrents().size(); td_index<e; ++td_index) 
     126        { 
     127                hal::torrent_details_ptr td = tD.torrents()[td_index]; 
     128                torrent_set.insert(td->name()); 
     129        } 
     130         
     131        erase_based_on_set(torrent_set, true);   
     132 
     133        if (IsSortOnce() || AutoSort()) 
     134        { 
    127135                if (GetSecondarySortColumn() != -1) 
    128136                { 
    129                         int index = GetColumnSortType(GetSecondarySortColumn()); 
    130                          
    131                         if (index > WTL::LVCOLSORT_LAST); 
     137                        int index = GetColumnSortType(GetSecondarySortColumn());                                         
     138                        if (index > WTL::LVCOLSORT_LAST) 
    132139                                sort(index - (WTL::LVCOLSORT_LAST+1+hal::torrent_details::name_e), IsSecondarySortDescending()); 
    133140                } 
    134141 
    135                 int index = GetColumnSortType(col_sort_index); 
    136                  
    137                 if (index > WTL::LVCOLSORT_LAST); 
    138                         sort(index - (WTL::LVCOLSORT_LAST+1+hal::torrent_details::name_e), IsSortDescending()); 
    139         } 
    140  
    141         if (queue_view_); 
    142 //              sort(hal::torrent_details::managed_e, false); 
    143  
    144         bool sort_once = IsSortOnce(); 
    145  
    146         hal::win_c_str<std::wstring> str(MAX_PATH); 
    147         GetItemText(4, 0, str, str.size()); 
    148         HAL_DEV_MSG(hal::wform(L" >> set name %1%") % str.str()); 
    149  
    150         //selection_from_listview(); 
    151          
    152         // Update details here. 
     142                if (GetSortColumn() != -1) 
     143                {                
     144                        int index = GetColumnSortType(GetSortColumn());                          
     145                        if (index > WTL::LVCOLSORT_LAST) 
     146                                sort(index - (WTL::LVCOLSORT_LAST+1+hal::torrent_details::name_e), IsSortDescending()); 
     147                } 
     148        } 
     149         
     150        if (queue_view_) 
     151                sort(hal::torrent_details::managed_e, false); 
     152 
     153        set_keys(torrent_set);   
     154        InvalidateRect(NULL,true); 
     155 
     156/*      // Update details here. 
    153157        for (size_t td_index=0, e=tD.torrents().size(); td_index<e; ++td_index) 
    154158        { 
     
    188192                InvalidateRect(NULL,true); 
    189193        } 
    190  
     194*/ 
    191195        } 
    192196} 
  • trunk/src/HaliteSortListViewCtrl.hpp

    r723 r725  
    3939#include "HaliteUpdateLock.hpp" 
    4040 
    41 namespace hal 
    42 { 
    43 /* 
    44 template<typename T> 
    45 int compare(const T& l, const T& r) 
    46 { 
    47         if (l == r)  
    48                 return 0; 
    49         else if (l > r)  
    50                 return 1; 
    51         else  
    52                 return -1; 
    53 } 
    54 */ 
    55  
    56 } 
    5741template <class TBase, typename DataType=void*> 
    5842class CHaliteSortListViewCtrl :  
     
    116100        }; 
    117101         
    118 /*      struct ColumnAdapter 
    119         { 
    120                 virtual int compare(AdapterType& l, AdapterType& r) = 0; 
    121                 virtual std::wstring print(AdapterType& t) = 0; 
    122         }; 
    123 */ 
    124  
    125102public: 
    126103        typedef WTLx::selection_manager<thisClass, std::wstring> SelectionManager; 
     
    128105         
    129106        thisClass() : 
    130         //      manager_(*this), 
    131107                header_(*this), 
    132108                update_lock_(0), 
     
    356332        bool DoSortItemsExternal(int iCol, bool bDescending = false) 
    357333        { 
    358                 HAL_DEV_MSG(hal::wform(L"sort_once_ = %1%") % sort_once_); 
     334                HAL_DEV_SORT_MSG(hal::wform(L"sort_once_ = %1%") % sort_once_); 
    359335 
    360336                sort_once_ = true; 
     
    513489 
    514490        BOOST_SERIALIZATION_SPLIT_MEMBER() 
    515  
    516 //      const SelectionManager& manager() { return manager_; } 
    517491                 
    518492        std::vector<int>& ListColumnWidth() { return listColumnWidth_; } 
     
    524498        bool CanUpdate() const { return updateLock_ == 0; } 
    525499         
    526 //      void clearFocused() { manager_.clear(); } 
    527 //      void clearSelected() { manager_.clear_all_selected(); } 
    528 //      void clearAll() { manager_.clear_all(); } 
    529          
    530 /*      int CompareItemsCustom(LVCompareParam* pItem1, LVCompareParam* pItem2, int iSortCol) 
    531         { 
    532                 hal::mutex_update_lock<thisClass> lock(*this); 
    533                  
    534                 TBase* pT = static_cast<TBase*>(this); 
    535                  
    536                 AdapterType left = pT->CustomItemConversion(pItem1, iSortCol); 
    537                 AdapterType right = pT->CustomItemConversion(pItem2, iSortCol); 
    538                  
    539                 return pT->CustomItemComparision(left, right, iSortCol); 
    540         } 
    541 */ 
    542500        bool AutoSort() { return auto_sort_; } 
    543501         
    544 /*      void ConditionallyDoAutoSort() 
    545         { 
    546                 int iCol = GetSortColumn(); 
    547                 if (AutoSort() && iCol >= 0 && iCol < m_arrColSortType.GetSize()) 
    548                         DoSortItems(iCol, IsSortDescending());   
    549         } 
    550 */               
    551 /*      ColumnAdapter* getColumnAdapter(size_t index) 
    552         { 
    553                 boost::ptr_map<size_t, ColumnAdapter>::iterator  
    554                         i = column_adapters_.find(index); 
    555          
    556                 if (i != column_adapters_.end()) 
    557                 { 
    558                         return i->second; 
    559                 }                
    560                 return NULL; 
    561         } 
    562 */ 
    563502        static bool is_selected (const winstl::listview_sequence::sequence_value_type& v)  
    564503        {  
     
    566505        } 
    567506 
    568 protected:       
    569 /*      inline void* CustomItemConversion(LVCompareParam* param, int iSortCol) 
    570         { 
    571                 assert(false); 
    572                 return NULL; 
    573         } 
    574          
    575         int CustomItemComparision(AdapterType left, AdapterType right, int iSortCol) 
    576         { 
    577                 ColumnAdapter* pCA = getColumnAdapter(iSortCol); 
    578                  
    579                 if (pCA) 
    580                         return pCA->compare(left, right); 
    581                 else  
    582                         return 0; 
    583         } 
    584 */ 
    585 /*      void regColumnAdapter(size_t key, ColumnAdapter* colAdapter) 
    586         { 
    587                 assert (colAdapter); 
    588                 column_adapters_.insert(key, colAdapter); 
    589         } 
    590 */ 
    591 //      AdapterType convert(const LPLVITEM item); 
    592 //      void convert(LPLVITEM item, AdapterType adapter); 
    593          
     507protected:               
    594508        mutable int update_lock_; 
    595509        mutable hal::mutex_t mutex_; 
     
    598512        friend class hal::try_update_lock<thisClass>;    
    599513 
    600 //      SelectionManager manager_; 
    601514        WTL::CMenu menu_; 
    602515        CHaliteHeaderCtrl header_;       
     
    676589                if (index) 
    677590                { 
    678                         HAL_DEV_MSG(hal::wform(L"Existing index %1%, key %3%, selected %2%") % *index % (*i).first % key); 
     591                        HAL_DEV_SORT_MSG(hal::wform(L"Existing index %1%, key %3%, selected %2%") % *index % (*i).first % key); 
    679592 
    680593                        if ((*i).first) 
     
    697610                        SetItemState(list_item_index, 0, LVIS_SELECTED); 
    698611 
    699                         HAL_DEV_MSG(hal::wform(L"New index %1%, key %3%, selected %2%") % list_item_index % false % key); 
     612                        HAL_DEV_SORT_MSG(hal::wform(L"New index %1%, key %3%, selected %2%") % list_item_index % false % key); 
    700613 
    701614                        return list_item_index; 
     
    722635 
    723636                         
    724                         HAL_DEV_MSG(hal::wform(L" Name %1%, index %2%, selected %3%") % val.text() % val.index() % i_pos.first); 
    725                 } 
    726                  
    727                 HAL_DEV_MSG(hal::wform(L" -----")); 
     637                        HAL_DEV_SORT_MSG(hal::wform(L" Name %1%, index %2%, selected %3%") % key_from_index(val.index()) % val.index() % i_pos.first); 
     638                } 
     639                 
     640                HAL_DEV_SORT_MSG(hal::wform(L" -----")); 
    728641        } 
    729642 
    730643        void sort(size_t index, bool ascending) 
    731644        {        
    732                 selection_from_listview(); 
    733645                std::vector<implicit_reference_wrapper<const list_pair_t> > sv; 
    734646 
  • trunk/src/advtabs/Peers.cpp

    r723 r725  
    2424} 
    2525 
    26  
    2726LRESULT PeerListView::OnGetDispInfo(int, LPNMHDR pnmh, BOOL&) 
    2827{        
    2928        NMLVDISPINFO* pdi = (NMLVDISPINFO*)pnmh; 
    3029 
    31 //      HAL_DEV_MSG(hal::wform(L"OnGetDispInfo index = %1% size = %2%") % pdi->item.iItem % peer_details_.size()); 
     30        HAL_DEV_SORT_MSG(hal::wform(L"OnGetDispInfo index = %1% size = %2%") % pdi->item.iItem % peer_details_.size()); 
    3231 
    3332        hal::try_update_lock<listClass> lock(*this); 
     
    7170                erase_based_on_set(ip_set, true); 
    7271 
    73                 int col_sort_index = GetSortColumn(); 
    74  
    75                 if (col_sort_index != -1) 
    76                 {                
     72                if (IsSortOnce() || AutoSort()) 
     73                { 
    7774                        if (GetSecondarySortColumn() != -1) 
    7875                        { 
    79                                 int index = GetColumnSortType(GetSecondarySortColumn()); 
    80                                  
    81                                 if (index > WTL::LVCOLSORT_LAST); 
    82                         //              sort(index - (WTL::LVCOLSORT_LAST+1+hal::peer_detail::ip_address_e), IsSecondarySortDescending()); 
     76                                int index = GetColumnSortType(GetSecondarySortColumn());                                         
     77                                if (index > WTL::LVCOLSORT_LAST) 
     78                                        sort(index - (WTL::LVCOLSORT_LAST+1+hal::peer_detail::ip_address_e), IsSecondarySortDescending()); 
    8379                        } 
    8480 
    85                         int index = GetColumnSortType(col_sort_index); 
    86                          
    87                         if (index > WTL::LVCOLSORT_LAST); 
    88                                 sort(index - (WTL::LVCOLSORT_LAST+1+hal::peer_detail::ip_address_e), IsSortDescending()); 
     81                        if (GetSortColumn() != -1) 
     82                        {                
     83                                int index = GetColumnSortType(GetSortColumn());                          
     84                                if (index > WTL::LVCOLSORT_LAST) 
     85                                        sort(index - (WTL::LVCOLSORT_LAST+1+hal::peer_detail::ip_address_e), IsSortDescending()); 
     86                        } 
    8987                } 
    90  
    91                 bool sort_once = IsSortOnce(); 
    9288                 
    93                 set_keys(ip_set); 
    94                  
    95         //      SetItemCountEx(peer_details_.size(), LVSICF_NOSCROLL); 
     89                set_keys(ip_set);                
    9690                InvalidateRect(NULL,true); 
    97  
    98  
    99         /*      if (AutoSort() && col_sort_index >= 0 && col_sort_index < m_arrColSortType.GetSize()) 
    100                 { 
    101                         if (GetColumnSortType(col_sort_index) <= WTL::LVCOLSORT_CUSTOM) 
    102                                 DoSortItems(col_sort_index, IsSortDescending()); 
    103                 }*/ 
    10491        } 
    10592} 
  • trunk/src/advtabs/Peers.hpp

    r723 r725  
    8282 
    8383                for (unsigned i=0, e = hal::peer_detail::status_e-hal::peer_detail::ip_address_e; i <= e; ++i) 
    84                         SetColumnSortType(i, i + (WTL::LVCOLSORT_LAST+1+hal::peer_detail::ip_address_e), NULL);          
     84                        SetColumnSortType(i, i + (WTL::LVCOLSORT_LAST+1+hal::peer_detail::ip_address_e));                
    8585 
    8686        //      SetColumnSortType(2, hal::peer_detail::speed_down_e + (WTL::LVCOLSORT_LAST+1+hal::peer_detail::ip_address_e), NULL);             
Note: See TracChangeset for help on using the changeset viewer.