Improved sorting of add-ons.
I added possibility to back to default sorting by click on the head of the column third time. There is still problem with switching between name and date column. Code probably could be better. Feel free to improve it. git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@13621 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
@@ -1547,9 +1547,9 @@ void Skin::drawListSelection(const core::recti &rect, Widget* widget,
|
||||
void Skin::drawListHeader(const irr::core::rect< irr::s32 > &rect,
|
||||
Widget* widget)
|
||||
{
|
||||
bool isSelected =(((ListWidget*)widget->m_event_handler)->m_selected_column
|
||||
== widget);
|
||||
|
||||
bool isSelected =
|
||||
(((ListWidget*)widget->m_event_handler)->m_selected_column == widget &&
|
||||
((ListWidget*)widget->m_event_handler)->m_sort_default == false);
|
||||
|
||||
drawBoxFromStretchableTexture(widget, rect,
|
||||
(isSelected ? SkinConfig::m_render_params["list_header::down"]
|
||||
@@ -1562,10 +1562,11 @@ void Skin::drawListHeader(const irr::core::rect< irr::s32 > &rect,
|
||||
ITexture* img;
|
||||
if (((ListWidget*)widget->m_event_handler)->m_sort_desc)
|
||||
img =
|
||||
SkinConfig::m_render_params["list_sort_down::neutral"].getImage();
|
||||
SkinConfig::m_render_params["list_sort_up::neutral"].getImage();
|
||||
else
|
||||
img =
|
||||
SkinConfig::m_render_params["list_sort_up::neutral"].getImage();
|
||||
SkinConfig::m_render_params["list_sort_down::neutral"].getImage();
|
||||
|
||||
core::recti destRect(rect.UpperLeftCorner,
|
||||
core::dimension2di(rect.getHeight(),
|
||||
rect.getHeight()));
|
||||
|
||||
@@ -39,6 +39,7 @@ ListWidget::ListWidget() : Widget(WTYPE_LIST)
|
||||
m_listener = NULL;
|
||||
m_selected_column = NULL;
|
||||
m_sort_desc = true;
|
||||
m_sort_default = true;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
@@ -299,6 +300,8 @@ void ListWidget::elementRemoved()
|
||||
}
|
||||
m_header_elements.clearAndDeleteAll();
|
||||
m_selected_column = NULL;
|
||||
m_sort_desc = 1;
|
||||
m_sort_default = 1;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
@@ -373,7 +376,13 @@ EventPropagation ListWidget::transmitEvent(Widget* w,
|
||||
m_selected_column = m_header_elements.get(col);
|
||||
|
||||
/** \brief Allows sort icon to change depending on sort order **/
|
||||
m_sort_desc = !m_sort_desc;
|
||||
if (m_sort_desc && !m_sort_default)
|
||||
m_sort_default = true;
|
||||
else
|
||||
{
|
||||
m_sort_desc = !m_sort_desc;
|
||||
m_sort_default = false;
|
||||
}
|
||||
/*
|
||||
for (int n=0; n<m_header_elements.size(); n++)
|
||||
{
|
||||
|
||||
@@ -70,6 +70,9 @@ namespace GUIEngine
|
||||
/** \brief whether this list is sorted in descending order */
|
||||
bool m_sort_desc;
|
||||
|
||||
/** true when deault sorting is enabled */
|
||||
bool m_sort_default;
|
||||
|
||||
struct Column
|
||||
{
|
||||
irr::core::stringw m_text;
|
||||
|
||||
@@ -137,6 +137,7 @@ void AddonsScreen::init()
|
||||
m_reloading = false;
|
||||
|
||||
m_sort_desc = true;
|
||||
m_sort_default = true;
|
||||
|
||||
getWidget<GUIEngine::RibbonWidget>("category")->setDeactivated();
|
||||
|
||||
@@ -380,14 +381,31 @@ void AddonsScreen::loadList()
|
||||
// ----------------------------------------------------------------------------
|
||||
void AddonsScreen::onColumnClicked(int column_id)
|
||||
{
|
||||
if (m_sort_desc && !m_sort_default)
|
||||
m_sort_default = true;
|
||||
else
|
||||
{
|
||||
m_sort_desc = !m_sort_desc;
|
||||
m_sort_default = false;
|
||||
}
|
||||
|
||||
switch(column_id)
|
||||
{
|
||||
case 0: Addon::setSortOrder(Addon::SO_NAME); break;
|
||||
case 1: Addon::setSortOrder(Addon::SO_DATE); break;
|
||||
case 0:
|
||||
if (!m_sort_default)
|
||||
Addon::setSortOrder(Addon::SO_NAME);
|
||||
else
|
||||
Addon::setSortOrder(Addon::SO_DEFAULT);
|
||||
break;
|
||||
case 1:
|
||||
if (!m_sort_default)
|
||||
Addon::setSortOrder(Addon::SO_NAME);
|
||||
else
|
||||
Addon::setSortOrder(Addon::SO_DEFAULT);
|
||||
break;
|
||||
default: assert(0);
|
||||
} // switch
|
||||
/** \brief Toggle the sort order after column click **/
|
||||
m_sort_desc = !m_sort_desc;
|
||||
loadList();
|
||||
} // onColumnClicked
|
||||
|
||||
|
||||
@@ -77,6 +77,8 @@ private:
|
||||
/** \brief To check (and set) if sort order is descending **/
|
||||
bool m_sort_desc;
|
||||
|
||||
bool m_sort_default;
|
||||
|
||||
/** List of date filters **/
|
||||
std::vector<DateFilter> m_date_filters;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user