Demonstrate sort indicators in wxListCtrl sample
This commit is contained in:
@@ -68,13 +68,14 @@ const wxChar *SMALL_VIRTUAL_VIEW_ITEMS[][2] =
|
||||
static const int NUM_ICONS = 9;
|
||||
|
||||
int wxCALLBACK
|
||||
MyCompareFunction(wxIntPtr item1, wxIntPtr item2, wxIntPtr WXUNUSED(sortData))
|
||||
MyCompareFunction(wxIntPtr item1, wxIntPtr item2, wxIntPtr sortData)
|
||||
{
|
||||
bool ascending = (sortData == 1);
|
||||
// inverse the order
|
||||
if (item1 < item2)
|
||||
return 1;
|
||||
return ascending ? -1 : 1;
|
||||
if (item1 > item2)
|
||||
return -1;
|
||||
return ascending ? 1 : -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -460,6 +461,8 @@ void MyFrame::RecreateList(long flags, bool withText)
|
||||
flags |
|
||||
wxBORDER_THEME | wxLC_EDIT_LABELS);
|
||||
|
||||
m_listCtrl->EnableSortIndicator();
|
||||
|
||||
if ( old )
|
||||
{
|
||||
wxSizer* const sizer = m_panel->GetSizer();
|
||||
@@ -721,11 +724,15 @@ void MyFrame::OnSort(wxCommandEvent& WXUNUSED(event))
|
||||
{
|
||||
wxStopWatch sw;
|
||||
|
||||
m_listCtrl->SortItems(MyCompareFunction, 0);
|
||||
static bool sortAsc = false;
|
||||
sortAsc = !sortAsc;
|
||||
m_listCtrl->SortItems(MyCompareFunction, sortAsc);
|
||||
|
||||
m_logWindow->WriteText(wxString::Format("Sorting %d items took %ld ms\n",
|
||||
m_listCtrl->GetItemCount(),
|
||||
sw.Time()));
|
||||
|
||||
m_listCtrl->ShowSortIndicator(0, sortAsc);
|
||||
}
|
||||
|
||||
void MyFrame::OnFind(wxCommandEvent& WXUNUSED(event))
|
||||
@@ -1084,6 +1091,12 @@ void MyListCtrl::OnColClick(wxListEvent& event)
|
||||
return; // clicked outside any column.
|
||||
}
|
||||
|
||||
if ( IsSortIndicatorEnabled() )
|
||||
{
|
||||
// sort on item data (SetItemData), disable when sorting fails
|
||||
EnableSortIndicator( SortItems(MyCompareFunction, IsAscendingSortIndicator()) );
|
||||
}
|
||||
|
||||
// set or unset image
|
||||
static bool x = false;
|
||||
x = !x;
|
||||
|
||||
Reference in New Issue
Block a user