From: <de...@us...> - 2013-09-03 20:53:37
|
Revision: 13621 http://sourceforge.net/p/supertuxkart/code/13621 Author: deveee Date: 2013-09-03 20:53:33 +0000 (Tue, 03 Sep 2013) Log Message: ----------- 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. Modified Paths: -------------- main/trunk/src/guiengine/skin.cpp main/trunk/src/guiengine/widgets/list_widget.cpp main/trunk/src/guiengine/widgets/list_widget.hpp main/trunk/src/states_screens/addons_screen.cpp main/trunk/src/states_screens/addons_screen.hpp Modified: main/trunk/src/guiengine/skin.cpp =================================================================== --- main/trunk/src/guiengine/skin.cpp 2013-09-03 08:28:44 UTC (rev 13620) +++ main/trunk/src/guiengine/skin.cpp 2013-09-03 20:53:33 UTC (rev 13621) @@ -1547,10 +1547,10 @@ 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"] : SkinConfig::m_render_params["list_header::neutral"]), @@ -1562,10 +1562,11 @@ 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())); Modified: main/trunk/src/guiengine/widgets/list_widget.cpp =================================================================== --- main/trunk/src/guiengine/widgets/list_widget.cpp 2013-09-03 08:28:44 UTC (rev 13620) +++ main/trunk/src/guiengine/widgets/list_widget.cpp 2013-09-03 20:53:33 UTC (rev 13621) @@ -39,6 +39,7 @@ m_listener = NULL; m_selected_column = NULL; m_sort_desc = true; + m_sort_default = true; } // ----------------------------------------------------------------------------- @@ -299,6 +300,8 @@ } m_header_elements.clearAndDeleteAll(); m_selected_column = NULL; + m_sort_desc = 1; + m_sort_default = 1; } // ----------------------------------------------------------------------------- @@ -373,7 +376,13 @@ 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++) { Modified: main/trunk/src/guiengine/widgets/list_widget.hpp =================================================================== --- main/trunk/src/guiengine/widgets/list_widget.hpp 2013-09-03 08:28:44 UTC (rev 13620) +++ main/trunk/src/guiengine/widgets/list_widget.hpp 2013-09-03 20:53:33 UTC (rev 13621) @@ -70,6 +70,9 @@ /** \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; Modified: main/trunk/src/states_screens/addons_screen.cpp =================================================================== --- main/trunk/src/states_screens/addons_screen.cpp 2013-09-03 08:28:44 UTC (rev 13620) +++ main/trunk/src/states_screens/addons_screen.cpp 2013-09-03 20:53:33 UTC (rev 13621) @@ -137,6 +137,7 @@ m_reloading = false; m_sort_desc = true; + m_sort_default = true; getWidget<GUIEngine::RibbonWidget>("category")->setDeactivated(); @@ -380,14 +381,31 @@ // ---------------------------------------------------------------------------- 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 Modified: main/trunk/src/states_screens/addons_screen.hpp =================================================================== --- main/trunk/src/states_screens/addons_screen.hpp 2013-09-03 08:28:44 UTC (rev 13620) +++ main/trunk/src/states_screens/addons_screen.hpp 2013-09-03 20:53:33 UTC (rev 13621) @@ -77,6 +77,8 @@ /** \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; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |