Ignore:
Timestamp:
11/01/08 14:05:03 (11 years ago)
Author:
Eoin
Message:

ListView? grouping works. But a lacking on the API side means it's incompatible with sorting!

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/HaliteListView.cpp

    r612 r614  
    2020#define HAL_CUSTOMDRAW_TITLEDATA 1000000000 
    2121 
     22#define HAL_AUTO_MANAGED 1 
     23#define HAL_UNMANAGED 2 
     24 
    2225HaliteListViewCtrl::HaliteListViewCtrl(HaliteWindow& HalWindow) : 
    2326        halWindow_(HalWindow), 
     
    3841        boost::split(names, column_names, boost::is_any_of(L";")); 
    3942         
    40         array<int, NumberOfColumns_s> widths = {100,110,60,60,60,42,45,61,45,45,45,45,45,45,45,45,45,45,45,45,45,45}; 
     43        array<int, NumberOfColumns_s> widths = {100,110,60,60,60,42,45,61,45,45,45,45,45,45,45,45,45,45,45,45,45,30,45}; 
    4144        array<bool, NumberOfColumns_s> visible = {true,true,true,true,true,true,true,true,true,true,true,\ 
    42                 true,true,true,true,true,true,true,true,true,true,true}; 
     45                true,true,true,true,true,true,true,true,true,true,true,true}; 
    4346 
    4447        for (int i=0, e=NumberOfColumns_s; i < e; ++i) 
     
    4851 
    4952 
    50 //      int ret = EnableGroupView(true); 
    51 /*      if (IsGroupViewEnabled()) 
     53        int ret = EnableGroupView(true); 
     54        if (IsGroupViewEnabled()) 
    5255        { 
    5356//              RemoveAllGroups(); 
     
    5558                LVGROUP lvg = { sizeof(LVGROUP) }; 
    5659 
    57                 lvg.mask = LVGF_HEADER|LVGF_GROUPID|LVGF_STATE|LVGF_ALIGN ; 
    58                 lvg.pszHeader = L"Eoin"; 
    59                 lvg.cchHeader = 5; 
    60                 lvg.iGroupId = 1; 
    61                 lvg.state = LVGS_NORMAL; 
    62                 lvg.uAlign = LVGA_HEADER_LEFT; 
     60                lvg.mask = LVGF_HEADER|LVGF_GROUPID ; 
     61                lvg.pszHeader = L"Auto-managed"; 
     62//              lvg.cchHeader = 5; 
     63                lvg.iGroupId = HAL_AUTO_MANAGED; 
     64//              lvg.state = LVGS_NORMAL; 
     65//              lvg.uAlign = LVGA_HEADER_LEFT; 
    6366 
    6467                int grp = InsertGroup(-1, &lvg); 
     68 
     69                lvg.mask = LVGF_HEADER|LVGF_GROUPID ; 
     70                lvg.pszHeader = L"Unmanaged"; 
     71//              lvg.cchHeader = 5; 
     72                lvg.iGroupId = HAL_UNMANAGED; 
     73//              lvg.state = LVGS_NORMAL; 
     74//              lvg.uAlign = LVGA_HEADER_LEFT; 
     75 
     76                grp = InsertGroup(-1, &lvg); 
    6577//              MoveItemToGroup(1, 1); 
    6678        } 
    67 */ 
     79 
    6880        SafeLoadFromIni(); 
    6981         
     
    89101        SetColumnSortType(19, WTL::LVCOLSORT_CUSTOM, new ColumnAdapters::StartTime()); 
    90102        SetColumnSortType(20, WTL::LVCOLSORT_CUSTOM, new ColumnAdapters::FinishTime()); 
    91         SetColumnSortType(21, WTL::LVCOLSORT_CUSTOM, new ColumnAdapters::QueuePosition()); 
     103        SetColumnSortType(21, WTL::LVCOLSORT_CUSTOM, new ColumnAdapters::Managed()); 
     104        SetColumnSortType(22, WTL::LVCOLSORT_CUSTOM, new ColumnAdapters::QueuePosition()); 
    92105 
    93106         
     
    135148        if (lock)  
    136149        { 
    137          
    138  
     150                if (GetItemCount() > 0) 
     151                { 
     152                        LVITEM lvItem = { 0 }; 
     153                        lvItem.mask = LVIF_TEXT|LVIF_GROUPID|LVIF_COLUMNS; 
     154                        lvItem.iItem = 0; 
     155                        lvItem.iSubItem = 0; 
     156 
     157                        hal::win_c_str<std::wstring> str(2048); 
     158 
     159                        lvItem.pszText = str; 
     160                        lvItem.cchTextMax = str.size(); 
     161 
     162                        GetItem(&lvItem); 
     163                        DeleteItem(lvItem.iItem); 
     164 
     165                        lvItem.iItem = GetItemCount(); 
     166                        InsertItem(&lvItem); 
     167                } 
    139168 
    140169        foreach (const hal::torrent_details_ptr td, tD.torrents())  
    141170        { 
     171 
    142172                LV_FINDINFO findInfo;  
    143173                findInfo.flags = LVFI_STRING; 
     
    147177                if (itemPos < 0) 
    148178                { 
    149 /*                      LVITEM lvItem = { 0 }; 
    150                         lvItem.mask = LVIF_TEXT|LVIF_GROUPID; 
     179                        LVITEM lvItem = { 0 }; 
     180                        lvItem.mask = LVIF_TEXT|LVIF_GROUPID|LVIF_COLUMNS; 
    151181                        lvItem.iItem = 0; 
    152182                        lvItem.iSubItem = 0; 
    153183                        lvItem.pszText = (LPTSTR)td->name().c_str(); 
    154                         lvItem.iGroupId = 0; 
     184 
     185                        if (td->managed()) 
     186                                lvItem.iGroupId = HAL_AUTO_MANAGED; 
     187                        else 
     188                                lvItem.iGroupId = HAL_UNMANAGED; 
    155189 
    156190                        lvItem.mask |= LVIF_IMAGE; 
    157191                        lvItem.iImage = 0; 
    158192 
    159                         itemPos =  InsertItem(&lvItem); 
    160 */ 
    161                         AddItem(0, 0, td->name().c_str(), 0); 
     193                        itemPos = InsertItem(&lvItem); 
     194 
     195                //      AddItem(0, 0, td->name().c_str(), 0); 
    162196                //      MoveItemToGroup(itemPos, 0); 
    163197                } 
     
    167201                        SetItemText(itemPos, i, getColumnAdapter(i)->print(td).c_str()); 
    168202                } 
     203 
     204//              if (td->queue_position() == 0) 
     205//              { 
     206 
     207//              } 
    169208        } 
    170209         
    171210        int iCol = GetSortColumn(); 
    172         if (autoSort() && iCol >= 0 && iCol < m_arrColSortType.GetSize()) 
    173                 DoSortItems(iCol, IsSortDescending()); 
     211        //if (autoSort() && iCol >= 0 && iCol < m_arrColSortType.GetSize()) 
     212        //      DoSortItems(iCol, IsSortDescending()); 
    174213         
    175214        } 
Note: See TracChangeset for help on using the changeset viewer.