OpenTTD: NetworkContentListWindow Class Reference

OpenTTD

- Main Page
- Related Pages
- Modules
- Namespaces
- Data Structures
- Files

- Data Structures
- Class Hierarchy
- Data Fields

Public Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes | Friends
NetworkContentListWindow Class Reference

Window that lists the content that's at the content server. More...

Inheritance diagram for NetworkContentListWindow:

## Public Member Functions
| NetworkContentListWindow (WindowDesc *desc, bool select_all)
| Create the content list window.
| ~NetworkContentListWindow ()
| Free everything we allocated.
virtual void | UpdateWidgetSize (int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
virtual void | DrawWidget (const Rect &r, int widget) const
virtual void | OnPaint ()
void | DrawMatrix (const Rect &r) const
| Draw/fill the matrix with the list of content to download.
void | DrawDetails (const Rect &r) const
| Helper function to draw the details part of this window.
virtual void | OnClick (Point pt, int widget, int click_count)
virtual EventState | OnKeyPress (WChar key, uint16 keycode)
virtual void | OnEditboxChanged (int wid)
virtual void | OnResize ()
virtual void | OnReceiveContentInfo (const ContentInfo *rci)
virtual void | OnDownloadComplete (ContentID cid)
virtual void | OnConnect (bool success)
virtual void | OnInvalidateData (int data=0, bool gui_scope=true)
| Some data on this window has become invalid.
Public Member Functions inherited from Window
| Window (WindowDesc *desc)
| Empty constructor, initialization has been moved to InitNested() called from the constructor of the derived class.
virtual | ~Window ()
| Remove window and all its child windows from the window stack.
void * | operator new[] (size_t size)
| Helper allocation function to disallow something.
void | operator delete (void *ptr)
| Helper allocation function to disallow something.
template<class NWID >
const NWID * | GetWidget (uint widnum) const
| Specialized case of Window::GetWidget for the nested widget base class.
template<class NWID >
NWID * | GetWidget (uint widnum)
| Get the nested widget with number widnum from the nested widget tree.
const Scrollbar * | GetScrollbar (uint widnum) const
| Return the Scrollbar to a widget index.
Scrollbar * | GetScrollbar (uint widnum)
| Return the Scrollbar to a widget index.
const QueryString * | GetQueryString (uint widnum) const
| Return the querystring associated to a editbox.
QueryString * | GetQueryString (uint widnum)
| Return the querystring associated to a editbox.
virtual const char * | GetFocusedText () const
| Get the current input text if an edit box has the focus.
virtual const char * | GetCaret () const
| Get the string at the caret if an edit box has the focus.
virtual const char * | GetMarkedText (size_t *length) const
| Get the range of the currently marked input text.
virtual Point | GetCaretPosition () const
| Get the current caret position if an edit box has the focus.
virtual Rect | GetTextBoundingRect (const char *from, const char *to) const
| Get the bounding rectangle for a text range if an edit box has the focus.
virtual const char * | GetTextCharacterAtPosition (const Point &pt) const
| Get the character that is rendered at a position by the focused edit box.
void | InitNested (WindowNumber number=0)
| Perform complete initialization of the Window with nested widgets, to allow use.
void | CreateNestedTree (bool fill_nested=true)
| Perform the first part of the initialization of a nested widget tree.
void | FinishInitNested (WindowNumber window_number=0)
| Perform the second part of the initialization of a nested widget tree.
void | SetTimeout ()
| Set the timeout flag of the window and initiate the timer.
void | SetWhiteBorder ()
| Set the timeout flag of the window and initiate the timer.
void | DisableAllWidgetHighlight ()
| Disable the highlighted status of all widgets.
void | SetWidgetHighlight (byte widget_index, TextColour highlighted_colour)
| Sets the highlighted status of a widget.
bool | IsWidgetHighlighted (byte widget_index) const
| Gets the highlighted status of a widget.
void | SetWidgetDisabledState (byte widget_index, bool disab_stat)
| Sets the enabled/disabled status of a widget.
void | DisableWidget (byte widget_index)
| Sets a widget to disabled.
void | EnableWidget (byte widget_index)
| Sets a widget to Enabled.
bool | IsWidgetDisabled (byte widget_index) const
| Gets the enabled/disabled status of a widget.
bool | IsWidgetFocused (byte widget_index) const
| Check if given widget is focused within this window.
bool | IsWidgetGloballyFocused (byte widget_index) const
| Check if given widget has user input focus.
void | SetWidgetLoweredState (byte widget_index, bool lowered_stat)
| Sets the lowered/raised status of a widget.
void | ToggleWidgetLoweredState (byte widget_index)
| Invert the lowered/raised status of a widget.
void | LowerWidget (byte widget_index)
| Marks a widget as lowered.
void | RaiseWidget (byte widget_index)
| Marks a widget as raised.
bool | IsWidgetLowered (byte widget_index) const
| Gets the lowered state of a widget.
void | UnfocusFocusedWidget ()
| Makes no widget on this window have focus.
bool | SetFocusedWidget (int widget_index)
| Set focus within this window to the given widget.
EventState | HandleEditBoxKey (int wid, WChar key, uint16 keycode)
| Process keypress for editbox widget.
virtual void | InsertTextString (int wid, const char *str, bool marked, const char *caret, const char *insert_location, const char *replacement_end)
| Insert a text string at the cursor position into the edit box widget.
void | HandleButtonClick (byte widget)
| Do all things to make a button look clicked and mark it to be unclicked in a few ticks.
int | GetRowFromWidget (int clickpos, int widget, int padding, int line_height=-1) const
| Compute the row of a widget that a user clicked in.
void | RaiseButtons (bool autoraise=false)
| Raise the buttons of the window.
void CDECL | SetWidgetsDisabledState (bool disab_stat, int widgets,...)
| Sets the enabled/disabled status of a list of widgets.
void CDECL | SetWidgetsLoweredState (bool lowered_stat, int widgets,...)
| Sets the lowered/raised status of a list of widgets.
void | SetWidgetDirty (byte widget_index) const
| Invalidate a widget, i.e.
void | DrawWidgets () const
| Paint all widgets of a window.
void | DrawViewport () const
| Draw the viewport of this window.
void | DrawSortButtonState (int widget, SortButtonState state) const
| Draw a sort button's up or down arrow symbol.
void | DeleteChildWindows (WindowClass wc=WC_INVALID) const
| Delete all children a window might have in a head-recursive manner.
void | SetDirty () const
| Mark entire window as dirty (in need of re-paint)
void | ReInit (int rx=0, int ry=0)
| Re-initialize a window, and optionally change its size.
bool | IsShaded () const
| Is window shaded currently?
void | SetShaded (bool make_shaded)
| Set the shaded state of the window to make_shaded.
void | InvalidateData (int data=0, bool gui_scope=true)
| Mark this window's data as invalid (in need of re-computing)
void | ProcessScheduledInvalidations ()
| Process all scheduled invalidations.
void | ProcessHighlightedInvalidations ()
| Process all invalidation of highlighted widgets.
virtual void | OnInit ()
| Notification that the nested widget tree gets initialized.
virtual void | ApplyDefaults ()
| Read default values from WindowDesc configuration an apply them to the window.
virtual Point | OnInitialPosition (int16 sm_width, int16 sm_height, int window_number)
| Compute the initial position of the window.
virtual void | OnPaint ()
| The window must be repainted.
virtual void | DrawWidget (const Rect &r, int widget) const
| Draw the contents of a nested widget.
virtual void | UpdateWidgetSize (int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
| Update size and resize step of a widget in the window.
virtual void | SetStringParameters (int widget) const
| Initialize string parameters for a widget.
virtual void | OnFocus ()
| Called when window gains focus.
virtual void | OnFocusLost ()
| Called when window looses focus.
virtual EventState | OnKeyPress (WChar key, uint16 keycode)
| A key has been pressed.
virtual EventState | OnHotkey (int hotkey)
| A hotkey has been pressed.
virtual EventState | OnCTRLStateChange ()
| The state of the control key has changed.
virtual void | OnClick (Point pt, int widget, int click_count)
| A click with the left mouse button has been made on the window.
virtual bool | OnRightClick (Point pt, int widget)
| A click with the right mouse button has been made on the window.
virtual void | OnHover (Point pt, int widget)
| The mouse is hovering over a widget in the window, perform an action for it, like opening a custom tooltip.
virtual void | OnMouseDrag (Point pt, int widget)
| An 'object' is being dragged at the provided position, highlight the target if possible.
virtual void | OnDragDrop (Point pt, int widget)
| A dragged 'object' has been released.
virtual void | OnScroll (Point delta)
| Handle the request for (viewport) scrolling.
virtual void | OnMouseOver (Point pt, int widget)
| The mouse is currently moving over the window or has just moved outside of the window.
virtual void | OnMouseWheel (int wheel)
| The mouse wheel has been turned.
virtual void | OnMouseLoop ()
| Called for every mouse loop run, which is at least once per (game) tick.
virtual void | OnTick ()
| Called once per (game) tick.
virtual void | OnHundredthTick ()
| Called once every 100 (game) ticks.
virtual void | OnTimeout ()
| Called when this window's timeout has been reached.
virtual void | OnResize ()
| Called after the window got resized.
virtual void | OnDropdownSelect (int widget, int index)
| A dropdown option associated to this window has been selected.
virtual void | OnDropdownClose (Point pt, int widget, int index, bool instant_close)
| A dropdown window associated to this window has been closed.
virtual void | OnEditboxChanged (int widget)
| The text in an editbox has been edited.
virtual void | OnQueryTextFinished (char *str)
| The query window opened from this window has closed.
virtual void | OnInvalidateData (int data=0, bool gui_scope=true)
| Some data on this window has become invalid.
virtual void | OnPlaceObject (Point pt, TileIndex tile)
| The user clicked some place on the map when a tile highlight mode has been set.
virtual bool | OnVehicleSelect (const struct Vehicle *v)
| The user clicked on a vehicle while HT_VEHICLE has been set.
virtual void | OnPlaceObjectAbort ()
| The user cancelled a tile highlight mode that has been set.
virtual void | OnPlaceDrag (ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt)
| The user is dragging over the map when the tile highlight mode has been set.
virtual void | OnPlaceMouseUp (ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt, TileIndex start_tile, TileIndex end_tile)
| The user has dragged over the map when the tile highlight mode has been set.
virtual void | OnPlacePresize (Point pt, TileIndex tile)
| The user moves over the map when a tile highlight mode has been set when the special mouse mode has been set to 'PRESIZE' mode.
virtual bool | IsNewGRFInspectable () const
| Is the data related to this window NewGRF inspectable?
virtual void | ShowNewGRFInspectWindow () const
| Show the NewGRF inspection window.
Public Member Functions inherited from ZeroedMemoryAllocator
void * | operator new (size_t size)
| Memory allocator for a single class instance.
void | operator delete[] (void *ptr)
| Memory release for an array of class instances.

## Private Types
typedef GUIList< const ContentInfo *, StringFilter & > | GUIContentList
| List with content infos.

## Private Member Functions
void | OpenExternalSearch ()
| Search external websites for content.
void | BuildContentList ()
| (Re)build the network game list as its amount has changed because an item has been added or deleted for example
void | SortContentList ()
| Sort the content list.
void | FilterContentList ()
| Filter the content list.
void | ScrollToSelected ()
| Make sure that the currently selected content info is within the visible part of the matrix.
Private Member Functions inherited from ContentCallback
virtual void | OnConnect (bool success)
| Callback for when the connection has finished.
virtual void | OnDisconnect ()
| Callback for when the connection got disconnected.
virtual void | OnReceiveContentInfo (const ContentInfo *ci)
| We received a content info.
virtual void | OnDownloadProgress (const ContentInfo *ci, int bytes)
| We have progress in the download of a file.
virtual void | OnDownloadComplete (ContentID cid)
| We have finished downloading a file.
virtual | ~ContentCallback ()
| Silentium.

## Static Private Member Functions
static void | ExternalSearchDisclaimerCallback (Window *w, bool accepted)
| Callback function for disclaimer about entering external websites.
static int CDECL | NameSorter (const ContentInfo *const *a, const ContentInfo *const *b)
| Sort content by name.
static int CDECL | TypeSorter (const ContentInfo *const *a, const ContentInfo *const *b)
| Sort content by type.
static int CDECL | StateSorter (const ContentInfo *const *a, const ContentInfo *const *b)
| Sort content by state.
static bool CDECL | TagNameFilter (const ContentInfo *const *a, StringFilter &filter)
| Filter content by tags/name.

## Private Attributes
GUIContentList | content
| List with content.
bool | auto_select
| Automatically select all content when the meta-data becomes available.
StringFilter | string_filter
| Filter for content list.
QueryString | filter_editbox
| Filter editbox;.
Dimension | checkbox_size
| Size of checkbox/"blot" sprite.
const ContentInfo * | selected
| The selected content info.
int | list_pos
| Our position in the list.
uint | filesize_sum
| The sum of all selected file sizes.
Scrollbar * | vscroll
| Cache of the vertical scrollbar.

## Static Private Attributes
static const uint | EDITBOX_MAX_SIZE = 50
| Maximum size of the editbox in characters.
static Listing | last_sorting = {false, 1}
| The last sorting setting.
static Filtering | last_filtering = {false, 0}
| The last filtering setting.
static GUIContentList::SortFunction *const | sorter_funcs []
| Sorter functions.
static GUIContentList::FilterFunction *const | filter_funcs []
| Filter functions.
static char | content_type_strs [CONTENT_TYPE_END][64]
| Cached strings for all content types.

## Friends
void | BuildContentTypeStringList ()
| Build array of all strings corresponding to the content types.

## Additional Inherited Members
Static Public Member Functions inherited from Window
static int | SortButtonWidth ()
| Get width of up/down arrow of sort button state.
Data Fields inherited from Window
WindowDesc * | window_desc
| Window description.
WindowFlags | flags
| Window flags.
WindowClass | window_class
| Window class.
WindowNumber | window_number
| Window number within the window class.
uint8 | timeout_timer
| Timer value of the WF_TIMEOUT for flags.
uint8 | white_border_timer
| Timer value of the WF_WHITE_BORDER for flags.
int | left
| x position of left edge of the window
int | top
| y position of top edge of the window
int | width
| width of the window (number of pixels to the right in x direction)
int | height
| Height of the window (number of pixels down in y direction)
ResizeInfo | resize
| Resize information.
Owner | owner
| The owner of the content shown in this window. Company colour is acquired from this variable.
ViewportData * | viewport
| Pointer to viewport data, if present.
const NWidgetCore * | nested_focus
| Currently focused nested widget, or `NULL` if no nested widget has focus.
SmallMap< int, QueryString * > | querystrings
| QueryString associated to WWT_EDITBOX widgets.
NWidgetBase * | nested_root
| Root of the nested tree.
NWidgetBase ** | nested_array
| Array of pointers into the tree. Do not access directly, use Window::GetWidget() instead.
uint | nested_array_size
| Size of the nested array.
NWidgetStacked * | shade_select
| Selection widget (NWID_SELECTION) to use for shading the window. If `NULL`, window cannot shade.
Dimension | unshaded_size
| Last known unshaded size (only valid while shaded).
int | scrolling_scrollbar
| Widgetindex of just being dragged scrollbar. -1 if none is active.
Window * | parent
| Parent window.
Window * | z_front
| The window in front of us in z-order.
Window * | z_back
| The window behind us in z-order.
Protected Member Functions inherited from Window
void | InitializeData (WindowNumber window_number)
| Initializes the data (except the position and initial size) of a new Window.
void | InitializePositionSize (int x, int y, int min_width, int min_height)
| Set the position and smallest size of the window.
virtual void | FindWindowPlacementAndResize (int def_width, int def_height)
| Resize window towards the default size.
Protected Attributes inherited from Window
SmallVector< int, 4 > | scheduled_invalidation_data
| Data of scheduled OnInvalidateData() calls.

## Detailed Description

Window that lists the content that's at the content server.

Definition at line 286 of file network_content_gui.cpp.

## Member Typedef Documentation

typedef GUIList<const ContentInfo *, StringFilter &> NetworkContentListWindow::GUIContentList
| private

List with content infos.

Definition at line 288 of file network_content_gui.cpp.

## Constructor & Destructor Documentation

NetworkContentListWindow::NetworkContentListWindow | ( | WindowDesc * | desc,
|  | bool | select_all
| ) |  |
| inline

Create the content list window.

Parameters

  desc | the window description to pass to Window's constructor.
  select_all | Whether the select all button is allowed or not.

Definition at line 477 of file network_content_gui.cpp.

References _network_content_client, QueryString::ACTION_CLEAR, ClientNetworkContentSocketHandler::AddCallback(), auto_select, QueryString::cancel_button, checkbox_size, content, Window::CreateNestedTree(), filter_editbox, filter_funcs, FilterContentList(), Window::FinishInitNested(), GUIList< T, F >::ForceRebuild(), Window::GetScrollbar(), GetSpriteSize(), Window::InvalidateData(), last_filtering, last_sorting, maxdim(), Window::querystrings, GUIList< T, F >::SetFilterFuncs(), GUIList< T, F >::SetFiltering(), Window::SetFocusedWidget(), GUIList< T, F >::SetListing(), GUIList< T, F >::SetSortFuncs(), Window::SetWidgetDisabledState(), SortContentList(), sorter_funcs, vscroll, WID_NCL_FILTER, WID_NCL_SCROLLBAR, WID_NCL_SEARCH_EXTERNAL, WID_NCL_SEL_ALL_UPDATE, and WN_NETWORK_WINDOW_CONTENT_LIST.

## Member Function Documentation

void NetworkContentListWindow::DrawDetails | ( | const Rect & | r | ) | const
| inline

Helper function to draw the details part of this window.

Parameters

  r | the rectangle to stay within while drawing

< Number of pixels at the left

< Number of pixels at the right

< Number of pixels at the top

Definition at line 622 of file network_content_gui.cpp.

References _network_content_client, ClientNetworkContentSocketHandler::Begin(), SmallVector< T, S >::Begin(), CONTENT_TYPE_BASE_GRAPHICS, ContentInfo::dependencies, ContentInfo::dependency_count, ContentInfo::description, DRAW_STRING_BUFFER, DrawString(), DrawStringMultiLine(), ClientNetworkContentSocketHandler::End(), SmallVector< T, S >::End(), ContentInfo::filesize, filesize_sum, FONT_HEIGHT_NORMAL, GfxFillRect(), ContentInfo::id, ContentInfo::IsSelected(), lastof, ContentInfo::name, PC_DARK_BLUE, ClientNetworkContentSocketHandler::ReverseLookupTreeDependency(), SA_CENTER, SA_HOR_CENTER, ContentInfo::SELECTED, selected, seprintf(), SetDParam(), SetDParamStr(), ContentInfo::state, StrEmpty(), ContentInfo::tag_count, ContentInfo::tags, ContentInfo::type, ContentInfo::upgrade, ContentInfo::url, ContentInfo::version, WD_INSET_LEFT, WD_INSET_RIGHT, WD_INSET_TOP, WD_PAR_VSEP_NORMAL, and WD_PAR_VSEP_WIDE.

void NetworkContentListWindow::DrawMatrix | ( | const Rect & | r | ) | const
| inline

Draw/fill the matrix with the list of content to download.

Parameters

  r | The boundaries of the matrix.

Definition at line 580 of file network_content_gui.cpp.

References ContentInfo::ALREADY_HERE, ContentInfo::AUTOSELECTED, checkbox_size, content, CONTENT_TYPE_BASE_GRAPHICS, ContentInfo::DOES_NOT_EXIST, DrawSprite(), DrawString(), SmallVector< T, S >::End(), FONT_HEIGHT_NORMAL, SmallVector< T, S >::Get(), Scrollbar::GetCapacity(), GfxFillRect(), max(), ContentInfo::name, PC_GREY, NWidgetBase::pos_x, SA_HOR_CENTER, ContentInfo::SELECTED, selected, ContentInfo::state, ContentInfo::type, ContentInfo::UNSELECTED, vscroll, WD_FRAMERECT_LEFT, WD_FRAMERECT_RIGHT, WD_MATRIX_TOP, WID_NCL_CHECKBOX, WID_NCL_NAME, and WID_NCL_TYPE.

static int CDECL NetworkContentListWindow::NameSorter | ( | const ContentInfo *const * | a,
|  | const ContentInfo *const * | b
| ) |  |
| inlinestaticprivate

Sort content by name.

Definition at line 396 of file network_content_gui.cpp.

References strnatcmp().

Referenced by TypeSorter().

virtual void NetworkContentListWindow::OnInvalidateData | ( | int | data = `0`,
|  | bool | gui_scope = `true`
| ) |  |
| inlinevirtual

Some data on this window has become invalid.

Parameters

  data | Information about the changed data.
  gui_scope | Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See InvalidateWindowData() for details.

Definition at line 916 of file network_content_gui.cpp.

References ContentInfo::ALREADY_HERE, ContentInfo::AUTOSELECTED, SmallVector< T, S >::Begin(), BuildContentList(), content, SmallVector< T, S >::End(), ContentInfo::filesize, filesize_sum, FindWindowById(), GUIList< T, F >::NeedRebuild(), ContentInfo::SELECTED, selected, Window::SetWidgetDisabledState(), ContentInfo::state, StrEmpty(), ContentInfo::UNSELECTED, ContentInfo::upgrade, ContentInfo::url, WC_NETWORK_STATUS_WINDOW, WID_NCL_CANCEL, WID_NCL_DOWNLOAD, WID_NCL_OPEN_URL, WID_NCL_SELECT_ALL, WID_NCL_SELECT_UPDATE, WID_NCL_TEXTFILE, WID_NCL_UNSELECT, and WN_NETWORK_STATUS_WINDOW_CONTENT_DOWNLOAD.

static int CDECL NetworkContentListWindow::StateSorter | ( | const ContentInfo *const * | a,
|  | const ContentInfo *const * | b
| ) |  |
| inlinestaticprivate

Sort content by state.

Definition at line 413 of file network_content_gui.cpp.

References TypeSorter().

static int CDECL NetworkContentListWindow::TypeSorter | ( | const ContentInfo *const * | a,
|  | const ContentInfo *const * | b
| ) |  |
| inlinestaticprivate

Sort content by type.

Definition at line 402 of file network_content_gui.cpp.

References content_type_strs, NameSorter(), and strnatcmp().

Referenced by StateSorter().

## Field Documentation

NetworkContentListWindow::GUIContentList::FilterFunction *const NetworkContentListWindow::filter_funcs
| staticprivate

Initial value:
{
&TagNameFilter,
}

Filter functions.

Definition at line 295 of file network_content_gui.cpp.

Referenced by NetworkContentListWindow().

NetworkContentListWindow::GUIContentList::SortFunction *const NetworkContentListWindow::sorter_funcs
| staticprivate

Initial value:
{
&StateSorter,
&TypeSorter,
&NameSorter,
}

Sorter functions.

Definition at line 294 of file network_content_gui.cpp.

Referenced by NetworkContentListWindow().

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

- src/network/network_content_gui.cpp