GUIList< T, F > Class Template Reference

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

#include <sortlist_type.h>

Inheritance diagram for GUIList< T, F >:
SmallVector< T, 32 >

Public Types

typedef int CDECL SortFunction (const T *, const T *)
 Signature of sort function.
typedef bool CDECL FilterFunction (const T *, F)
 Signature of filter function.

Public Member Functions

uint8 SortType () const
 Get the sorttype of the list.
void SetSortType (uint8 n_type)
 Set the sorttype of the list.
Listing GetListing () const
 Export current sort conditions.
void SetListing (Listing l)
 Import sort conditions.
uint8 FilterType () const
 Get the filtertype of the list.
void SetFilterType (uint8 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 ()
 Toogle the sort order Since that is the worst condition for the sort function reverse the list here.
bool Sort (SortFunction *compare)
 Sort the list.
void SetSortFuncs (SortFunction *const *n_funcs)
 Hand the array of sort function pointers to the sort list.
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 (FilterFunction *const *n_funcs)
 Hand the array of filter function pointers to the sort list.
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 Member Functions

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

Protected Attributes

SortFunction *const * sort_func_list
 the sort criteria functions
FilterFunction *const * filter_func_list
 the filter criteria functions
SortListFlags flags
 used to control sorting/resorting/etc.
uint8 sort_type
 what criteria to sort on
uint8 filter_type
 what criteria to filter on
uint16 resort_timer
 resort list after a given amount of ticks if set

Detailed Description

template<typename T, typename F = const char*>
class GUIList< T, F >

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

Template Parameters:
T Type of data stored in the list to represent each item.
F Type of data fed as additional value to the filter function.
See also:
FilterFunction

Definition at line 51 of file sortlist_type.h.


Member Function Documentation

template<typename T, typename F = const char*>
bool GUIList< T, F >::Filter ( filter_data  )  [inline]

Filter the data with the currently selected filter.

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

Definition at line 369 of file sortlist_type.h.

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

Filter the list.

Parameters:
decide The function to decide about an item
filter_data Additional data passed to the filter function
Returns:
true if the list has been altered by filtering

Definition at line 334 of file sortlist_type.h.

Referenced by GUIList< const Industry * >::Filter(), NetworkContentListWindow::FilterContentList(), BuildVehicleWindow::FilterEngineList(), and NewGRFAddWindow::FilterGrfList().

template<typename T, typename F = const char*>
uint8 GUIList< T, F >::FilterType (  )  const [inline]

Get the filtertype of the list.

Returns:
The current filtertype

Definition at line 152 of file sortlist_type.h.

template<typename T, typename F = const char*>
Filtering GUIList< T, F >::GetFiltering (  )  const [inline]

Export current filter conditions.

Returns:
the current filter conditions

Definition at line 174 of file sortlist_type.h.

template<typename T, typename F = const char*>
Listing GUIList< T, F >::GetListing (  )  const [inline]

Export current sort conditions.

Returns:
the current sort conditions

Definition at line 121 of file sortlist_type.h.

template<typename T, typename F = const char*>
bool GUIList< T, F >::IsDescSortOrder (  )  const [inline]
template<typename T, typename F = const char*>
bool GUIList< T, F >::IsFilterEnabled (  )  const [inline]

Check if the filter is enabled.

Returns:
true if the filter is enabled

Definition at line 308 of file sortlist_type.h.

template<typename T, typename F = const char*>
bool GUIList< T, F >::IsSortable (  )  const [inline, protected]

Check if the list is sortable.

Returns:
true if we can sort the list

Definition at line 69 of file sortlist_type.h.

Referenced by GUIList< const Industry * >::Sort(), and GUIList< const Industry * >::ToggleSortOrder().

template<typename T, typename F = const char*>
bool GUIList< T, F >::NeedRebuild (  )  const [inline]
template<typename T, typename F = const char*>
bool GUIList< T, 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 206 of file sortlist_type.h.

Referenced by SignWindow::OnClick(), VehicleListWindow::OnTick(), VehicleGroupWindow::OnTick(), CompanyLeagueWindow::OnTick(), and SignWindow::PrevNextSign().

template<typename T, typename F = const char*>
void GUIList< T, F >::RebuildDone (  )  [inline]
template<typename T, typename F = const char*>
void GUIList< T, F >::SetFilterFuncs ( FilterFunction *const *  n_funcs  )  [inline]

Hand the array of filter function pointers to the sort list.

Parameters:
n_funcs The pointer to the first filter func

Definition at line 358 of file sortlist_type.h.

Referenced by NetworkContentListWindow::NetworkContentListWindow().

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

Import filter conditions.

Parameters:
f The filter conditions we want to use

Definition at line 188 of file sortlist_type.h.

Referenced by NetworkContentListWindow::NetworkContentListWindow().

template<typename T, typename F = const char*>
void GUIList< T, F >::SetFilterState ( bool  state  )  [inline]

Enable or disable the filter.

Parameters:
state If filtering should be enabled or disabled

Definition at line 318 of file sortlist_type.h.

Referenced by BuildVehicleWindow::OnDropdownSelect().

template<typename T, typename F = const char*>
void GUIList< T, F >::SetFilterType ( uint8  n_type  )  [inline]

Set the filtertype of the list.

Parameters:
n_type the new filter type

Definition at line 162 of file sortlist_type.h.

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

Import sort conditions.

Parameters:
l The sort conditions we want to use

Definition at line 135 of file sortlist_type.h.

Referenced by NetworkContentListWindow::NetworkContentListWindow().

template<typename T, typename F = const char*>
void GUIList< T, F >::SetSortFuncs ( SortFunction *const *  n_funcs  )  [inline]

Hand the array of sort function pointers to the sort list.

Parameters:
n_funcs The pointer to the first sort func

Definition at line 286 of file sortlist_type.h.

Referenced by NetworkContentListWindow::NetworkContentListWindow().

template<typename T, typename F = const char*>
void GUIList< T, F >::SetSortType ( uint8  n_type  )  [inline]
template<typename T, typename F = const char*>
bool GUIList< T, 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 297 of file sortlist_type.h.

Referenced by GUIList< const Industry * >::Sort().

template<typename T, typename F = const char*>
bool GUIList< T, F >::Sort ( SortFunction compare  )  [inline]

Sort the list.

For the first sorting we use quick sort since it is faster for irregular sorted data. After that we use gsort.

Parameters:
compare The function to compare two list items
Returns:
true if the list sequence has been altered

Definition at line 256 of file sortlist_type.h.

Referenced by IndustryDirectoryWindow::BuildSortIndustriesList(), VehicleGroupWindow::OnPaint(), CompanyLeagueWindow::OnPaint(), BuildBridgeWindow::SortBridgeList(), NetworkContentListWindow::SortContentList(), NewGRFAddWindow::SortGrfList(), NetworkGameWindow::SortNetworkGameList(), and CompanyStationsWindow::SortStationsList().

template<typename T, typename F = const char*>
uint8 GUIList< T, F >::SortType (  )  const [inline]

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

Generated on Wed Mar 17 23:50:56 2010 for OpenTTD by  doxygen 1.6.1