OpenTTD Source 20250312-master-gcdcc6b491d
GUIList< T, P, F > Class Template Reference

List template of 'things' T to sort in a GUI. More...

#include <sortlist_type.h>

Inheritance diagram for GUIList< T, P, F >:

Public Types

using SortFunction = std::conditional_t< std::is_same_v< P, std::nullptr_t >, bool(const T &, const T &), bool(const T &, const T &, const P)>
 Signature of sort function.
 
using FilterFunction = bool(const T *, F)
 Signature of filter function.
 

Public Member Functions

template<typename T_ = T, typename P_ = P, typename _F = F, std::enable_if_t<!std::is_same_v< P_, std::nullptr_t > > * = nullptr>
 GUIList (const P &params)
 
uint8_t SortType () const
 Get the sorttype of the list.
 
void SetSortType (uint8_t n_type)
 Set the sorttype of the list.
 
Listing GetListing () const
 Export current sort conditions.
 
void SetListing (Listing l)
 Import sort conditions.
 
uint8_t FilterType () const
 Get the filtertype of the list.
 
void SetFilterType (uint8_t n_type)
 Set the filtertype of the list.
 
Filtering GetFiltering () const
 Export current filter conditions.
 
void SetFiltering (Filtering f)
 Import filter conditions.
 
bool NeedResort ()
 Check if a resort is needed next loop If used the resort timer will decrease every call till 0.
 
void ForceResort ()
 Force a resort next Sort call Reset the resort timer if used too.
 
bool IsDescSortOrder () const
 Check if the sort order is descending.
 
void ToggleSortOrder ()
 Toggle the sort order Since that is the worst condition for the sort function reverse the list here.
 
template<typename Comp >
bool Sort (Comp compare)
 Sort the list.
 
void SetSortFuncs (std::span< SortFunction *const > n_funcs)
 Hand the sort function pointers to the GUIList.
 
bool Sort ()
 Overload of #Sort(SortFunction *compare) Overloaded to reduce external code.
 
bool IsFilterEnabled () const
 Check if the filter is enabled.
 
void SetFilterState (bool state)
 Enable or disable the filter.
 
bool Filter (FilterFunction *decide, F filter_data)
 Filter the list.
 
void SetFilterFuncs (std::span< FilterFunction *const > n_funcs)
 Hand the filter function pointers to the GUIList.
 
bool Filter (F filter_data)
 Filter the data with the currently selected filter.
 
bool NeedRebuild () const
 Check if a rebuild is needed.
 
void ForceRebuild ()
 Force that a rebuild is needed.
 
void RebuildDone ()
 Notify the sortlist that the rebuild is done.
 

Protected Types

using SortParameterReference = std::conditional_t< std::is_same_v< P, std::nullptr_t >, P, P & >
 

Protected Member Functions

bool IsSortable () const
 Check if the list is sortable.
 
void ResetResortTimer ()
 Reset the resort timer.
 

Protected Attributes

std::span< SortFunction *const > sort_func_list
 the sort criteria functions
 
std::span< FilterFunction *const > filter_func_list
 the filter criteria functions
 
SortListFlags flags
 used to control sorting/resorting/etc.
 
uint8_t sort_type
 what criteria to sort on
 
uint8_t filter_type
 what criteria to filter on
 
uint16_t resort_timer
 resort list after a given amount of ticks if set
 
const SortParameterReference params
 

Detailed Description

template<typename T, typename P = std::nullptr_t, typename F = const char*>
class GUIList< T, P, F >

List template of 'things' T to sort in a GUI.

Template Parameters
TType of data stored in the list to represent each item.
PTyoe of data passed as additional parameter to the sort function.
FType of data fed as additional value to the filter function.
See also
FilterFunction

Definition at line 43 of file sortlist_type.h.

Member Typedef Documentation

◆ FilterFunction

template<typename T , typename P = std::nullptr_t, typename F = const char*>
using GUIList< T, P, F >::FilterFunction = bool(const T*, F)

Signature of filter function.

Definition at line 46 of file sortlist_type.h.

◆ SortFunction

template<typename T , typename P = std::nullptr_t, typename F = const char*>
using GUIList< T, P, F >::SortFunction = std::conditional_t<std::is_same_v<P, std::nullptr_t>, bool (const T&, const T&), bool (const T&, const T&, const P)>

Signature of sort function.

Definition at line 45 of file sortlist_type.h.

◆ SortParameterReference

template<typename T , typename P = std::nullptr_t, typename F = const char*>
using GUIList< T, P, F >::SortParameterReference = std::conditional_t<std::is_same_v<P, std::nullptr_t>, P, P&>
protected

Definition at line 58 of file sortlist_type.h.

Constructor & Destructor Documentation

◆ GUIList() [1/2]

template<typename T , typename P = std::nullptr_t, typename F = const char*>
template<typename T_ = T, typename P_ = P, typename _F = F, std::enable_if_t< std::is_same_v< P_, std::nullptr_t > > * = nullptr>
GUIList< T, P, F >::GUIList ( )
inline

Definition at line 83 of file sortlist_type.h.

◆ GUIList() [2/2]

template<typename T , typename P = std::nullptr_t, typename F = const char*>
template<typename T_ = T, typename P_ = P, typename _F = F, std::enable_if_t<!std::is_same_v< P_, std::nullptr_t > > * = nullptr>
GUIList< T, P, F >::GUIList ( const P &  params)
inline

Definition at line 95 of file sortlist_type.h.

Member Function Documentation

◆ Filter() [1/2]

template<typename T , typename P = std::nullptr_t, typename F = const char*>
bool GUIList< T, P, F >::Filter ( filter_data)
inline

Filter the data with the currently selected filter.

Parameters
filter_dataAdditional data passed to the filter function.
Returns
true if the list has been altered by filtering

Definition at line 376 of file sortlist_type.h.

References Filter, and GUIList< T, P, F >::filter_func_list.

◆ Filter() [2/2]

template<typename T , typename P = std::nullptr_t, typename F = const char*>
bool GUIList< T, P, F >::Filter ( FilterFunction decide,
filter_data 
)
inline

Filter the list.

Parameters
decideThe function to decide about an item
filter_dataAdditional data passed to the filter function
Returns
true if the list has been altered by filtering

Definition at line 342 of file sortlist_type.h.

References Filter, and BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test().

Referenced by NetworkGameWindow::BuildGUINetworkGameList(), PickerWindow::BuildPickerClassList(), PickerWindow::BuildPickerTypeList(), IndustryDirectoryWindow::BuildSortIndustriesList(), NetworkContentListWindow::FilterContentList(), BuildVehicleWindow::FilterEngineList(), SignList::FilterSignList(), and BaseVehicleListWindow::FilterVehicleList().

◆ FilterType()

template<typename T , typename P = std::nullptr_t, typename F = const char*>
uint8_t GUIList< T, P, F >::FilterType ( ) const
inline

Get the filtertype of the list.

Returns
The current filtertype

Definition at line 163 of file sortlist_type.h.

References GUIList< T, P, F >::filter_type.

◆ ForceRebuild()

template<typename T , typename P = std::nullptr_t, typename F = const char*>
void GUIList< T, P, F >::ForceRebuild ( )
inline

Force that a rebuild is needed.

Definition at line 395 of file sortlist_type.h.

References Rebuild, and BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Set().

Referenced by NewGRFWindow::AddGRFToActive(), NetworkContentListWindow::NetworkContentListWindow(), NewGRFConfirmationCallback(), BuildVehicleWindow::OnClick(), SelectCompanyLiveryWindow::OnClick(), VehicleGroupWindow::OnClick(), NetworkContentListWindow::OnClick(), NewGRFWindow::OnClick(), SignWindow::OnClick(), CompanyStationsWindow::OnClick(), CompanyStationsWindow::OnDropdownSelect(), BuildVehicleWindow::OnDropdownSelect(), NewGRFWindow::OnDropdownSelect(), NetworkContentListWindow::OnEditboxChanged(), NetworkGameWindow::OnEditboxChanged(), NewGRFWindow::OnEditboxChanged(), BuildVehicleWindow::OnInvalidateData(), SelectCompanyLiveryWindow::OnInvalidateData(), VehicleGroupWindow::OnInvalidateData(), IndustryDirectoryWindow::OnInvalidateData(), PerformanceLeagueWindow::OnInvalidateData(), NetworkGameWindow::OnInvalidateData(), NewGRFWindow::OnInvalidateData(), PickerWindow::OnInvalidateData(), SignListWindow::OnInvalidateData(), CompanyStationsWindow::OnInvalidateData(), StoryBookWindow::OnInvalidateData(), TownDirectoryWindow::OnInvalidateData(), VehicleListWindow::OnInvalidateData(), NetworkContentListWindow::OnKeyPress(), NewGRFWindow::OnNewGRFsScanned(), NetworkContentListWindow::OnReceiveContentInfo(), SignWindow::PrevNextSign(), StoryBookWindow::RefreshSelectedPage(), VehicleGroupWindow::SelectGroup(), IndustryDirectoryWindow::SetAcceptedCargoFilter(), BaseVehicleListWindow::SetCargoFilter(), and IndustryDirectoryWindow::SetProducedCargoFilter().

◆ ForceResort()

◆ GetFiltering()

template<typename T , typename P = std::nullptr_t, typename F = const char*>
Filtering GUIList< T, P, F >::GetFiltering ( ) const
inline

Export current filter conditions.

Returns
the current filter conditions

Definition at line 186 of file sortlist_type.h.

References Filtering::criteria, Filter, GUIList< T, P, F >::filter_type, Filtering::state, and BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test().

Referenced by NetworkContentListWindow::UpdateFilterState().

◆ GetListing()

template<typename T , typename P = std::nullptr_t, typename F = const char*>
Listing GUIList< T, P, F >::GetListing ( ) const
inline

Export current sort conditions.

Returns
the current sort conditions

Definition at line 134 of file sortlist_type.h.

References Listing::criteria, Desc, Listing::order, GUIList< T, P, F >::sort_type, and BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test().

Referenced by TownDirectoryWindow::OnClick(), and TownDirectoryWindow::OnDropdownSelect().

◆ IsDescSortOrder()

template<typename T , typename P = std::nullptr_t, typename F = const char*>
bool GUIList< T, P, F >::IsDescSortOrder ( ) const
inline

◆ IsFilterEnabled()

template<typename T , typename P = std::nullptr_t, typename F = const char*>
bool GUIList< T, P, F >::IsFilterEnabled ( ) const
inline

Check if the filter is enabled.

Returns
true if the filter is enabled

Definition at line 316 of file sortlist_type.h.

References Filter, and BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test().

◆ IsSortable()

template<typename T , typename P = std::nullptr_t, typename F = const char*>
bool GUIList< T, P, F >::IsSortable ( ) const
inlineprotected

Check if the list is sortable.

Returns
true if we can sort the list

Definition at line 66 of file sortlist_type.h.

Referenced by GUIList< T, P, F >::Sort(), and GUIList< T, P, F >::ToggleSortOrder().

◆ NeedRebuild()

◆ NeedResort()

template<typename T , typename P = std::nullptr_t, typename F = const char*>
bool GUIList< T, P, F >::NeedResort ( )
inline

Check if a resort is needed next loop If used the resort timer will decrease every call till 0.

If 0 reached the resort bit will be set and the timer will be reset.

Returns
true if resort bit is set for next loop

Definition at line 218 of file sortlist_type.h.

References BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Reset(), GUIList< T, P, F >::ResetResortTimer(), and Resort.

Referenced by SignWindow::OnClick(), VehicleGroupWindow::OnGameTick(), PerformanceLeagueWindow::OnGameTick(), CompanyStationsWindow::OnGameTick(), VehicleListWindow::OnGameTick(), NetworkGameWindow::OnPaint(), and SignWindow::PrevNextSign().

◆ RebuildDone()

◆ ResetResortTimer()

template<typename T , typename P = std::nullptr_t, typename F = const char*>
void GUIList< T, P, F >::ResetResortTimer ( )
inlineprotected

Reset the resort timer.

Definition at line 74 of file sortlist_type.h.

References Ticks::DAY_TICKS.

Referenced by GUIList< T, P, F >::NeedResort(), and GUIList< T, P, F >::Sort().

◆ SetFilterFuncs()

template<typename T , typename P = std::nullptr_t, typename F = const char*>
void GUIList< T, P, F >::SetFilterFuncs ( std::span< FilterFunction *const >  n_funcs)
inline

Hand the filter function pointers to the GUIList.

Parameters
n_funcsSpan covering the filter function pointers.

Definition at line 365 of file sortlist_type.h.

Referenced by NetworkContentListWindow::NetworkContentListWindow(), BuildVehicleWindow::SetCargoFilterArray(), IndustryDirectoryWindow::SetCargoFilterArray(), and BaseVehicleListWindow::SetCargoFilterArray().

◆ SetFiltering()

template<typename T , typename P = std::nullptr_t, typename F = const char*>
void GUIList< T, P, F >::SetFiltering ( Filtering  f)
inline

◆ SetFilterState()

◆ SetFilterType()

template<typename T , typename P = std::nullptr_t, typename F = const char*>
void GUIList< T, P, F >::SetFilterType ( uint8_t  n_type)
inline

◆ SetListing()

template<typename T , typename P = std::nullptr_t, typename F = const char*>
void GUIList< T, P, F >::SetListing ( Listing  l)
inline

◆ SetSortFuncs()

template<typename T , typename P = std::nullptr_t, typename F = const char*>
void GUIList< T, P, F >::SetSortFuncs ( std::span< SortFunction *const >  n_funcs)
inline

Hand the sort function pointers to the GUIList.

Parameters
n_funcsSpan covering the sort function pointers.

Definition at line 293 of file sortlist_type.h.

Referenced by NetworkContentListWindow::NetworkContentListWindow().

◆ SetSortType()

template<typename T , typename P = std::nullptr_t, typename F = const char*>
void GUIList< T, P, F >::SetSortType ( uint8_t  n_type)
inline

◆ Sort() [1/2]

template<typename T , typename P = std::nullptr_t, typename F = const char*>
bool GUIList< T, P, F >::Sort ( )
inline

Overload of #Sort(SortFunction *compare) Overloaded to reduce external code.

Returns
true if the list sequence has been altered

Definition at line 304 of file sortlist_type.h.

References GUIList< T, P, F >::Sort(), and GUIList< T, P, F >::sort_func_list.

Referenced by GUIList< T, P, F >::Sort().

◆ Sort() [2/2]

◆ SortType()

◆ ToggleSortOrder()

template<typename T , typename P = std::nullptr_t, typename F = const char*>
void GUIList< T, P, F >::ToggleSortOrder ( )
inline

Field Documentation

◆ filter_func_list

template<typename T , typename P = std::nullptr_t, typename F = const char*>
std::span<FilterFunction * const> GUIList< T, P, F >::filter_func_list
protected

the filter criteria functions

Definition at line 50 of file sortlist_type.h.

Referenced by GUIList< T, P, F >::Filter().

◆ filter_type

template<typename T , typename P = std::nullptr_t, typename F = const char*>
uint8_t GUIList< T, P, F >::filter_type
protected

what criteria to filter on

Definition at line 53 of file sortlist_type.h.

Referenced by GUIList< T, P, F >::FilterType(), and GUIList< T, P, F >::GetFiltering().

◆ flags

template<typename T , typename P = std::nullptr_t, typename F = const char*>
SortListFlags GUIList< T, P, F >::flags
protected

used to control sorting/resorting/etc.

Definition at line 51 of file sortlist_type.h.

◆ params

template<typename T , typename P = std::nullptr_t, typename F = const char*>
const SortParameterReference GUIList< T, P, F >::params
protected

Definition at line 59 of file sortlist_type.h.

◆ resort_timer

template<typename T , typename P = std::nullptr_t, typename F = const char*>
uint16_t GUIList< T, P, F >::resort_timer
protected

resort list after a given amount of ticks if set

Definition at line 54 of file sortlist_type.h.

◆ sort_func_list

template<typename T , typename P = std::nullptr_t, typename F = const char*>
std::span<SortFunction * const> GUIList< T, P, F >::sort_func_list
protected

the sort criteria functions

Definition at line 49 of file sortlist_type.h.

Referenced by GUIList< T, P, F >::Sort().

◆ sort_type

template<typename T , typename P = std::nullptr_t, typename F = const char*>
uint8_t GUIList< T, P, F >::sort_type
protected

what criteria to sort on

Definition at line 52 of file sortlist_type.h.

Referenced by GUIList< T, P, F >::GetListing(), and GUIList< T, P, F >::SortType().


The documentation for this class was generated from the following file: