1
0
forked from 0ad/0ad

Specify the default column sorting order in XML instead of JS.

Ref #2405, #3473.

This was SVN commit r17670.
This commit is contained in:
elexis 2016-01-18 19:23:14 +00:00
parent 9481c168bd
commit a59833102f
6 changed files with 16 additions and 9 deletions

View File

@ -53,6 +53,7 @@ ex_settings =
attribute checked { bool }?&
attribute clip { bool }?&
attribute default_column { text }?&
attribute default_column_order { text }?&
attribute dropdown_size { xsd:decimal }?&
attribute dropdown_buffer { xsd:decimal }?&
attribute enabled { bool }?&

View File

@ -202,6 +202,9 @@
<optional>
<attribute name="default_column"/>
</optional>
<optional>
<attribute name="default_column_order"/>
</optional>
<optional>
<attribute name="dropdown_size">
<data type="decimal"/>

View File

@ -23,7 +23,7 @@
<!-- Left panel: Player list. -->
<object name="leftPanel" size="20 30 20% 100%-280">
<object name="playersBox" style="ModernList" sprite_asc="ModernArrowDown" default_column="name" sprite_desc="ModernArrowUp" sprite_not_sorted="ModernNotSorted" type="olist" sortable="true" size="0 0 100% 100%" font="sans-bold-stroke-13">
<object name="playersBox" style="ModernList" sprite_asc="ModernArrowDown" default_column="name" default_column_order="1" sprite_desc="ModernArrowUp" sprite_not_sorted="ModernNotSorted" type="olist" sortable="true" size="0 0 100% 100%" font="sans-bold-stroke-13">
<def id="status" width="26%">
<translatableAttribute id="heading">Status</translatableAttribute>
</def>
@ -172,7 +172,7 @@
<!-- Middle panel: Filters, game list, chat box. -->
<object name="middlePanel" size="20%+5 5% 100%-255 97.2%">
<object name="gamesBox" style="ModernList" sprite_asc="ModernArrowDown" default_column="status" sprite_desc="ModernArrowUp" sprite_not_sorted="ModernNotSorted" type="olist" sortable="true" size="0 25 100% 48%" font="sans-stroke-13">
<object name="gamesBox" style="ModernList" sprite_asc="ModernArrowDown" default_column="status" default_column_order="1" sprite_desc="ModernArrowUp" sprite_not_sorted="ModernNotSorted" type="olist" sortable="true" size="0 25 100% 48%" font="sans-stroke-13">
<action on="SelectionChange">updateGameSelection();</action>
<action on="SelectionColumnChange">applyFilters();</action>
<action on="mouseleftdoubleclickitem">joinSelectedGame();</action>

View File

@ -49,9 +49,6 @@ function init()
return;
}
// By default, sort replays by date in descending order
Engine.GetGUIObjectByName("replaySelection").selected_column_order = -1;
loadReplays();
displayReplayList();
}

View File

@ -61,7 +61,7 @@
</object>
<!-- Replay List in that left panel -->
<object name="replaySelection" size="0 35 100% 100%" style="ModernList" type="olist" sortable="true" default_column="name" sprite_asc="ModernArrowDown" sprite_desc="ModernArrowUp" sprite_not_sorted="ModernNotSorted" font="sans-stroke-13">
<object name="replaySelection" size="0 35 100% 100%" style="ModernList" type="olist" sortable="true" default_column="name" default_column_order="-1" sprite_asc="ModernArrowDown" sprite_desc="ModernArrowUp" sprite_not_sorted="ModernNotSorted" font="sans-stroke-13">
<action on="SelectionChange">displayReplayDetails();</action>
<action on="SelectionColumnChange">displayReplayList();</action>

View File

@ -24,21 +24,21 @@
#include "soundmanager/ISoundManager.h"
COList::COList()
: CList(), m_HeadingHeight(30.f), m_SelectedDef(-1), m_SelectedColumnOrder(1)
: CList(), m_HeadingHeight(30.f), m_SelectedDef(-1), m_SelectedColumnOrder(0)
{
AddSetting(GUIST_CGUISpriteInstance, "sprite_heading");
AddSetting(GUIST_bool, "sortable"); // The actual sorting is done in JS for more versatility
AddSetting(GUIST_CStr, "selected_column");
AddSetting(GUIST_int, "selected_column_order");
AddSetting(GUIST_CStr, "default_column");
AddSetting(GUIST_int, "default_column_order");
AddSetting(GUIST_int, "selected_def");
AddSetting(GUIST_CGUISpriteInstance, "sprite_asc"); // Show the order of sorting
AddSetting(GUIST_CGUISpriteInstance, "sprite_desc");
AddSetting(GUIST_CGUISpriteInstance, "sprite_not_sorted");
// Nothing is selected by default.
GUI<CStr>::SetSetting(this, "selected_column", "");
GUI<int>::SetSetting(this, "selected_column_order", 1);
GUI<int>::SetSetting(this, "selected_column_order", 0);
GUI<int>::SetSetting(this, "selected_def", -1);
}
@ -98,6 +98,12 @@ void COList::SetupText()
if (m_SelectedDef != (size_t)-1)
GUI<CStr>::SetSetting(this, "selected_column", m_ObjectsDefs[m_SelectedDef].m_Id.substr(5));
if (m_SelectedColumnOrder == 0)
{
GUI<int>::GetSetting(this, "default_column_order", m_SelectedColumnOrder);
GUI<int>::SetSetting(this, "selected_column_order", m_SelectedColumnOrder);
}
// Generate texts
float buffered_y = 0.f;