# HG changeset patch # User sbr # Date 1374914157 -7200 # Sat Jul 27 10:35:57 2013 +0200 # Node ID 0409deeb365bfd2c50c6f0d60aeb20f7f9c18f9c # Parent 0a9b06371afea7e8fac79b7eef3269d10ab2601d -Change: Use 'default sort orders' to sort towns list (ascending town names and descending town population). diff --git a/src/town_gui.cpp b/src/town_gui.cpp --- a/src/town_gui.cpp +++ b/src/town_gui.cpp @@ -638,6 +638,7 @@ private: /* Constants for sorting towns */ static const StringID sorter_names[]; static GUITownList::SortFunction * const sorter_funcs[]; + static GUITownList::DefaultSortOrder default_sort_orders[]; GUITownList towns; @@ -723,6 +724,8 @@ public: this->towns.SetListing(this->last_sorting); this->towns.SetSortFuncs(TownDirectoryWindow::sorter_funcs); + this->towns.SetDefaultSortOrders(TownDirectoryWindow::default_sort_orders); + this->towns.UseDefaultSortOrder(); this->towns.ForceRebuild(); this->BuildSortTownList(); @@ -885,6 +888,11 @@ public: if (this->towns.SortType() != index) { this->towns.SetSortType(index); + + /* Use the default sort order for this sort type. */ + bool changed_sort_order = this->towns.UseDefaultSortOrder(); + if (changed_sort_order) this->SetWidgetDirty(WID_TD_SORT_ORDER); + this->last_sorting = this->towns.GetListing(); // Store new sorting order. this->BuildSortTownList(); } @@ -941,6 +949,13 @@ GUITownList::SortFunction * const TownDi &TownRatingSorter, }; +/** Sort orders to use by default. */ +GUITownList::DefaultSortOrder TownDirectoryWindow::default_sort_orders[] = { + GUITownList::DSO_ASCENDING, // Sort by name + GUITownList::DSO_DESCENDING, // Sort by population + GUITownList::DSO_NONE, // Sort by rating +}; + static WindowDesc _town_directory_desc( WDP_AUTO, "list_towns", 208, 202, WC_TOWN_DIRECTORY, WC_NONE,