UFO: Alien Invasion
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
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"

Go to the source code of this file.

Data Structures

struct  uiSharedData_s
 
struct  uiOptionIterator_t
 

Macros

#define MAX_DEPTH_OPTIONITERATORCACHE   8
 

Typedefs

typedef struct uiSharedData_s uiSharedData_t
 

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. More...
 
int UI_GetDataIDByName (const char *name) __attribute__((warn_unused_result))
 Return a dataId by name. More...
 
void UI_InitData (void)
 Initialize console command about UI shared data. More...
 
void UI_RegisterText (int textId, const char *text)
 share a text with a data id More...
 
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 More...
 
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. More...
 
uiNode_tUI_InitOptionIteratorAtIndex (int index, uiNode_t *option, uiOptionIterator_t *iterator)
 Init an option iterator at an index. More...
 
uiNode_tUI_InitOptionIteratorAtIndex (int index, uiNode_t *option, uiOptionIterator_t *iterator, bool skipCollapsed, bool skipInvisible)
 Init an option iterator at an index. More...
 
uiNode_tUI_OptionIteratorNextOption (uiOptionIterator_t *iterator)
 Find the next element from the iterator Iterator skipCollapsed and skipInvisible attribute can control the option flow. More...
 
void UI_UpdateInvisOptions (uiNode_t *option, const linkedList_t *stringList)
 Unhide those options that are stored in the linked list and hide the others. More...
 
uiNode_tUI_FindOptionByValue (uiOptionIterator_t *iterator, const char *value)
 Find an option (and all his parents) by is value. More...
 
int UI_FindOptionPosition (uiOptionIterator_t *iterator, uiNode_t const *option)
 Find an option position from an option iterator. More...
 
uiNode_tUI_AddOption (uiNode_t **tree, const char *name, const char *label, const char *value)
 Append an option to an option list. More...
 

Detailed Description

Data and interface to share data.

Todo:
clean up the interface

Definition in file ui_data.h.

Macro Definition Documentation

#define MAX_DEPTH_OPTIONITERATORCACHE   8

Definition at line 57 of file ui_data.h.

Referenced by UI_FindOptionAtIndex(), and UI_OptionIteratorNextOption().

Typedef Documentation

Enumeration Type Documentation

Enumerator
UI_SHARED_NONE 
UI_SHARED_TEXT 
UI_SHARED_LINKEDLISTTEXT 
UI_SHARED_OPTION 

Definition at line 37 of file ui_data.h.

Function Documentation

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 uiNode_t::next, and UI_AllocOptionNode().

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

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().

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().

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 uiNode_t::num, Q_streq, UI_MAX_DATAID, and ui_sharedDataIDNames.

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

const char* UI_GetTextFromList ( int  textId,
int  line 
)
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().

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)
1 uiOptionIterator_t iterator;
2 UI_InitOptionIteratorAtIndex(index, firstOption, &iterator); // also return the option
3 while (iterator.option) {
4  ...
5  UI_OptionIteratorNextOption(&iterator); // also return the option
6 }
Todo:
Rework that code, we should split "Init" and "AtIndex"

Definition at line 394 of file ui_data.cpp.

References UI_InitOptionIteratorAtIndex().

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

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)
1 uiOptionIterator_t iterator;
2 UI_InitOptionIteratorAtIndex(index, firstOption, &iterator); // also return the option
3 while (iterator.option) {
4  ...
5  UI_OptionIteratorNextOption(&iterator); // also return the option
6 }
Todo:
Rework that code, we should split "Init" and "AtIndex"

Definition at line 417 of file ui_data.cpp.

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

uiNode_t* UI_OptionIteratorNextOption ( uiOptionIterator_t iterator)
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 uiSharedData_s::data, uiSharedData_s::linkedListText, uiGlobal_s::sharedData, uiNode_t::text, uiSharedData_s::type, ui_global, UI_ResetData(), UI_SHARED_LINKEDLISTTEXT, and uiSharedData_s::versionId.

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

void UI_RegisterOption ( int  dataId,
uiNode_t option 
)
void UI_SortOptions ( uiNode_t **  option)

Sort options by alphabet.

Definition at line 273 of file ui_data.cpp.

References uiNode_t::next, and UI_OptionNodeRemoveHigherOption().

Referenced by CL_LanguageInitMenu(), GAME_GetImportData(), and UI_AbstractOption_SortOptions().

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().