Corrected/implemented sorting (by way of clicking on

on the header button) for the generic code.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45527 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling 2007-04-18 12:31:35 +00:00
parent b553626907
commit c3112d560e
4 changed files with 30 additions and 6 deletions

View File

@ -24,7 +24,7 @@
#if defined(__WXGTK20__)
// for testing
// #define wxUSE_GENERICDATAVIEWCTRL 1
#define wxUSE_GENERICDATAVIEWCTRL 1
#elif defined(__WXMAC__)
#define wxUSE_GENERICDATAVIEWCTRL 1
#else

View File

@ -297,6 +297,7 @@ private:
int m_flags;
wxAlignment m_align;
wxString m_title;
bool m_ascending;
void Init(int width);

View File

@ -348,6 +348,9 @@ void wxDataViewSortedListModel::Resort()
unsigned int i;
for (i = 0; i < n; i++)
m_array.Add( i );
// do we need the neworder?
wxDataViewListModel::RowsReordered( NULL );
}
#if 0

View File

@ -176,6 +176,8 @@ public:
delete m_resizeCursor;
}
virtual void UpdateDisplay() { Refresh(); }
// event handlers:
void OnPaint( wxPaintEvent &event );
@ -819,6 +821,7 @@ void wxDataViewColumn::Init( int width )
{
m_width = width;
m_minWidth = wxDVC_DEFAULT_MINWIDTH;
m_ascending = true;
}
void wxDataViewColumn::SetResizeable( bool resizeable )
@ -847,17 +850,24 @@ void wxDataViewColumn::SetSortable( bool sortable )
m_flags |= wxDATAVIEW_COL_SORTABLE;
else
m_flags &= ~wxDATAVIEW_COL_SORTABLE;
// Update header button
if (GetOwner())
GetOwner()->OnColumnChange();
}
void wxDataViewColumn::SetSortOrder( bool WXUNUSED(ascending) )
void wxDataViewColumn::SetSortOrder( bool ascending )
{
// TODO
m_ascending = ascending;
// Update header button
if (GetOwner())
GetOwner()->OnColumnChange();
}
bool wxDataViewColumn::IsSortOrderAscending() const
{
// TODO
return true;
return m_ascending;
}
void wxDataViewColumn::SetInternalWidth( int width )
@ -1279,13 +1289,23 @@ void wxGenericDataViewHeaderWindow::OnPaint( wxPaintEvent &WXUNUSED(event) )
int cw = col->GetWidth();
int ch = h;
wxHeaderSortIconType sortArrow = wxHDR_SORT_ICON_NONE;
if (col->IsSortable())
{
if (col->IsSortOrderAscending())
sortArrow = wxHDR_SORT_ICON_UP;
else
sortArrow = wxHDR_SORT_ICON_DOWN;
}
wxRendererNative::Get().DrawHeaderButton
(
this,
dc,
wxRect(xpos, 0, cw, ch-1),
m_parent->IsEnabled() ? 0
: (int)wxCONTROL_DISABLED
: (int)wxCONTROL_DISABLED,
sortArrow
);
// align as required the column title: