UFO: Alien Invasion
Loading...
Searching...
No Matches
ui_data.h File Reference

Data and interface to share data. More...

#include "../../shared/ufotypes.h"
#include "../../shared/shared.h"
#include "ui_nodes.h"
#include "node/ui_node_option.h"
#include "ui_dataids.h"
Include dependency graph for ui_data.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  uiSharedData_t
struct  uiOptionIterator_t

Macros

#define MAX_DEPTH_OPTIONITERATORCACHE   8

Enumerations

enum  uiSharedType_t { UI_SHARED_NONE = 0 , UI_SHARED_TEXT , UI_SHARED_LINKEDLISTTEXT , UI_SHARED_OPTION }

Functions

int UI_GetDataVersion (int textId) __attribute__((warn_unused_result))
void UI_ResetData (int dataId)
 Reset a shared data. Type became NONE and value became nullptr.
int UI_GetDataIDByName (const char *name) __attribute__((warn_unused_result))
 Return a dataId by name.
void UI_InitData (void)
 Initialize console command about UI shared data.
void UI_RegisterText (int textId, const char *text)
 share a text with a data id
const char * UI_GetText (int textId) __attribute__((warn_unused_result))
const char * UI_GetTextFromList (int textId, int line) __attribute__((warn_unused_result))
void UI_RegisterLinkedListText (int textId, linkedList_t *text)
 share a linked list of text with a data id
void UI_RegisterOption (int dataId, uiNode_t *option)
uiNode_tUI_GetOption (int dataId) __attribute__((warn_unused_result))
void UI_SortOptions (uiNode_t **option)
 Sort options by alphabet.
uiNode_tUI_InitOptionIteratorAtIndex (int index, uiNode_t *option, uiOptionIterator_t *iterator)
 Init an option iterator at an index.
uiNode_tUI_InitOptionIteratorAtIndex (int index, uiNode_t *option, uiOptionIterator_t *iterator, bool skipCollapsed, bool skipInvisible)
 Init an option iterator at an index.
uiNode_tUI_OptionIteratorNextOption (uiOptionIterator_t *iterator)
 Find the next element from the iterator Iterator skipCollapsed and skipInvisible attribute can control the option flow.
void UI_UpdateInvisOptions (uiNode_t *option, const linkedList_t *stringList)
 Unhide those options that are stored in the linked list and hide the others.
uiNode_tUI_FindOptionByValue (uiOptionIterator_t *iterator, const char *value)
 Find an option (and all his parents) by is value.
int UI_FindOptionPosition (uiOptionIterator_t *iterator, uiNode_t const *option)
 Find an option position from an option iterator.
uiNode_tUI_AddOption (uiNode_t **tree, const char *name, const char *label, const char *value)
 Append an option to an option list.

Detailed Description

Data and interface to share data.

Todo
clean up the interface

Definition in file ui_data.h.

Macro Definition Documentation

◆ MAX_DEPTH_OPTIONITERATORCACHE

#define MAX_DEPTH_OPTIONITERATORCACHE   8

Definition at line 57 of file ui_data.h.

Referenced by UI_FindOptionAtIndex(), and UI_OptionIteratorNextOption().

Enumeration Type Documentation

◆ uiSharedType_t

Enumerator
UI_SHARED_NONE 
UI_SHARED_TEXT 
UI_SHARED_LINKEDLISTTEXT 
UI_SHARED_OPTION 

Definition at line 37 of file ui_data.h.

Function Documentation

◆ UI_AddOption()

uiNode_t * UI_AddOption ( uiNode_t ** tree,
const char * name,
const char * label,
const char * value )

Append an option to an option list.

Parameters
[in,out]treefirst option of the list/tree of options
[in]namename of the option (should be unique in the option list)
[in]labellabel displayed
[in]valuevalue used when this option is selected
Returns
The new option

Definition at line 172 of file ui_data.cpp.

References name, uiNode_t::next, and UI_AllocOptionNode().

Referenced by CL_InitSkin_f(), CL_LanguageInitMenu(), CL_TeamDefInitMenu(), CL_VideoInitMenu(), GAME_GetImportData(), and IN_JoystickInitMenu().

◆ UI_FindOptionByValue()

uiNode_t * UI_FindOptionByValue ( uiOptionIterator_t * iterator,
const char * value )

Find an option (and all his parents) by is value.

Parameters
[in,out]iteratorIf it found an option, the iterator contain all option parent
[in]valueThe value we search
Returns
The right option, else nullptr

Definition at line 468 of file ui_data.cpp.

References uiNode_t::behaviour, uiOptionIterator_t::option, OPTIONEXTRADATA, Q_streq, ui_optionBehaviour, and UI_OptionIteratorNextOption().

Referenced by UI_OptionTree_SelectValue().

◆ UI_FindOptionPosition()

int UI_FindOptionPosition ( uiOptionIterator_t * iterator,
const uiNode_t * option )

Find an option position from an option iterator.

Parameters
[in,out]iteratorContext of the iteration. If it found an option, the iterator contain all option parent
[in]optionThe value we search
Returns
The option index, else -1

Definition at line 485 of file ui_data.cpp.

References i, uiOptionIterator_t::option, and UI_OptionIteratorNextOption().

Referenced by UI_OptionTree_SelectValue().

◆ UI_GetDataIDByName()

int UI_GetDataIDByName ( const char * name)

Return a dataId by name.

Returns
A dataId if data found, else -1

Definition at line 102 of file ui_data.cpp.

References name, Q_streq, UI_MAX_DATAID, and ui_sharedDataIDNames.

Referenced by UI_AbstractOption_SetDataIdByName(), UI_ParseProperty(), and UI_ResetData_f().

◆ UI_GetDataVersion()

int UI_GetDataVersion ( int textId)

◆ UI_GetOption()

◆ UI_GetText()

const char * UI_GetText ( int textId)

◆ UI_GetTextFromList()

const char * UI_GetTextFromList ( int textId,
int line )

Definition at line 151 of file ui_data.cpp.

References LIST_GetByIdx(), ui_global, and UI_SHARED_LINKEDLISTTEXT.

Referenced by UI_TextNodeGetSelectedText().

◆ UI_InitData()

void UI_InitData ( void )

Initialize console command about UI shared data.

Note
called by UI_Init

Definition at line 521 of file ui_data.cpp.

References Cmd_AddCommand(), and UI_ResetData_f().

Referenced by UI_Init().

◆ UI_InitOptionIteratorAtIndex() [1/2]

uiNode_t * UI_InitOptionIteratorAtIndex ( int index,
uiNode_t * option,
uiOptionIterator_t * iterator )

Init an option iterator at an index.

Note
invis option are skipped, and child are counted
Parameters
[in]indexRequested index (0 is the first option)
[in]optionFirst element of options (it can be a tree)
[out]iteratorInitialised iterator
Returns
the first option element found (current position of the iterator)
UI_InitOptionIteratorAtIndex(index, firstOption, &iterator); // also return the option
while (iterator.option) {
...
UI_OptionIteratorNextOption(&iterator); // also return the option
}
QGL_EXTERN GLuint index
Definition r_gl.h:110
uiNode_t * option
Definition ui_data.h:60
uiNode_t * UI_InitOptionIteratorAtIndex(int index, uiNode_t *option, uiOptionIterator_t *iterator)
Init an option iterator at an index.
Definition ui_data.cpp:394
uiNode_t * UI_OptionIteratorNextOption(uiOptionIterator_t *iterator)
Find the next element from the iterator Iterator skipCollapsed and skipInvisible attribute can contro...
Definition ui_data.cpp:430
Todo
Rework that code, we should split "Init" and "AtIndex"

Definition at line 394 of file ui_data.cpp.

References index, and UI_InitOptionIteratorAtIndex().

Referenced by uiOptionTreeNode::draw(), GAME_GetImportData(), UI_InitOptionIteratorAtIndex(), UI_OptionTree_SelectValue(), and UI_OptionTreeNodeGetOptionAtPosition().

◆ UI_InitOptionIteratorAtIndex() [2/2]

uiNode_t * UI_InitOptionIteratorAtIndex ( int index,
uiNode_t * option,
uiOptionIterator_t * iterator,
bool skipCollapsed,
bool skipInvisible )

Init an option iterator at an index.

Note
invis option are skipped, and child are counted
Parameters
[in]indexRequested index (0 is the first option)
[in]optionFirst element of options (it can be a tree)
[in]skipCollapsedSet to true to skip collapsed nodes in the iteration.
[in]skipInvisibleSet to true to skip invisible nodes in the iteration.
[out]iteratorInitialised iterator
Returns
the first option element found (current position of the iterator)
UI_InitOptionIteratorAtIndex(index, firstOption, &iterator); // also return the option
while (iterator.option) {
...
UI_OptionIteratorNextOption(&iterator); // also return the option
}
Todo
Rework that code, we should split "Init" and "AtIndex"

Definition at line 417 of file ui_data.cpp.

References uiNode_t::behaviour, index, OBJZERO, uiOptionIterator_t::skipCollapsed, uiOptionIterator_t::skipInvisible, UI_FindOptionAtIndex(), and ui_optionBehaviour.

◆ UI_OptionIteratorNextOption()

uiNode_t * UI_OptionIteratorNextOption ( uiOptionIterator_t * iterator)

◆ UI_RegisterLinkedListText()

void UI_RegisterLinkedListText ( int dataId,
linkedList_t * text )

share a linked list of text with a data id

Note
The UI code manage the linked list memory (linked list is freed by the UI code)
Todo
FIXME It is a hack to disable release memory, if we only want to update the same list

Definition at line 131 of file ui_data.cpp.

References ui_global, UI_ResetData(), and UI_SHARED_LINKEDLISTTEXT.

Referenced by GAME_GetImportData(), GAME_InitMissionBriefing(), Irc_Client_Names_f(), UI_MaterialEditorUpdate(), and UI_PopupList().

◆ UI_RegisterOption()

void UI_RegisterOption ( int dataId,
uiNode_t * option )

Hack to disable release option memory, if we only want to update the same option

Definition at line 311 of file ui_data.cpp.

References ui_global, UI_ResetData(), and UI_SHARED_OPTION.

Referenced by CL_InitSkin_f(), CL_LanguageInitMenu(), CL_SetRatioFilter_f(), CL_TeamDefInitMenu(), CL_VideoInitMenu(), GAME_GetImportData(), and IN_JoystickInitMenu().

◆ UI_RegisterText()

void UI_RegisterText ( int dataId,
const char * text )

◆ UI_ResetData()

◆ UI_SortOptions()

void UI_SortOptions ( uiNode_t ** option)

◆ UI_UpdateInvisOptions()

void UI_UpdateInvisOptions ( uiNode_t * option,
const linkedList_t * stringList )

Unhide those options that are stored in the linked list and hide the others.

Parameters
[in,out]optionOption list we want to update
[in]stringListList of option name (ID) we want to display

Definition at line 297 of file ui_data.cpp.

References uiNode_t::invis, LIST_ContainsString(), uiNode_t::name, and uiNode_t::next.

Referenced by GAME_GetImportData().