aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjenkins4kodi <jenkins4kodi@users.noreply.github.com>2018-11-21 13:01:03 +0100
committerGitHub <noreply@github.com>2018-11-21 13:01:03 +0100
commit314c302559b13b1aa21b7fa6647e850422e60a9c (patch)
tree27dd75613e95241dd7154310a8518a4d0235c532
parentbacbbc3a25322e078c4e05b4d297d6173c0ab6d9 (diff)
parent729344d9f0314b09abce8fa84c36728f6b4b93c8 (diff)
Merge pull request #14910 from enen92/info-bool-doxy18.0rc1-Leia
-rw-r--r--docs/doxygen/Doxyfile.doxy8
-rw-r--r--xbmc/GUIInfoManager.cpp5755
-rw-r--r--xbmc/XBDateTime.h64
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/doxygen/Modules/modules_general.dox2
-rw-r--r--xbmc/guilib/guiinfo/GUIInfoLabels.h2
5 files changed, 4239 insertions, 1592 deletions
diff --git a/docs/doxygen/Doxyfile.doxy b/docs/doxygen/Doxyfile.doxy
index 514e942d6d..9115f3a19a 100644
--- a/docs/doxygen/Doxyfile.doxy
+++ b/docs/doxygen/Doxyfile.doxy
@@ -238,18 +238,18 @@ TAB_SIZE = 2
# "Side Effects:". You can put \n's in the value part of an alias to insert
# newlines.
-ALIASES = "table_start=<table width= 100% style= border bgcolor= 576f9f border= 0>" \
+ALIASES = "table_start=<table width=\"100%\" style=\"border\" bgcolor=\"576f9f\" border=\"0\">" \
"table_end=</table>" \
"table_h2_l{2}=<tr bgcolor= 576f9f><th width= 40% align=left>\1</th><th width= 60% align=left>\2</th></tr>" \
"table_row2_l{2}=<tr bgcolor=white><td width= 40% align=left>\1</td><td width= 60% align=left>\2</td></tr>" \
- "table_h3{3}=<tr bgcolor= 576f9f><th width= 30% align=left>\1</th><th width= 10% align=left>\2</th><th width= 60% align=left>\3</th></tr>" \
- "table_row3{3}=<tr bgcolor=white><td width= 30% align=left>\1</td><td width= 10% align=left>\2</td><td width= 60% align=left>\3</td></tr>" \
+ "table_h3{3}=<tr bgcolor=576f9f><th width=30% align=left valign=middle><b>\1</b></th><th width=10% align=left valign=middle><b>\2</b></th><th width=60% align=left valign=middle><span><b>\3</b></span></th></tr>" \
+ "table_row3{3}=\htmlonly<tr bgcolor=white><td width= 30% align=left>\endhtmlonly\1\htmlonly</td><td width= 10% align=left>\endhtmlonly\2\htmlonly</td><td width= 60% align=left>\endhtmlonly\3\htmlonly</td></tr>\endhtmlonly" \
"python_func{1}=\htmlonly <h4><code><span style=\"font-style: italic;\">Function: </span><span style=\"font-style: bold;\"><font color=31363b><big>\1</big></font></span></code></h4> \endhtmlonly" \
"python_func_with_rev{2}=\htmlonly <h4><code><span style=\"font-style: italic;\">Function: </span><span style=\"font-style: bold;\"><font color=31363b><big>\1</big></font></span></code><span style="float:right;"><small>\2</small></span></h4> \endhtmlonly" \
"python_class{1}=\htmlonly <h4><code><span style=\"font-style: italic;\">Class: </span><span style=\"font-style: bold;\"><font color=31363b><big>\1</big></font></span></code></h4> \endhtmlonly" \
"python_class_with_rev{2}=\htmlonly <h4><code><span style=\"font-style: italic;\">Class: </span><span style=\"font-style: bold;\"><font color=31363b><big>\1</big></font></span></code><span style="float:right;"><small>\2</small></span></h4> \endhtmlonly" \
"doc_header{1}=\htmlonly <h3><span style=\"text-decoration: underline;\"><span style=\"font-style: italic;\"><span style=\"color: rgb(102, 102, 102);\">\1</span></span></span></h3> \endhtmlonly" \
- "python_removed_function{3}=\htmlonly <dl class=\"reflist\"><dt>Member <a class="el" href=\"\2\">\1</a> (...)</dt><dd>\3</dd></dl>\endhtmlonly" \
+ "python_removed_function{3}=\htmlonly <dl class=\"reflist\"><dt>Member <a class=\"el\" href=\"\2\">\1</a> (...)</dt><dd>\3</dd></dl>\endhtmlonly" \
"python_v12=\xrefitem python_v12 \"v12 Python API changes\" \"\"" \
"python_v13=\xrefitem python_v13 \"v13 Python API changes\" \"\"" \
"python_v14=\xrefitem python_v14 \"v14 Python API changes\" \"\"" \
diff --git a/xbmc/GUIInfoManager.cpp b/xbmc/GUIInfoManager.cpp
index 7b0c2dfc33..63aa7f542b 100644
--- a/xbmc/GUIInfoManager.cpp
+++ b/xbmc/GUIInfoManager.cpp
@@ -76,16 +76,136 @@ typedef struct
int val;
} infomap;
-/// \page modules__General__List_of_gui_access List of GUI access messages
+/// \page modules__infolabels_boolean_conditions Infolabels and Boolean conditions
/// \tableofcontents
///
-/// \section modules__General__List_of_gui_access_Description Description
-/// Skins can use boolean conditions with the <b><visible></b> tag or with condition
+/// \section modules__infolabels_boolean_conditions_Description Description
+/// Skins can use boolean conditions with the <b>\<visible\></b> tag or with condition
/// attributes. Scripts can read boolean conditions with
/// <b>xbmc.getCondVisibility(condition)</b>.
///
-/// Skins can use infolabels with <b>$INFO[infolabel]</b> or the <b><info></b> tag. Scripts
+/// Skins can use infolabels with <b>$INFO[infolabel]</b> or the <b>\<info\></b> tag. Scripts
/// can read infolabels with <b>xbmc.getInfoLabel('infolabel')</b>.
+///
+/// @todo [docs] Improve the description and create links for functions
+/// @todo [docs] Separate boolean conditions from infolabels
+/// @todo [docs] Order items alphabetically within subsections for a better search experience
+/// @todo [docs] Order subsections alphabetically
+/// @todo [docs] Use links instead of bold values for infolabels/bools
+/// so we can use a link to point users when providing help
+///
+
+
+/// \page modules__infolabels_boolean_conditions
+/// \section modules_list_infolabels_booleans List of Infolabels and Boolean conditions
+/// \subsection modules__infolabels_boolean_conditions_GlobalBools Global
+/// \table_start
+/// \table_h3{ Labels, Type, Description }
+/// \table_row3{ <b>`true`</b>,
+/// \anchor Global_True
+/// _boolean_,
+/// @return Always evaluates to **true**.
+/// <p>
+/// }
+/// \table_row3{ <b>`false`</b>,
+/// \anchor Global_False
+/// _boolean_,
+/// @return Always evaluates to **false**.
+/// <p>
+/// }
+/// \table_row3{ <b>`yes`</b>,
+/// \anchor Global_Yes
+/// _boolean_,
+/// @return same as \link Global_True `true` \endlink.
+/// <p>
+/// }
+/// \table_row3{ <b>`no`</b>,
+/// \anchor Global_No
+/// _boolean_,
+/// @return same as \link Global_False `false` \endlink.
+/// <p>
+/// }
+/// \table_end
+///
+/// -----------------------------------------------------------------------------
+
+
+/// \page modules__infolabels_boolean_conditions
+/// \subsection modules__infolabels_boolean_conditions_String String
+/// \table_start
+/// \table_h3{ Labels, Type, Description }
+/// \table_row3{ <b>`String.IsEmpty(info)`</b>,
+/// \anchor String_IsEmpty
+/// _boolean_,
+/// @return **True** if the info is empty.
+/// @param info - infolabel
+/// @note **Example of info:** \link ListItem_Title `ListItem.Title` \endlink \,
+/// \link ListItem_Genre `ListItem.Genre` \endlink.
+/// Please note that string can also be a `$LOCALIZE[]`.
+/// Also note that in a panelview or similar this only works on the focused item
+/// <p><hr>
+/// @skinning_v17 **[New Boolean Condition]** \link String_IsEmpty `String.IsEmpty(info)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`String.IsEqual(info\,string)`</b>,
+/// \anchor String_IsEqual
+/// _boolean_,
+/// @return **True** if the info is equal to the given string.
+/// @param info - infolabel
+/// @param string - comparison string
+/// @note **Example of info:** \link ListItem_Title `ListItem.Title` \endlink \,
+/// \link ListItem_Genre `ListItem.Genre` \endlink.
+/// Please note that string can also be a `$LOCALIZE[]`.
+/// Also note that in a panelview or similar this only works on the focused item
+/// <p><hr>
+/// @skinning_v17 **[New Boolean Condition]** \link String_IsEqual `String.IsEqual(info\,string)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`String.StartsWith(info\,substring)`</b>,
+/// \anchor String_StartsWith
+/// _boolean_,
+/// @return **True** if the info starts with the given substring.
+/// @param info - infolabel
+/// @param substring - substring to check
+/// @note **Example of info:** \link ListItem_Title `ListItem.Title` \endlink \,
+/// \link ListItem_Genre `ListItem.Genre` \endlink.
+/// Please note that string can also be a `$LOCALIZE[]`.
+/// Also note that in a panelview or similar this only works on the focused item
+/// <p><hr>
+/// @skinning_v17 **[New Boolean Condition]** \link String_StartsWith `String.StartsWith(info\,substring)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`String.EndsWith(info\,substring)`</b>,
+/// \anchor String_EndsWith
+/// _boolean_,
+/// @return **True** if the info ends with the given substring.
+/// @param info - infolabel
+/// @param substring - substring to check
+/// @note **Example of info:** \link ListItem_Title `ListItem.Title` \endlink \,
+/// \link ListItem_Genre `ListItem.Genre` \endlink.
+/// Please note that string can also be a `$LOCALIZE[]`.
+/// Also note that in a panelview or similar this only works on the focused item
+/// <p><hr>
+/// @skinning_v17 **[New Boolean Condition]** \link String_EndsWith `String.EndsWith(info\,substring)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`String.Contains(info\,substring)`</b>,
+/// \anchor String_Contains
+/// _boolean_,
+/// @return **True** if the info contains the given substring.
+/// @param info - infolabel
+/// @param substring - substring to check
+/// @note **Example of info:** \link ListItem_Title `ListItem.Title` \endlink \,
+/// \link ListItem_Genre `ListItem.Genre` \endlink.
+/// Please note that string can also be a `$LOCALIZE[]`.
+/// Also note that in a panelview or similar this only works on the focused item
+/// <p><hr>
+/// @skinning_v17 **[New Boolean Condition]** \link String_Contains `String.Contains(info\,substring)`\endlink
+/// <p>
+/// }
+/// \table_end
+///
+/// -----------------------------------------------------------------------------
const infomap string_bools[] = {{ "isempty", STRING_IS_EMPTY },
@@ -94,295 +214,420 @@ const infomap string_bools[] = {{ "isempty", STRING_IS_EMPTY },
{ "endswith", STRING_ENDS_WITH },
{ "contains", STRING_CONTAINS }};
+
+/// \page modules__infolabels_boolean_conditions
+/// \subsection modules__infolabels_boolean_conditions_Integer Integer
+/// \table_start
+/// \table_h3{ Labels, Type, Description }
+/// \table_row3{ <b>`Integer.IsEqual(info\,number)`</b>,
+/// \anchor Integer_IsEqual
+/// _boolean_,
+/// @return **True** if the value of the infolabel is equal to the supplied number.
+/// @param info - infolabel
+/// @param number - number to compare
+/// @note **Example:** `Integer.IsEqual(ListItem.Year\,2000)`
+/// <p><hr>
+/// @skinning_v17 **[New Boolean Condition]** \link Integer_IsEqual `Integer.IsEqual(info\,number)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`Integer.IsGreater(info\,number)`</b>,
+/// \anchor Integer_IsGreater
+/// _boolean_,
+/// @return **True** if the value of the infolabel is greater than to the supplied number.
+/// @param info - infolabel
+/// @param number - number to compare
+/// @note **Example:** `Integer.IsGreater(ListItem.Year\,2000)`
+/// <p><hr>
+/// @skinning_v17 **[New Boolean Condition]** \link Integer_IsGreater `Integer.IsGreater(info\,number)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`Integer.IsGreaterOrEqual(info\,number)`</b>,
+/// \anchor Integer_IsGreaterOrEqual
+/// _boolean_,
+/// @return **True** if the value of the infolabel is greater or equal to the supplied number.
+/// @param info - infolabel
+/// @param number - number to compare
+/// @note **Example:** `Integer.IsGreaterOrEqual(ListItem.Year\,2000)`
+/// <p><hr>
+/// @skinning_v17 **[New Boolean Condition]** \link Integer_IsGreaterOrEqual `Integer.IsGreaterOrEqual(info\,number)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`Integer.IsLess(info\,number)`</b>,
+/// \anchor Integer_IsLess
+/// _boolean_,
+/// @return **True** if the value of the infolabel is less than the supplied number.
+/// @param info - infolabel
+/// @param number - number to compare
+/// @note **Example:** `Integer.IsLess(ListItem.Year\,2000)`
+/// <p><hr>
+/// @skinning_v17 **[New Boolean Condition]** \link Integer_IsLess `Integer.IsLess(info\,number)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`Integer.IsLessOrEqual(info\,number)`</b>,
+/// \anchor Integer_IsLessOrEqual
+/// _boolean_,
+/// @return **True** if the value of the infolabel is less or equal to the supplied number.
+/// @param info - infolabel
+/// @param number - number to compare
+/// @note **Example:** `Integer.IsLessOrEqual(ListItem.Year\,2000)`
+/// <p><hr>
+/// @skinning_v17 **[New Boolean Condition]** \link Integer_IsLessOrEqual `Integer.IsLessOrEqual(info\,number)`\endlink
+/// <p>
+/// }
+/// \table_end
+///
+/// -----------------------------------------------------------------------------
+
+
const infomap integer_bools[] = {{ "isequal", INTEGER_IS_EQUAL },
{ "isgreater", INTEGER_GREATER_THAN },
{ "isgreaterorequal", INTEGER_GREATER_OR_EQUAL },
{ "isless", INTEGER_LESS_THAN },
{ "islessorequal", INTEGER_LESS_OR_EQUAL }};
-/// \page modules__General__List_of_gui_access
-/// \section modules__General__List_of_gui_access_Player Player
-/// @{
+
+/// \page modules__infolabels_boolean_conditions
+/// \subsection modules__infolabels_boolean_conditions_Player Player
/// \table_start
/// \table_h3{ Labels, Type, Description }
/// \table_row3{ <b>`Player.HasAudio`</b>,
/// \anchor Player_HasAudio
/// _boolean_,
-/// Returns true if the player has an audio file.
+/// @return **True** if the player has an audio file.
+/// <p>
/// }
/// \table_row3{ <b>`Player.HasGame`</b>,
/// \anchor Player_HasGame
/// _boolean_,
-/// Returns true if the player has a game file.
+/// @return **True** if the player has a game file (RETROPLAYER).
+/// <p><hr>
+/// @skinning_v18 **[New Boolean Condition]** \link Player_HasGame `Player.HasGame`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Player.HasMedia`</b>,
/// \anchor Player_HasMedia
/// _boolean_,
-/// Returns true if the player has an audio or video file.
+/// @return **True** if the player has an audio or video file.
+/// <p>
/// }
/// \table_row3{ <b>`Player.HasVideo`</b>,
/// \anchor Player_HasVideo
/// _boolean_,
-/// Returns true if the player has a video file.
+/// @return **True** if the player has a video file.
+/// <p>
/// }
/// \table_row3{ <b>`Player.Paused`</b>,
/// \anchor Player_Paused
/// _boolean_,
-/// Returns true if the player is paused.
+/// @return **True** if the player is paused.
+/// <p>
/// }
/// \table_row3{ <b>`Player.Playing`</b>,
/// \anchor Player_Playing
/// _boolean_,
-/// Returns true if the player is currently playing (ie not ffwding\,
+/// @return **True** if the player is currently playing (i.e. not ffwding\,
/// rewinding or paused.)
+/// <p>
/// }
/// \table_row3{ <b>`Player.Rewinding`</b>,
/// \anchor Player_Rewinding
/// _boolean_,
-/// Returns true if the player is rewinding.
+/// @return **True** if the player is rewinding.
+/// <p>
/// }
/// \table_row3{ <b>`Player.Rewinding2x`</b>,
/// \anchor Player_Rewinding2x
/// _boolean_,
-/// Returns true if the player is rewinding at 2x.
+/// @return **True** if the player is rewinding at 2x.
+/// <p>
/// }
/// \table_row3{ <b>`Player.Rewinding4x`</b>,
/// \anchor Player_Rewinding4x
/// _boolean_,
-/// Returns true if the player is rewinding at 4x.
+/// @return **True** if the player is rewinding at 4x.
+/// <p>
/// }
/// \table_row3{ <b>`Player.Rewinding8x`</b>,
/// \anchor Player_Rewinding8x
/// _boolean_,
-/// Returns true if the player is rewinding at 8x.
+/// @return **True** if the player is rewinding at 8x.
+/// <p>
/// }
/// \table_row3{ <b>`Player.Rewinding16x`</b>,
/// \anchor Player_Rewinding16x
/// _boolean_,
-/// Returns true if the player is rewinding at 16x.
+/// @return **True** if the player is rewinding at 16x.
+/// <p>
/// }
/// \table_row3{ <b>`Player.Rewinding32x`</b>,
/// \anchor Player_Rewinding32x
/// _boolean_,
-/// Returns true if the player is rewinding at 32x.
+/// @return **True** if the player is rewinding at 32x.
+/// <p>
/// }
/// \table_row3{ <b>`Player.Forwarding`</b>,
/// \anchor Player_Forwarding
/// _boolean_,
-/// Returns true if the player is fast forwarding.
+/// @return **True** if the player is fast forwarding.
+/// <p>
/// }
/// \table_row3{ <b>`Player.Forwarding2x`</b>,
/// \anchor Player_Forwarding2x
/// _boolean_,
-/// Returns true if the player is fast forwarding at 2x.
+/// @return **True** if the player is fast forwarding at 2x.
+/// <p>
/// }
/// \table_row3{ <b>`Player.Forwarding4x`</b>,
/// \anchor Player_Forwarding4x
/// _boolean_,
-/// Returns true if the player is fast forwarding at 4x.
+/// @return **True** if the player is fast forwarding at 4x.
+/// <p>
/// }
/// \table_row3{ <b>`Player.Forwarding8x`</b>,
/// \anchor Player_Forwarding8x
/// _boolean_,
-/// Returns true if the player is fast forwarding at 8x.
+/// @return **True** if the player is fast forwarding at 8x.
+/// <p>
/// }
/// \table_row3{ <b>`Player.Forwarding16x`</b>,
/// \anchor Player_Forwarding16x
/// _boolean_,
-/// Returns true if the player is fast forwarding at 16x.
+/// @return **True** if the player is fast forwarding at 16x.
+/// <p>
/// }
/// \table_row3{ <b>`Player.Forwarding32x`</b>,
/// \anchor Player_Forwarding32x
/// _boolean_,
-/// Returns true if the player is fast forwarding at 32x.
+/// @return **True** if the player is fast forwarding at 32x.
+/// <p>
/// }
/// \table_row3{ <b>`Player.Caching`</b>,
/// \anchor Player_Caching
/// _boolean_,
-/// Returns true if the player is current re-caching data (internet based
+/// @return **True** if the player is current re-caching data (internet based
/// video playback).
+/// <p>
/// }
/// \table_row3{ <b>`Player.DisplayAfterSeek`</b>,
/// \anchor Player_DisplayAfterSeek
/// _boolean_,
-/// Returns true for the first 2.5 seconds after a seek.
+/// @return **True** for the first 2.5 seconds after a seek.
+/// <p>
/// }
/// \table_row3{ <b>`Player.Seekbar`</b>,
/// \anchor Player_Seekbar
/// _integer_,
-/// Returns amount of percent of one seek to other position
+/// @return The percentage of one seek to other position.
+/// <p>
/// }
/// \table_row3{ <b>`Player.Seeking`</b>,
/// \anchor Player_Seeking
/// _boolean_,
-/// Returns true if a seek is in progress
+/// @return **True** if a seek is in progress.
+/// <p>
/// }
/// \table_row3{ <b>`Player.ShowTime`</b>,
/// \anchor Player_ShowTime
/// _boolean_,
-/// Returns true if the user has requested the time to show (occurs in video
-/// fullscreen)
+/// @return **True** if the user has requested the time to show (occurs in video
+/// fullscreen).
+/// <p>
/// }
/// \table_row3{ <b>`Player.ShowInfo`</b>,
/// \anchor Player_ShowInfo
/// _boolean_,
-/// Returns true if the user has requested the song info to show (occurs in
-/// visualisation fullscreen and slideshow)
-/// }
-/// \table_row3{ <b>`Player.ShowCodec`</b>,
-/// \anchor Player_ShowCodec
-/// _boolean_,
-/// Returns true if the user has requested the codec to show (occurs in
-/// visualisation and video fullscreen)
+/// @return **True** if the user has requested the song info to show (occurs in
+/// visualisation fullscreen and slideshow).
+/// <p>
/// }
/// \table_row3{ <b>`Player.Title`</b>,
/// \anchor Player_Title
/// _string_,
-/// Returns the musicplayer title for audio and the videoplayer title for
-/// videos.
+/// @return The Musicplayer title for audio and the Videoplayer title for
+/// video.
+/// <p>
/// }
/// \table_row3{ <b>`Player.Muted`</b>,
/// \anchor Player_Muted
/// _boolean_,
-/// Returns true if the volume is muted.
+/// @return **True** if the volume is muted.
+/// <p>
/// }
/// \table_row3{ <b>`Player.HasDuration`</b>,
/// \anchor Player_HasDuration
/// _boolean_,
-/// Returns true if Media isn't a true stream
+/// @return **True** if Media is not a true stream.
+/// <p>
/// }
/// \table_row3{ <b>`Player.Passthrough`</b>,
/// \anchor Player_Passthrough
/// _boolean_,
-/// Returns true if the player is using audio passthrough.
+/// @return **True** if the player is using audio passthrough.
+/// <p>
/// }
/// \table_row3{ <b>`Player.CacheLevel`</b>,
/// \anchor Player_CacheLevel
/// _string_,
-/// Get the used cache level as string with an integer number
+/// @return The used cache level as a string with an integer number.
+/// <p>
/// }
/// \table_row3{ <b>`Player.Progress`</b>,
/// \anchor Player_Progress
/// _integer_,
-/// Returns the progress position as percent
+/// @return The progress position as percentage.
+/// <p>
/// }
/// \table_row3{ <b>`Player.ProgressCache`</b>,
/// \anchor Player_ProgressCache
/// _integer_,
-/// Returns how much of the file is cached above current play percentage
+/// @return How much of the file is cached above current play percentage
+/// <p>
/// }
/// \table_row3{ <b>`Player.Volume`</b>,
/// \anchor Player_Volume
/// _string_,
-/// Returns the current player volume with the format `%2.1f dB`
+/// @return The current player volume with the format `%2.1f` dB
+/// <p>
/// }
/// \table_row3{ <b>`Player.SubtitleDelay`</b>,
/// \anchor Player_SubtitleDelay
/// _string_,
-/// Return the used subtitle delay with the format `%2.3f s`
+/// @return The used subtitle delay with the format `%2.3f` s
+/// <p>
/// }
/// \table_row3{ <b>`Player.AudioDelay`</b>,
/// \anchor Player_AudioDelay
/// _string_,
-/// Return the used audio delay with the format `%2.3f s`
+/// @return The used audio delay with the format `%2.3f` s
+/// <p>
/// }
/// \table_row3{ <b>`Player.Chapter`</b>,
/// \anchor Player_Chapter
/// _integer_,
-/// Current chapter of current playing media
+/// @return The current chapter of current playing media.
+/// <p>
/// }
/// \table_row3{ <b>`Player.ChapterCount`</b>,
/// \anchor Player_ChapterCount
/// _integer_,
-/// Total number of chapters of current playing media
+/// @return The total number of chapters of current playing media.
+/// <p>
/// }
/// \table_row3{ <b>`Player.ChapterName`</b>,
/// \anchor Player_ChapterName
/// _string_,
-/// Return the name of currently used chapter if available
+/// @return The name of currently used chapter if available.
+/// <p>
/// }
/// \table_row3{ <b>`Player.Folderpath`</b>,
/// \anchor Player_Folderpath
/// _string_,
-/// Returns the full path of the currently playing song or movie
+/// @return The full path of the currently playing song or movie
+/// <p>
/// }
/// \table_row3{ <b>`Player.FilenameAndPath`</b>,
/// \anchor Player_FilenameAndPath
/// _string_,
-/// Returns the full path with filename of the currently playing song or movie
+/// @return The full path with filename of the currently
+/// playing song or movie
+/// <p>
/// }
/// \table_row3{ <b>`Player.Filename`</b>,
/// \anchor Player_Filename
/// _string_,
-/// Returns the filename of the currently playing media.
+/// @return The filename of the currently playing media.
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link Player_Filename `Player.Filename`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Player.IsInternetStream`</b>,
/// \anchor Player_IsInternetStream
/// _boolean_,
-/// Returns true if the player is playing an internet stream.
+/// @return **True** if the player is playing an internet stream.
+/// <p>
/// }
/// \table_row3{ <b>`Player.PauseEnabled`</b>,
/// \anchor Player_PauseEnabled
/// _boolean_,
-/// Returns true if played stream is paused
+/// @return **True** if played stream is paused.
+/// <p>
/// }
/// \table_row3{ <b>`Player.SeekEnabled`</b>,
/// \anchor Player_SeekEnabled
/// _boolean_,
-/// Returns true if seek on playing is enabled
+/// @return **True** if seek on playing is enabled.
+/// <p>
/// }
/// \table_row3{ <b>`Player.ChannelPreviewActive`</b>,
/// \anchor Player_ChannelPreviewActive
/// _boolean_,
-/// Returns true if pvr channel preview is active (used channel tag different
-/// from played tag)
+/// @return **True** if PVR channel preview is active (used
+/// channel tag different from played tag)
+/// <p>
/// }
/// \table_row3{ <b>`Player.TempoEnabled`</b>,
/// \anchor Player_TempoEnabled
/// _boolean_,
-/// Returns true if player supports tempo (i.e. speed up/down normal playback speed)
+/// @return **True** if player supports tempo (i.e. speed up/down normal
+/// playback speed)
+/// <p><hr>
+/// @skinning_v17 **[New Boolean Condition]** \link Player_TempoEnabled `Player.TempoEnabled`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Player.IsTempo`</b>,
/// \anchor Player_IsTempo
/// _boolean_,
-/// Returns true if player has tempo (i.e. is playing with a playback speed higher or
+/// @return **True** if player has tempo (i.e. is playing with a playback speed higher or
/// lower than normal playback speed)
+/// <p><hr>
+/// @skinning_v17 **[New Boolean Condition]** \link Player_IsTempo `Player.IsTempo`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Player.PlaySpeed`</b>,
/// \anchor Player_PlaySpeed
/// _string_,
-/// Returns the player playback speed with the format %1.2f (1.00 means normal
-/// playback speed). For Tempo\, the default range is 0.80 - 1.50 (it can be changed
-/// in advanced settings). If `Player.PlaySpeed` returns a value different from 1.00
-/// and `Player.IsTempo` is false it means the player is in ff/rw mode.
+/// @return The player playback speed with the format `%1.2f` (1.00 means normal
+/// playback speed).
+/// @note For Tempo\, the default range is 0.80 - 1.50 (it can be changed
+/// in advanced settings). If \ref Player_PlaySpeed "Player.PlaySpeed" returns a value different from 1.00
+/// and \ref Player_IsTempo "Player.IsTempo" is false it means the player is in ff/rw mode.
+/// <p>
/// }
/// \table_row3{ <b>`Player.HasResolutions`</b>,
/// \anchor Player_HasResolutions
/// _boolean_,
-/// Returns true if the player is allowed to switch resolution and refresh rate
+/// @return **True** if the player is allowed to switch resolution and refresh rate
/// (i.e. if whitelist modes are configured in Kodi's System/Display settings)
+/// <p><hr>
+/// @skinning_v18 **[New Boolean Condition]** \link Player_HasResolutions `Player.HasResolutions`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Player.HasPrograms`</b>,
/// \anchor Player_HasPrograms
/// _boolean_,
-/// Returns true if the media file being played has programs\, i.e. groups of streams.
-/// Ex: if a media file has multiple streams (quality\, channels\, etc) a program represents
+/// @return **True** if the media file being played has programs\, i.e. groups of streams.
+/// @note Ex: if a media file has multiple streams (quality\, channels\, etc) a program represents
/// a particular stream combo.
+/// <p>
/// }
/// \table_row3{ <b>`Player.FrameAdvance`</b>,
/// \anchor Player_FrameAdvance
/// _boolean_,
-/// Returns true if player is in frame advance mode. Skins should hide seek bar
-/// in this mode)
+/// @return **True** if player is in frame advance mode.
+/// @note Skins should hide seek bar in this mode
+/// <p><hr>
+/// @skinning_v18 **[New Boolean Condition]** \link Player_FrameAdvance `Player.FrameAdvance`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Player.Icon`</b>,
/// \anchor Player_Icon
/// _string_,
-/// Returns the thumbnail of the currently playing item. If no thumbnail image exists\,
+/// @return The thumbnail of the currently playing item. If no thumbnail image exists\,
/// the icon will be returned\, if available.
+/// <p><hr>
+/// @skinning_v18 **[New Infolabel]** \link Player_Icon `Player.Icon`\endlink
+/// <p>
/// }
-/// \table_end
-/// @}
const infomap player_labels[] = {{ "hasmedia", PLAYER_HAS_MEDIA },
{ "hasaudio", PLAYER_HAS_AUDIO },
{ "hasvideo", PLAYER_HAS_VIDEO },
@@ -406,7 +651,6 @@ const infomap player_labels[] = {{ "hasmedia", PLAYER_HAS_MEDIA },
{ "seekbar", PLAYER_SEEKBAR },
{ "seeking", PLAYER_SEEKING },
{ "showtime", PLAYER_SHOWTIME },
- { "showcodec", PLAYER_SHOWCODEC },
{ "showinfo", PLAYER_SHOWINFO },
{ "muted", PLAYER_MUTED },
{ "hasduration", PLAYER_HASDURATION },
@@ -436,152 +680,109 @@ const infomap player_labels[] = {{ "hasmedia", PLAYER_HAS_MEDIA },
{ "frameadvance", PLAYER_FRAMEADVANCE },
{ "icon", PLAYER_ICON }};
-/// \page modules__General__List_of_gui_access
-/// @{
-/// \table_start
-/// \table_row3{ <b>`Player.Art(fanart)`</b>,
-/// \anchor Player_Art_fanart
-/// _string_,
-/// Fanart Image of the currently playing episode's parent TV show
-/// }
-/// \table_row3{ <b>`Player.Art(thumb)`</b>,
-/// \anchor Player_Art_thumb
-/// _string_,
-/// Returns the thumbnail image of the currently playing item.
-/// }
-/// \table_row3{ <b>`Player.Art(poster)`</b>,
-/// \anchor Player_Art_poster
+/// \page modules__infolabels_boolean_conditions
+/// \table_row3{ <b>`Player.Art(type)`</b>,
+/// \anchor Player_Art_type
/// _string_,
-/// Returns the poster of the currently playing movie.
+/// @return The Image for the defined art type for the current playing ListItem.
+/// @param type - The art type. The type is defined by scripts and scrappers and can have any value.
+/// Common example values for type are:
+/// - fanart
+/// - thumb
+/// - poster
+/// - banner
+/// - clearlogo
+/// - tvshow.poster
+/// - tvshow.banner
+/// - etc
+/// @todo get a way of centralize all random art strings used in core so we can point users to them
+/// while still making it clear they can have any value.
+/// <p>
/// }
-/// \table_row3{ <b>`Player.Art(tvshow.poster)`</b>,
-/// \anchor Player_Art_tvshowposter
-/// _string_,
-/// Returns the tv show poster of the currently playing episode's parent TV show.
-/// }
-/// \table_row3{ <b>`Player.Art(tvshow.banner)`</b>,
-/// \anchor Player_Art_tvshowbanner
-/// _string_,
-/// Returns the tv show banner of the currently playing episode's parent TV show.
-/// }
-/// \table_end
-/// @}
+
+
const infomap player_param[] = {{ "art", PLAYER_ITEM_ART }};
-/// \page modules__General__List_of_gui_access
-/// @{
-/// \table_start
+/// \page modules__infolabels_boolean_conditions
/// \table_row3{ <b>`Player.SeekTime`</b>,
/// \anchor Player_SeekTime
/// _string_,
-/// Time to which the user is seeking
-/// }
-/// \table_row3{ <b>`Player.SeekOffset`</b>,
-/// \anchor Player_SeekOffset
-/// _string_,
-/// Indicates the seek offset after a seek press (eg user presses
-/// BigStepForward\, player.seekoffset returns +10:00)
+/// @return The time to which the user is seeking.
+/// <p>
/// }
-/// \table_row3{ <b>`Player.SeekOffset(format)`</b>,
+/// \table_row3{ <b>`Player.SeekOffset([format])`</b>,
/// \anchor Player_SeekOffset_format
/// _string_,
-/// Returns hours (hh)\, minutes (mm) or seconds (ss).
-/// Also supported: (hh:mm)\, (mm:ss)\, (hh:mm:ss)\, (h:mm:ss).
-/// Added with Leia: (secs)\, (mins)\, (hours) for total time values and (m).
-/// Example: 3661 seconds => h=1\, hh=01\, m=1\, mm=01\, ss=01\, hours=1\, mins=61\, secs=3661
+/// @return The seek offset after a seek press in a given format.
+/// @param format [opt] The format of the return time value.
+/// See \ref TIME_FORMAT for the list of possible values.
+/// <p>
+/// @note **Example:** user presses BigStepForward\, player.seekoffset returns +10:00
+/// <p>
/// }
/// \table_row3{ <b>`Player.SeekStepSize`</b>,
/// \anchor Player_SeekStepSize
/// _string_,
-/// Displays the seek step size. (v15 addition)
+/// @return The seek step size.
+/// <p>
+/// <hr>
+/// @skinning_v15 **[New Infolabel]** \link Player_SeekStepSize `Player.SeekStepSize`\endlink
+/// <p>
/// }
-/// \table_row3{ <b>`Player.TimeRemaining`</b>,
-/// \anchor Player_TimeRemaining
-/// _string_,
-/// Remaining time of current playing media
-/// }
-/// \table_row3{ <b>`Player.TimeRemaining(format)`</b>,
+/// \table_row3{ <b>`Player.TimeRemaining([format])`</b>,
/// \anchor Player_TimeRemaining_format
/// _string_,
-/// Returns hours (hh)\, minutes (mm) or seconds (ss).
-/// Also supported: (hh:mm)\, (mm:ss)\, (hh:mm:ss)\, (h:mm:ss).
-/// Added with Leia: (secs)\, (mins)\, (hours) for total time values and (m).
-/// Example: 3661 seconds => h=1\, hh=01\, m=1\, mm=01\, ss=01\, hours=1\, mins=61\, secs=3661
+/// @return The remaining time of current playing media in a given format.
+/// @param format [opt] The format of the return time value.
+/// See \ref TIME_FORMAT for the list of possible values.
+/// <p>
/// }
/// \table_row3{ <b>`Player.TimeSpeed`</b>,
/// \anchor Player_TimeSpeed
/// _string_,
-/// Both the time and the playspeed formatted up. eg 1:23 (2x)
-/// }
-/// \table_row3{ <b>`Player.Time`</b>,
-/// \anchor Player_Time
-/// _string_,
-/// Elapsed time of current playing media
+/// @return The time and the playspeed formatted: "1:23 (2x)".
+/// <p>
/// }
-/// \table_row3{ <b>`Player.Time(format)`</b>,
+/// \table_row3{ <b>`Player.Time([format])`</b>,
/// \anchor Player_Time_format
/// _string_,
-/// Returns hours (hh)\, minutes (mm) or seconds (ss).
-/// Also supported: (hh:mm)\, (mm:ss)\, (hh:mm:ss)\, (h:mm:ss).
-/// Added with Leia: (secs)\, (mins)\, (hours) for total time values and (m).
-/// Example: 3661 seconds => h=1\, hh=01\, m=1\, mm=01\, ss=01\, hours=1\, mins=61\, secs=3661
-/// }
-/// \table_row3{ <b>`Player.Duration`</b>,
-/// \anchor Player_Duration
-/// _string_,
-/// Total duration of the current playing media
+/// @return The elapsed time of current playing media in a given format.
+/// @param format [opt] The format of the return time value.
+/// See \ref TIME_FORMAT for the list of possible values.
+/// <p>
/// }
-/// \table_row3{ <b>`Player.Duration(format)`</b>,
+/// \table_row3{ <b>`Player.Duration([format])`</b>,
/// \anchor Player_Duration_format
/// _string_,
-/// Returns hours (hh)\, minutes (mm) or seconds (ss).
-/// Also supported: (hh:mm)\, (mm:ss)\, (hh:mm:ss)\, (h:mm:ss).
-/// Added with Leia: (secs)\, (mins)\, (hours) for total time values and (m).
-/// Example: 3661 seconds => h=1\, hh=01\, m=1\, mm=01\, ss=01\, hours=1\, mins=61\, secs=3661
+/// @return The total duration of the current playing media in a given format.
+/// @param format [opt] The format of the return time value.
+/// See \ref TIME_FORMAT for the list of possible values.
+/// <p>
/// }
-/// \table_row3{ <b>`Player.FinishTime`</b>,
-/// \anchor Player_FinishTime
-/// _string_,
-/// Time playing media will end
-/// }
-/// \table_row3{ <b>`Player.FinishTime(format)`</b>,
+/// \table_row3{ <b>`Player.FinishTime([format])`</b>,
/// \anchor Player_FinishTime_format
/// _string_,
-/// Returns hours (hh)\, minutes (mm) or seconds (ss). When 12 hour clock is used
-/// (xx) will return AM/PM. Also supported: (hh:mm)\, (mm:ss)\, (hh:mm:ss)\, (h:mm:ss).
-/// Added with Leia: (secs)\, (mins)\, (hours) for total time values and (m).
-/// Example: 3661 seconds => h=1\, hh=01\, m=1\, mm=01\, ss=01\, hours=1\, mins=61\, secs=3661
-/// }
-/// \table_row3{ <b>`Player.StartTime`</b>,
-/// \anchor Player_StartTime
-/// _string_,
-/// Time playing media began
+/// @return The time at which the playing media will end (in a specified format).
+/// @param format [opt] The format of the return time value.
+/// See \ref TIME_FORMAT for the list of possible values.
+/// <p>
/// }
-/// \table_row3{ <b>`Player.StartTime(format)`</b>,
+/// \table_row3{ <b>`Player.StartTime([format])`</b>,
/// \anchor Player_StartTime_format
/// _string_,
-/// Returns hours (hh)\, minutes (mm) or seconds (ss). When 12 hour clock is used
-/// (xx) will return AM/PM. Also supported: (hh:mm)\, (mm:ss)\, (hh:mm:ss)\, (h:mm:ss).
-/// Added with Leia: (secs)\, (mins)\, (hours) for total time values and (m).
-/// Example: 3661 seconds => h=1\, hh=01\, m=1\, mm=01\, ss=01\, hours=1\, mins=61\, secs=3661
+/// @return The time at which the playing media began (in a specified format).
+/// @param format [opt] The format of the return time value.
+/// See \ref TIME_FORMAT for the list of possible values.
+/// <p>
/// }
-/// \table_row3{ <b>`Player.SeekNumeric`</b>,
-/// \anchor Player_SeekNumeric
-/// _string_,
-/// Time to which the user is seeking via numeric keys.
-/// }
-/// \table_row3{ <b>`Player.SeekNumeric(format)`</b>,
+/// \table_row3{ <b>`Player.SeekNumeric([format])`</b>,
/// \anchor Player_SeekNumeric_format
/// _string_,
-/// Returns hours (hh)\, minutes (mm) or seconds (ss). When 12 hour clock is used
-/// (xx) will return AM/PM. Also supported: (hh:mm)\, (mm:ss)\, (hh:mm:ss)\, (h:mm:ss).
-/// Added with Leia: (secs)\, (mins)\, (hours) for total time values and (m).
-/// Example: 3661 seconds => h=1\, hh=01\, m=1\, mm=01\, ss=01\, hours=1\, mins=61\, secs=3661
+/// @return The time at which the playing media began (in a specified format).
+/// @param format [opt] The format of the return time value.
+/// See \ref TIME_FORMAT for the list of possible values.
+/// <p>
/// }
-/// \table_end
-///
-/// -----------------------------------------------------------------------------
-/// @}
const infomap player_times[] = {{ "seektime", PLAYER_SEEKTIME },
{ "seekoffset", PLAYER_SEEKOFFSET },
{ "seekstepsize", PLAYER_SEEKSTEPSIZE },
@@ -593,50 +794,175 @@ const infomap player_times[] = {{ "seektime", PLAYER_SEEKTIME },
{ "starttime", PLAYER_START_TIME },
{ "seeknumeric", PLAYER_SEEKNUMERIC } };
-/// \page modules__General__List_of_gui_access
-/// \section modules__General__List_of_gui_access_Weather Weather
-/// @{
+
+/// \page modules__infolabels_boolean_conditions
+/// \table_row3{ <b>`Player.Process(videohwdecoder)`</b>,
+/// \anchor Player_Process_videohwdecoder
+/// _boolean_,
+/// @return **True** if the currently playing video is decoded in hardware.
+/// <p><hr>
+/// @skinning_v17 **[New Boolean Condition]** \link Player_Process_videohwdecoder `Player.Process(videohwdecoder)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`Player.Process(videodecoder)`</b>,
+/// \anchor Player_Process_videodecoder
+/// _string_,
+/// @return The videodecoder name of the currently playing video.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link Player_Process_videodecoder `Player.Process(videodecoder)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`Player.Process(deintmethod)`</b>,
+/// \anchor Player_Process_deintmethod
+/// _string_,
+/// @return The deinterlace method of the currently playing video.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link Player_Process_deintmethod `Player.Process(deintmethod)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`Player.Process(pixformat)`</b>,
+/// \anchor Player_Process_pixformat
+/// _string_,
+/// @return The pixel format of the currently playing video.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link Player_Process_pixformat `Player.Process(pixformat)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`Player.Process(videowidth)`</b>,
+/// \anchor Player_Process_videowidth
+/// _string_,
+/// @return The width of the currently playing video.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link Player_Process_videowidth `Player.Process(videowidth)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`Player.Process(videoheight)`</b>,
+/// \anchor Player_Process_videoheight
+/// _string_,
+/// @return The width of the currently playing video.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link Player_Process_videoheight `Player.Process(videoheight)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`Player.Process(videofps)`</b>,
+/// \anchor Player_Process_videofps
+/// _string_,
+/// @return The video framerate of the currently playing video.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link Player_Process_videofps `Player.Process(videofps)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`Player.Process(videodar)`</b>,
+/// \anchor Player_Process_videodar
+/// _string_,
+/// @return The display aspect ratio of the currently playing video.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link Player_Process_videodar `Player.Process(videodar)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`Player.Process(audiodecoder)`</b>,
+/// \anchor Player_Process_audiodecoder
+/// _string_,
+/// @return The audiodecoder name of the currently playing item.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link Player_Process_videodar `Player.Process(audiodecoder)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`Player.Process(audiochannels)`</b>,
+/// \anchor Player_Process_audiochannels
+/// _string_,
+/// @return The audiodecoder name of the currently playing item.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link Player_Process_audiochannels `Player.Process(audiochannels)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`Player.Process(audiosamplerate)`</b>,
+/// \anchor Player_Process_audiosamplerate
+/// _string_,
+/// @return The samplerate of the currently playing item.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link Player_Process_audiosamplerate `Player.Process(audiosamplerate)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`Player.Process(audiobitspersample)`</b>,
+/// \anchor Player_Process_audiobitspersample
+/// _string_,
+/// @return The bits per sample of the currently playing item.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link Player_Process_audiobitspersample `Player.Process(audiobitspersample)`\endlink
+/// <p>
+/// }
+/// \table_end
+///
+/// -----------------------------------------------------------------------------
+
+const infomap player_process[] =
+{
+ { "videodecoder", PLAYER_PROCESS_VIDEODECODER },
+ { "deintmethod", PLAYER_PROCESS_DEINTMETHOD },
+ { "pixformat", PLAYER_PROCESS_PIXELFORMAT },
+ { "videowidth", PLAYER_PROCESS_VIDEOWIDTH },
+ { "videoheight", PLAYER_PROCESS_VIDEOHEIGHT },
+ { "videofps", PLAYER_PROCESS_VIDEOFPS },
+ { "videodar", PLAYER_PROCESS_VIDEODAR },
+ { "videohwdecoder", PLAYER_PROCESS_VIDEOHWDECODER },
+ { "audiodecoder", PLAYER_PROCESS_AUDIODECODER },
+ { "audiochannels", PLAYER_PROCESS_AUDIOCHANNELS },
+ { "audiosamplerate", PLAYER_PROCESS_AUDIOSAMPLERATE },
+ { "audiobitspersample", PLAYER_PROCESS_AUDIOBITSPERSAMPLE }
+};
+
+/// \page modules__infolabels_boolean_conditions
+/// \subsection modules__infolabels_boolean_conditions_Weather Weather
/// \table_start
/// \table_h3{ Labels, Type, Description }
/// \table_row3{ <b>`Weather.IsFetched`</b>,
/// \anchor Weather_IsFetched
/// _boolean_,
-/// Returns true if the weather data has been downloaded.
+/// @return **True** if the weather data has been downloaded.
+/// <p>
/// }
/// \table_row3{ <b>`Weather.Conditions`</b>,
/// \anchor Weather_Conditions
/// _string_,
-/// Current weather conditions as textual description – this is looked up in a background process.
+/// @return The current weather conditions as textual description.
+/// @note This is looked up in a background process.
+/// <p>
/// }
/// \table_row3{ <b>`Weather.ConditionsIcon`</b>,
/// \anchor Weather_ConditionsIcon
/// _string_,
-/// Current weather conditions as icon – this is looked up in a background process.
+/// @return The current weather conditions as an icon.
+/// @note This is looked up in a background process.
+/// <p>
/// }
/// \table_row3{ <b>`Weather.Temperature`</b>,
/// \anchor Weather_Temperature
/// _string_,
-/// Current weather temperature
+/// @return The current weather temperature.
+/// <p>
/// }
/// \table_row3{ <b>`Weather.Location`</b>,
/// \anchor Weather_Location
/// _string_,
-/// City/town which the above two items are for
+/// @return The city/town which the above two items are for.
+/// <p>
/// }
-/// \table_row3{ <b>`Weather.fanartcode`</b>,
+/// \table_row3{ <b>`Weather.Fanartcode`</b>,
/// \anchor Weather_fanartcode
/// _string_,
-/// Current weather fanartcode.
+/// @return The current weather fanartcode.
+/// <p>
/// }
-/// \table_row3{ <b>`Weather.plugin`</b>,
+/// \table_row3{ <b>`Weather.Plugin`</b>,
/// \anchor Weather_plugin
/// _string_,
-/// Current weather plugin.
+/// @return The current weather plugin.
+/// <p>
/// }
/// \table_end
///
/// -----------------------------------------------------------------------------
-/// @}
const infomap weather[] = {{ "isfetched", WEATHER_IS_FETCHED },
{ "conditions", WEATHER_CONDITIONS_TEXT }, // labels from here
{ "temperature", WEATHER_TEMPERATURE },
@@ -645,468 +971,614 @@ const infomap weather[] = {{ "isfetched", WEATHER_IS_FETCHED },
{ "plugin", WEATHER_PLUGIN },
{ "conditionsicon", WEATHER_CONDITIONS_ICON }};
-/// \page modules__General__List_of_gui_access
-/// \section modules__General__List_of_gui_access_System System
-/// @{
+/// \page modules__infolabels_boolean_conditions
+/// \subsection modules__infolabels_boolean_conditions_System System
+/// @todo some values are hardcoded in the middle of the code - refactor to make it easier to track
/// \table_start
/// \table_h3{ Labels, Type, Description }
/// \table_row3{ <b>`System.AlarmLessOrEqual(alarmname\,seconds)`</b>,
/// \anchor System_AlarmLessOrEqual
/// _boolean_,
-/// Returns true if the alarm with `alarmname` has less or equal to `seconds`
-/// left. Standard use would be system.alarmlessorequal(shutdowntimer\,119)\,
-/// which would return true when the shutdowntimer has less then 2 minutes
+/// @return **True** if the alarm with `alarmname` has less or equal to `seconds` left.
+/// @param alarmname - The name of the alarm. It can be one of the following:
+/// - shutdowntimer
+/// @param seconds - Time in seconds to compare with the alarm trigger event
+/// @note **Example:** `System.Alarmlessorequal(shutdowntimer\,119)`\,
+/// will return true when the shutdowntimer has less then 2 minutes
/// left.
+/// <p>
/// }
/// \table_row3{ <b>`System.HasNetwork`</b>,
/// \anchor System_HasNetwork
/// _boolean_,
-/// Returns true if the ethernet cable is plugged in.
+/// @return **True** if the Kodi host has a network available.
+/// <p>
/// }
/// \table_row3{ <b>`System.HasMediadvd`</b>,
/// \anchor System_HasMediadvd
/// _boolean_,
-/// Returns true if there is a CD or DVD in the DVD-ROM drive.
+/// @return **True** if there is a CD or DVD in the DVD-ROM drive.
+/// <p>
/// }
/// \table_row3{ <b>`System.DVDReady`</b>,
/// \anchor System_DVDReady
/// _boolean_,
-/// Returns true if disc is ready to use.
+/// @return **True** if the disc is ready to use.
+/// <p>
/// }
/// \table_row3{ <b>`System.TrayOpen`</b>,
/// \anchor System_TrayOpen
/// _boolean_,
-/// Returns true if discs tray is open
+/// @return **True** if the disc tray is open.
+/// <p>
/// }
/// \table_row3{ <b>`System.HasLocks`</b>,
/// \anchor System_HasLocks
/// _boolean_,
-/// Returns true if system has an active lock mode.
+/// @return **True** if the system has an active lock mode.
+/// <p>
/// }
/// \table_row3{ <b>`System.IsMaster`</b>,
/// \anchor System_IsMaster
/// _boolean_,
-/// Returns true if system is in master mode.
+/// @return **True** if the system is in master mode.
+/// <p>
/// }
/// \table_row3{ <b>`System.ShowExitButton`</b>,
/// \anchor System_ShowExitButton
/// _boolean_,
-/// Returns true if the exit button should be shown (configurable via advanced settings).
+/// @return **True** if the exit button should be shown (configurable via advanced settings).
+/// <p>
/// }
/// \table_row3{ <b>`System.DPMSActive`</b>,
/// \anchor System_DPMSActive
/// _boolean_,
-/// Returns true if DPMS (VESA Display Power Management Signaling) mode is active.
-/// }
-/// \table_row3{ <b>`System.IdleTime(time)`</b>,
-/// \anchor System_IdleTime
-/// _boolean_,
-/// Returns true if Kodi has had no input for ?time? amount of seconds.
+/// @return **True** if DPMS (VESA Display Power Management Signaling) mode is active.
+/// <p>
/// }
/// \table_row3{ <b>`System.IsStandalone`</b>,
/// \anchor System_IsStandalone
/// _boolean_,
-/// Returns true if Kodi is running in standalone mode.
+/// @return **True** if Kodi is running in standalone mode.
+/// <p>
/// }
/// \table_row3{ <b>`System.IsFullscreen`</b>,
/// \anchor System_IsFullscreen
/// _boolean_,
-/// Returns true if Kodi is running fullscreen.
+/// @return **True** if Kodi is running fullscreen.
+/// <p>
/// }
/// \table_row3{ <b>`System.LoggedOn`</b>,
/// \anchor System_LoggedOn
/// _boolean_,
-/// Returns true if a user is currently logged on under a profile
+/// @return **True** if a user is currently logged on under a profile.
+/// <p>
/// }
/// \table_row3{ <b>`System.HasLoginScreen`</b>,
/// \anchor System_HasLoginScreen
/// _boolean_,
-/// Returns true if the profile login screen is enabled
+/// @return **True** if the profile login screen is enabled.
+/// <p>
/// }
/// \table_row3{ <b>`System.HasPVR`</b>,
/// \anchor System_HasPVR
/// _boolean_,
-/// Returns true if PVR is supported from Kodi
-/// \note normally always true
+/// @return **True** if PVR is supported from Kodi.
+/// @note normally always true
+///
/// }
-/// \table_row3{ <b>`System.HasPVRAddon(id)`</b>,
+/// \table_row3{ <b>`System.HasPVRAddon`</b>,
/// \anchor System_HasPVRAddon
/// _boolean_,
-/// Returns true if at least one pvr client addon is installed and enabled.
+/// @return **True** if at least one pvr client addon is installed and enabled.
+/// @param id - addon id of the PVR addon
+/// <p><hr>
+/// @skinning_v17 **[New Boolean Condition]** \link System_HasPVRAddon `System.HasPVRAddon`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`System.HasCMS`</b>,
/// \anchor System_HasCMS
/// _boolean_,
-/// Returns true if colour management is supported from Kodi
-/// \note currently only supported for OpenGL
+/// @return **True** if colour management is supported from Kodi.
+/// @note currently only supported for OpenGL
+/// <p><hr>
+/// @skinning_v17 **[New Boolean Condition]** \link System_HasCMS `System.HasCMS`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`System.HasActiveModalDialog`</b>,
/// \anchor System_HasActiveModalDialog
/// _boolean_,
-/// Returns true if a modal dialog is active
+/// @return **True** if a modal dialog is active.
+/// <p><hr>
+/// @skinning_v18 **[New Boolean Condition]** \link System_HasActiveModalDialog `System.HasActiveModalDialog`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`System.HasVisibleModalDialog`</b>,
/// \anchor System_HasVisibleModalDialog
/// _boolean_,
-/// Returns true if a modal dialog is visible
-/// }
-/// \table_row3{ <b>`System.Time(startTime\,endTime)`</b>,
-/// \anchor System_Time
-/// _boolean_,
-/// Returns true if the current system time is >= startTime and < endTime.
-/// endTime is optional. Time must be specified in the format HH:mm\, using
-/// a 24 hour clock.
-/// }
-/// \table_row3{ <b>`System.Date(startDate\,endDate)`</b>,
-/// \anchor System_Date
-/// _boolean_,
-/// Returns true if the current system date is >= startDate and < endDate.
-/// endDate is optional. Date must be specified in the format MM-DD.
+/// @return **True** if a modal dialog is visible.
+/// <p><hr>
+/// @skinning_v18 **[New Boolean Condition]** \link System_HasVisibleModalDialog `System.HasVisibleModalDialog`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`System.Platform.Linux`</b>,
/// \anchor System_PlatformLinux
/// _boolean_,
-/// Returns true if Kodi is running on a linux/unix based computer.
+/// @return **True** if Kodi is running on a linux/unix based computer.
+/// <p>
/// }
/// \table_row3{ <b>`System.Platform.Linux.RaspberryPi`</b>,
/// \anchor System_PlatformLinuxRaspberryPi
/// _boolean_,
-/// Returns true if Kodi is running on a Raspberry Pi.
+/// @return **True** if Kodi is running on a Raspberry Pi.
+/// <p><hr>
+/// @skinning_v13 **[New Boolean Condition]** \link System_PlatformLinuxRaspberryPi `System.Platform.Linux.RaspberryPi`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`System.Platform.Windows`</b>,
/// \anchor System_PlatformWindows
/// _boolean_,
-/// Returns true if Kodi is running on a windows based computer.
+/// @return **True** if Kodi is running on a windows based computer.
+/// <p>
/// }
/// \table_row3{ <b>`System.Platform.UWP`</b>,
/// \anchor System_PlatformUWP
/// _boolean_,
-/// Returns true if Kodi is running on Universal Windows Platform (UWP).
+/// @return **True** if Kodi is running on Universal Windows Platform (UWP).
+/// <p><hr>
+/// @skinning_v18 **[New Boolean Condition]** \link System_PlatformUWP `System.Platform.UWP`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`System.Platform.OSX`</b>,
/// \anchor System_PlatformOSX
/// _boolean_,
-/// Returns true if Kodi is running on an OSX based computer.
+/// @return **True** if Kodi is running on an OSX based computer.
+/// <p>
/// }
/// \table_row3{ <b>`System.Platform.IOS`</b>,
/// \anchor System_PlatformIOS
/// _boolean_,
-/// Returns true if Kodi is running on an IOS device.
+/// @return **True** if Kodi is running on an IOS device.
+/// <p>
/// }
/// \table_row3{ <b>`System.Platform.Darwin`</b>,
/// \anchor System_PlatformDarwin
/// _boolean_,
-/// Returns true if Kodi is running on an OSX or IOS system.
-/// }
-/// \table_row3{ <b>`System.Platform.ATV2`</b>,
-/// \anchor System_PlatformATV2
-/// _boolean_,
-/// Returns true if Kodi is running on an atv2.
+/// @return **True** if Kodi is running on an OSX or IOS system.
+/// <p>
/// }
/// \table_row3{ <b>`System.Platform.Android`</b>,
/// \anchor System_PlatformAndroid
/// _boolean_,
-/// Returns true if Kodi is running on an android device.
+/// @return **True** if Kodi is running on an android device.
+/// <p>
/// }
/// \table_row3{ <b>`System.CanPowerDown`</b>,
/// \anchor System_CanPowerDown
/// _boolean_,
-/// Returns true if Kodi can powerdown the system.
+/// @return **True** if Kodi can powerdown the system.
+/// <p>
/// }
/// \table_row3{ <b>`System.CanSuspend`</b>,
/// \anchor System_CanSuspend
/// _boolean_,
-/// Returns true if Kodi can suspend the system.
+/// @return **True** if Kodi can suspend the system.
+/// <p>
/// }
/// \table_row3{ <b>`System.CanHibernate`</b>,
/// \anchor System_CanHibernate
/// _boolean_,
-/// Returns true if Kodi can hibernate the system.
+/// @return **True** if Kodi can hibernate the system.
+/// <p>
/// }
/// \table_row3{ <b>`System.HasHiddenInput`</b>,
/// \anchor System_HasHiddenInput
/// _boolean_,
-/// Return true when to osd keyboard/numeric dialog requests a
+/// @return **True** when to osd keyboard/numeric dialog requests a
/// password/pincode.
+/// <p><hr>
+/// @skinning_v16 **[New Boolean Condition]** \link System_HasHiddenInput `System.HasHiddenInput`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`System.CanReboot`</b>,
/// \anchor System_CanReboot
/// _boolean_,
-/// Returns true if Kodi can reboot the system.
+/// @return **True** if Kodi can reboot the system.
+/// <p>
/// }
/// \table_row3{ <b>`System.ScreenSaverActive`</b>,
/// \anchor System_ScreenSaverActive
/// _boolean_,
-/// Returns true if ScreenSaver is active.
+/// @return **True** if ScreenSaver is active.
+/// <p>
/// }
/// \table_row3{ <b>`System.IsInhibit`</b>,
/// \anchor System_IsInhibit
/// _boolean_,
-/// Returns true when shutdown on idle is disabled.
+/// @return **True** when shutdown on idle is disabled.
+/// <p>
/// }
/// \table_row3{ <b>`System.HasShutdown`</b>,
/// \anchor System_HasShutdown
/// _boolean_,
-/// Returns true when shutdown on idle is enabled.
+/// @return **True** when shutdown on idle is enabled.
+/// <p>
/// }
/// \table_row3{ <b>`System.Time`</b>,
/// \anchor System_Time
/// _string_,
-/// Current time
+/// @return The current time.
+/// <p>
/// }
/// \table_row3{ <b>`System.Time(format)`</b>,
/// \anchor System_Time_format
/// _string_,
-/// Returns hours (hh)\, minutes (mm) or seconds (ss). When 12 hour clock is used
-/// (xx) will return AM/PM. Also supported: (hh:mm)\, (mm:ss)\, (hh:mm:ss)\, (h:mm:ss).
-/// Added with Leia: (secs)\, (mins)\, (hours) for total time values and (m).
-/// Example: 3661 seconds => h=1\, hh=01\, m=1\, mm=01\, ss=01\, hours=1\, mins=61\, secs=3661
+/// @return The current time in a specified format.
+/// @param format [opt] The format of the return time value.
+/// See \ref TIME_FORMAT for the list of possible values.
+/// <p>
+/// }
+/// \table_row3{ <b>`System.Time(startTime[\,endTime])`</b>,
+/// \anchor System_Time
+/// _boolean_,
+/// @return **True** if the current system time is >= `startTime` and < `endTime` (if defined).
+/// @param startTime - Start time
+/// @param endTime - [opt] End time
+/// <p>
+/// @note Time must be specified in the format HH:mm\, using
+/// a 24 hour clock.
+/// <p>
/// }
/// \table_row3{ <b>`System.Date`</b>,
/// \anchor System_Date
/// _string_,
-/// Current date
+/// @return The current date.
+/// <p><hr>
+/// @skinning_v16 **[Infolabel Updated]** \link System_Date `System.Date`\endlink
+/// will now return the full day and month names. old: sat\, jul 18 2015
+/// new: saturday\, july 18 2015
+/// <p>
/// }
/// \table_row3{ <b>`System.Date(format)`</b>,
/// \anchor System_Date_format
/// _string_,
-/// Show current date using format\, available markings: d (day of month
-/// 1-31)\, dd (day of month 01-31)\, ddd (short day of the week Mon-Sun)\,
-/// DDD (long day of the week Monday-Sunday)\, m (month 1-12)\, mm (month
-/// 01-12)\, mmm (short month name Jan-Dec)\, MMM (long month name January -
-/// December)\, yy (2-digit year)\, yyyy (4-digit year). Added after dharma.
+/// @return The current date using a specified format.
+/// @param format - the format for the date. It can be one of the following
+/// values:
+/// - **d** - day of month (1-31)
+/// - **dd** - day of month (01-31)
+/// - **ddd** - short day of the week Mon-Sun
+/// - **DDD** - long day of the week Monday-Sunday
+/// - **m** - month (1-12)
+/// - **mm** - month (01-12)
+/// - **mmm** - short month name Jan-Dec
+/// - **MMM** - long month name January-December
+/// - **yy** - 2-digit year
+/// - **yyyy** - 4-digit year
+/// <p>
+/// }
+/// \table_row3{ <b>`System.Date(startDate[\,endDate])`</b>,
+/// \anchor System_Date
+/// _boolean_,
+/// @return **True** if the current system date is >= `startDate` and < `endDate` (if defined).
+/// @param startDate - The start date
+/// @param endDate - [opt] The end date
+/// @note Date must be specified in the format MM-DD or YY-MM-DD.
+/// <p>
/// }
/// \table_row3{ <b>`System.AlarmPos`</b>,
/// \anchor System_AlarmPos
/// _string_,
-/// Shutdown Timer position
+/// @return The shutdown Timer position.
+/// <p>
/// }
/// \table_row3{ <b>`System.BatteryLevel`</b>,
/// \anchor System_BatteryLevel
/// _string_,
-/// Returns the remaining battery level in range 0-100
+/// @return The remaining battery level in range 0-100.
+/// <p>
/// }
/// \table_row3{ <b>`System.FreeSpace`</b>,
/// \anchor System_FreeSpace
/// _string_,
-/// Total Freespace on the drive
+/// @return The total Freespace on the drive.
+/// <p>
/// }
/// \table_row3{ <b>`System.UsedSpace`</b>,
/// \anchor System_UsedSpace
/// _string_,
-/// Total Usedspace on the drive
+/// @return The total Usedspace on the drive.
+/// <p>
/// }
/// \table_row3{ <b>`System.TotalSpace`</b>,
/// \anchor System_TotalSpace
/// _string_,
-/// Totalspace on the drive
+/// @return The total space on the drive.
+/// <p>
/// }
/// \table_row3{ <b>`System.UsedSpacePercent`</b>,
/// \anchor System_UsedSpacePercent
/// _string_,
-/// Total Usedspace Percent on the drive
+/// @return The total Usedspace Percent on the drive.
+/// <p>
/// }
/// \table_row3{ <b>`System.FreeSpacePercent`</b>,
/// \anchor System_FreeSpacePercent
/// _string_,
-/// Total Freespace Percent on the drive
+/// @return The total Freespace Percent on the drive.
+/// <p>
/// }
/// \table_row3{ <b>`System.CPUTemperature`</b>,
/// \anchor System_CPUTemperature
/// _string_,
-/// Current CPU temperature
+/// @return The current CPU temperature.
+/// <p>
/// }
/// \table_row3{ <b>`System.CpuUsage`</b>,
/// \anchor System_CpuUsage
/// _string_,
-/// Displays the cpu usage for each individual cpu core.
+/// @return The the cpu usage for each individual cpu core.
+/// <p>
/// }
/// \table_row3{ <b>`System.GPUTemperature`</b>,
/// \anchor System_GPUTemperature
/// _string_,
-/// Current GPU temperature
+/// @return The current GPU temperature.
+/// <p>
/// }
/// \table_row3{ <b>`System.FanSpeed`</b>,
/// \anchor System_FanSpeed
/// _string_,
-/// Current fan speed
+/// @return The current fan speed.
+/// <p>
/// }
/// \table_row3{ <b>`System.BuildVersion`</b>,
/// \anchor System_BuildVersion
/// _string_,
-/// Version of build
+/// @return The version of build.
+/// <p>
/// }
/// \table_row3{ <b>`System.BuildVersionShort`</b>,
/// \anchor System_BuildVersionShort
/// _string_,
-/// Shorter string with version of build
+/// @return The shorter string with version of build.
+/// <p>
/// }
/// \table_row3{ <b>`System.BuildDate`</b>,
/// \anchor System_BuildDate
/// _string_,
-/// Date of build
+/// @return The date of build.
+/// <p>
/// }
/// \table_row3{ <b>`System.FriendlyName`</b>,
/// \anchor System_FriendlyName
/// _string_,
-/// Returns the Kodi instance name. It will auto append (%hostname%) in case
+/// @return The Kodi instance name.
+/// @note It will auto append (%hostname%) in case
/// the device name was not changed. eg. "Kodi (htpc)"
+/// <p>
/// }
/// \table_row3{ <b>`System.FPS`</b>,
/// \anchor System_FPS
/// _string_,
-/// Current rendering speed (frames per second)
+/// @return The current rendering speed (frames per second).
+/// <p>
/// }
/// \table_row3{ <b>`System.FreeMemory`</b>,
/// \anchor System_FreeMemory
/// _string_,
-/// Amount of free memory in Mb
+/// @return The amount of free memory in Mb.
+/// <p>
/// }
/// \table_row3{ <b>`System.ScreenMode`</b>,
/// \anchor System_ScreenMode
/// _string_,
-/// Screenmode (eg windowed / fullscreen)
+/// @return The screenmode (eg windowed / fullscreen).
+/// <p>
/// }
/// \table_row3{ <b>`System.ScreenWidth`</b>,
/// \anchor System_ScreenWidth
/// _string_,
-/// Width of screen in pixels
+/// @return The width of screen in pixels.
+/// <p>
/// }
/// \table_row3{ <b>`System.ScreenHeight`</b>,
/// \anchor System_ScreenHeight
/// _string_,
-/// Height of screen in pixels
+/// @return The height of screen in pixels.
+/// <p>
/// }
/// \table_row3{ <b>`System.StartupWindow`</b>,
/// \anchor System_StartupWindow
/// _string_,
-/// The Window Kodi will load on startup
+/// @return The Window Kodi will load on startup.
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link System_StartupWindow `System.StartupWindow`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`System.CurrentWindow`</b>,
/// \anchor System_CurrentWindow
/// _string_,
-/// Current Window we are in
+/// @return The current Window in use.
+/// <p>
/// }
/// \table_row3{ <b>`System.CurrentControl`</b>,
/// \anchor System_CurrentControl
/// _string_,
-/// Current focused control
+/// @return The current focused control
+/// <p>
/// }
/// \table_row3{ <b>`System.CurrentControlId`</b>,
/// \anchor System_CurrentControlId
/// _string_,
-/// ID of the currently focused control.
+/// @return The ID of the currently focused control.
+/// <p>
/// }
/// \table_row3{ <b>`System.DVDLabel`</b>,
/// \anchor System_DVDLabel
/// _string_,
-/// Label of the disk in the DVD-ROM drive
+/// @return the label of the disk in the DVD-ROM drive.
+/// <p>
/// }
/// \table_row3{ <b>`System.KernelVersion`</b>,
/// \anchor System_KernelVersion
/// _string_,
-/// System kernel version
+/// @return The System kernel version.
+/// <p>
/// }
/// \table_row3{ <b>`System.OSVersionInfo`</b>,
/// \anchor System_OSVersionInfo
/// _string_,
-/// System name + kernel version
+/// @return The system name + kernel version.
+/// <p>
/// }
/// \table_row3{ <b>`System.Uptime`</b>,
/// \anchor System_Uptime
/// _string_,
-/// System current uptime
+/// @return The system current uptime.
+/// <p>
/// }
/// \table_row3{ <b>`System.TotalUptime`</b>,
/// \anchor System_TotalUptime
/// _string_,
-/// System total uptime
+/// @return The system total uptime.
+/// <p>
/// }
/// \table_row3{ <b>`System.CpuFrequency`</b>,
/// \anchor System_CpuFrequency
/// _string_,
-/// System cpu frequency
+/// @return The system cpu frequency.
+/// <p>
/// }
/// \table_row3{ <b>`System.ScreenResolution`</b>,
/// \anchor System_ScreenResolution
/// _string_,
-/// Screen resolution
+/// @return The screen resolution.
+/// <p>
/// }
/// \table_row3{ <b>`System.VideoEncoderInfo`</b>,
/// \anchor System_VideoEncoderInfo
/// _string_,
-/// Video encoder info
+/// @return The video encoder info.
+/// <p>
/// }
/// \table_row3{ <b>`System.InternetState`</b>,
/// \anchor System_InternetState
/// _string_,
-/// Will return the internet state\, connected or not connected and for
-/// Conditional use: Connected->TRUE\, not Connected->FALSE\, do not use
-/// to check status in a pythonscript since it is threaded.
+/// @return The internet state: connected or not connected.
+/// @warning Do not use to check status in a pythonscript since it is threaded.
+/// <p>
/// }
/// \table_row3{ <b>`System.Language`</b>,
/// \anchor System_Language
/// _string_,
-/// Returns the current language
+/// @return the current language.
+/// <p>
/// }
/// \table_row3{ <b>`System.ProfileName`</b>,
/// \anchor System_ProfileName
/// _string_,
-/// Returns the user name of the currently logged in Kodi user
+/// @return The user name of the currently logged in Kodi user
+/// <p>
/// }
/// \table_row3{ <b>`System.ProfileThumb`</b>,
/// \anchor System_ProfileThumb
/// _string_,
-/// Returns the thumbnail image of the currently logged in Kodi user
+/// @return The thumbnail image of the currently logged in Kodi user
+/// <p>
/// }
/// \table_row3{ <b>`System.ProfileCount`</b>,
/// \anchor System_ProfileCount
/// _string_,
-/// Returns the number of defined profiles
+/// @return The number of defined profiles.
+/// <p>
/// }
/// \table_row3{ <b>`System.ProfileAutoLogin`</b>,
/// \anchor System_ProfileAutoLogin
/// _string_,
-/// The profile Kodi will auto login to
+/// @return The profile Kodi will auto login to.
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link System_ProfileAutoLogin `System.ProfileAutoLogin`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`System.StereoscopicMode`</b>,
/// \anchor System_StereoscopicMode
/// _string_,
-/// The prefered stereoscopic mode (settings > video > playback)
+/// @return The prefered stereoscopic mode.
+/// @note Configured in settings > video > playback).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link System_StereoscopicMode `System.StereoscopicMode`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`System.TemperatureUnits`</b>,
/// \anchor System_TemperatureUnits
/// _string_,
-/// Returns Celsius or Fahrenheit symbol
+/// @return the Celsius or the Fahrenheit symbol.
+/// <p>
/// }
/// \table_row3{ <b>`System.Progressbar`</b>,
/// \anchor System_Progressbar
/// _string_,
-/// Returns the percentage of the currently active progress.
+/// @return The percentage of the currently active progress.
+/// <p>
/// }
/// \table_row3{ <b>`System.GetBool(boolean)`</b>,
/// \anchor System_GetBool
/// _string_,
-/// Returns the value of any standard system boolean setting. Will not work
-/// with settings in advancedsettings.xml
+/// @return The value of any standard system boolean setting.
+/// @note Will not work with settings in advancedsettings.xml
+/// <p>
+/// }
+/// \table_row3{ <b>`System.Memory(type)`</b>,
+/// \anchor System_Memory
+/// _string_,
+/// @return The memory value depending on the requested type.
+/// @param type - Can be one of the following:
+/// - <b>free</b>
+/// - <b>free.percent</b>
+/// - <b>used</b>
+/// - <b>used.percent</b>
+/// - <b>total</b>
+/// <p>
/// }
/// \table_row3{ <b>`System.AddonTitle(id)`</b>,
/// \anchor System_AddonTitle
/// _string_,
-/// Returns the title of the addon with the given id
+/// @return The title of the addon with the given id
+/// @param id - the addon id
+/// <p>
/// }
/// \table_row3{ <b>`System.AddonVersion(id)`</b>,
/// \anchor System_AddonVersion
/// _string_,
-/// Returns the version of the addon with the given id
+/// @return The version of the addon with the given id.
+/// @param id - the addon id
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link System_AddonVersion `System.AddonVersion(id)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`System.AddonIcon(id)`</b>,
+/// \anchor System_AddonVersion
+/// _string_,
+/// @return The icon of the addon with the given id.
+/// @param id - the addon id
+/// <p>
+/// }
+/// \table_row3{ <b>`System.IdleTime(time)`</b>,
+/// \anchor System_IdleTime
+/// _boolean_,
+/// @return **True** if Kodi has had no input for `time` amount of seconds.
+/// @param time - elapsed seconds to check for idle activity.
+/// <p>
/// }
/// \table_row3{ <b>`System.PrivacyPolicy`</b>,
/// \anchor System_PrivacyPolicy
/// _string_,
-/// Returns the official Kodi privacy policy
+/// @return The official Kodi privacy policy.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link System_PrivacyPolicy `System.PrivacyPolicy`\endlink
+/// <p>
/// }
-/// \table_end
-/// @}
const infomap system_labels[] = {{ "hasnetwork", SYSTEM_ETHERNET_LINK_ACTIVE },
{ "hasmediadvd", SYSTEM_MEDIA_DVD },
{ "dvdready", SYSTEM_DVDREADY },
@@ -1175,98 +1647,112 @@ const infomap system_labels[] = {{ "hasnetwork", SYSTEM_ETHERNET_LINK_ACT
{ "privacypolicy", SYSTEM_PRIVACY_POLICY },
{ "haspvraddon", SYSTEM_HAS_PVR_ADDON }};
-/// \page modules__General__List_of_gui_access
-/// @{
-/// \table_start
+/// \page modules__infolabels_boolean_conditions
/// \table_row3{ <b>`System.HasAddon(id)`</b>,
/// \anchor System_HasAddon
/// _boolean_,
-/// Returns true if the specified addon is installed on the system.
+/// @return **True** if the specified addon is installed on the system.
+/// @param id - the addon id
+/// <p>
/// }
/// \table_row3{ <b>`System.HasCoreId(id)`</b>,
/// \anchor System_HasCoreId
/// _boolean_,
-/// Returns true if the cpu core with the given 'id' exists.
+/// @return **True** if the CPU core with the given 'id' exists.
+/// @param id - the id of the CPU core
+/// <p>
/// }
/// \table_row3{ <b>`System.HasAlarm(alarm)`</b>,
/// \anchor System_HasAlarm
/// _boolean_,
-/// Returns true if the system has the ?alarm? alarm set.
+/// @return **True** if the system has the `alarm` alarm set.
+/// @param alarm - the name of the alarm
+/// <p>
/// }
/// \table_row3{ <b>`System.CoreUsage(id)`</b>,
/// \anchor System_CoreUsage
/// _string_,
-/// Displays the usage of the cpu core with the given 'id'
+/// @return the usage of the CPU core with the given 'id'
+/// @param id - the id of the CPU core
+/// <p>
/// }
/// \table_row3{ <b>`System.Setting(hidewatched)`</b>,
/// \anchor System_Setting
/// _boolean_,
-/// Returns true if 'hide watched items' is selected.
+/// @return **True** if 'hide watched items' is selected.
+/// <p>
/// }
/// \table_end
///
/// -----------------------------------------------------------------------------
-/// @}
const infomap system_param[] = {{ "hasalarm", SYSTEM_HAS_ALARM },
{ "hascoreid", SYSTEM_HAS_CORE_ID },
{ "setting", SYSTEM_SETTING },
{ "hasaddon", SYSTEM_HAS_ADDON },
{ "coreusage", SYSTEM_GET_CORE_USAGE }};
-/// \page modules__General__List_of_gui_access
-/// \section modules__General__List_of_gui_access_Network Network
-/// @{
+/// \page modules__infolabels_boolean_conditions
+/// \subsection modules__infolabels_boolean_conditions_Network Network
/// \table_start
/// \table_h3{ Labels, Type, Description }
/// \table_row3{ <b>`Network.IsDHCP`</b>,
/// \anchor Network_IsDHCP
/// _boolean_,
-/// Network type is DHCP or FIXED
+/// @return **True** if the network type is DHCP.
+/// @note Network type can be either DHCP or FIXED
+/// <p>
/// }
/// \table_row3{ <b>`Network.IPAddress`</b>,
/// \anchor Network_IPAddress
/// _string_,
-/// The system's IP Address (formatted as IP: <ipaddress>)
+/// @return The system's IP Address. e.g. 192.168.1.15
+/// <p>
/// }
/// \table_row3{ <b>`Network.LinkState`</b>,
/// \anchor Network_LinkState
/// _string_,
-/// Network linkstate e.g. 10mbit/100mbit etc.
+/// @return The network linkstate e.g. 10mbit/100mbit etc.
+/// <p>
/// }
/// \table_row3{ <b>`Network.MacAddress`</b>,
/// \anchor Network_MacAddress
/// _string_,
-/// The system's mac address
+/// @return The system's MAC address.
+/// <p>
/// }
/// \table_row3{ <b>`Network.SubnetMask`</b>,
/// \anchor Network_SubnetMask
/// _string_,
-/// Network subnet mask
+/// @return The network subnet mask.
+/// <p>
/// }
/// \table_row3{ <b>`Network.GatewayAddress`</b>,
/// \anchor Network_GatewayAddress
/// _string_,
-/// Network gateway address
+/// @return The network gateway address.
+/// <p>
/// }
/// \table_row3{ <b>`Network.DNS1Address`</b>,
/// \anchor Network_DNS1Address
/// _string_,
-/// Network dns 1 address
+/// @return The network DNS 1 address.
+/// <p>
/// }
/// \table_row3{ <b>`Network.DNS2Address`</b>,
/// \anchor Network_DNS2Address
/// _string_,
-/// Network dns 2 address
+/// @return The network DNS 2 address.
+/// <p>
/// }
/// \table_row3{ <b>`Network.DHCPAddress`</b>,
/// \anchor Network_DHCPAddress
/// _string_,
-/// DHCP ip address
+/// @return The DHCP IP address.
+/// <p>
/// }
/// \table_end
///
/// -----------------------------------------------------------------------------
-/// @}
const infomap network_labels[] = {{ "isdhcp", NETWORK_IS_DHCP },
{ "ipaddress", NETWORK_IP_ADDRESS }, //labels from here
{ "linkstate", NETWORK_LINK_STATE },
@@ -1277,377 +1763,715 @@ const infomap network_labels[] = {{ "isdhcp", NETWORK_IS_DHCP },
{ "dns2address", NETWORK_DNS2_ADDRESS },
{ "dhcpaddress", NETWORK_DHCP_ADDRESS }};
-/// \page modules__General__List_of_gui_access
-/// \section modules__General__List_of_gui_access_musicpartymode Music party mode
-/// @{
+/// \page modules__infolabels_boolean_conditions
+/// \subsection modules__infolabels_boolean_conditions_musicpartymode Music party mode
/// \table_start
/// \table_h3{ Labels, Type, Description }
/// \table_row3{ <b>`MusicPartyMode.Enabled`</b>,
/// \anchor MusicPartyMode_Enabled
/// _boolean_,
-/// Returns true if Party Mode is enabled
+/// @return **True** if Party Mode is enabled.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPartyMode.SongsPlayed`</b>,
/// \anchor MusicPartyMode_SongsPlayed
/// _string_,
-/// Number of songs played during Party Mode
+/// @return The number of songs played during Party Mode.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPartyMode.MatchingSongs`</b>,
/// \anchor MusicPartyMode_MatchingSongs
/// _string_,
-/// Number of songs available to Party Mode
+/// @return The number of songs available to Party Mode.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPartyMode.MatchingSongsPicked`</b>,
/// \anchor MusicPartyMode_MatchingSongsPicked
/// _string_,
-/// Number of songs picked already for Party Mode
+/// @return The number of songs picked already for Party Mode.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPartyMode.MatchingSongsLeft`</b>,
/// \anchor MusicPartyMode_MatchingSongsLeft
/// _string_,
-/// Number of songs left to be picked from for Party Mode
+/// @return The number of songs left to be picked from for Party Mode.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPartyMode.RelaxedSongsPicked`</b>,
/// \anchor MusicPartyMode_RelaxedSongsPicked
/// _string_,
-/// Not currently used
+/// @todo Not currently used
+/// <p>
/// }
/// \table_row3{ <b>`MusicPartyMode.RandomSongsPicked`</b>,
/// \anchor MusicPartyMode_RandomSongsPicked
/// _string_,
-/// Number of unique random songs picked during Party Mode
+/// @return The number of unique random songs picked during Party Mode.
+/// <p>
/// }
/// \table_end
///
/// -----------------------------------------------------------------------------
-/// @}
const infomap musicpartymode[] = {{ "enabled", MUSICPM_ENABLED },
{ "songsplayed", MUSICPM_SONGSPLAYED },
{ "matchingsongs", MUSICPM_MATCHINGSONGS },
{ "matchingsongspicked", MUSICPM_MATCHINGSONGSPICKED },
{ "matchingsongsleft", MUSICPM_MATCHINGSONGSLEFT },
- { "relaxedsongspicked",MUSICPM_RELAXEDSONGSPICKED },
+ { "relaxedsongspicked", MUSICPM_RELAXEDSONGSPICKED },
{ "randomsongspicked", MUSICPM_RANDOMSONGSPICKED }};
-/// \page modules__General__List_of_gui_access
-/// \section modules__General__List_of_gui_access_MusicPlayer Music player
-/// @{
+/// \page modules__infolabels_boolean_conditions
+/// \subsection modules__infolabels_boolean_conditions_MusicPlayer Music player
/// \table_start
/// \table_h3{ Labels, Type, Description }
/// \table_row3{ <b>`MusicPlayer.Offset(number).Exists`</b>,
/// \anchor MusicPlayer_Offset
/// _boolean_,
-/// Returns true if the music players playlist has a song queued in
+/// @return **True** if the music players playlist has a song queued in
/// position (number).
+/// @param number - song position
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.Title`</b>,
/// \anchor MusicPlayer_Title
/// _string_,
-/// Title of the currently playing song\, also available are
-/// "MusicPlayer.offset(number).Title" offset is relative to the current
-/// playing item and "MusicPlayer.Position(number).Title" position is relative
-/// to the start of the playlist
+/// @return The title of the currently playing song.
+/// <p>
+/// }
+/// \table_row3{ <b>`MusicPlayer.offset(number).Title`</b>,
+/// \anchor MusicPlayer_Offset_Title
+/// _string_,
+/// @return The title of the song which has an offset `number` with respect to the
+/// current playing song.
+/// @param number - the offset number with respect to the current playing song
+/// <p>
+/// }
+/// \table_row3{ <b>`MusicPlayer.Position(number).Title`</b>,
+/// \anchor MusicPlayer_Position_Title
+/// _string_,
+/// @return The title of the song which as an offset `number` with respect to the
+/// start of the playlist.
+/// @param number - the offset number with respect to the start of the playlist
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.Album`</b>,
/// \anchor MusicPlayer_Album
/// _string_,
-/// Album from which the current song is from\, also available are
-/// "MusicPlayer.offset(number).Album" offset is relative to the current
-/// playing item and "MusicPlayer.Position(number).Album" position is relative
-/// to the start of the playlist
+/// @return The album from which the current song is from.
+/// <p>
+/// }
+/// \table_row3{ <b>`MusicPlayer.offset(number).Album`</b>,
+/// \anchor MusicPlayer_OffSet_Album
+/// _string_,
+/// @return The album from which the song with offset `number` with respect to
+/// the current song is from.
+/// @param number - the offset number with respect to the current playing song
+/// <p>
+/// }
+/// \table_row3{ <b>`MusicPlayer.Position(number).Album`</b>,
+/// \anchor MusicPlayer_Position_Album
+/// _string_,
+/// @return The album from which the song with offset `number` with respect to
+/// the start of the playlist is from.
+/// @param number - the offset number with respect to the start of the playlist
+/// <p>
+/// }
+/// \table_row3{ <b>`MusicPlayer.Property(Album_Mood)`</b>,
+/// \anchor MusicPlayer_Property_Album_Mood
+/// _string_,
+/// @return The moods of the currently playing Album
+/// <p>
+/// }
+/// \table_row3{ <b>`MusicPlayer.Property(Role.Composer)`</b>,
+/// \anchor MusicPlayer_Property_Role_Composer
+/// _string_,
+/// @return The name of the person who composed the selected song.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link MusicPlayer_Property_Role_Composer `MusicPlayer.Property(Role.Composer)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`MusicPlayer.Property(Role.Conductor)`</b>,
+/// \anchor MusicPlayer_Property_Role_Conductor
+/// _string_,
+/// @return The name of the person who conducted the selected song.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link MusicPlayer_Property_Role_Conductor `MusicPlayer.Property(Role.Conductor)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`MusicPlayer.Property(Role.Orchestra)`</b>,
+/// \anchor MusicPlayer_Property_Role_Orchestra
+/// _string_,
+/// @return The name of the orchestra performing the selected song.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link MusicPlayer_Property_Role_Orchestra `MusicPlayer.Property(Role.Orchestra)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`MusicPlayer.Property(Role.Lyricist)`</b>,
+/// \anchor MusicPlayer_Property_Role_Lyricist
+/// _string_,
+/// @return The name of the person who wrote the lyrics of the selected song.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link MusicPlayer_Property_Role_Lyricist `MusicPlayer.Property(Role.Lyricist)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`MusicPlayer.Property(Role.Remixer)`</b>,
+/// \anchor MusicPlayer_Property_Role_Remixer
+/// _string_,
+/// @return The name of the person who remixed the selected song.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link MusicPlayer_Property_Role_Remixer `MusicPlayer.Property(Role.Remixer)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`MusicPlayer.Property(Role.Arranger)`</b>,
+/// \anchor MusicPlayer_Property_Role_Arranger
+/// _string_,
+/// @return The name of the person who arranged the selected song.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link MusicPlayer_Property_Role_Arranger `MusicPlayer.Property(Role.Arranger)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`MusicPlayer.Property(Role.Engineer)`</b>,
+/// \anchor MusicPlayer_Property_Role_Engineer
+/// _string_,
+/// @return The name of the person who was the engineer of the selected song.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link MusicPlayer_Property_Role_Engineer `MusicPlayer.Property(Role.Engineer)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`MusicPlayer.Property(Role.Producer)`</b>,
+/// \anchor MusicPlayer_Property_Role_Producer
+/// _string_,
+/// @return The name of the person who produced the selected song.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link MusicPlayer_Property_Role_Producer `MusicPlayer.Property(Role.Producer)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`MusicPlayer.Property(Role.DJMixer)`</b>,
+/// \anchor MusicPlayer_Property_Role_DJMixer
+/// _string_,
+/// @return The name of the dj who remixed the selected song.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link MusicPlayer_Property_Role_DJMixer `MusicPlayer.Property(Role.DJMixer)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`MusicPlayer.Property(Role.Mixer)`</b>,
+/// \anchor MusicPlayer_Property_Role_Mixer
+/// _string_,
+/// @return The name of the dj who remixed the selected song.
+/// @todo So maybe rather than a row each have one entry for Role.XXXXX with composer\, arranger etc. as listed values
+/// @note MusicPlayer.Property(Role.any_custom_role) also works\,
+/// where any_custom_role could be an instrument violin or some other production activity e.g. sound engineer.
+/// The roles listed (composer\, arranger etc.) are standard ones but there are many possible.
+/// Music file tagging allows for the musicians and all other people involved in the recording to be added\, Kodi
+/// will gathers and stores that data\, and it is availlable to GUI.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link MusicPlayer_Property_Role_Mixer `MusicPlayer.Property(Role.Mixer)`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.Property(Album_Mood)`</b>,
/// \anchor MusicPlayer_Property_Album_Mood
/// _string_,
-/// Returns the moods of the currently playing Album
+/// @return the moods of the currently playing Album
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.Property(Album_Style)`</b>,
/// \anchor MusicPlayer_Property_Album_Style
/// _string_,
-/// Returns the styles of the currently playing Album
+/// @return the styles of the currently playing Album.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.Property(Album_Theme)`</b>,
/// \anchor MusicPlayer_Property_Album_Theme
/// _string_,
-/// Returns the themes of the currently playing Album
+/// @return The themes of the currently playing Album
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.Property(Album_Type)`</b>,
/// \anchor MusicPlayer_Property_Album_Type
/// _string_,
-/// Returns the album type (e.g. compilation\, enhanced\, explicit lyrics) of the
-/// currently playing album
+/// @return The album type (e.g. compilation\, enhanced\, explicit lyrics) of the
+/// currently playing album.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.Property(Album_Label)`</b>,
/// \anchor MusicPlayer_Property_Album_Label
/// _string_,
-/// Returns the record label of the currently playing album
+/// @return The record label of the currently playing album.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.Property(Album_Description)`</b>,
/// \anchor MusicPlayer_Property_Album_Description
/// _string_,
-/// Returns a review of the currently playing album
+/// @return A review of the currently playing album
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.Artist`</b>,
/// \anchor MusicPlayer_Artist
/// _string_,
-/// Artist(s) of current song\, also available are
-/// "MusicPlayer.offset(number).Artist" offset is relative to the current
-/// playing item and "MusicPlayer.Position(number).Artist" position is
-/// relative to the start of the playlist
+/// @return Artist(s) of current song.
+/// <p>
+/// }
+/// \table_row3{ <b>`MusicPlayer.offset(number).Artist`</b>,
+/// \anchor MusicPlayer_Offset_Artist
+/// _string_,
+/// @return Artist(s) of the song which has an offset `number` with respect
+/// to the current playing song.
+/// @param number - the offset of the song with respect to the current
+/// playing song
+/// <p>
+/// }
+/// \table_row3{ <b>`MusicPlayer.Position(number).Artist`</b>,
+/// \anchor MusicPlayer_Position_Artist
+/// _string_,
+/// @return Artist(s) of the song which has an offset `number` with respect
+/// to the start of the playlist.
+/// @param number - the offset of the song with respect to
+/// the start of the playlist
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.AlbumArtist`</b>,
/// \anchor MusicPlayer_AlbumArtist
/// _string_,
-/// Album artist of the currently playing song
+/// @return The album artist of the currently playing song.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.Cover`</b>,
/// \anchor MusicPlayer_Cover
/// _string_,
-/// Album cover of currently playing song
+/// @return The album cover of currently playing song.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.Property(Artist_Sortname)`</b>,
/// \anchor MusicPlayer_Property_Artist_Sortname
/// _string_,
-/// Sortname of the currently playing Artist
+/// @return The sortname of the currently playing Artist.
+/// <p><hr>
+/// @skinning_v18 **[New Infolabel]** \link MusicPlayer_Property_Artist_Sortname `MusicPlayer.Property(Artist_Sortname)`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.Property(Artist_Type)`</b>,
/// \anchor MusicPlayer_Property_Artist_Type
/// _string_,
-/// Type of the currently playing Artist - person\, group\, orchestra\, choir etc.
+/// @return The type of the currently playing Artist - person\,
+/// group\, orchestra\, choir etc.
+/// <p><hr>
+/// @skinning_v18 **[New Infolabel]** \link MusicPlayer_Property_Artist_Type `MusicPlayer.Property(Artist_Type)`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.Property(Artist_Gender)`</b>,
/// \anchor MusicPlayer_Property_Artist_Gender
/// _string_,
-/// Gender of the currently playing Artist - male\, female\, other
+/// @return The gender of the currently playing Artist - male\,
+/// female\, other.
+/// <p><hr>
+/// @skinning_v18 **[New Infolabel]** \link MusicPlayer_Property_Artist_Gender `MusicPlayer.Property(Artist_Gender)`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.Property(Artist_Disambiguation)`</b>,
/// \anchor MusicPlayer_Property_Artist_Disambiguation
/// _string_,
-/// Brief description of the currently playing Artist that differentiates them
-/// from others with the same name
+/// @return A brief description of the currently playing Artist that differentiates them
+/// from others with the same name.
+/// <p><hr>
+/// @skinning_v18 **[New Infolabel]** \link MusicPlayer_Property_Artist_Disambiguation `MusicPlayer.Property(Artist_Disambiguation)`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.Property(Artist_Born)`</b>,
/// \anchor MusicPlayer_Property_Artist_Born
/// _string_,
-/// Date of Birth of the currently playing Artist
+/// @return The date of Birth of the currently playing Artist.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.Property(Artist_Died)`</b>,
/// \anchor MusicPlayer_Property_Artist_Died
/// _string_,
-/// Date of Death of the currently playing Artist
+/// @return The date of Death of the currently playing Artist.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.Property(Artist_Formed)`</b>,
/// \anchor MusicPlayer_Property_Artist_Formed
/// _string_,
-/// Formation date of the currently playing Artist/Band
+/// @return The Formation date of the currently playing Artist/Band.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.Property(Artist_Disbanded)`</b>,
/// \anchor MusicPlayer_Property_Artist_Disbanded
/// _string_,
-/// Disbanding date of the currently playing Artist/Band
+/// @return The disbanding date of the currently playing Artist/Band.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.Property(Artist_YearsActive)`</b>,
/// \anchor MusicPlayer_Property_Artist_YearsActive
/// _string_,
-/// Years the currently Playing artist has been active
+/// @return The years the currently Playing artist has been active.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.Property(Artist_Instrument)`</b>,
/// \anchor MusicPlayer_Property_Artist_Instrument
/// _string_,
-/// Instruments played by the currently playing artist
+/// @return The instruments played by the currently playing artist.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.Property(Artist_Description)`</b>,
/// \anchor MusicPlayer_Property_Artist_Description
/// _string_,
-/// Returns a biography of the currently playing artist
+/// @return A biography of the currently playing artist.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.Property(Artist_Mood)`</b>,
/// \anchor MusicPlayer_Property_Artist_Mood
/// _string_,
-/// Returns the moods of the currently playing artist
+/// @return The moods of the currently playing artist.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.Property(Artist_Style)`</b>,
/// \anchor MusicPlayer_Property_Artist_Style
/// _string_,
-/// Returns the styles of the currently playing artist
+/// @return The styles of the currently playing artist.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.Property(Artist_Genre)`</b>,
/// \anchor MusicPlayer_Property_Artist_Genre
/// _string_,
-/// Returns the genre of the currently playing artist
+/// @return The genre of the currently playing artist.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.Genre`</b>,
/// \anchor MusicPlayer_Genre
/// _string_,
-/// Genre(s) of current song\, also available are
-/// "MusicPlayer.offset(number).Genre" offset is relative to the current
-/// playing item and "MusicPlayer.Position(number).Genre" position is
-/// relative to the start of the playlist
+/// @return The genre(s) of current song.
+/// <p>
+/// }
+/// \table_row3{ <b>`MusicPlayer.offset(number).Genre`</b>,
+/// \anchor MusicPlayer_OffSet_Genre
+/// _string_,
+/// @return The genre(s) of the song with an offset `number` with respect
+/// to the current playing song.
+/// @param number - the offset song number with respect to the current playing
+/// song.
+/// <p>
+/// }
+/// \table_row3{ <b>`MusicPlayer.Position(number).Genre`</b>,
+/// \anchor MusicPlayer_Position_Genre
+/// _string_,
+/// @return The genre(s) of the song with an offset `number` with respect
+/// to the start of the playlist.
+/// @param number - the offset song number with respect to the start of the
+/// playlist
+/// song.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.Lyrics`</b>,
/// \anchor MusicPlayer_Lyrics
/// _string_,
-/// Lyrics of current song stored in ID tag info
+/// @return The lyrics of current song stored in ID tag info.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.Year`</b>,
/// \anchor MusicPlayer_Year
/// _string_,
-/// Year of release of current song\, also available are
-/// "MusicPlayer.offset(number).Year" offset is relative to the current
-/// playing item and "MusicPlayer.Position(number).Year" position is
-/// relative to the start of the playlist
+/// @return The year of release of current song.
+/// <p>
+/// }
+/// \table_row3{ <b>`MusicPlayer.offset(number).Year`</b>,
+/// \anchor MusicPlayer_Offset_Year
+/// _string_,
+/// @return The year of release of the song with an offset `number` with
+/// respect to the current playing song.
+/// @param number - the offset numbet with respect to the current song.
+/// <p>
+/// }
+/// \table_row3{ <b>`MusicPlayer.Position(number).Year`</b>,
+/// \anchor MusicPlayer_Position_Year
+/// _string_,
+/// @return The year of release of the song with an offset `number` with
+/// respect to the start of the playlist.
+/// @param number - the offset numbet with respect to the start of the
+/// playlist.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.Rating`</b>,
/// \anchor MusicPlayer_Rating
/// _string_,
-/// Numeric Rating of current song\, also available are
-/// "MusicPlayer.offset(number).Rating" offset is relative to the current
-/// playing item and "MusicPlayer.Position(number).Rating" position is
-/// relative to the start of the playlist
+/// @return The numeric Rating of current song (1-10).
+/// <p>
+/// }
+/// \table_row3{ <b>`MusicPlayer.offset(number).Rating`</b>,
+/// \anchor MusicPlayer_OffSet_Rating
+/// _string_,
+/// @return The numeric Rating of song with an offset `number` with
+/// respect to the current playing song.
+/// @param number - the offset with respect to the current playing song
+/// <p>
+/// }
+/// \table_row3{ <b>`MusicPlayer.Position(number).Rating`</b>,
+/// \anchor MusicPlayer_Position_Rating
+/// _string_,
+/// @return The numeric Rating of song with an offset `number` with
+/// respect to the start of the playlist.
+/// @param number - the offset with respect to the start of the playlist
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.RatingAndVotes`</b>,
/// \anchor MusicPlayer_RatingAndVotes
/// _string_,
-/// Returns the scraped rating and votes of currently playing song\, if it's in the database
+/// @return The scraped rating and votes of currently playing song\, if it's in the database.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.UserRating`</b>,
/// \anchor MusicPlayer_UserRating
/// _string_,
-/// Returns the scraped rating of the currently playing song
+/// @return The scraped rating of the currently playing song (1-10).
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link MusicPlayer_UserRating `MusicPlayer.UserRating`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.Votes`</b>,
/// \anchor MusicPlayer_Votes
/// _string_,
-/// Returns the scraped votes of currently playing song\, if it's in the database
+/// @return The scraped votes of currently playing song\, if it's in the database.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.DiscNumber`</b>,
/// \anchor MusicPlayer_DiscNumber
/// _string_,
-/// Disc Number of current song stored in ID tag info\, also available are
-/// "MusicPlayer.offset(number).DiscNumber" offset is relative to the
-/// current playing item and "MusicPlayer.Position(number).DiscNumber"
-/// position is relative to the start of the playlist
+/// @return The Disc Number of current song stored in ID tag info.
+/// <p>
+/// }
+/// \table_row3{ <b>`MusicPlayer.offset(number).DiscNumber`</b>,
+/// \anchor MusicPlayer_Offset_DiscNumber
+/// _string_,
+/// @return The Disc Number of current song stored in ID tag info for the
+/// song with an offset `number` with respect to the playing song.
+/// @param number - The offset value for the song with respect to the
+/// playing song.
+/// <p>
+/// }
+/// \table_row3{ <b>`MusicPlayer.Position(number).DiscNumber`</b>,
+/// \anchor MusicPlayer_Position_DiscNumber
+/// _string_,
+/// @return The Disc Number of current song stored in ID tag info for the
+/// song with an offset `number` with respect to the start of the playlist.
+/// @param number - The offset value for the song with respect to the
+/// start of the playlist.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.Comment`</b>,
/// \anchor MusicPlayer_Comment
/// _string_,
-/// Comment of current song stored in ID tag info\, also available are
-/// "MusicPlayer.offset(number).Comment" offset is relative to the current
-/// playing item and "MusicPlayer.Position(number).Comment" position is
-/// relative to the start of the playlist
+/// @return The Comment of current song stored in ID tag info.
+/// <p>
+/// }
+/// \table_row3{ <b>`MusicPlayer.offset(number).Comment`</b>,
+/// \anchor MusicPlayer_Offset_Comment
+/// _string_,
+/// @return The Comment of current song stored in ID tag info for the
+/// song with an offset `number` with respect to the playing song.
+/// @param number - The offset value for the song with respect to the
+/// playing song.
+/// <p>
+/// }
+/// \table_row3{ <b>`MusicPlayer.Position(number).Comment`</b>,
+/// \anchor MusicPlayer_Position_Comment
+/// _string_,
+/// @return The Comment of current song stored in ID tag info for the
+/// song with an offset `number` with respect to the start of the playlist.
+/// @param number - The offset value for the song with respect to the
+/// start of the playlist.
+/// <p>
+/// }
+/// \table_row3{ <b>`MusicPlayer.Contributors`</b>,
+/// \anchor MusicPlayer_Contributors
+/// _string_,
+/// @return The list of all people who've contributed to the currently playing song
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link MusicPlayer_Contributors `MusicPlayer.Contributors`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`MusicPlayer.ContributorAndRole`</b>,
+/// \anchor MusicPlayer_ContributorAndRole
+/// _string_,
+/// @return The list of all people and their role who've contributed to the currently playing song.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link MusicPlayer_ContributorAndRole `MusicPlayer.ContributorAndRole`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.Mood`</b>,
/// \anchor MusicPlayer_Mood
/// _string_,
-/// Mood of the currently playing song
+/// @return The mood of the currently playing song.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link MusicPlayer_Mood `MusicPlayer.Mood`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.PlaylistPlaying`</b>,
/// \anchor MusicPlayer_PlaylistPlaying
/// _boolean_,
-/// Returns true if a playlist is currently playing
+/// @return **True** if a playlist is currently playing.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.Exists(relative\,position)`</b>,
/// \anchor MusicPlayer_Exists
/// _boolean_,
-/// Returns true if the currently playing playlist has a song queued at the given position.
-/// It is possible to define whether the position is relative or not\, default is false.
+/// @return **True** if the currently playing playlist has a song queued at the given position.
+/// @param relative - bool - If the position is relative
+/// @param position - int - The position of the song
+/// @note It is possible to define whether the position is relative or not\, default is false.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.HasPrevious`</b>,
/// \anchor MusicPlayer_HasPrevious
/// _boolean_,
-/// Returns true if the music player has a a Previous Song in the Playlist.
+/// @return **True** if the music player has a a Previous Song in the Playlist.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.HasNext`</b>,
/// \anchor MusicPlayer_HasNext
/// _boolean_,
-/// Returns true if the music player has a next song queued in the Playlist.
+/// @return **True** if the music player has a next song queued in the Playlist.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.PlayCount`</b>,
/// \anchor MusicPlayer_PlayCount
/// _integer_,
-/// Returns the play count of currently playing song\, if it's in the database
+/// @return The play count of currently playing song\, if it's in the database.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.LastPlayed`</b>,
/// \anchor MusicPlayer_LastPlayed
/// _string_,
-/// Returns the last play date of currently playing song\, if it's in the database
+/// @return The last play date of currently playing song\, if it's in the database.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.TrackNumber`</b>,
/// \anchor MusicPlayer_TrackNumber
/// _string_,
-/// Track number of current song\, also available are
-/// "MusicPlayer.offset(number).TrackNumber" offset is relative to the
-/// current playing item and "MusicPlayer.Position(number).TrackNumber"
-/// position is relative to the start of the playlist
+/// @return The track number of current song.
+/// <p>
+/// }
+/// \table_row3{ <b>`MusicPlayer.offset(number).TrackNumber`</b>,
+/// \anchor MusicPlayer_Offset_TrackNumber
+/// _string_,
+/// @return The track number of the song with an offset `number`
+/// with respect to the current playing song.
+/// @param number - The offset number of the song with respect to the
+/// playing song
+/// <p>
+/// }
+/// \table_row3{ <b>`MusicPlayer.Position(number).TrackNumber`</b>,
+/// \anchor MusicPlayer_Position_TrackNumber
+/// _string_,
+/// @return The track number of the song with an offset `number`
+/// with respect to start of the playlist.
+/// @param number - The offset number of the song with respect
+/// to start of the playlist
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.Duration`</b>,
/// \anchor MusicPlayer_Duration
/// _string_,
-/// Duration of current song\, also available are
-/// "MusicPlayer.offset(number).Duration" offset is relative to the
-/// current playing item and "MusicPlayer.Position(number).Duration"
-/// position is relative to the start of the playlist
+/// @return The duration of the current song.
+/// <p>
+/// }
+/// \table_row3{ <b>`MusicPlayer.offset(number).Duration`</b>,
+/// \anchor MusicPlayer_Offset_Duration
+/// _string_,
+/// @return The duration of the song with an offset `number`
+/// with respect to the current playing song.
+/// @param number - the offset number of the song with respect
+/// to the current playing song
+/// <p>
+/// }
+/// \table_row3{ <b>`MusicPlayer.Position(number).Duration`</b>,
+/// \anchor MusicPlayer_Position_Duration
+/// _string_,
+/// @return The duration of the song with an offset `number`
+/// with respect to the start of the playlist.
+/// @param number - the offset number of the song with respect
+/// to the start of the playlist
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.BitRate`</b>,
/// \anchor MusicPlayer_BitRate
/// _string_,
-/// Bitrate of current song
+/// @return The bitrate of current song.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.Channels`</b>,
/// \anchor MusicPlayer_Channels
/// _string_,
-/// Number of channels of current song
+/// @return The number of channels of current song.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.BitsPerSample`</b>,
/// \anchor MusicPlayer_BitsPerSample
/// _string_,
-/// Number of bits per sample of current song
+/// @return The number of bits per sample of current song.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.SampleRate`</b>,
/// \anchor MusicPlayer_SampleRate
/// _string_,
-/// Samplerate of current song
+/// @return The samplerate of current playing song.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.Codec`</b>,
/// \anchor MusicPlayer_Codec
/// _string_,
-/// Codec of current song
+/// @return The codec of current playing song.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.PlaylistPosition`</b>,
/// \anchor MusicPlayer_PlaylistPosition
/// _string_,
-/// Position of the current song in the current music playlist
+/// @return The position of the current song in the current music playlist.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.PlaylistLength`</b>,
/// \anchor MusicPlayer_PlaylistLength
/// _string_,
-/// Total size of the current music playlist
+/// @return The total size of the current music playlist.
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.ChannelName`</b>,
/// \anchor MusicPlayer_ChannelName
/// _string_,
-/// Channel name of the radio programme that's currently playing (PVR).
+/// @return The channel name of the radio programme that's currently playing (PVR).
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.ChannelNumberLabel`</b>,
/// \anchor MusicPlayer_ChannelNumberLabel
/// _string_,
-/// Channel and subchannel number of the radio channel that's currently
+/// @return The channel and subchannel number of the radio channel that's currently
/// playing (PVR).
+/// <p><hr>
+/// @skinning_v14 **[New Infolabel]** \link MusicPlayer_ChannelNumberLabel `MusicPlayer.ChannelNumberLabel`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.ChannelGroup`</b>,
/// \anchor MusicPlayer_ChannelGroup
/// _string_,
-/// Channel group of the radio programme that's currently playing (PVR).
+/// @return The channel group of the radio programme that's currently playing (PVR).
+/// <p>
/// }
/// \table_row3{ <b>`MusicPlayer.Property(propname)`</b>,
/// \anchor MusicPlayer_Property_Propname
/// _string_,
-/// Get a property of the currently playing item.
+/// @return The requested property value of the currently playing item.
+/// @param propname - The requested property
+/// <p>
+/// }
+/// \table_row3{ <b>`MusicPlayer.DBID`</b>,
+/// \anchor MusicPlayer_DBID
+/// _string_,
+/// @return The database id of the currently playing song.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link MusicPlayer_DBID `MusicPlayer.DBID`\endlink
+/// <p>
/// }
/// \table_end
///
/// -----------------------------------------------------------------------------
-/// @}
const infomap musicplayer[] = {{ "title", MUSICPLAYER_TITLE },
{ "album", MUSICPLAYER_ALBUM },
{ "artist", MUSICPLAYER_ARTIST },
@@ -1685,365 +2509,475 @@ const infomap musicplayer[] = {{ "title", MUSICPLAYER_TITLE },
{ "property", MUSICPLAYER_PROPERTY },
};
-/// \page modules__General__List_of_gui_access
-/// \section modules__General__List_of_gui_access_Videoplayer Video player
-/// @{
+/// \page modules__infolabels_boolean_conditions
+/// \subsection modules__infolabels_boolean_conditions_Videoplayer Video player
/// \table_start
/// \table_h3{ Labels, Type, Description }
/// \table_row3{ <b>`VideoPlayer.UsingOverlays`</b>,
/// \anchor VideoPlayer_UsingOverlays
/// _boolean_,
-/// Returns true if the video player is using the hardware overlays render
-/// method. Useful\, as with hardware overlays you have no alpha blending to
+/// @return **True** if the video player is using the hardware overlays render
+/// method.
+/// @note This is useful\, as with hardware overlays you have no alpha blending to
/// the video image\, so shadows etc. need redoing\, or disabling.
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.IsFullscreen`</b>,
/// \anchor VideoPlayer_IsFullscreen
/// _boolean_,
-/// Returns true if the video player is in fullscreen mode.
+/// @return **True** if the video player is in fullscreen mode.
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.HasMenu`</b>,
/// \anchor VideoPlayer_HasMenu
/// _boolean_,
-/// Returns true if the video player has a menu (ie is playing a DVD)
+/// @return **True** if the video player has a menu (ie is playing a DVD).
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.HasInfo`</b>,
/// \anchor VideoPlayer_HasInfo
/// _boolean_,
-/// Returns true if the current playing video has information from the
+/// @return **True** if the current playing video has information from the
/// library or from a plugin (eg director/plot etc.)
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.Content(parameter)`</b>,
/// \anchor VideoPlayer_Content
/// _boolean_,
-/// Returns true if the current Video you are playing is contained in
-/// corresponding Video Library sections.\n
-/// The following values are accepted :
-/// - files
-/// - movies
-/// - episodes
-/// - musicvideos
-/// - livetv
+/// @return **True** if the current Video you are playing is contained in
+/// corresponding Video Library sections. The following values are accepted:
+/// - <b>files</b>
+/// - <b>movies</b>
+/// - <b>episodes</b>
+/// - <b>musicvideos</b>
+/// - <b>livetv</b>
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.HasSubtitles`</b>,
/// \anchor VideoPlayer_HasSubtitles
/// _boolean_,
-/// Returns true if there are subtitles available for video.
+/// @return **True** if there are subtitles available for video.
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.HasTeletext`</b>,
/// \anchor VideoPlayer_HasTeletext
/// _boolean_,
-/// Returns true if teletext is usable on played TV channel
+/// @return **True** if teletext is usable on played TV channel.
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.IsStereoscopic`</b>,
/// \anchor VideoPlayer_IsStereoscopic
/// _boolean_,
-/// Returns true when the currently playing video is a 3D (stereoscopic)
-/// video
+/// @return **True** when the currently playing video is a 3D (stereoscopic)
+/// video.
+/// <p><hr>
+/// @skinning_v13 **[New Boolean Condition]** \link VideoPlayer_IsStereoscopic `VideoPlayer.IsStereoscopic`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.SubtitlesEnabled`</b>,
/// \anchor VideoPlayer_SubtitlesEnabled
/// _boolean_,
-/// Returns true if subtitles are turned on for video.
+/// @return **True** if subtitles are turned on for video.
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.HasEpg`</b>,
/// \anchor VideoPlayer_HasEpg
/// _boolean_,
-/// Returns true if epg information is available for the currently playing
+/// @return **True** if epg information is available for the currently playing
/// programme (PVR).
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.CanResumeLiveTV`</b>,
/// \anchor VideoPlayer_CanResumeLiveTV
/// _boolean_,
-/// Returns true if a in-progress PVR recording is playing an the respective live TV channel is available
+/// @return **True** if a in-progress PVR recording is playing an the respective
+/// live TV channel is available.
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.Title`</b>,
/// \anchor VideoPlayer_Title
/// _string_,
-/// Title of currently playing video. If it's in the database it will return
-/// the database title\, else the filename
+/// @return The title of currently playing video.
+/// @note If it's in the database it will return the database title\, else the filename.
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.OriginalTitle`</b>,
/// \anchor VideoPlayer_OriginalTitle
/// _string_,
-/// Original title of currently playing video. If it's in the database
+/// @return The original title of currently playing video. If it's in the database.
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.TVShowTitle`</b>,
/// \anchor VideoPlayer_TVShowTitle
/// _string_,
-/// Title of currently playing episode's tvshow name
+/// @return The title of currently playing episode's tvshow name.
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.Season`</b>,
/// \anchor VideoPlayer_Season
/// _string_,
-/// Season number of the currently playing episode\, if it's in the database
+/// @return The season number of the currently playing episode\, if it's in the database.
+/// <p><hr>
+/// @skinning_v15 **[Infolabel Updated]** \link VideoPlayer_Season `VideoPlayer.Season`\endlink
+/// also supports EPG.
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.Episode`</b>,
/// \anchor VideoPlayer_Episode
/// _string_,
-/// Episode number of the currently playing episode
+/// @return The episode number of the currently playing episode.
+/// <p><hr>
+/// @skinning_v15 **[Infolabel Updated]** \link VideoPlayer_Episode `VideoPlayer.Episode`\endlink
+/// also supports EPG.
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.Genre`</b>,
/// \anchor VideoPlayer_Genre
/// _string_,
-/// Genre(s) of current movie\, if it's in the database
+/// @return The genre(s) of current movie\, if it's in the database.
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.Director`</b>,
/// \anchor VideoPlayer_Director
/// _string_,
-/// Director of current movie\, if it's in the database
+/// @return The director of current movie\, if it's in the database.
+/// <p><hr>
+/// @skinning_v15 **[Infolabel Updated]** \link VideoPlayer_Director `VideoPlayer.Director`\endlink
+/// also supports EPG.
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.Country`</b>,
/// \anchor VideoPlayer_Country
/// _string_,
-/// Production country of current movie\, if it's in the database
+/// @return The production country of current movie\, if it's in the database.
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.Year`</b>,
/// \anchor VideoPlayer_Year
/// _string_,
-/// Year of release of current movie\, if it's in the database
+/// @return The year of release of current movie\, if it's in the database.
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.Cover`</b>,
/// \anchor VideoPlayer_Cover
/// _string_,
-/// Cover of currently playing movie
+/// @return The cover of currently playing movie.
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.Rating`</b>,
/// \anchor VideoPlayer_Rating
/// _string_,
-/// Returns the scraped rating of current movie\, if it's in the database
+/// @return The scraped rating of current movie\, if it's in the database.
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.UserRating`</b>,
/// \anchor VideoPlayer_UserRating
/// _string_,
-/// Returns the user rating of the currently playing item
+/// @return The user rating of the currently playing item.
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link VideoPlayer_UserRating `VideoPlayer.UserRating`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.Votes`</b>,
/// \anchor VideoPlayer_Votes
/// _string_,
-/// Returns the scraped votes of current movie\, if it's in the database
+/// @return The scraped votes of current movie\, if it's in the database.
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link VideoPlayer_Votes `VideoPlayer.Votes`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.RatingAndVotes`</b>,
/// \anchor VideoPlayer_RatingAndVotes
/// _string_,
-/// Returns the scraped rating and votes of current movie\, if it's in the database
+/// @return The scraped rating and votes of current movie\, if it's in the database
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.mpaa`</b>,
/// \anchor VideoPlayer_mpaa
/// _string_,
-/// MPAA rating of current movie\, if it's in the database
+/// @return The MPAA rating of current movie\, if it's in the database.
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.IMDBNumber`</b>,
/// \anchor VideoPlayer_IMDBNumber
/// _string_,
-/// The IMDb ID of the current movie\, if it's in the database
+/// @return The IMDb ID of the current movie\, if it's in the database.
+/// <p><hr>
+/// @skinning_v15 **[New Infolabel]** \link VideoPlayer_IMDBNumber `VideoPlayer.IMDBNumber`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.Top250`</b>,
/// \anchor VideoPlayer_Top250
/// _string_,
-/// IMDb Top250 position of the currently playing movie\, if it's in the database
+/// @return The IMDb Top250 position of the currently playing movie\, if it's in the database.
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.EpisodeName`</b>,
/// \anchor VideoPlayer_EpisodeName
/// _string_,
-/// (PVR only) The name of the episode if the playing video is a TV Show\,
-/// if it's in the database
+/// @return The name of the episode if the playing video is a TV Show\,
+/// if it's in the database (PVR).
+/// <p><hr>
+/// @skinning_v15 **[New Infolabel]** \link VideoPlayer_EpisodeName `VideoPlayer.EpisodeName`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.PlaylistPosition`</b>,
/// \anchor VideoPlayer_PlaylistPosition
/// _string_,
-/// Position of the current song in the current video playlist
+/// @return The position of the current song in the current video playlist.
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.PlaylistLength`</b>,
/// \anchor VideoPlayer_PlaylistLength
/// _string_,
-/// Total size of the current video playlist
+/// @return The total size of the current video playlist.
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.Cast`</b>,
/// \anchor VideoPlayer_Cast
/// _string_,
-/// A concatenated string of cast members of the current movie\, if it's in
-/// the database
+/// @return A concatenated string of cast members of the current movie\, if it's in
+/// the database.
+/// <p><hr>
+/// @skinning_v15 **[Infolabel Updated]** \link VideoPlayer_Cast `VideoPlayer.Cast`\endlink
+/// also supports EPG.
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.CastAndRole`</b>,
/// \anchor VideoPlayer_CastAndRole
/// _string_,
-/// A concatenated string of cast members and roles of the current movie\,
-/// if it's in the database
+/// @return A concatenated string of cast members and roles of the current movie\,
+/// if it's in the database.
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.Album`</b>,
/// \anchor VideoPlayer_Album
/// _string_,
-/// Album from which the current Music Video is from\, if it's in the database
+/// @return The album from which the current Music Video is from\, if it's in the database.
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.Artist`</b>,
/// \anchor VideoPlayer_Artist
/// _string_,
-/// Artist(s) of current Music Video\, if it's in the database
+/// @return The artist(s) of current Music Video\, if it's in the database.
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.Studio`</b>,
/// \anchor VideoPlayer_Studio
/// _string_,
-/// Studio of current Music Video\, if it's in the database
+/// @return The studio of current Music Video\, if it's in the database.
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.Writer`</b>,
/// \anchor VideoPlayer_Writer
/// _string_,
-/// Name of Writer of current playing Video\, if it's in the database
+/// @return The name of Writer of current playing Video\, if it's in the database.
+/// <p><hr>
+/// @skinning_v15 **[Infolabel Updated]** \link VideoPlayer_Writer `VideoPlayer.Writer`\endlink
+/// also supports EPG.
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.Tagline`</b>,
/// \anchor VideoPlayer_Tagline
/// _string_,
-/// Small Summary of current playing Video\, if it's in the database
+/// @return The small Summary of current playing Video\, if it's in the database.
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.PlotOutline`</b>,
/// \anchor VideoPlayer_PlotOutline
/// _string_,
-/// Small Summary of current playing Video\, if it's in the database
+/// @return The small Summary of current playing Video\, if it's in the database.
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.Plot`</b>,
/// \anchor VideoPlayer_Plot
/// _string_,
-/// Complete Text Summary of current playing Video\, if it's in the database
+/// @return The complete Text Summary of current playing Video\, if it's in the database.
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.Premiered`</b>,
/// \anchor VideoPlayer_Premiered
/// _string_,
-/// Release or aired date of the currently playing episode\, show\, movie or EPG item\, if it's in the database
+/// @return The release or aired date of the currently playing episode\, show\, movie or EPG item\,
+/// if it's in the database.
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.Trailer`</b>,
/// \anchor VideoPlayer_Trailer
/// _string_,
-/// The path to the trailer of the currently playing movie\, if it's in the database
+/// @return The path to the trailer of the currently playing movie\, if it's in the database.
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.LastPlayed`</b>,
/// \anchor VideoPlayer_LastPlayed
/// _string_,
-/// Last play date of current playing Video\, if it's in the database
+/// @return The last play date of current playing Video\, if it's in the database.
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.PlayCount`</b>,
/// \anchor VideoPlayer_PlayCount
/// _string_,
-/// Playcount of current playing Video\, if it's in the database
+/// @return The playcount of current playing Video\, if it's in the database.
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.VideoCodec`</b>,
/// \anchor VideoPlayer_VideoCodec
/// _string_,
-/// Returns the video codec of the currently playing video (common values: see
-/// \ref ListItem_VideoCodec "ListItem.VideoCodec")
+/// @return The video codec of the currently playing video (common values: see
+/// \ref ListItem_VideoCodec "ListItem.VideoCodec").
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.VideoResolution`</b>,
/// \anchor VideoPlayer_VideoResolution
/// _string_,
-/// Returns the video resolution of the currently playing video (possible
-/// values: see \ref ListItem_VideoResolution "ListItem.VideoResolution")
+/// @return The video resolution of the currently playing video (possible
+/// values: see \ref ListItem_VideoResolution "ListItem.VideoResolution").
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.VideoAspect`</b>,
/// \anchor VideoPlayer_VideoAspect
/// _string_,
-/// Returns the aspect ratio of the currently playing video (possible values:
-/// see \ref ListItem_VideoAspect "ListItem.VideoAspect")
+/// @return The aspect ratio of the currently playing video (possible values:
+/// see \ref ListItem_VideoAspect "ListItem.VideoAspect").
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.AudioCodec`</b>,
/// \anchor VideoPlayer_AudioCodec
/// _string_,
-/// Returns the audio codec of the currently playing video\, optionally 'n'
+/// @return The audio codec of the currently playing video\, optionally 'n'
/// defines the number of the audiostream (common values: see
-/// \ref ListItem_AudioCodec "ListItem.AudioCodec")
+/// \ref ListItem_AudioCodec "ListItem.AudioCodec").
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.AudioChannels`</b>,
/// \anchor VideoPlayer_AudioChannels
/// _string_,
-/// Returns the number of audio channels of the currently playing video
-/// (possible values: see \ref ListItem_AudioChannels "ListItem.AudioChannels")
+/// @return The number of audio channels of the currently playing video
+/// (possible values: see \ref ListItem_AudioChannels "ListItem.AudioChannels").
+/// <p><hr>
+/// @skinning_v16 **[Infolabel Updated]** \link VideoPlayer_AudioChannels `VideoPlayer.AudioChannels`\endlink
+/// if a video contains no audio\, these infolabels will now return empty.
+/// (they used to return 0)
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.AudioLanguage`</b>,
/// \anchor VideoPlayer_AudioLanguage
/// _string_,
-/// Returns the language of the audio of the currently playing video(possible
-/// values: see \ref ListItem_AudioLanguage "ListItem.AudioLanguage")
+/// @return The language of the audio of the currently playing video(possible
+/// values: see \ref ListItem_AudioLanguage "ListItem.AudioLanguage").
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link VideoPlayer_AudioLanguage `VideoPlayer.AudioLanguage`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.SubtitlesLanguage`</b>,
/// \anchor VideoPlayer_SubtitlesLanguage
/// _string_,
-/// Returns the language of the subtitle of the currently playing video
-/// (possible values: see \ref ListItem_SubtitleLanguage "ListItem.SubtitleLanguage")
+/// @return The language of the subtitle of the currently playing video
+/// (possible values: see \ref ListItem_SubtitleLanguage "ListItem.SubtitleLanguage").
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link VideoPlayer_SubtitlesLanguage `VideoPlayer.SubtitlesLanguage`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.StereoscopicMode`</b>,
/// \anchor VideoPlayer_StereoscopicMode
/// _string_,
-/// Returns the stereoscopic mode of the currently playing video (possible
-/// values: see \ref ListItem_StereoscopicMode "ListItem.StereoscopicMode")
+/// @return The stereoscopic mode of the currently playing video (possible
+/// values: see \ref ListItem_StereoscopicMode "ListItem.StereoscopicMode").
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link VideoPlayer_StereoscopicMode `VideoPlayer.StereoscopicMode`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.StartTime`</b>,
/// \anchor VideoPlayer_StartTime
/// _string_,
-/// Start date and time of the currently playing epg event or recording (PVR).
+/// @return The start date and time of the currently playing epg event or recording (PVR).
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.EndTime`</b>,
/// \anchor VideoPlayer_EndTime
/// _string_,
-/// End date and time of the currently playing epg event or recording (PVR).
+/// @return The end date and time of the currently playing epg event or recording (PVR).
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.NextTitle`</b>,
/// \anchor VideoPlayer_NextTitle
/// _string_,
-/// Title of the programme that will be played next (PVR).
+/// @return The title of the programme that will be played next (PVR).
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.NextGenre`</b>,
/// \anchor VideoPlayer_NextGenre
/// _string_,
-/// Genre of the programme that will be played next (PVR).
+/// @return The genre of the programme that will be played next (PVR).
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.NextPlot`</b>,
/// \anchor VideoPlayer_NextPlot
/// _string_,
-/// Plot of the programme that will be played next (PVR).
+/// @return The plot of the programme that will be played next (PVR).
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.NextPlotOutline`</b>,
/// \anchor VideoPlayer_NextPlotOutline
/// _string_,
-/// Plot outline of the programme that will be played next (PVR).
+/// @return The plot outline of the programme that will be played next (PVR).
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.NextStartTime`</b>,
/// \anchor VideoPlayer_NextStartTime
/// _string_,
-/// Start time of the programme that will be played next (PVR).
+/// @return The start time of the programme that will be played next (PVR).
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.NextEndTime`</b>,
/// \anchor VideoPlayer_NextEndTime
/// _string_,
-/// End time of the programme that will be played next (PVR).
+/// @return The end time of the programme that will be played next (PVR).
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.NextDuration`</b>,
/// \anchor VideoPlayer_NextDuration
/// _string_,
-/// Duration of the programme that will be played next (PVR).
+/// @return The duration of the programme that will be played next (PVR).
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.ChannelName`</b>,
/// \anchor VideoPlayer_ChannelName
/// _string_,
-/// Name of the currently tuned channel (PVR).
+/// @return The name of the currently tuned channel (PVR).
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.ChannelNumberLabel`</b>,
/// \anchor VideoPlayer_ChannelNumberLabel
/// _string_,
-/// Channel and subchannel number of the tv channel that's currently playing (PVR).
+/// @return The channel and subchannel number of the tv channel that's currently playing (PVR).
+/// <p><hr>
+/// @skinning_v14 **[New Infolabel]** \link VideoPlayer_ChannelNumberLabel `VideoPlayer.ChannelNumberLabel`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.ChannelGroup`</b>,
/// \anchor VideoPlayer_ChannelGroup
/// _string_,
-/// Group of the currently tuned channel (PVR).
+/// @return The group of the currently tuned channel (PVR).
+/// <p>
/// }
/// \table_row3{ <b>`VideoPlayer.ParentalRating`</b>,
/// \anchor VideoPlayer_ParentalRating
/// _string_,
-/// Parental rating of the currently playing programme (PVR).
+/// @return The parental rating of the currently playing programme (PVR).
+/// <p>
+/// }
+/// \table_row3{ <b>`VideoPlayer.DBID`</b>,
+/// \anchor VideoPlayer_DBID
+/// _string_,
+/// @return The database id of the currently playing video
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link VideoPlayer_DBID `VideoPlayer.DBID`\endlink
+/// <p>
/// }
/// \table_end
///
/// -----------------------------------------------------------------------------
-/// @}
const infomap videoplayer[] = {{ "title", VIDEOPLAYER_TITLE },
{ "genre", VIDEOPLAYER_GENRE },
{ "country", VIDEOPLAYER_COUNTRY },
@@ -2110,71 +3044,54 @@ const infomap videoplayer[] = {{ "title", VIDEOPLAYER_TITLE },
{ "canresumelivetv", VIDEOPLAYER_CAN_RESUME_LIVE_TV },
{ "imdbnumber", VIDEOPLAYER_IMDBNUMBER },
{ "episodename", VIDEOPLAYER_EPISODENAME },
- { "dbid", VIDEOPLAYER_DBID }
+ { "dbid", VIDEOPLAYER_DBID }
};
-/// \page modules__General__List_of_gui_access
-/// \section modules__General__List_of_gui_access_RetroPlayer RetroPlayer
-/// @{
+/// \page modules__infolabels_boolean_conditions
+/// \subsection modules__infolabels_boolean_conditions_RetroPlayer RetroPlayer
/// \table_start
/// \table_h3{ Labels, Type, Description }
/// \table_row3{ <b>`RetroPlayer.VideoFilter`</b>,
/// \anchor RetroPlayer_VideoFilter
/// _string_,
-/// Returns the video filter of the currently-playing game.\n
+/// @return The video filter of the currently-playing game.
/// The following values are possible:
-/// - nearest (Nearest neighbor\, i.e. pixelate)
-/// - linear (Bilinear filtering\, i.e. smooth blur)
+/// - nearest (Nearest neighbor\, i.e. pixelate)
+/// - linear (Bilinear filtering\, i.e. smooth blur)
+/// <p><hr>
+/// @skinning_v18 **[New Infolabel]** \link RetroPlayer_VideoFilter `RetroPlayer.VideoFilter`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RetroPlayer.StretchMode`</b>,
/// \anchor RetroPlayer_StretchMode
/// _string_,
-/// Returns the stretch mode of the currently-playing game.\n
+/// @return The stretch mode of the currently-playing game.
/// The following values are possible:
-/// - normal (Show the game normally)
-/// - 4:3 (Stretch to a 4:3 aspect ratio)
-/// - fullscreen (Stretch to the full viewing area)
-/// - original (Shrink to the original resolution)
+/// - normal (Show the game normally)
+/// - 4:3 (Stretch to a 4:3 aspect ratio)
+/// - fullscreen (Stretch to the full viewing area)
+/// - original (Shrink to the original resolution)
+/// <p><hr>
+/// @skinning_v18 **[New Infolabel]** \link RetroPlayer_StretchMode `RetroPlayer.StretchMode`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RetroPlayer.VideoRotation`</b>,
/// \anchor RetroPlayer_VideoRotation
/// _integer_,
-/// Returns the video rotation of the currently-playing game
-/// in degrees counter-clockwise.\n
+/// @return The video rotation of the currently-playing game
+/// in degrees counter-clockwise.
/// The following values are possible:
-/// - 0
-/// - 90 (Shown in the GUI as 270 degrees)
-/// - 180
-/// - 270 (Shown in the GUI as 90 degrees)
-/// }
-/// \table_row3{ <b>`ListItem.Property(Game.VideoFilter)`</b>,
-/// \anchor ListItem_Property_Game_VideoFilter
-/// _string_,
-/// Returns the video filter of the list item representing a
-/// gamewindow control.\n
-/// See \link RetroPlayer_VideoFilter RetroPlayer.VideoFilter \endlink
-/// for the possible values.
-/// }
-/// \table_row3{ <b>`ListItem.Property(Game.StretchMode)`</b>,
-/// \anchor ListItem_Property_Game_StretchMode
-/// _string_,
-/// Returns the stretch mode of the list item representing a
-/// gamewindow control.\n
-/// See \link RetroPlayer_StretchMode RetroPlayer.StretchMode \endlink
-/// for the possible values.
-/// }
-/// \table_row3{ <b>`ListItem.Property(Game.VideoRotation)`</b>,
-/// \anchor ListItem_Property_Game_VideoRotation
-/// _integer_,
-/// Returns the video rotation of the list item representing a
-/// gamewindow control.\n
-/// See \link RetroPlayer_VideoRotation RetroPlayer.VideoRotation \endlink
-/// for the possible values.
+/// - 0
+/// - 90 (Shown in the GUI as 270 degrees)
+/// - 180
+/// - 270 (Shown in the GUI as 90 degrees)
+/// <p><hr>
+/// @skinning_v18 **[New Infolabel]** \link RetroPlayer_VideoRotation `RetroPlayer.VideoRotation`\endlink
+/// <p>
/// }
/// \table_end
///
/// -----------------------------------------------------------------------------
-/// @}
const infomap retroplayer[] =
{
{ "videofilter", RETROPLAYER_VIDEO_FILTER},
@@ -2182,115 +3099,132 @@ const infomap retroplayer[] =
{ "videorotation", RETROPLAYER_VIDEO_ROTATION},
};
-const infomap player_process[] =
-{
- { "videodecoder", PLAYER_PROCESS_VIDEODECODER },
- { "deintmethod", PLAYER_PROCESS_DEINTMETHOD },
- { "pixformat", PLAYER_PROCESS_PIXELFORMAT },
- { "videowidth", PLAYER_PROCESS_VIDEOWIDTH },
- { "videoheight", PLAYER_PROCESS_VIDEOHEIGHT },
- { "videofps", PLAYER_PROCESS_VIDEOFPS },
- { "videodar", PLAYER_PROCESS_VIDEODAR },
- { "videohwdecoder", PLAYER_PROCESS_VIDEOHWDECODER },
- { "audiodecoder", PLAYER_PROCESS_AUDIODECODER },
- { "audiochannels", PLAYER_PROCESS_AUDIOCHANNELS },
- { "audiosamplerate", PLAYER_PROCESS_AUDIOSAMPLERATE },
- { "audiobitspersample", PLAYER_PROCESS_AUDIOBITSPERSAMPLE }
-};
-
-/// \page modules__General__List_of_gui_access
-/// \section modules__General__List_of_gui_access_Container Container
-/// @{
+/// \page modules__infolabels_boolean_conditions
+/// \subsection modules__infolabels_boolean_conditions_Container Container
/// \table_start
/// \table_h3{ Labels, Type, Description }
/// \table_row3{ <b>`Container(id).HasFiles`</b>,
/// \anchor Container_HasFiles
/// _boolean_,
-/// Returns true if the container contains files (or current container if
+/// @return **True** if the container contains files (or current container if
/// id is omitted).
+/// <p>
/// }
/// \table_row3{ <b>`Container(id).HasFolders`</b>,
/// \anchor Container_HasFolders
/// _boolean_,
-/// Returns true if the container contains folders (or current container if
+/// @return **True** if the container contains folders (or current container if
/// id is omitted).
+/// <p>
/// }
/// \table_row3{ <b>`Container(id).IsStacked`</b>,
/// \anchor Container_IsStacked
/// _boolean_,
-/// Returns true if the container is currently in stacked mode (or current
+/// @return **True** if the container is currently in stacked mode (or current
/// container if id is omitted).
+/// <p>
/// }
/// \table_row3{ <b>`Container.FolderPath`</b>,
/// \anchor Container_FolderPath
/// _string_,
-/// Returns complete path of currently displayed folder
+/// @return The complete path of currently displayed folder.
+/// <p>
/// }
/// \table_row3{ <b>`Container.FolderName`</b>,
/// \anchor Container_FolderName
/// _string_,
-/// Returns top most folder in currently displayed folder
+/// @return The top most folder in currently displayed folder.
+/// <p>
/// }
/// \table_row3{ <b>`Container.PluginName`</b>,
/// \anchor Container_PluginName
/// _string_,
-/// Returns the current plugins base folder name
+/// @return The current plugins base folder name.
+/// <p>
+/// }
+/// \table_row3{ <b>`Container.PluginCategory`</b>,
+/// \anchor Container_PluginCategory
+/// _string_,
+/// @return The current plugins category (set by the scripter).
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link Container_PluginCategory `Container.PluginCategory`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Container.Viewmode`</b>,
/// \anchor Container_Viewmode
/// _string_,
-/// Returns the current viewmode (list\, icons etc.)
+/// @return The current viewmode (list\, icons etc).
+/// <p>
/// }
/// \table_row3{ <b>`Container.ViewCount`</b>,
/// \anchor Container_ViewCount
/// _integer_,
-/// Returns the number of available skin view modes for the current container listing
+/// @return The number of available skin view modes for the current container listing.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link Container_ViewCount `Container.ViewCount`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Container(id).Totaltime`</b>,
/// \anchor Container_Totaltime
/// _string_,
-/// Returns the total time of all items in the current container
+/// @return The total time of all items in the current container.
+/// <p>
/// }
/// \table_row3{ <b>`Container(id).TotalWatched`</b>,
/// \anchor Container_TotalWatched
/// _string_,
-/// Returns the number of watched items in the current container
+/// @return The number of watched items in the container.
+/// @param id - [opt] if not supplied the current container will be used.
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link Container_TotalWatched `Container(id).TotalWatched`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Container(id).TotalUnWatched`</b>,
/// \anchor Container_TotalUnWatched
/// _string_,
-/// Returns the number of unwatched items in the current container
+/// @return The number of unwatched items in the container.
+/// @param id - [opt] if not supplied the current container will be used.
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link Container_TotalUnWatched `Container(id).TotalUnWatched`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Container.HasThumb`</b>,
/// \anchor Container_HasThumb
-/// _string_,
-/// Returns true if the current container you are in has a thumb assigned
-/// to it
+/// _boolean_,
+/// @return **True** if the current container you are in has a thumb assigned
+/// to it.
+/// <p>
/// }
/// \table_row3{ <b>`Container.SortMethod`</b>,
/// \anchor Container_SortMethod
-/// _string_,
-/// Returns the current sort method (name\, year\, rating\, etc.)
+/// _boolean_,
+/// @return **True** the current sort method (name\, year\, rating\, etc).
+/// <p>
/// }
/// \table_row3{ <b>`Container.SortOrder`</b>,
/// \anchor Container_SortOrder
/// _string_,
-/// Returns the current sort order (Ascending/Descending)
+/// @return The current sort order (Ascending/Descending).
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link Container_SortOrder `Container.SortOrder`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Container.ShowPlot`</b>,
/// \anchor Container_ShowPlot
/// _string_,
-/// Returns the TV Show plot of the current container and can be used at
-/// season and episode level
+/// @return The TV Show plot of the current container and can be used at
+/// season and episode level.
+/// <p>
/// }
/// \table_row3{ <b>`Container.ShowTitle`</b>,
/// \anchor Container_ShowTitle
/// _string_,
-/// Returns the TV Show title of the current container and can be used at
-/// season and episode level
+/// @return The TV Show title of the current container and can be used at
+/// season and episode level.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link Container_ShowTitle `Container.ShowTitle`\endlink
+/// <p>
/// }
-/// \table_end
-/// @}
const infomap mediacontainer[] = {{ "hasfiles", CONTAINER_HASFILES },
{ "hasfolders", CONTAINER_HASFOLDERS },
{ "isstacked", CONTAINER_STACKED },
@@ -2309,113 +3243,133 @@ const infomap mediacontainer[] = {{ "hasfiles", CONTAINER_HASFILES },
{ "showplot", CONTAINER_SHOWPLOT },
{ "showtitle", CONTAINER_SHOWTITLE }};
-/// \page modules__General__List_of_gui_access
-/// @{
-/// \table_start
+/// \page modules__infolabels_boolean_conditions
/// \table_row3{ <b>`Container(id).OnNext`</b>,
/// \anchor Container_OnNext
/// _boolean_,
-/// Returns true if the container with id (or current container if id is
+/// @return **True** if the container with id (or current container if id is
/// omitted) is moving to the next item. Allows views to be
/// custom-designed (such as 3D coverviews etc.)
+/// <p>
/// }
/// \table_row3{ <b>`Container(id).OnScrollNext`</b>,
/// \anchor Container_OnScrollNext
/// _boolean_,
-/// Returns true if the container with id (or current container if id is
-/// omitted) is scrolling to the next item. Differs from OnNext in that
-/// OnNext triggers on movement even if there is no scroll involved.
+/// @return **True** if the container with id (or current container if id is
+/// omitted) is scrolling to the next item. Differs from \ref Container_OnNext "OnNext" in that
+/// \ref Container_OnNext "OnNext" triggers on movement even if there is no scroll involved.
+/// <p>
/// }
/// \table_row3{ <b>`Container(id).OnPrevious`</b>,
/// \anchor Container_OnPrevious
/// _boolean_,
-/// Returns true if the container with id (or current container if id is
+/// @return **True** if the container with id (or current container if id is
/// omitted) is moving to the previous item. Allows views to be
-/// custom-designed (such as 3D coverviews etc.)
+/// custom-designed (such as 3D coverviews etc).
+/// <p>
/// }
/// \table_row3{ <b>`Container(id).OnScrollPrevious`</b>,
/// \anchor Container_OnScrollPrevious
/// _boolean_,
-/// Returns true if the container with id (or current container if id is
-/// omitted) is scrolling to the previous item. Differs from OnPrevious in
-/// that OnPrevious triggers on movement even if there is no scroll involved.
+/// @return **True** if the container with id (or current container if id is
+/// omitted) is scrolling to the previous item. Differs from \ref Container_OnPrevious "OnPrevious" in
+/// that \ref Container_OnPrevious "OnPrevious" triggers on movement even if there is no scroll involved.
+/// <p>
/// }
/// \table_row3{ <b>`Container(id).NumPages`</b>,
/// \anchor Container_NumPages
-/// _boolean_,
-/// Number of pages in the container with given id. If no id is specified it
+/// _integer_,
+/// @return The number of pages in the container with given id. If no id is specified it
/// grabs the current container.
+/// <p>
/// }
/// \table_row3{ <b>`Container(id).NumItems`</b>,
/// \anchor Container_NumItems
-/// _boolean_,
-/// Number of items in the container or grouplist with given id excluding parent folder item. If no id is
-/// specified it grabs the current container.
+/// _integer_,
+/// @return The number of items in the container or grouplist with given id excluding parent folder item.
+/// @note If no id is specified it grabs the current container.
+/// <p>
/// }
/// \table_row3{ <b>`Container(id).NumAllItems`</b>,
/// \anchor Container_NumAllItems
-/// _boolean_,
-/// Number of all items in the container or grouplist with given id including parent folder item. If no id is
-/// specified it grabs the current container.
+/// _integer_,
+/// @return The number of all items in the container or grouplist with given id including parent folder item.
+/// @note If no id is specified it grabs the current container.
+/// <p><hr>
+/// @skinning_v18 **[New Infolabel]** \link Container_NumAllItems `Container(id).NumAllItems`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Container(id).NumNonFolderItems`</b>,
/// \anchor Container_NumNonFolderItems
-/// _boolean_,
-/// Number of items in the container or grouplist with given id excluding all folder items (example: pvr
-/// recordings folders\, parent ".." folder). If no id is specified it grabs the current container.
+/// _integer_,
+/// @return The Number of items in the container or grouplist with given id excluding all folder items.
+/// @note **Example:** pvr recordings folders\, parent ".." folder).
+/// If no id is specified it grabs the current container.
+/// <p><hr>
+/// @skinning_v18 **[New Infolabel]** \link Container_NumNonFolderItems `Container(id).NumNonFolderItems`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Container(id).CurrentPage`</b>,
/// \anchor Container_CurrentPage
-/// _boolean_,
-/// Current page in the container with given id. If no id is specified it
-/// grabs the current container.
+/// _string_,
+/// @return THe current page in the container with given id.
+/// @note If no id is specified it grabs the current container.
+/// <p>
/// }
/// \table_row3{ <b>`Container(id).Scrolling`</b>,
/// \anchor Container_Scrolling
/// _boolean_,
-/// Returns true if the user is currently scrolling through the container
-/// with id (or current container if id is omitted). Note that this is
-/// slightly delayed from the actual scroll start. Use
-/// Container(id).OnScrollNext/OnScrollPrevious to trigger animations
+/// @return **True** if the user is currently scrolling through the container
+/// with id (or current container if id is omitted).
+/// @note This is slightly delayed from the actual scroll start. Use
+/// \ref Container_OnScrollNext "Container(id).OnScrollNext" or
+/// \ref Container_OnScrollPrevious "Container(id).OnScrollPrevious" to trigger animations
/// immediately on scroll.
+/// <p>
/// }
/// \table_row3{ <b>`Container(id).HasNext`</b>,
/// \anchor Container_HasNext
/// _boolean_,
-/// Returns true if the container or textbox with id (id) has a next page.
+/// @return **True** if the container or textbox with id (id) has a next page.
+/// <p>
/// }
/// \table_row3{ <b>`Container.HasParent`</b>,
/// \anchor Container_HasParent
/// _boolean_,
-/// Return true when the container contains a parent ('..') item.
+/// @return **True** when the container contains a parent ('..') item.
+/// <p><hr>
+/// @skinning_v16 **[New Boolean Condition]** \link Container_HasParent `Container.HasParent`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Container(id).HasPrevious`</b>,
/// \anchor Container_HasPrevious
/// _boolean_,
-/// Returns true if the container or textbox with id (id) has a previous page.
+/// @return **True** if the container or textbox with id (id) has a previous page.
+/// <p>
/// }
/// \table_row3{ <b>`Container.CanFilter`</b>,
/// \anchor Container_CanFilter
/// _boolean_,
-/// Returns true when the current container can be filtered.
+/// @return **True** when the current container can be filtered.
+/// <p>
/// }
/// \table_row3{ <b>`Container.CanFilterAdvanced`</b>,
/// \anchor Container_CanFilterAdvanced
/// _boolean_,
-/// Returns true when advanced filtering can be applied to the current container.
+/// @return **True** when advanced filtering can be applied to the current container.
+/// <p>
/// }
/// \table_row3{ <b>`Container.Filtered`</b>,
/// \anchor Container_Filtered
/// _boolean_,
-/// Returns true when a mediafilter is applied to the current container.
+/// @return **True** when a mediafilter is applied to the current container.
+/// <p>
/// }
/// \table_row3{ <b>`Container(id).IsUpdating`</b>,
/// \anchor Container_IsUpdating
/// _boolean_,
-/// Returns true if the container with dynamic list content is currently updating.
+/// @return **True** if the container with dynamic list content is currently updating.
/// }
-/// \table_end
-/// @}
const infomap container_bools[] ={{ "onnext", CONTAINER_MOVE_NEXT },
{ "onprevious", CONTAINER_MOVE_PREVIOUS },
{ "onscrollnext", CONTAINER_SCROLL_NEXT },
@@ -2434,46 +3388,57 @@ const infomap container_bools[] ={{ "onnext", CONTAINER_MOVE_NEXT },
{ "filtered", CONTAINER_FILTERED },
{ "isupdating", CONTAINER_ISUPDATING }};
-/// \page modules__General__List_of_gui_access
-/// @{
-/// \table_start
+/// \page modules__infolabels_boolean_conditions
/// \table_row3{ <b>`Container(id).Row`</b>,
/// \anchor Container_Row
/// _integer_,
-/// Returns the row number of the focused position in a panel container.
+/// @return The row number of the focused position in a panel container.
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link Container_Row `Container(id).Row`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Container(id).Column`</b>,
/// \anchor Container_Column
/// _integer_,
-/// Returns the column number of the focused position in a panel container.
+/// @return The column number of the focused position in a panel container.
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link Container_Column `Container(id).Column`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Container(id).Position`</b>,
/// \anchor Container_Position
/// _integer_,
-/// Returns the current focused position of container / grouplist (id) as a
+/// @return The current focused position of container / grouplist (id) as a
/// numeric label.
+/// <p><hr>
+/// @skinning_v16 **[Infolabel Updated]** \link Container_Position `Container(id).Position`\endlink
+/// now also returns the position for items inside a grouplist.
+/// <p>
/// }
/// \table_row3{ <b>`Container(id).CurrentItem`</b>,
/// \anchor Container_CurrentItem
/// _integer_,
-/// Current item in the container or grouplist with given id. If no id is
-/// specified it grabs the current container.
+/// @return The current item in the container or grouplist with given id.
+/// @note If no id is specified it grabs the current container.
+/// <p><hr>
+/// @skinning_v15 **[New Infolabel]** \link Container_CurrentItem `Container(id).CurrentItem`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Container(id).SubItem`</b>,
/// \anchor Container_SubItem
/// _integer_,
-/// Sub item in the container or grouplist with given id. If no id is
-/// specified it grabs the current container.
+/// @return Sub-item in the container or grouplist with given id.
+/// @note If no id is specified it grabs the current container.
+/// <p>
/// }
/// \table_row3{ <b>`Container(id).HasFocus(item_number)`</b>,
/// \anchor Container_HasFocus
/// _boolean_,
-/// Returns true if the container with id (or current container if id is
+/// @return **True** if the container with id (or current container if id is
/// omitted) has static content and is focused on the item with id
/// item_number.
+/// <p>
/// }
-/// \table_end
-/// @}
const infomap container_ints[] = {{ "row", CONTAINER_ROW },
{ "column", CONTAINER_COLUMN },
{ "position", CONTAINER_POSITION },
@@ -2481,1323 +3446,2153 @@ const infomap container_ints[] = {{ "row", CONTAINER_ROW },
{ "subitem", CONTAINER_SUBITEM },
{ "hasfocus", CONTAINER_HAS_FOCUS }};
-/// \page modules__General__List_of_gui_access
-/// @{
-/// \table_start
+/// \page modules__infolabels_boolean_conditions
/// \table_row3{ <b>`Container.Property(addoncategory)`</b>,
/// \anchor Container_Property_addoncategory
/// _string_,
-/// Returns the current add-on category
+/// @return The current add-on category.
+/// <p>
/// }
/// \table_row3{ <b>`Container.Property(reponame)`</b>,
/// \anchor Container_Property_reponame
/// _string_,
-/// Returns the current add-on repository name
+/// @return The current add-on repository name.
+/// <p>
/// }
-/// \table_row3{ <b>`Container.Content(parameter)`</b>,
+/// \table_row3{ <b>`Container.Content`</b>,
/// \anchor Container_Content
/// _string_,
-/// Returns true if the current container you are in contains the following:
-/// files\, songs\, artists\, albums\, movies\, tvshows\,
-/// seasons\, episodes\, musicvideos\, genres\, years\,
-/// actors\, playlists\, plugins\, studios\, directors\,
-/// sets\, tags (Note: these currently only work in the Video and Music
+/// @return The content of the current container.
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link Container_Content `Container.Content`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`Container(id).ListItem(offset).Property`</b>,
+/// \anchor Container_ListItem_property
+/// _string_,
+/// @return the property of the ListItem with a given offset.
+/// @param offset - The offset for the listitem.
+/// @note `Property` has to be replaced with `Label`\, `Label2`\, `Icon` etc.
+/// @note **Example:** `Container(50).Listitem(2).Label `
+/// <p>
+/// }
+/// \table_row3{ <b>`Container(id).ListItemNoWrap(offset).Property`</b>,
+/// \anchor Container_ListItemNoWrap
+/// _string_,
+/// @return the same as \link Container_ListItem_property `Container(id).ListItem(offset).Property` \endlink
+/// but it won't wrap.
+/// @param offset - The offset for the listitem.
+/// @note That means if the last item of a list is focused\, `ListItemNoWrap(1)`
+/// will be empty while `ListItem(1)` will return the first item of the list.
+/// `Property` has to be replaced with `Label`\, `Label2`\, `Icon` etc.
+/// @note **Example:** `Container(50).ListitemNoWrap(1).Plot`
+/// <p>
+/// }
+/// \table_row3{ <b>`Container(id).ListItemPosition(x).[infolabel]`</b>,
+/// \anchor Container_ListItemPosition
+/// _string_,
+/// @return The infolabel for an item in a Container.
+/// @param x - the position in the container relative to the cursor position.
+/// @note **Example:** `Container(50).ListItemPosition(4).Genre`
+/// <p>
+/// }
+/// \table_row3{ <b>`Container(id).ListItemAbsolute(x).[infolabel]`</b>,
+/// \anchor Container_ListItemAbsolute
+/// _string_,
+/// @return The infolabel for an item in a Container.
+/// @param x - the absolute position in the container.
+/// @note **Example:** `Container(50).ListItemAbsolute(4).Genre`
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link Container_ListItemAbsolute `Container(id).ListItemAbsolute(x).[infolabel]`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`Container.Content(parameter)`</b>,
+/// \anchor Container_Content_parameter
+/// _string_,
+/// @return **True** if the current container you are in contains the following:
+/// - <b>files</b>
+/// - <b>songs</b>
+/// - <b>artists</b>
+/// - <b>albums</b>
+/// - <b>movies</b>
+/// - <b>tvshows</b>
+/// - <b>seasons</b>
+/// - <b>episodes</b>
+/// - <b>musicvideos</b>
+/// - <b>genres</b>
+/// - <b>years</b>
+/// - <b>actors</b>
+/// - <b>playlists</b>
+/// - <b>plugins</b>
+/// - <b>studios</b>
+/// - <b>directors</b>
+/// - <b>sets</b>
+/// - <b>tags</b>
+/// @note These currently only work in the Video and Music
/// Library or unless a Plugin has set the value) also available are
/// Addons true when a list of add-ons is shown LiveTV true when a
/// htsp (tvheadend) directory is shown
+/// <p>
/// }
/// \table_row3{ <b>`Container.Art(type)`</b>,
/// \anchor Container_Art
/// _string_,
-/// Returns the path to the art image file for the given type of the current container
-/// Todo: list of all art types
+/// @return The path to the art image file for the given type of the current container.
+/// @param type - the art type to request.
+/// @todo List of all art types
+/// <p><hr>
+/// @skinning_v16 **[Infolabel Updated]** \link Container_Art `Container.Art(type)`\endlink
+/// <b>set.fanart</b> as possible type value.
+/// @skinning_v15 **[New Infolabel]** \link Container_Art `Container.Art(type)`\endlink
+/// <p>
/// }
-/// \table_end
///
-/// -----------------------------------------------------------------------------
-/// @}
const infomap container_str[] = {{ "property", CONTAINER_PROPERTY },
{ "content", CONTAINER_CONTENT },
{ "art", CONTAINER_ART }};
-/// \page modules__General__List_of_gui_access
-/// \section modules__General__List_of_gui_access_ListItem ListItem
-/// @{
+/// \page modules__infolabels_boolean_conditions
+/// \table_row3{ <b>`Container.SortDirection(direction)`</b>,
+/// \anchor Container_SortDirection
+/// _boolean_,
+/// @return **True** if the sort direction of a container equals direction.
+/// @param direction - The direction to check. It can be:
+/// - <b>ascending</b>
+/// - <b>descending</b>
+/// <p>
+/// }
+/// \table_end
+///
+/// -----------------------------------------------------------------------------
+
+/// \page modules__infolabels_boolean_conditions
+/// \subsection modules__infolabels_boolean_conditions_ListItem ListItem
/// \table_start
/// \table_h3{ Labels, Type, Description }
/// \table_row3{ <b>`ListItem.Thumb`</b>,
/// \anchor ListItem_Thumb
/// _string_,
-/// Returns the thumbnail (if it exists) of the currently selected item
+/// @return The thumbnail (if it exists) of the currently selected item
/// in a list or thumb control.
/// @deprecated but still available\, returns
-/// the same as `ListItem.Art(thumb)`.\par
+/// the same as \ref ListItem_Art_Type "ListItem.Art(thumb)"
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Icon`</b>,
/// \anchor ListItem_Icon
/// _string_,
-/// Returns the thumbnail (if it exists) of the currently selected item in a list or thumb control. If no thumbnail image exists\, it will show the icon.
+/// @return The thumbnail (if it exists) of the currently selected item in a list or thumb control.
+/// @note If no thumbnail image exists\, it will show the icon.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.ActualIcon`</b>,
/// \anchor ListItem_ActualIcon
/// _string_,
-/// Returns the icon of the currently selected item in a list or thumb control.
+/// @return The icon of the currently selected item in a list or thumb control.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Overlay`</b>,
/// \anchor ListItem_Overlay
/// _string_,
-/// Returns the overlay icon status of the currently selected item in a list or thumb control.
+/// @return The overlay icon status of the currently selected item in a list or thumb control.
/// - compressed file -- OverlayRAR.png
/// - watched -- OverlayWatched.png
/// - unwatched -- OverlayUnwatched.png
/// - locked -- OverlayLocked.png
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.IsFolder`</b>,
/// \anchor ListItem_IsFolder
/// _boolean_,
-/// Returns whether the current ListItem is a folder
+/// @return **True** if the current ListItem is a folder.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.IsPlaying`</b>,
/// \anchor ListItem_IsPlaying
/// _boolean_,
-/// Returns whether the current ListItem.* info labels and images are
-/// currently Playing media
+/// @return **True** if the current ListItem.* info labels and images are
+/// currently Playing media.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.IsResumable`</b>,
/// \anchor ListItem_IsResumable
/// _boolean_,
-/// Returns true when the current ListItem has been partially played
+/// @return **True** when the current ListItem has been partially played.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.IsCollection`</b>,
/// \anchor ListItem_IsCollection
/// _boolean_,
-/// Returns true when the current ListItem is a movie set
+/// @return **True** when the current ListItem is a movie set.
+/// <p><hr>
+/// @skinning_v15 **[New Boolean Condition]** \link ListItem_IsCollection `ListItem.IsCollection`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.IsSelected`</b>,
/// \anchor ListItem_IsSelected
/// _boolean_,
-/// Returns whether the current ListItem is selected (f.e. currently playing
-/// in playlist window)
+/// @return **True** if the current ListItem is selected (f.e. currently playing
+/// in playlist window).
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.HasEpg`</b>,
/// \anchor ListItem_HasEpg
/// _boolean_,
-/// Returns true when the selected programme has epg info (PVR)
+/// @return **True** when the selected programme has epg info (PVR).
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.HasTimer`</b>,
/// \anchor ListItem_HasTimer
/// _boolean_,
-/// Returns true when a recording timer has been set for the selected
-/// programme (PVR)
+/// @return **True** when a recording timer has been set for the selected
+/// programme (PVR).
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.IsRecording`</b>,
/// \anchor ListItem_IsRecording
/// _boolean_,
-/// Returns true when the selected programme is being recorded (PVR)
+/// @return **True** when the selected programme is being recorded (PVR).
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.IsEncrypted`</b>,
/// \anchor ListItem_IsEncrypted
/// _boolean_,
-/// Returns true when the selected programme is encrypted (PVR)
+/// @return **True** when the selected programme is encrypted (PVR).
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.IsStereoscopic`</b>,
/// \anchor ListItem_IsStereoscopic
/// _boolean_,
-/// Returns true when the selected video is a 3D (stereoscopic) video
+/// @return **True** when the selected video is a 3D (stereoscopic) video.
+/// <p><hr>
+/// @skinning_v13 **[New Boolean Condition]** \link ListItem_IsStereoscopic `ListItem.IsStereoscopic`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Property(IsSpecial)`</b>,
/// \anchor ListItem_Property_IsSpecial
/// _boolean_,
-/// Returns whether the current Season/Episode is a Special
+/// @return **True** if the current Season/Episode is a Special.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Property(DateLabel)`</b>,
/// \anchor ListItem_Property_DateLabel
-/// _string_,
-/// Can be used in the rulerlayout of the epggrid control. Will return true
-/// if the item is a date label\, returns false if the item is a time label.
+/// _boolean_,
+/// @return **True** if the item is a date label\, returns false if the item is a time label.
+/// @note Can be used in the rulerlayout of the epggrid control.
+/// <p>
/// }
-/// \table_row3{ <b>`ListItem.Property(Addon.Enabled)`</b>,
-/// \anchor ListItem_Property_AddonEnabled
+/// \table_row3{ <b>`ListItem.Property(Addon.IsEnabled)`</b>,
+/// \anchor ListItem_Property_AddonIsEnabled
/// _boolean_,
-/// Returns true when the selected addon is enabled (for use in the addon
+/// @return **True** when the selected addon is enabled (for use in the addon
/// info dialog only).
+/// <p><hr>
+/// @skinning_v17 **[Boolean Condition Updated]** \link ListItem_Property_AddonIsEnabled `ListItem.Property(Addon.IsEnabled)`\endlink
+/// replaces `ListItem.Property(Addon.Enabled)`.
+/// <p>
/// }
-/// \table_row3{ <b>`ListItem.Property(Addon.Installed)`</b>,
-/// \anchor ListItem_Property_AddonInstalled
+/// \table_row3{ <b>`ListItem.Property(Addon.IsInstalled)`</b>,
+/// \anchor ListItem_Property_AddonIsInstalled
/// _boolean_,
-/// Returns true when the selected addon is installed (for use in the addon
+/// @return **True** when the selected addon is installed (for use in the addon
/// info dialog only).
+/// <p><hr>
+/// @skinning_v17 **[Boolean Condition Updated]** \link ListItem_Property_AddonIsInstalled `ListItem.Property(Addon.IsInstalled)`\endlink
+/// replaces `ListItem.Property(Addon.Installed)`.
+/// <p>
/// }
-/// \table_row3{ <b>`ListItem.Property(Addon.UpdateAvail)`</b>,
-/// \anchor ListItem_Property_AddonUpdateAvail
+/// \table_row3{ <b>`ListItem.Property(Addon.HasUpdate)`</b>,
+/// \anchor ListItem_Property_AddonHasUpdate
/// _boolean_,
-/// Returns true when there's an update available for the selected addon.
+/// @return **True** when there's an update available for the selected addon.
+/// <p><hr>
+/// @skinning_v17 **[Boolean Condition Updated]** \link ListItem_Property_AddonHasUpdate `ListItem.Property(Addon.HasUpdate)`\endlink
+/// replaces `ListItem.Property(Addon.UpdateAvail)`.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Label`</b>,
/// \anchor ListItem_Label
/// _string_,
-/// Returns the left label of the currently selected item in a container
+/// @return The left label of the currently selected item in a container.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Label2`</b>,
/// \anchor ListItem_Label2
/// _string_,
-/// Returns the right label of the currently selected item in a container
+/// @return The right label of the currently selected item in a container.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Title`</b>,
/// \anchor ListItem_Title
/// _string_,
-/// Returns the title of the currently selected song or movie in a container
+/// @return The title of the currently selected song\, movie\, game in a container.
+/// <p><hr>
+/// @skinning_v18 **[Infolabel Updated]** \link ListItem_Title `ListItem.Title`\endlink extended
+/// to support games
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.OriginalTitle`</b>,
/// \anchor ListItem_OriginalTitle
/// _string_,
-/// Returns the original title of the currently selected movie in a container
+/// @return The original title of the currently selected movie in a container.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.SortLetter`</b>,
/// \anchor ListItem_SortLetter
/// _string_,
-/// Returns the first letter of the current file in a container
+/// @return The first letter of the current file in a container.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.TrackNumber`</b>,
/// \anchor ListItem_TrackNumber
/// _string_,
-/// Returns the track number of the currently selected song in a container
+/// @return The track number of the currently selected song in a container.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Artist`</b>,
/// \anchor ListItem_Artist
/// _string_,
-/// Returns the artist of the currently selected song in a container
+/// @return The artist of the currently selected song in a container.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.AlbumArtist`</b>,
/// \anchor ListItem_AlbumArtist
/// _string_,
-/// Returns the artist of the currently selected album in a list
+/// @return The artist of the currently selected album in a list.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Property(Artist_Sortname)`</b>,
/// \anchor ListItem_Property_Artist_Sortname
/// _string_,
-/// Sortname of the currently selected Artist
+/// @return The sortname of the currently selected Artist.
+/// <p><hr>
+/// @skinning_v18 **[New Infolabel]** \link ListItem_Property_Artist_Sortname `ListItem.Property(Artist_Sortname)`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Property(Artist_Type)`</b>,
/// \anchor ListItem_Property_Artist_Type
/// _string_,
-/// Type of the currently selected Artist - person\, group\, orchestra\, choir etc.
+/// @return The type of the currently selected Artist - person\, group\, orchestra\, choir etc.
+/// <p><hr>
+/// @skinning_v18 **[New Infolabel]** \link ListItem_Property_Artist_Type `ListItem.Property(Artist_Type)`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Property(Artist_Gender)`</b>,
/// \anchor ListItem_Property_Artist_Gender
/// _string_,
-/// Gender of the currently selected Artist - male\, female\, other
+/// @return The Gender of the currently selected Artist - male\, female\, other.
+/// <p><hr>
+/// @skinning_v18 **[New Infolabel]** \link ListItem_Property_Artist_Gender `ListItem.Property(Artist_Gender)`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Property(Artist_Disambiguation)`</b>,
/// \anchor ListItem_Property_Artist_Disambiguation
/// _string_,
-/// Brief description of the currently selected Artist that differentiates them
-/// from others with the same name
+/// @return A Brief description of the currently selected Artist that differentiates them
+/// from others with the same name.
+/// <p><hr>
+/// @skinning_v18 **[New Infolabel]** \link ListItem_Property_Artist_Disambiguation `ListItem.Property(Artist_Disambiguation)`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Property(Artist_Born)`</b>,
/// \anchor ListItem_Property_Artist_Born
/// _string_,
-/// Date of Birth of the currently selected Artist
+/// @return The date of Birth of the currently selected Artist.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Property(Artist_Died)`</b>,
/// \anchor ListItem_Property_Artist_Died
/// _string_,
-/// Date of Death of the currently selected Artist
+/// @return The date of Death of the currently selected Artist.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Property(Artist_Formed)`</b>,
/// \anchor ListItem_Property_Artist_Formed
/// _string_,
-/// Formation date of the currently selected Band
+/// @return The formation date of the currently selected Band.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Property(Artist_Disbanded)`</b>,
/// \anchor ListItem_Property_Artist_Disbanded
/// _string_,
-/// Disbanding date of the currently selected Band
+/// @return The disbanding date of the currently selected Band.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Property(Artist_YearsActive)`</b>,
/// \anchor ListItem_Property_Artist_YearsActive
/// _string_,
-/// Years the currently selected artist has been active
+/// @return The years the currently selected artist has been active.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Property(Artist_Instrument)`</b>,
/// \anchor ListItem_Property_Artist_Instrument
/// _string_,
-/// Instruments played by the currently selected artist
+/// @return The instruments played by the currently selected artist.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Property(Artist_Description)`</b>,
/// \anchor ListItem_Property_Artist_Description
/// _string_,
-/// Returns a biography of the currently selected artist
+/// @return A biography of the currently selected artist.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Property(Artist_Mood)`</b>,
/// \anchor ListItem_Property_Artist_Mood
/// _string_,
-/// Returns the moods of the currently selected artist
+/// @return The moods of the currently selected artist.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Property(Artist_Style)`</b>,
/// \anchor ListItem_Property_Artist_Style
/// _string_,
-/// Returns the styles of the currently selected artist
+/// @return The styles of the currently selected artist.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Property(Artist_Genre)`</b>,
/// \anchor ListItem_Property_Artist_Genre
/// _string_,
-/// Returns the genre of the currently selected artist
+/// @return The genre of the currently selected artist.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Album`</b>,
/// \anchor ListItem_Album
/// _string_,
-/// Returns the album of the currently selected song in a container
+/// @return The album of the currently selected song in a container.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Property(Album_Mood)`</b>,
/// \anchor ListItem_Property_Album_Mood
/// _string_,
-/// Returns the moods of the currently selected Album
+/// @return The moods of the currently selected Album.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Property(Album_Style)`</b>,
/// \anchor ListItem_Property_Album_Style
/// _string_,
-/// Returns the styles of the currently selected Album
+/// @return The styles of the currently selected Album.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Property(Album_Theme)`</b>,
/// \anchor ListItem_Property_Album_Theme
/// _string_,
-/// Returns the themes of the currently selected Album
+/// @return The themes of the currently selected Album.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Property(Album_Type)`</b>,
/// \anchor ListItem_Property_Album_Type
/// _string_,
-/// Returns the Album Type (e.g. compilation\, enhanced\, explicit lyrics) of
-/// the currently selected Album
+/// @return The Album Type (e.g. compilation\, enhanced\, explicit lyrics) of
+/// the currently selected Album.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Property(Album_Label)`</b>,
/// \anchor ListItem_Property_Album_Label
/// _string_,
-/// Returns the record label of the currently selected Album
+/// @return The record label of the currently selected Album.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Property(Album_Description)`</b>,
/// \anchor ListItem_Property_Album_Description
/// _string_,
-/// Returns a review of the currently selected Album
+/// @return A review of the currently selected Album.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.DiscNumber`</b>,
/// \anchor ListItem_DiscNumber
/// _string_,
-/// Returns the disc number of the currently selected song in a container
+/// @return The disc number of the currently selected song in a container.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Year`</b>,
/// \anchor ListItem_Year
/// _string_,
-/// Returns the year of the currently selected song\, album or movie in a
-/// container
+/// @return The year of the currently selected song\, album\, movie\, game in a
+/// container.
+/// <p><hr>
+/// @skinning_v18 **[Infolabel Updated]** \link ListItem_Title `ListItem.Title`\endlink extended
+/// to support games
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Premiered`</b>,
/// \anchor ListItem_Premiered
/// _string_,
-/// Returns the release/aired date of the currently selected episode\, show\,
-/// movie or EPG item in a container
+/// @return The release/aired date of the currently selected episode\, show\,
+/// movie or EPG item in a container.
+/// <p><hr>
+/// @skinning_v15 **[Infolabel Updated]** \link ListItem_Premiered `ListItem.Premiered`\endlink
+/// now also available for EPG items.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Genre`</b>,
/// \anchor ListItem_Genre
/// _string_,
-/// Returns the genre of the currently selected song\, album or movie in a
-/// container
+/// @return The genre of the currently selected song\, album or movie in a
+/// container.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Contributors`</b>,
/// \anchor ListItem_Contributors
/// _string_,
-/// List of all people who've contributed to the selected song
+/// @return The list of all people who've contributed to the selected song.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link ListItem_Contributors `ListItem.Contributors`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.ContributorAndRole`</b>,
/// \anchor ListItem_ContributorAndRole
/// _string_,
-/// List of all people and their role who've contributed to the selected song
+/// @return The list of all people and their role who've contributed to the selected song.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link ListItem_ContributorAndRole `ListItem.ContributorAndRole`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Director`</b>,
/// \anchor ListItem_Director
/// _string_,
-/// Returns the director of the currently selected movie in a container
+/// @return The director of the currently selected movie in a container.
+/// <p><hr>
+/// @skinning_v15 **[Infolabel Updated]** \link ListItem_Director `ListItem.Director`\endlink
+/// also supports EPG.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Country`</b>,
/// \anchor ListItem_Country
/// _string_,
-/// Returns the production country of the currently selected movie in a
-/// container
+/// @return The production country of the currently selected movie in a
+/// container.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Episode`</b>,
/// \anchor ListItem_Episode
/// _string_,
-/// Returns the episode number value for the currently selected episode. It
+/// @return The episode number value for the currently selected episode. It
/// also returns the number of total\, watched or unwatched episodes for the
/// currently selected tvshow or season\, based on the the current watched
/// filter.
+/// <p><hr>
+/// @skinning_v15 **[Infolabel Updated]** \link ListItem_Episode `ListItem.Episode`\endlink
+/// also supports EPG.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Season`</b>,
/// \anchor ListItem_Season
/// _string_,
-/// Returns the season value for the currently selected tvshow
+/// @return The season value for the currently selected tvshow.
+/// <p><hr>
+/// @skinning_v15 **[Infolabel Updated]** \link ListItem_Season `ListItem.Season`\endlink
+/// also supports EPG.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.TVShowTitle`</b>,
/// \anchor ListItem_TVShowTitle
/// _string_,
-/// Returns the name value for the currently selected tvshow in the season and
-/// episode depth of the video library
+/// @return The name value for the currently selected tvshow in the season and
+/// episode depth of the video library.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Property(TotalSeasons)`</b>,
/// \anchor ListItem_Property_TotalSeasons
/// _string_,
-/// Returns the total number of seasons for the currently selected tvshow
+/// @return The total number of seasons for the currently selected tvshow.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Property(TotalEpisodes)`</b>,
/// \anchor ListItem_Property_TotalEpisodes
/// _string_,
-/// Returns the total number of episodes for the currently selected tvshow or
-/// season
+/// @return the total number of episodes for the currently selected tvshow or
+/// season.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Property(WatchedEpisodes)`</b>,
/// \anchor ListItem_Property_WatchedEpisodes
/// _string_,
-/// Returns the number of watched episodes for the currently selected tvshow
-/// or season
+/// @return The number of watched episodes for the currently selected tvshow
+/// or season.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Property(UnWatchedEpisodes)`</b>,
/// \anchor ListItem_Property_UnWatchedEpisodes
/// _string_,
-/// Returns the number of unwatched episodes for the currently selected tvshow
-/// or season
+/// @return The number of unwatched episodes for the currently selected tvshow
+/// or season.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Property(NumEpisodes)`</b>,
/// \anchor ListItem_Property_NumEpisodes
/// _string_,
-/// Returns the number of total\, watched or unwatched episodes for the
+/// @return The number of total\, watched or unwatched episodes for the
/// currently selected tvshow or season\, based on the the current watched filter.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureAperture`</b>,
/// \anchor ListItem_PictureAperture
/// _string_,
-/// Returns the F-stop used to take the selected picture. This is the value of the
-/// EXIF FNumber tag (hex code 0x829D).
+/// @return The F-stop used to take the selected picture.
+/// @note This is the value of the EXIF FNumber tag (hex code 0x829D).
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureAuthor`</b>,
/// \anchor ListItem_PictureAuthor
/// _string_,
-/// Returns the name of the person involved in writing about the selected picture.
-/// This is the value of the IPTC Writer tag (hex code 0x7A).
+/// @return The name of the person involved in writing about the selected picture.
+/// @note This is the value of the IPTC Writer tag (hex code 0x7A).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link ListItem_PictureAuthor `ListItem.PictureAuthor`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureByline`</b>,
/// \anchor ListItem_PictureByline
/// _string_,
-/// Returns the name of the person who created the selected picture. This is
-/// the value of the IPTC Byline tag (hex code 0x50).
+/// @return The name of the person who created the selected picture.
+/// @note This is the value of the IPTC Byline tag (hex code 0x50).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link ListItem_PictureByline `ListItem.PictureByline`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureBylineTitle`</b>,
/// \anchor ListItem_PictureBylineTitle
/// _string_,
-/// Returns the title of the person who created the selected picture. This is
-/// the value of the IPTC BylineTitle tag (hex code 0x55).
+/// @return The title of the person who created the selected picture.
+/// @note This is the value of the IPTC BylineTitle tag (hex code 0x55).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link ListItem_PictureBylineTitle `ListItem.PictureBylineTitle`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureCamMake`</b>,
/// \anchor ListItem_PictureCamMake
/// _string_,
-/// Returns the manufacturer of the camera used to take the selected picture.
-/// This is the value of the EXIF Make tag (hex code 0x010F).
+/// @return The manufacturer of the camera used to take the selected picture.
+/// @note This is the value of the EXIF Make tag (hex code 0x010F).
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureCamModel`</b>,
/// \anchor ListItem_PictureCamModel
/// _string_,
-/// Returns the manufacturer's model name or number of the camera used to take
-/// the selected picture. This is the value of the EXIF Model tag (hex code
-/// 0x0110).
+/// @return The manufacturer's model name or number of the camera used to take
+/// the selected picture.
+/// @note This is the value of the EXIF Model tag (hex code 0x0110).
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureCaption`</b>,
/// \anchor ListItem_PictureCaption
/// _string_,
-/// Returns a description of the selected picture. This is the value of the IPTC
-/// Caption tag (hex code 0x78).
+/// @return A description of the selected picture.
+/// @note This is the value of the IPTC Caption tag (hex code 0x78).
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureCategory`</b>,
/// \anchor ListItem_PictureCategory
/// _string_,
-/// Returns the subject of the selected picture as a category code. This is the
-/// value of the IPTC Category tag (hex code 0x0F).
+/// @return The subject of the selected picture as a category code.
+/// @note This is the value of the IPTC Category tag (hex code 0x0F).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link ListItem_PictureCategory `ListItem.PictureCategory`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureCCDWidth`</b>,
/// \anchor ListItem_PictureCCDWidth
/// _string_,
-/// Returns the width of the CCD in the camera used to take the selected
-/// picture. This is calculated from three EXIF tags (0xA002 * 0xA210
-/// / 0xA20e).
+/// @return The width of the CCD in the camera used to take the selected
+/// picture.
+/// @note This is calculated from three EXIF tags (0xA002 * 0xA210 / 0xA20e).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link ListItem_PictureCCDWidth `ListItem.PictureCCDWidth`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureCity`</b>,
/// \anchor ListItem_PictureCity
/// _string_,
-/// Returns the city where the selected picture was taken. This is the value of
-/// the IPTC City tag (hex code 0x5A).
+/// @return The city where the selected picture was taken.
+/// @note This is the value of the IPTC City tag (hex code 0x5A).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link ListItem_PictureCity `ListItem.PictureCity`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureColour`</b>,
/// \anchor ListItem_PictureColour
/// _string_,
-/// Returns whether the selected picture is "Colour" or "Black and White".
+/// @return Whether the selected picture is "Colour" or "Black and White".
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link ListItem_PictureColour `ListItem.PictureColour`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureComment`</b>,
/// \anchor ListItem_PictureComment
/// _string_,
-/// Returns a description of the selected picture. This is the value of the
+/// @return A description of the selected picture.
+/// @note This is the value of the
/// EXIF User Comment tag (hex code 0x9286). This is the same value as
/// \ref Slideshow_SlideComment "Slideshow.SlideComment".
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureCopyrightNotice`</b>,
/// \anchor ListItem_PictureCopyrightNotice
/// _string_,
-/// Returns the copyright notice of the selected picture. This is the value of
-/// the IPTC Copyright tag (hex code 0x74).
+/// @return The copyright notice of the selected picture.
+/// @note This is the value of the IPTC Copyright tag (hex code 0x74).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link ListItem_PictureCopyrightNotice `ListItem.PictureCopyrightNotice`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureCountry`</b>,
/// \anchor ListItem_PictureCountry
/// _string_,
-/// Returns the full name of the country where the selected picture was taken.
-/// This is the value of the IPTC CountryName tag (hex code 0x65).
+/// @return The full name of the country where the selected picture was taken.
+/// @note This is the value of the IPTC CountryName tag (hex code 0x65).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link ListItem_PictureCountry `ListItem.PictureCountry`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureCountryCode`</b>,
/// \anchor ListItem_PictureCountryCode
/// _string_,
-/// Returns the country code of the country where the selected picture was
-/// taken. This is the value of the IPTC CountryCode tag (hex code 0x64).
+/// @return The country code of the country where the selected picture was
+/// taken.
+/// @note This is the value of the IPTC CountryCode tag (hex code 0x64).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link ListItem_PictureCountryCode `ListItem.PictureCountryCode`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureCredit`</b>,
/// \anchor ListItem_PictureCredit
/// _string_,
-/// Returns who provided the selected picture. This is the value of the IPTC
-/// Credit tag (hex code 0x6E).
+/// @return Who provided the selected picture.
+/// @note This is the value of the IPTC Credit tag (hex code 0x6E).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link ListItem_PictureCredit `ListItem.PictureCredit`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureDate`</b>,
/// \anchor ListItem_PictureDate
/// _string_,
-/// Returns the localized date of the selected picture. The short form of the
-/// date is used. The value of the EXIF DateTimeOriginal tag (hex code 0x9003)
+/// @return The localized date of the selected picture. The short form of the
+/// date is used.
+/// @note The value of the EXIF DateTimeOriginal tag (hex code 0x9003)
/// is preferred. If the DateTimeOriginal tag is not found\, the value of
/// DateTimeDigitized (hex code 0x9004) or of DateTime (hex code 0x0132) might
/// be used.
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link ListItem_PictureDate `ListItem.PictureDate`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureDatetime`</b>,
/// \anchor ListItem_PictureDatetime
/// _string_,
-/// Returns the date/timestamp of the selected picture. The localized short form
-/// of the date and time is used. The value of the EXIF DateTimeOriginal tag
-/// (hex code 0x9003) is preferred. If the DateTimeOriginal tag is not found\,
-/// the value of DateTimeDigitized (hex code 0x9004) or of DateTime (hex code
-/// 0x0132) might be used.
+/// @return The date/timestamp of the selected picture. The localized short form
+/// of the date and time is used.
+/// @note The value of the EXIF DateTimeOriginal tag (hex code 0x9003) is preferred.
+/// If the DateTimeOriginal tag is not found\, the value of DateTimeDigitized
+/// (hex code 0x9004) or of DateTime (hex code 0x0132) might be used.
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link ListItem_PictureDatetime `ListItem.PictureDatetime`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureDesc`</b>,
/// \anchor ListItem_PictureDesc
/// _string_,
-/// Returns a short description of the selected picture. The SlideComment\,
-/// EXIFComment\, or Caption values might contain a longer description. This
-/// is the value of the EXIF ImageDescription tag (hex code 0x010E).
+/// @return A short description of the selected picture. The SlideComment\,
+/// EXIFComment\, or Caption values might contain a longer description.
+/// @note This is the value of the EXIF ImageDescription tag (hex code 0x010E).
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureDigitalZoom`</b>,
/// \anchor ListItem_PictureDigitalZoom
/// _string_,
-/// Returns the digital zoom ratio when the selected picture was taken. This
-/// is the value of the EXIF DigitalZoomRatio tag (hex code 0xA404).
+/// @return The digital zoom ratio when the selected picture was taken.
+/// @note This is the value of the EXIF DigitalZoomRatio tag (hex code 0xA404).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link ListItem_PictureDigitalZoom `ListItem.PictureDigitalZoom`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureExpMode`</b>,
/// \anchor ListItem_PictureExpMode
/// _string_,
-/// Returns the exposure mode of the selected picture. The possible values are
-/// "Automatic"\, "Manual"\, and "Auto bracketing". This is the value of the
-/// EXIF ExposureMode tag (hex code 0xA402).
+/// @return The exposure mode of the selected picture.
+/// The possible values are:
+/// - <b>"Automatic"</b>
+/// - <b>"Manual"</b>
+/// - <b>"Auto bracketing"</b>
+/// @note This is the value of the EXIF ExposureMode tag (hex code 0xA402).
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureExposure`</b>,
/// \anchor ListItem_PictureExposure
/// _string_,
-/// Returns the class of the program used by the camera to set exposure when
-/// the selected picture was taken. Values include "Manual"\, "Program
-/// (Auto)"\, "Aperture priority (Semi-Auto)"\, "Shutter priority (semi-auto)"\,
-/// etc. This is the value of the EXIF ExposureProgram tag (hex code 0x8822).
+/// @return The class of the program used by the camera to set exposure when
+/// the selected picture was taken. Values include:
+/// - <b>"Manual"</b>
+/// - <b>"Program (Auto)"</b>
+/// - <b>"Aperture priority (Semi-Auto)"</b>
+/// - <b>"Shutter priority (semi-auto)"</b>
+/// - etc
+/// @note This is the value of the EXIF ExposureProgram tag (hex code 0x8822).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link ListItem_PictureExposure `ListItem.PictureExposure`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureExposureBias`</b>,
/// \anchor ListItem_PictureExposureBias
/// _string_,
-/// Returns the exposure bias of the selected picture. Typically this is a
-/// number between -99.99 and 99.99. This is the value of the EXIF
-/// ExposureBiasValue tag (hex code 0x9204).
+/// @return The exposure bias of the selected picture.
+/// Typically this is a number between -99.99 and 99.99.
+/// @note This is the value of the EXIF ExposureBiasValue tag (hex code 0x9204).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link ListItem_PictureExposureBias `ListItem.PictureExposureBias`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureExpTime`</b>,
/// \anchor ListItem_PictureExpTime
/// _string_,
-/// Returns the exposure time of the selected picture\, in seconds. This is the
-/// value of the EXIF ExposureTime tag (hex code 0x829A). If the ExposureTime
-/// tag is not found\, the ShutterSpeedValue tag (hex code 0x9201) might be
-/// used.
+/// @return The exposure time of the selected picture\, in seconds.
+/// @note This is the value of the EXIF ExposureTime tag (hex code 0x829A).
+/// If the ExposureTime tag is not found\, the ShutterSpeedValue tag (hex code 0x9201)
+/// might be used.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureFlashUsed`</b>,
/// \anchor ListItem_PictureFlashUsed
/// _string_,
-/// Returns the status of flash when the selected picture was taken. The value
+/// @return The status of flash when the selected picture was taken. The value
/// will be either "Yes" or "No"\, and might include additional information.
-/// This is the value of the EXIF Flash tag (hex code 0x9209).
+/// @note This is the value of the EXIF Flash tag (hex code 0x9209).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link ListItem_PictureFlashUsed `ListItem.PictureFlashUsed`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureFocalLen`</b>,
/// \anchor ListItem_PictureFocalLen
/// _string_,
-/// Returns the lens focal length of the selected picture
+/// @return The lens focal length of the selected picture.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureFocusDist`</b>,
/// \anchor ListItem_PictureFocusDist
/// _string_,
-/// Returns the focal length of the lens\, in mm. This is the value of the EXIF
-/// FocalLength tag (hex code 0x920A).
+/// @return The focal length of the lens\, in mm.
+/// @note This is the value of the EXIF FocalLength tag (hex code 0x920A).
/// }
/// \table_row3{ <b>`ListItem.PictureGPSLat`</b>,
/// \anchor ListItem_PictureGPSLat
/// _string_,
-/// Returns the latitude where the selected picture was taken (degrees\,
-/// minutes\, seconds North or South). This is the value of the EXIF
-/// GPSInfo.GPSLatitude and GPSInfo.GPSLatitudeRef tags.
+/// @return The latitude where the selected picture was taken (degrees\,
+/// minutes\, seconds North or South).
+/// @note This is the value of the EXIF GPSInfo.GPSLatitude and GPSInfo.GPSLatitudeRef tags.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureGPSLon`</b>,
/// \anchor ListItem_PictureGPSLon
/// _string_,
-/// Returns the longitude where the selected picture was taken (degrees\,
-/// minutes\, seconds East or West). This is the value of the EXIF
-/// GPSInfo.GPSLongitude and GPSInfo.GPSLongitudeRef tags.
+/// @return The longitude where the selected picture was taken (degrees\,
+/// minutes\, seconds East or West).
+/// @note This is the value of the EXIF GPSInfo.GPSLongitude and GPSInfo.GPSLongitudeRef tags.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureGPSAlt`</b>,
/// \anchor ListItem_PictureGPSAlt
/// _string_,
-/// Returns the altitude in meters where the selected picture was taken. This
-/// is the value of the EXIF GPSInfo.GPSAltitude tag.
+/// @return The altitude in meters where the selected picture was taken.
+/// @note This is the value of the EXIF GPSInfo.GPSAltitude tag.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureHeadline`</b>,
/// \anchor ListItem_PictureHeadline
/// _string_,
-/// Returns a synopsis of the contents of the selected picture. This is the
-/// value of the IPTC Headline tag (hex code 0x69).
+/// @return A synopsis of the contents of the selected picture.
+/// @note This is the value of the IPTC Headline tag (hex code 0x69).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link ListItem_PictureHeadline `ListItem.PictureHeadline`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureImageType`</b>,
/// \anchor ListItem_PictureImageType
/// _string_,
-/// Returns the color components of the selected picture. This is the value of
-/// the IPTC ImageType tag (hex code 0x82).
+/// @return The color components of the selected picture.
+/// @note This is the value of the IPTC ImageType tag (hex code 0x82).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link ListItem_PictureImageType `ListItem.PictureImageType`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureIPTCDate`</b>,
/// \anchor ListItem_PictureIPTCDate
/// _string_,
-/// Returns the date when the intellectual content of the selected picture was
-/// created\, rather than when the picture was created. This is the value of
-/// the IPTC DateCreated tag (hex code 0x37).
+/// @return The date when the intellectual content of the selected picture was
+/// created\, rather than when the picture was created.
+/// @note This is the value of the IPTC DateCreated tag (hex code 0x37).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link ListItem_PictureIPTCDate `ListItem.PictureIPTCDate`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureIPTCTime`</b>,
/// \anchor ListItem_PictureIPTCTime
/// _string_,
-/// Returns the time when the intellectual content of the selected picture was
-/// created\, rather than when the picture was created. This is the value of
-/// the IPTC TimeCreated tag (hex code 0x3C).
+/// @return The time when the intellectual content of the selected picture was
+/// created\, rather than when the picture was created.
+/// @note This is the value of the IPTC TimeCreated tag (hex code 0x3C).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link ListItem_PictureIPTCTime `ListItem.PictureIPTCTime`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureISO`</b>,
/// \anchor ListItem_PictureISO
/// _string_,
-/// Returns the ISO speed of the camera when the selected picture was taken.
-/// This is the value of the EXIF ISOSpeedRatings tag (hex code 0x8827).
+/// @return The ISO speed of the camera when the selected picture was taken.
+/// @note This is the value of the EXIF ISOSpeedRatings tag (hex code 0x8827).
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureKeywords`</b>,
/// \anchor ListItem_PictureKeywords
/// _string_,
-/// Returns keywords assigned to the selected picture. This is the value of
-/// the IPTC Keywords tag (hex code 0x19).
+/// @return The keywords assigned to the selected picture.
+/// @note This is the value of the IPTC Keywords tag (hex code 0x19).
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureLightSource`</b>,
/// \anchor ListItem_PictureLightSource
/// _string_,
-/// Returns the kind of light source when the picture was taken. Possible
-/// values include "Daylight"\, "Fluorescent"\, "Incandescent"\, etc. This is
-/// the value of the EXIF LightSource tag (hex code 0x9208).
+/// @return The kind of light source when the picture was taken. Possible
+/// values include:
+/// - <b>"Daylight"</b>
+/// - <b>"Fluorescent"</b>
+/// - <b>"Incandescent</b>
+/// - etc
+/// @note This is the value of the EXIF LightSource tag (hex code 0x9208).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link ListItem_PictureLightSource `ListItem.PictureLightSource`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureLongDate`</b>,
/// \anchor ListItem_PictureLongDate
/// _string_,
-/// Returns only the localized date of the selected picture. The long form of
-/// the date is used. The value of the EXIF DateTimeOriginal tag (hex code
+/// @return Only the localized date of the selected picture. The long form of
+/// the date is used.
+/// @note The value of the EXIF DateTimeOriginal tag (hex code
/// 0x9003) is preferred. If the DateTimeOriginal tag is not found\, the
/// value of DateTimeDigitized (hex code 0x9004) or of DateTime (hex code
/// 0x0132) might be used.
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link ListItem_PictureLongDate `ListItem.PictureLongDate`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureLongDatetime`</b>,
/// \anchor ListItem_PictureLongDatetime
/// _string_,
-/// Returns the date/timestamp of the selected picture. The localized long
-/// form of the date and time is used. The value of the EXIF DateTimeOriginal
+/// @return The date/timestamp of the selected picture. The localized long
+/// form of the date and time is used.
+/// @note The value of the EXIF DateTimeOriginal
/// tag (hex code 0x9003) is preferred. if the DateTimeOriginal tag is not
/// found\, the value of DateTimeDigitized (hex code 0x9004) or of DateTime
/// (hex code 0x0132) might be used.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureMeteringMode`</b>,
/// \anchor ListItem_PictureMeteringMode
/// _string_,
-/// Returns the metering mode used when the selected picture was taken. The
-/// possible values are "Center weight"\, "Spot"\, or "Matrix". This is the
-/// value of the EXIF MeteringMode tag (hex code 0x9207).
+/// @return The metering mode used when the selected picture was taken. The
+/// possible values are:
+/// - <b>"Center weight"</b>
+/// - <b>"Spot"</b>
+/// - <b>"Matrix"</b>
+/// @note This is the value of the EXIF MeteringMode tag (hex code 0x9207).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link ListItem_PictureMeteringMode `ListItem.PictureMeteringMode`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureObjectName`</b>,
/// \anchor ListItem_PictureObjectName
/// _string_,
-/// Returns a shorthand reference for the selected picture. This is the value
-/// of the IPTC ObjectName tag (hex code 0x05).
+/// @return A shorthand reference for the selected picture.
+/// @note This is the value of the IPTC ObjectName tag (hex code 0x05).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link ListItem_PictureObjectName `ListItem.PictureObjectName`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureOrientation`</b>,
/// \anchor ListItem_PictureOrientation
/// _string_,
-/// Returns the orientation of the selected picture. Possible values are "Top
-/// Left"\, "Top Right"\, "Left Top"\, "Right Bottom"\, etc. This is the value
-/// of the EXIF Orientation tag (hex code 0x0112).
+/// @return The orientation of the selected picture. Possible values are:
+/// - <b>"Top Left"</b>
+/// - <b>"Top Right"</b>
+/// - <b>"Left Top"</b>
+/// - <b>"Right Bottom"</b>
+/// - etc
+/// @note This is the value of the EXIF Orientation tag (hex code 0x0112).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link ListItem_PictureOrientation `ListItem.PictureOrientation`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PicturePath`</b>,
/// \anchor ListItem_PicturePath
/// _string_,
-/// Returns the filename and path of the selected picture
+/// @return The filename and path of the selected picture.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureProcess`</b>,
/// \anchor ListItem_PictureProcess
/// _string_,
-/// Returns the process used to compress the selected picture
+/// @return The process used to compress the selected picture.
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link ListItem_PictureProcess `ListItem.PictureProcess`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureReferenceService`</b>,
/// \anchor ListItem_PictureReferenceService
/// _string_,
-/// Returns the Service Identifier of a prior envelope to which the selected
-/// picture refers. This is the value of the IPTC ReferenceService tag
-/// (hex code 0x2D).
+/// @return The Service Identifier of a prior envelope to which the selected
+/// picture refers.
+/// @note This is the value of the IPTC ReferenceService tag (hex code 0x2D).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link ListItem_PictureReferenceService `ListItem.PictureReferenceService`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureResolution`</b>,
/// \anchor ListItem_PictureResolution
/// _string_,
-/// Returns the dimensions of the selected picture
+/// @return The dimensions of the selected picture.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureSource`</b>,
/// \anchor ListItem_PictureSource
/// _string_,
-/// Returns the original owner of the selected picture. This is the value of
-/// the IPTC Source tag (hex code 0x73).
+/// @return The original owner of the selected picture.
+/// @note This is the value of the IPTC Source tag (hex code 0x73).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link ListItem_PictureSource `ListItem.PictureSource`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureSpecialInstructions`</b>,
/// \anchor ListItem_PictureSpecialInstructions
/// _string_,
-/// Returns other editorial instructions concerning the use of the selected
-/// picture. This is the value of the IPTC SpecialInstructions tag (hex
-/// code 0x28).
+/// @return Other editorial instructions concerning the use of the selected
+/// picture.
+/// @note This is the value of the IPTC SpecialInstructions tag (hex code 0x28).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link ListItem_PictureSpecialInstructions `ListItem.PictureSpecialInstructions`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureState`</b>,
/// \anchor ListItem_PictureState
/// _string_,
-/// Returns the State/Province where the selected picture was taken. This is
-/// the value of the IPTC ProvinceState tag (hex code 0x5F).
+/// @return The State/Province where the selected picture was taken.
+/// @note This is the value of the IPTC ProvinceState tag (hex code 0x5F).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link ListItem_PictureState `ListItem.PictureState`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureSublocation`</b>,
/// \anchor ListItem_PictureSublocation
/// _string_,
-/// Returns the location within a city where the selected picture was taken -
-/// might indicate the nearest landmark. This is the value of the IPTC
-/// SubLocation tag (hex code 0x5C).
+/// @return The location within a city where the selected picture was taken -
+/// might indicate the nearest landmark.
+/// @note This is the value of the IPTC SubLocation tag (hex code 0x5C).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link ListItem_PictureSublocation `ListItem.PictureSublocation`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureSupplementalCategories`</b>,
/// \anchor ListItem_PictureSupplementalCategories
/// _string_,
-/// Returns supplemental category codes to further refine the subject of the
-/// selected picture. This is the value of the IPTC SuppCategory tag (hex
-/// code 0x14).
+/// @return A supplemental category codes to further refine the subject of the
+/// selected picture.
+/// @note This is the value of the IPTC SuppCategory tag (hex code 0x14).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link ListItem_PictureSupplementalCategories `ListItem.PictureSupplementalCategories`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureTransmissionReference`</b>,
/// \anchor ListItem_PictureTransmissionReference
/// _string_,
-/// Returns a code representing the location of original transmission of the
-/// selected picture. This is the value of the IPTC TransmissionReference
-/// tag (hex code 0x67).
+/// @return A code representing the location of original transmission of the
+/// selected picture.
+/// @note This is the value of the IPTC TransmissionReference tag (hex code 0x67).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link ListItem_PictureTransmissionReference `ListItem.PictureTransmissionReference`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureUrgency`</b>,
/// \anchor ListItem_PictureUrgency
/// _string_,
-/// Returns the urgency of the selected picture. Values are 1-9. The "1" is
-/// most urgent. Some image management programs use urgency to indicate
+/// @return The urgency of the selected picture. Values are 1-9.
+/// @note The "1" is most urgent. Some image management programs use urgency to indicate
/// picture rating\, where urgency "1" is 5 stars and urgency "5" is 1 star.
/// Urgencies 6-9 are not used for rating. This is the value of the IPTC
/// Urgency tag (hex code 0x0A).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link ListItem_PictureUrgency `ListItem.PictureUrgency`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PictureWhiteBalance`</b>,
/// \anchor ListItem_PictureWhiteBalance
/// _string_,
-/// Returns the white balance mode set when the selected picture was taken.
-/// The possible values are "Manual" and "Auto". This is the value of the
-/// EXIF WhiteBalance tag (hex code 0xA403).
+/// @return The white balance mode set when the selected picture was taken.
+/// The possible values are:
+/// - <b>"Manual"</b>
+/// - <b>"Auto"</b>
+/// @note This is the value of the EXIF WhiteBalance tag (hex code 0xA403).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link ListItem_PictureWhiteBalance `ListItem.PictureWhiteBalance`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.FileName`</b>,
/// \anchor ListItem_FileName
/// _string_,
-/// Returns the filename of the currently selected song or movie in a container
+/// @return The filename of the currently selected song or movie in a container.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Path`</b>,
/// \anchor ListItem_Path
/// _string_,
-/// Returns the complete path of the currently selected song or movie in a
-/// container
+/// @return The complete path of the currently selected song or movie in a
+/// container.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.FolderName`</b>,
/// \anchor ListItem_FolderName
/// _string_,
-/// Returns top most folder of the path of the currently selected song or
-/// movie in a container
+/// @return The top most folder of the path of the currently selected song or
+/// movie in a container.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.FolderPath`</b>,
/// \anchor ListItem_FolderPath
/// _string_,
-/// Returns the complete path of the currently selected song or movie in a
+/// @return The complete path of the currently selected song or movie in a
/// container (without user details).
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.FileNameAndPath`</b>,
/// \anchor ListItem_FileNameAndPath
/// _string_,
-/// Returns the full path with filename of the currently selected song or
-/// movie in a container
+/// @return The full path with filename of the currently selected song or
+/// movie in a container.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.FileExtension`</b>,
/// \anchor ListItem_FileExtension
/// _string_,
-/// Returns the file extension (without leading dot) of the currently selected
-/// item in a container
+/// @return The file extension (without leading dot) of the currently selected
+/// item in a container.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Date`</b>,
/// \anchor ListItem_Date
/// _string_,
-/// Returns the file date of the currently selected song or movie in a
+/// @return The file date of the currently selected song or movie in a
/// container / Aired date of an episode / Day\, start time and end time of
-/// current selected TV programme (PVR)
+/// current selected TV programme (PVR).
+/// <p>
+/// }
+/// \table_row3{ <b>`ListItem.DateTime`</b>,
+/// \anchor ListItem_DateTime
+/// _string_,
+/// @return The date and time a certain event happened (event log).
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link ListItem_DateTime `ListItem.DateTime`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.DateAdded`</b>,
/// \anchor ListItem_DateAdded
/// _string_,
-/// Returns the date the currently selected item was added to the
+/// @return The date the currently selected item was added to the
/// library / Date and time of an event in the EventLog window.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Size`</b>,
/// \anchor ListItem_Size
/// _string_,
-/// Returns the file size of the currently selected song or movie in a
-/// container
+/// @return The file size of the currently selected song or movie in a
+/// container.
+/// <p>
/// }
-/// \table_row3{ <b>`ListItem.Rating`</b>,
+/// \table_row3{ <b>`ListItem.Rating([name])`</b>,
/// \anchor ListItem_Rating
/// _string_,
-/// Returns the scraped rating of the currently selected movie in a container
+/// @return The scraped rating of the currently selected item in a container (1-10).
+/// @param name - [opt] you can specify the name of the scraper to retrieve a specific rating\,
+/// for use in dialogvideoinfo.xml.
+/// <p><hr>
+/// @skinning_v18 **[Infolabel Updated]** \link ListItem_Rating `ListItem.Rating([name])`\endlink replaces
+/// the old `ListItem.Ratings([name])` infolabel.
+/// @skinning_v17 **[New Infolabel]** \link ListItem_Rating `ListItem.Ratings([name])`\endlink
+/// @skinning_v17 **[Infolabel Updated]** \link ListItem_Rating `ListItem.Ratings`\endlink
+/// for songs it's now the scraped rating.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Set`</b>,
/// \anchor ListItem_Set
/// _string_,
-/// Returns the name of the set the movie is part of
+/// @return The name of the set the movie is part of.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link ListItem_Set `ListItem.Set`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.SetId`</b>,
/// \anchor ListItem_SetId
/// _string_,
-/// Returns the id of the set the movie is part of
+/// @return The id of the set the movie is part of.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link ListItem_SetId `ListItem.SetId`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`ListItem.Status`</b>,
+/// \anchor ListItem_Status
+/// _string_,
+/// @return One of the following status:
+/// - <b>"returning series"</b>
+/// - <b>"in production"</b>
+/// - <b>"planned"</b>
+/// - <b>"cancelled"</b>
+/// - <b>"ended"</b>
+/// <p>
+/// @note For use with tv shows.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link ListItem_Status `ListItem.Status`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`ListItem.EndTimeResume`</b>,
+/// \anchor ListItem_EndTimeResume
+/// _string_,
+/// @return Returns the time a video will end if you resume it\, instead of playing it from the beginning.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link ListItem_EndTimeResume `ListItem.EndTimeResume`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.UserRating`</b>,
/// \anchor ListItem_UserRating
/// _string_,
-/// Returns the user rating of the currently selected item in a container
+/// @return The user rating of the currently selected item in a container (1-10).
+/// <p><hr>
+/// @skinning_v17 **[Infolabel Updated]** \link ListItem_UserRating `ListItem.UserRating`\endlink
+/// now available for albums/songs.
+/// @skinning_v16 **[New Infolabel]** \link ListItem_UserRating `ListItem.UserRating`\endlink
+/// <p>
/// }
-/// \table_row3{ <b>`ListItem.Votes`</b>,
+/// \table_row3{ <b>`ListItem.Votes([name])`</b>,
/// \anchor ListItem_Votes
/// _string_,
-/// Returns the scraped votes of the currently selected movie in a container
+/// @return The scraped votes of the currently selected movie in a container.
+/// @param name - [opt] you can specify the name of the scraper to retrieve specific votes\,
+/// for use in `dialogvideoinfo.xml`.
+/// <p><hr>
+/// @skinning_v17 **[Infolabel Updated]** \link ListItem_Votes `ListItem.Votes([name])`\endlink
+/// add optional param <b>name</b> to specify the scrapper.
+/// @skinning_v13 **[New Infolabel]** \link ListItem_Votes `ListItem.Votes`\endlink
+/// <p>
/// }
-/// \table_row3{ <b>`ListItem.RatingAndVotes`</b>,
+/// \table_row3{ <b>`ListItem.RatingAndVotes([name])`</b>,
/// \anchor ListItem_RatingAndVotes
/// _string_,
-/// Returns the scraped rating and votes of the currently selected movie in a
-/// container
+/// @return The scraped rating and votes of the currently selected movie in a
+/// container (1-10).
+/// @param name - [opt] you can specify the name of the scraper to retrieve specific votes\,
+/// for use in `dialogvideoinfo.xml`.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link ListItem_RatingAndVotes `ListItem.RatingAndVotes([name])`\endlink
+/// @skinning_v17 **[Infolabel Updated]** \link ListItem_RatingAndVotes `ListItem.RatingAndVotes`\endlink
+/// now available for albums/songs.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Mood`</b>,
/// \anchor ListItem_Mood
/// _string_,
-/// Mood of the selected song
+/// @return The mood of the selected song.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link ListItem_Mood `ListItem.Mood`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Mpaa`</b>,
/// \anchor ListItem_Mpaa
/// _string_,
-/// Show the MPAA rating of the currently selected movie in a container
+/// @return The MPAA rating of the currently selected movie in a container.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.ProgramCount`</b>,
/// \anchor ListItem_ProgramCount
/// _string_,
-/// Returns the number of times an xbe has been run from "my programs"
+/// @return The number of times an xbe has been run from "my programs".
+/// @todo description might be outdated
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Duration`</b>,
/// \anchor ListItem_Duration
/// _string_,
-/// Returns the duration of the currently selected item in a container
-/// in the format hh:mm:ss. hh: will be omitted if hours value is zero.
+/// @return The duration of the currently selected item in a container
+/// in the format <b>hh:mm:ss</b>.
+/// @note <b>hh:</b> will be omitted if hours value is zero.
+/// <p><hr>
+/// @skinning_v18 **[Infolabel Updated]** \link ListItem_Duration `ListItem.Duration`\endlink will
+/// return <b>hh:mm:ss</b> instead of the duration in minutes.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Duration(format)`</b>,
-/// \anchor ListItem.Duration_format
+/// \anchor ListItem_Duration_format
/// _string_,
-/// Returns the duration of the currently selected item in a container in
-/// different formats: hours (hh)\, minutes (mm) or seconds (ss).
-/// Also supported: (hh:mm)\, (mm:ss)\, (hh:mm:ss)\, (h:mm:ss).
-/// Added with Leia: (secs)\, (mins)\, (hours) for total time values and (m).
-/// Example: 3661 seconds => h=1\, hh=01\, m=1\, mm=01\, ss=01\, hours=1\, mins=61\, secs=3661
+/// @return The duration of the currently selected item in a container in
+/// different formats.
+/// @param format [opt] The format of the return time value.
+/// See \ref TIME_FORMAT for the list of possible values.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.DBTYPE`</b>,
/// \anchor ListItem_DBTYPE
/// _string_,
-/// Returns the database type of the ListItem.DBID for videos (movie\, set\,
+/// @return The database type of the \ref ListItem_DBID "ListItem.DBID" for videos (movie\, set\,
/// genre\, actor\, tvshow\, season\, episode). It does not return any value
-/// for the music library. Beware with season\, the "*all seasons" entry does
+/// for the music library.
+/// @note Beware with season\, the "*all seasons" entry does
/// give a DBTYPE "season" and a DBID\, but you can't get the details of that
/// entry since it's a virtual entry in the Video Library.
+/// <p><hr>
+/// @skinning_v17 **[Infolabel Updated]** \link ListItem_DBTYPE `ListItem.DBTYPE`\endlink
+/// now available in the music library.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.DBID`</b>,
/// \anchor ListItem_DBID
/// _string_,
-/// Returns the database id of the currently selected listitem in a container
+/// @return The database id of the currently selected listitem in a container.
+/// <p>
+/// }
+/// \table_row3{ <b>`ListItem.Appearances`</b>,
+/// \anchor ListItem_Appearances
+/// _string_,
+/// @return The number of movies featuring the selected actor / directed by the selected director.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link ListItem_Appearances `ListItem.Appearances`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Cast`</b>,
/// \anchor ListItem_Cast
/// _string_,
-/// Returns a concatenated string of cast members of the currently selected
-/// movie\, for use in dialogvideoinfo.xml
+/// @return A concatenated string of cast members of the currently selected
+/// movie\, for use in dialogvideoinfo.xml.
+/// <p><hr>
+/// @skinning_v15 **[Infolabel Updated]** \link ListItem_Cast `ListItem.Cast`\endlink
+/// also supports EPG.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.CastAndRole`</b>,
/// \anchor ListItem_CastAndRole
/// _string_,
-/// Returns a concatenated string of cast members and roles of the currently
-/// selected movie\, for use in dialogvideoinfo.xml
+/// @return A concatenated string of cast members and roles of the currently
+/// selected movie\, for use in dialogvideoinfo.xml.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Studio`</b>,
/// \anchor ListItem_Studio
/// _string_,
-/// Studio of current selected Music Video in a container
+/// @return The studio of current selected Music Video in a container.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Top250`</b>,
/// \anchor ListItem_Top250
/// _string_,
-/// Returns the IMDb top250 position of the currently selected listitem in a
+/// @return The IMDb top250 position of the currently selected listitem in a
/// container.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Trailer`</b>,
/// \anchor ListItem_Trailer
/// _string_,
-/// Returns the full trailer path with filename of the currently selected
-/// movie in a container
+/// @return The full trailer path with filename of the currently selected
+/// movie in a container.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Writer`</b>,
/// \anchor ListItem_Writer
/// _string_,
-/// Name of Writer of current Video in a container
+/// @return The name of Writer of current Video in a container.
+/// <p><hr>
+/// @skinning_v15 **[Infolabel Updated]** \link ListItem_Writer `ListItem.Writer`\endlink
+/// also supports EPG.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Tag`</b>,
/// \anchor ListItem_Tag
/// _string_,
-/// Summary of current Video in a container
+/// @return The summary of current Video in a container.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link ListItem_Tag `ListItem.Tag`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Tagline`</b>,
/// \anchor ListItem_Tagline
/// _string_,
-/// Small Summary of current Video in a container
+/// @return A Small Summary of current Video in a container.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PlotOutline`</b>,
/// \anchor ListItem_PlotOutline
/// _string_,
-/// Small Summary of current Video in a container
+/// @return A small Summary of current Video in a container.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Plot`</b>,
/// \anchor ListItem_Plot
/// _string_,
-/// Complete Text Summary of Video in a container
+/// @return The complete Text Summary of Video in a container.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.IMDBNumber`</b>,
/// \anchor ListItem_IMDBNumber
/// _string_,
-/// The IMDb ID of the selected Video in a container
+/// @return The IMDb ID of the selected Video in a container.
+/// <p><hr>
+/// @skinning_v15 **[New Infolabel]** \link ListItem_IMDBNumber `ListItem.IMDBNumber`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.EpisodeName`</b>,
/// \anchor ListItem_EpisodeName
/// _string_,
-/// (PVR only) The name of the episode if the selected EPG item is a TV Show
+/// @return The name of the episode if the selected EPG item is a TV Show (PVR).
+/// <p><hr>
+/// @skinning_v15 **[New Infolabel]** \link ListItem_EpisodeName `ListItem.EpisodeName`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PercentPlayed`</b>,
/// \anchor ListItem_PercentPlayed
/// _string_,
-/// Returns percentage value [0-100] of how far the selected video has been
-/// played
+/// @return The percentage value [0-100] of how far the selected video has been
+/// played.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.LastPlayed`</b>,
/// \anchor ListItem_LastPlayed
/// _string_,
-/// Last play date of Video in a container
+/// @return The last play date of Video in a container.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.PlayCount`</b>,
/// \anchor ListItem_PlayCount
/// _string_,
-/// Playcount of Video in a container
+/// @return The playcount of Video in a container.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.ChannelName`</b>,
/// \anchor ListItem_ChannelName
/// _string_,
-/// Name of current selected TV channel in a container
+/// @return The name of current selected TV channel in a container.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.VideoCodec`</b>,
/// \anchor ListItem_VideoCodec
/// _string_,
-/// Returns the video codec of the currently selected video (common values:
-/// 3iv2\, avc1\, div2\, div3\, divx\, divx 4\, dx50\, flv\, h264\, microsoft\, mp42\,
-/// mp43\, mp4v\, mpeg1video\, mpeg2video\, mpg4\, rv40\, svq1\, svq3\,
-/// theora\, vp6f\, wmv2\, wmv3\, wvc1\, xvid)
+/// @return The video codec of the currently selected video. Common values:
+/// - <b>3iv2</b>
+/// - <b>avc1</b>
+/// - <b>div2</b>
+/// - <b>div3</b>
+/// - <b>divx</b>
+/// - <b>divx 4</b>
+/// - <b>dx50</b>
+/// - <b>flv</b>
+/// - <b>h264</b>
+/// - <b>microsoft</b>
+/// - <b>mp42</b>
+/// - <b>mp43</b>
+/// - <b>mp4v</b>
+/// - <b>mpeg1video</b>
+/// - <b>mpeg2video</b>
+/// - <b>mpg4</b>
+/// - <b>rv40</b>
+/// - <b>svq1</b>
+/// - <b>svq3</b>
+/// - <b>theora</b>
+/// - <b>vp6f</b>
+/// - <b>wmv2</b>
+/// - <b>wmv3</b>
+/// - <b>wvc1</b>
+/// - <b>xvid</b>
+/// - etc
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.VideoResolution`</b>,
/// \anchor ListItem_VideoResolution
/// _string_,
-/// Returns the resolution of the currently selected video (possible values:
-/// 480\, 576\, 540\, 720\, 1080\, 4K). Note that 540 usually means a widescreen
+/// @return The resolution of the currently selected video. Possible values:
+/// - <b>480</b>
+/// - <b>576</b>
+/// - <b>540</b>
+/// - <b>720</b>
+/// - <b>1080</b>
+/// - <b>4K</b>
+/// - <b>8K</b>
+/// @note 540 usually means a widescreen
/// format (around 960x540) while 576 means PAL resolutions (normally
/// 720x576)\, therefore 540 is actually better resolution than 576.
+/// <p><hr>
+/// @skinning_v18 **[Updated Infolabel]** \link ListItem_VideoResolution ListItem.VideoResolution\endlink
+/// added <b>8K</b> as a possible value.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.VideoAspect`</b>,
/// \anchor ListItem_VideoAspect
/// _string_,
-/// Returns the aspect ratio of the currently selected video (possible values:
-/// 1.33\, 1.37\, 1.66\, 1.78\, 1.85\, 2.20\, 2.35\, 2.40\, 2.55\, 2.76)
+/// @return The aspect ratio of the currently selected video. Possible values:
+/// - <b>1.33</b>
+/// - <b>1.37</b>
+/// - <b>1.66</b>
+/// - <b>1.78</b>
+/// - <b>1.85</b>
+/// - <b>2.20</b>
+/// - <b>2.35</b>
+/// - <b>2.40</b>
+/// - <b>2.55</b>
+/// - <b>2.76</b>
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.AudioCodec`</b>,
/// \anchor ListItem_AudioCodec
/// _string_,
-/// Returns the audio codec of the currently selected video (common values:
-/// aac\, ac3\, cook\, dca\, dtshd_hra\, dtshd_ma\, eac3\, mp1\, mp2\, mp3\, pcm_s16be\, pcm_s16le\, pcm_u8\, truehd\, vorbis\, wmapro\, wmav2)
+/// @return The audio codec of the currently selected video. Common values:
+/// - <b>aac</b>
+/// - <b>ac3</b>
+/// - <b>cook</b>
+/// - <b>dca</b>
+/// - <b>dtshd_hra</b>
+/// - <b>dtshd_ma</b>
+/// - <b>eac3</b>
+/// - <b>mp1</b>
+/// - <b>mp2</b>
+/// - <b>mp3</b>
+/// - <b>pcm_s16be</b>
+/// - <b>pcm_s16le</b>
+/// - <b>pcm_u8</b>
+/// - <b>truehd</b>
+/// - <b>vorbis</b>
+/// - <b>wmapro</b>
+/// - <b>wmav2</b>
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.AudioChannels`</b>,
/// \anchor ListItem_AudioChannels
/// _string_,
-/// Returns the number of audio channels of the currently selected video
-/// (possible values: 1\, 2\, 4\, 5\, 6\, 8\, 10)
+/// @return The number of audio channels of the currently selected video. Possible values:
+/// - <b>1</b>
+/// - <b>2</b>
+/// - <b>4</b>
+/// - <b>5</b>
+/// - <b>6</b>
+/// - <b>8</b>
+/// - <b>10</b>
+/// <p><hr>
+/// @skinning_v16 **[Infolabel Updated]** \link ListItem_AudioChannels `ListItem.AudioChannels`\endlink
+/// if a video contains no audio\, these infolabels will now return empty.
+/// (they used to return 0)
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.AudioLanguage`</b>,
/// \anchor ListItem_AudioLanguage
/// _string_,
-/// Returns the audio language of the currently selected video (returns an
-/// ISO 639-2 three character code\, e.g. eng\, epo\, deu)
+/// @return The audio language of the currently selected video (an
+/// ISO 639-2 three character code: e.g. eng\, epo\, deu)
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.SubtitleLanguage`</b>,
/// \anchor ListItem_SubtitleLanguage
/// _string_,
-/// Returns the subtitle language of the currently selected video (returns an
-/// ISO 639-2 three character code\, e.g. eng\, epo\, deu)
+/// @return The subtitle language of the currently selected video (an
+/// ISO 639-2 three character code: e.g. eng\, epo\, deu)
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Property(AudioCodec.[n])`</b>,
/// \anchor ListItem_Property_AudioCodec
/// _string_,
-/// Returns the audio codec of the currently selected video\, 'n' defines the
-/// number of the audiostream (values: see \ref ListItem_AudioCodec "ListItem.AudioCodec")
+/// @return The audio codec of the currently selected video
+/// @param n - the number of the audiostream (values: see \ref ListItem_AudioCodec "ListItem.AudioCodec")
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link ListItem_Property_AudioCodec `ListItem.Property(AudioCodec.[n])`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Property(AudioChannels.[n])`</b>,
/// \anchor ListItem_Property_AudioChannels
/// _string_,
-/// Returns the number of audio channels of the currently selected video\, 'n'
-/// defines the number of the audiostream (values: see
+/// @return The number of audio channels of the currently selected video
+/// @param n - the number of the audiostream (values: see
/// \ref ListItem_AudioChannels "ListItem.AudioChannels")
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link ListItem_Property_AudioChannels `ListItem.Property(AudioChannels.[n])`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Property(AudioLanguage.[n])`</b>,
/// \anchor ListItem_Property_AudioLanguage
/// _string_,
-/// Returns the audio language of the currently selected video\, 'n' defines
-/// the number of the audiostream (values: see \ref ListItem_AudioLanguage "ListItem.AudioLanguage")
+/// @return The audio language of the currently selected video
+/// @param n - the number of the audiostream (values: see \ref ListItem_AudioLanguage "ListItem.AudioLanguage")
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link ListItem_Property_AudioLanguage `ListItem.Property(AudioLanguage.[n])`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Property(SubtitleLanguage.[n])`</b>,
/// \anchor ListItem_Property_SubtitleLanguage
/// _string_,
-/// Returns the subtitle language of the currently selected video\, 'n' defines
-/// the number of the subtitle (values: see \ref ListItem_SubtitleLanguage "ListItem.SubtitleLanguage")
-/// }
-/// \table_row3{ <b>`ListItem.Property(Addon.Name)`</b>,
-/// \anchor ListItem_Property_AddonName
-/// _string_,
-/// Returns the name of the currently selected addon
-/// }
-/// \table_row3{ <b>`ListItem.Property(Addon.Version)`</b>,
-/// \anchor ListItem_Property_AddonVersion
-/// _string_,
-/// Returns the version of the currently selected addon
-/// }
-/// \table_row3{ <b>`ListItem.Property(Addon.Summary)`</b>,
-/// \anchor ListItem_Property_AddonSummary
-/// _string_,
-/// Returns a short description of the currently selected addon
-/// }
-/// \table_row3{ <b>`ListItem.Property(Addon.Description)`</b>,
-/// \anchor ListItem_Property_AddonDescription
-/// _string_,
-/// Returns the full description of the currently selected addon
-/// }
-/// \table_row3{ <b>`ListItem.Property(Addon.Type)`</b>,
-/// \anchor ListItem_Property_AddonType
-/// _string_,
-/// Returns the type (screensaver\, script\, skin\, etc...) of the currently
-/// selected addon
-/// }
-/// \table_row3{ <b>`ListItem.Property(Addon.Creator)`</b>,
-/// \anchor ListItem_Property_AddonCreator
-/// _string_,
-/// Returns the name of the author the currently selected addon
+/// @return The subtitle language of the currently selected video
+/// @param n - the number of the subtitle (values: see \ref ListItem_SubtitleLanguage "ListItem.SubtitleLanguage")
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link ListItem_Property_SubtitleLanguage `ListItem.Property(SubtitleLanguage.[n])`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Property(Addon.Disclaimer)`</b>,
/// \anchor ListItem_Property_AddonDisclaimer
/// _string_,
-/// Returns the disclaimer of the currently selected addon
+/// @return The disclaimer of the currently selected addon.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Property(Addon.Changelog)`</b>,
/// \anchor ListItem_Property_AddonChangelog
/// _string_,
-/// Returns the changelog of the currently selected addon
+/// @return The changelog of the currently selected addon.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Property(Addon.ID)`</b>,
/// \anchor ListItem_Property_AddonID
/// _string_,
-/// Returns the identifier of the currently selected addon
+/// @return The identifier of the currently selected addon.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Property(Addon.Status)`</b>,
/// \anchor ListItem_Property_AddonStatus
/// _string_,
-/// Returns the status of the currently selected addon
+/// @return The status of the currently selected addon.
+/// @todo missing reference in GuiInfoManager.cpp making it hard to track.
+/// <p>
/// }
-/// \table_row3{ <b>`ListItem.Property(Addon.Broken)`</b>,
-/// \anchor ListItem_Property_AddonBroken
-/// _string_,
-/// Returns a message when the addon is marked as broken in the repo
+/// \table_row3{ <b>`ListItem.Property(Addon.Orphaned)`</b>,
+/// \anchor ListItem_Property_AddonOrphaned
+/// _boolean_,
+/// @return **True** if the Addon is orphanad.
+/// @todo missing reference in GuiInfoManager.cpp making it hard to track.
+/// <p><hr>
+/// @skinning_v17 **[New Boolean Condition]** \link ListItem_Property_AddonOrphaned `ListItem.Property(Addon.Orphaned)`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Property(Addon.Path)`</b>,
/// \anchor ListItem_Property_AddonPath
/// _string_,
-/// Returns the path of the currently selected addon
+/// @return The path of the currently selected addon.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.StartTime`</b>,
/// \anchor ListItem_StartTime
/// _string_,
-/// Start time of current selected TV programme in a container
+/// @return The start time of current selected TV programme in a container.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.EndTime`</b>,
/// \anchor ListItem_EndTime
/// _string_,
-/// End time of current selected TV programme in a container
+/// @return The end time of current selected TV programme in a container.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.StartDate`</b>,
/// \anchor ListItem_StartDate
/// _string_,
-/// Start date of current selected TV programme in a container
+/// @return The start date of current selected TV programme in a container.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.EndDate`</b>,
/// \anchor ListItem_EndDate
/// _string_,
-/// End date of current selected TV programme in a container
+/// @return The end date of current selected TV programme in a container.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.NextTitle`</b>,
/// \anchor ListItem_NextTitle
/// _string_,
-/// Title of the next item (PVR).
+/// @return The title of the next item (PVR).
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.NextGenre`</b>,
/// \anchor ListItem_NextGenre
/// _string_,
-/// Genre of the next item (PVR).
+/// @return The genre of the next item (PVR).
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.NextPlot`</b>,
/// \anchor ListItem_NextPlot
/// _string_,
-/// Plot of the next item (PVR).
+/// @return The plot of the next item (PVR).
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.NextPlotOutline`</b>,
/// \anchor ListItem_NextPlotOutline
/// _string_,
-/// Plot outline of the next item (PVR).
+/// @return The plot outline of the next item (PVR).
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.NextStartTime`</b>,
/// \anchor ListItem_NextStartTime
/// _string_,
-/// Start time of the next item (PVR).
+/// @return The start time of the next item (PVR).
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.NextEndTime`</b>,
/// \anchor ListItem_NextEndTime
/// _string_,
-/// End of the next item (PVR).
+/// @return The end of the next item (PVR).
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.NextStartDate`</b>,
/// \anchor ListItem_NextStartDate
/// _string_,
-/// Start date of the next item (PVR).
+/// @return The start date of the next item (PVR).
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.NextEndDate`</b>,
/// \anchor ListItem_NextEndDate
/// _string_,
-/// End date of the next item (PVR).
+/// @return The end date of the next item (PVR).
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.ChannelGroup`</b>,
/// \anchor ListItem_ChannelGroup
/// _string_,
-/// Channel group of the selected item (PVR).
+/// @return The channel group of the selected item (PVR).
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.ChannelNumberLabel`</b>,
/// \anchor ListItem_ChannelNumberLabel
/// _string_,
-/// Channel and subchannel number of the currently selected channel that's
+/// @return The channel and subchannel number of the currently selected channel that's
/// currently playing (PVR).
+/// <p><hr>
+/// @skinning_v14 **[New Infolabel]** \link ListItem_ChannelNumberLabel `ListItem.ChannelNumberLabel`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Progress`</b>,
/// \anchor ListItem_Progress
/// _string_,
-/// Part of the programme that's been played (PVR).
+/// @return The part of the programme that's been played (PVR).
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.StereoscopicMode`</b>,
/// \anchor ListItem_StereoscopicMode
/// _string_,
-/// Returns the stereomode of the selected video (i.e. mono\,
-/// split_vertical\, split_horizontal\, row_interleaved\,
-/// anaglyph_cyan_red\, anaglyph_green_magenta)
+/// @return The stereomode of the selected video:
+/// - <b>mono</b>
+/// - <b>split_vertical</b>
+/// - <b>split_horizontal</b>
+/// - <b>row_interleaved</b>
+/// - <b>anaglyph_cyan_red</b>
+/// - <b>anaglyph_green_magenta</b>
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link ListItem_StereoscopicMode `ListItem.StereoscopicMode`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.HasTimerSchedule`</b>,
/// \anchor ListItem_HasTimerSchedule
/// _boolean_,
-/// Whether the item was scheduled by a timer rule (PVR). (v16 addition)
+/// @return **True** if the item was scheduled by a timer rule (PVR).
+/// <p><hr>
+/// @skinning_v16 **[New Boolean Condition]** \ref ListItem_HasTimerSchedule "ListItem.HasTimerSchedule"
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.HasRecording`</b>,
/// \anchor ListItem_HasRecording
/// _boolean_,
-/// Returns true if a given epg tag item currently gets recorded or has been recorded
+/// @return **True** if a given epg tag item currently gets recorded or has been recorded.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.TimerHasError`</b>,
/// \anchor ListItem_TimerHasError
/// _boolean_,
-/// Whether the item has a timer and it won't be recorded because of an error (PVR). (v17 addition)
+/// @return **True** if the item has a timer and it won't be recorded because of an error (PVR).
+/// <p><hr>
+/// @skinning_v17 **[New Boolean Condition]** \ref ListItem_TimerHasError "ListItem.TimerHasError"
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.TimerHasConflict`</b>,
/// \anchor ListItem_TimerHasConflict
/// _boolean_,
-/// Whether the item has a timer and it won't be recorded because of a conflict (PVR). (v17 addition)
+/// @return **True** if the item has a timer and it won't be recorded because of a conflict (PVR).
+/// <p><hr>
+/// @skinning_v17 **[New Boolean Condition]** \ref ListItem_TimerHasConflict "ListItem.TimerHasConflict"
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.TimerIsActive`</b>,
/// \anchor ListItem_TimerIsActive
/// _boolean_,
-/// Whether the item has a timer that will be recorded\, i.e. the timer is enabled (PVR). (v17 addition)
+/// @return **True** if the item has a timer that will be recorded\, i.e. the timer is enabled (PVR).
+/// <p><hr>
+/// @skinning_v17 **[New Boolean Condition]** \ref ListItem_TimerIsActive "ListItem.TimerIsActive"
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Comment`</b>,
/// \anchor ListItem_Comment
/// _string_,
-/// Comment assigned to the item (PVR/MUSIC).
+/// @return The comment assigned to the item (PVR/MUSIC).
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.TimerType`</b>,
/// \anchor ListItem_TimerType
/// _string_,
-/// Returns the type of the PVR timer / timer rule item as a human readable string
+/// @return The type of the PVR timer / timer rule item as a human readable string.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.EpgEventTitle`</b>,
/// \anchor ListItem_EpgEventTitle
/// _string_,
-/// Returns the title of the epg event associated with the item\, if any
+/// @return The title of the epg event associated with the item\, if any.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.EpgEventIcon`</b>,
/// \anchor ListItem_EpgEventIcon
/// _string_,
-/// Returns the thumbnail for the epg event associated with the item (if it exists)
+/// @return The thumbnail for the EPG event associated with the item (if it exists).
+/// <p><hr>
+/// @skinning_v18 **[New Infolabel]** \link ListItem_EpgEventIcon `ListItem.EpgEventIcon`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.InProgress`</b>,
/// \anchor ListItem_InProgress
/// _boolean_,
-/// Returns true if the epg event item is currently active (time-wise)
+/// @return **True** if the EPG event item is currently active (time-wise).
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.IsParentFolder`</b>,
/// \anchor ListItem_IsParentFolder
/// _boolean_,
-/// Returns true if the current list item is the goto parent folder '..'
+/// @return **True** if the current list item is the goto parent folder '..'.
+/// <p><hr>
+/// @skinning_v17 **[New Boolean Condition]** \link ListItem_IsParentFolder `ListItem.IsParentFolder`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.AddonName`</b>,
/// \anchor ListItem_AddonName
/// _string_,
-/// Returns the name of the currently selected addon
+/// @return The name of the currently selected addon.
+/// <p><hr>
+/// @skinning_v17 **[Infolabel Updated]** \link ListItem_AddonName `ListItem.AddonName`\endlink
+/// replaces `ListItem.Property(Addon.Name)`.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.AddonVersion`</b>,
/// \anchor ListItem_AddonVersion
/// _string_,
-/// Returns the version of the currently selected addon
+/// @return The version of the currently selected addon.
+/// <p><hr>
+/// @skinning_v17 **[Infolabel Updated]** \link ListItem_AddonVersion `ListItem.AddonVersion`\endlink
+/// replaces `ListItem.Property(Addon.Version)`.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.AddonCreator`</b>,
/// \anchor ListItem_AddonCreator
/// _string_,
-/// Returns the name of the author the currently selected addon
+/// @return The name of the author the currently selected addon.
+/// <p><hr>
+/// @skinning_v17 **[Infolabel Updated]** \link ListItem_AddonCreator `ListItem.AddonCreator`\endlink
+/// replaces `ListItem.Property(Addon.Creator)`.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.AddonSummary`</b>,
/// \anchor ListItem_AddonSummary
/// _string_,
-/// Returns a short description of the currently selected addon
+/// @return A short description of the currently selected addon.
+/// <p><hr>
+/// @skinning_v17 **[Infolabel Updated]** \link ListItem_AddonSummary `ListItem.AddonSummary`\endlink
+/// replaces `ListItem.Property(Addon.Summary)`.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.AddonDescription`</b>,
/// \anchor ListItem_AddonDescription
/// _string_,
-/// Returns the full description of the currently selected addon
+/// @return The full description of the currently selected addon.
+/// <p><hr>
+/// @skinning_v17 **[Infolabel Updated]** \link ListItem_AddonDescription `ListItem.AddonDescription`\endlink
+/// replaces `ListItem.Property(Addon.Description)`.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.AddonDisclaimer`</b>,
/// \anchor ListItem_AddonDisclaimer
/// _string_,
-/// Returns the disclaimer of the currently selected addon
+/// @return The disclaimer of the currently selected addon.
+/// <p><hr>
+/// @skinning_v17 **[Infolabel Updated]** \link ListItem_AddonDisclaimer `ListItem.AddonDisclaimer`\endlink
+/// replaces `ListItem.Property(Addon.Disclaimer)`.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.AddonBroken`</b>,
/// \anchor ListItem_AddonBroken
/// _string_,
-/// Returns a message when the addon is marked as broken in the repo
+/// @return A message when the addon is marked as broken in the repo.
+/// <p><hr>
+/// @skinning_v17 **[Infolabel Updated]** \link ListItem_AddonBroken `ListItem.AddonBroken`\endlink
+/// replaces `ListItem.Property(Addon.Broken)`.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.AddonType`</b>,
/// \anchor ListItem_AddonType
/// _string_,
-/// Returns the type (screensaver\, script\, skin\, etc...) of the currently selected addon
+/// @return The type (screensaver\, script\, skin\, etc...) of the currently selected addon.
+/// <p><hr>
+/// @skinning_v17 **[Infolabel Updated]** \link ListItem_AddonType `ListItem.AddonType`\endlink
+/// replaces `ListItem.Property(Addon.Type)`.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.AddonInstallDate`</b>,
/// \anchor ListItem_AddonInstallDate
/// _string_,
-/// Returns the date the addon was installed
+/// @return The date the addon was installed.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link ListItem_AddonInstallDate `ListItem.AddonInstallDate`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.AddonLastUpdated`</b>,
/// \anchor ListItem_AddonLastUpdated
/// _string_,
-/// Returns the date the addon was last updated
+/// @return The date the addon was last updated.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link ListItem_AddonLastUpdated `ListItem.AddonLastUpdated`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.AddonLastUsed`</b>,
/// \anchor ListItem_AddonLastUsed
/// _string_,
-/// Returns the date the addon was used last
+/// @return The date the addon was used last.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link ListItem_AddonLastUsed `ListItem.AddonLastUsed`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`ListItem.AddonNews`</b>,
+/// \anchor ListItem_AddonNews
+/// _string_,
+/// @return A brief changelog\, taken from the addons' `addon.xml` file.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link ListItem_AddonNews `ListItem.AddonNews`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`ListItem.AddonSize`</b>,
+/// \anchor ListItem_AddonSize
+/// _string_,
+/// @return The filesize of the addon.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link ListItem_AddonSize `ListItem.AddonSize`\endlink
+/// <p>
/// }
-// \table_row3{ <b>`ListItem.AddonOrigin`</b>,
+/// \table_row3{ <b>`ListItem.AddonOrigin`</b>,
/// \anchor ListItem_AddonOrigin
/// _string_,
-/// Name of the repository the add-on originates from.
+/// @return The name of the repository the add-on originates from.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.ExpirationDate`</b>,
/// \anchor ListItem_ExpirationDate
/// _string_,
-/// Expiration date of the selected item in a container\, empty string if not supported
+/// @return The expiration date of the selected item in a container\, empty string if not supported.
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.ExpirationTime`</b>,
/// \anchor ListItem_ExpirationTime
/// _string_,
-/// Expiration time of the selected item in a container\, empty string if not supported
+/// @return The expiration time of the selected item in a container\, empty string if not supported
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Art(type)`</b>,
/// \anchor ListItem_Art_Type
/// _string_,
-/// Get a particular art type for an item.
+/// @return A particular art type for an item.
+/// @param type - the art type. It can be any value (set by scripts and scrappers). Common values:
+/// - <b>clearart</b> - the clearart (if it exists) of the currently selected movie or tv show.
+/// - <b>clearlogo</b> - the clearlogo (if it exists) of the currently selected movie or tv show.
+/// - <b>landscape</b> - the 16:9 landscape (if it exists) of the currently selected item.
+/// - <b>thumb</b> - the thumbnail of the currently selected item.
+/// - <b>poster</b> - the poster of the currently selected movie or tv show.
+/// - <b>banner</b> - the banner of the currently selected tv show.
+/// - <b>fanart</b> - the fanart image of the currently selected item.
+/// - <b>set.fanart</b> - the fanart image of the currently selected movieset.
+/// - <b>tvshow.poster</b> - the tv show poster of the parent container.
+/// - <b>tvshow.banner</b> - the tv show banner of the parent container.
+/// - <b>tvshow.clearlogo</b> - the tv show clearlogo (if it exists) of the parent container.
+/// - <b>tvshow.landscape</b> - the tv show landscape (if it exists) of the parent container.
+/// - <b>tvshow.clearart</b> - the tv show clearart (if it exists) of the parent container.
+/// - <b>season.poster</b> - the season poster of the currently selected season. (Only available in DialogVideoInfo.xml).
+/// - <b>season.banner</b> - the season banner of the currently selected season. (Only available in DialogVideoInfo.xml).
+/// - <b>season.fanart</b> - the fanart image of the currently selected season. (Only available in DialogVideoInfo.xml)
+/// - <b>artist.thumb</b> - the artist thumb of an album or song item.
+/// - <b>artist.fanart</b> - the artist fanart of an album or song item.
+/// - <b>album.thumb</b> - the album thumb (cover) of a song item.
+/// - <b>artist[n].*</b> - in case a song has multiple artists\, a digit is added to the art type for the 2nd artist onwards
+/// e.g `Listitem.Art(artist1.thumb)` gives the thumb of the 2nd artist of a song.
+/// - <b>albumartist[n].*</b> - n case a song has multiple album artists\, a digit is added to the art type for the 2nd artist
+/// onwards e.g `Listitem.Art(artist1.thumb)` gives the thumb of the 2nd artist of a song.
+/// <p>
+/// @todo Find a better way of finding the art types instead of manually defining them here.
+/// <p><hr>
+/// @skinning_v18 **[Infolabel Updated]** \link ListItem_Art_Type `ListItem.Art(type)`\endlink add <b>artist[n].*</b> and
+/// <b>albumartist[n].*</b> as possible targets for <b>type</b>
+/// <p>
+/// }
+/// \table_row3{ <b>`ListItem.Platform`</b>,
+/// \anchor ListItem_Platform
+/// _string_,
+/// @return The game platform (e.g. "Atari 2600") (RETROPLAYER).
+/// <p><hr>
+/// @skinning_v18 **[New Infolabel]** \link ListItem_Platform `ListItem.Platform`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`ListItem.Genres`</b>,
+/// \anchor ListItem_Genres
+/// _string_,
+/// @return The game genres (e.g. "["Action"\,"Strategy"]") (RETROPLAYER).
+/// <p><hr>
+/// @skinning_v18 **[New Infolabel]** \link ListItem_Genres `ListItem.Genres`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`ListItem.Publisher`</b>,
+/// \anchor ListItem_Publisher
+/// _string_,
+/// @return The game publisher (e.g. "Nintendo") (RETROPLAYER).
+/// <p><hr>
+/// @skinning_v18 **[New Infolabel]** \link ListItem_Publisher `ListItem.Publisher`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`ListItem.Developer`</b>,
+/// \anchor ListItem_Developer
+/// _string_,
+/// @return The game developer (e.g. "Square") (RETROPLAYER).
+/// <p><hr>
+/// @skinning_v18 **[New Infolabel]** \link ListItem_Developer `ListItem.Developer`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`ListItem.Overview`</b>,
+/// \anchor ListItem_Overview
+/// _string_,
+/// @return The game overview/summary (RETROPLAYER).
+/// <p><hr>
+/// @skinning_v18 **[New Infolabel]** \link ListItem_Overview `ListItem.Overview`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`ListItem.GameClient`</b>,
+/// \anchor ListItem_GameClient
+/// _string_,
+/// @return The add-on ID of the game client (a.k.a. emulator) to use for playing the game
+/// (e.g. game.libretro.fceumm) (RETROPLAYER).
+/// <p><hr>
+/// @skinning_v18 **[New Infolabel]** \link ListItem_GameClient `ListItem.GameClient`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`ListItem.Property(propname)`</b>,
/// \anchor ListItem_Property_Propname
/// _string_,
-/// Get a property of an item.
+/// @return The requested property of a ListItem.
+/// @param propname - the property requested
+/// <p>
+/// }
+/// \table_row3{ <b>`ListItem.Property(Role.Composer)`</b>,
+/// \anchor ListItem_Property_Role_Composer
+/// _string_,
+/// @return The name of the person who composed the selected song.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link ListItem_Property_Role_Composer `ListItem.Property(Role.Composer)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`ListItem.Property(Role.Conductor)`</b>,
+/// \anchor ListItem_Property_Role_Conductor
+/// _string_,
+/// @return The name of the person who conducted the selected song.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link ListItem_Property_Role_Conductor `ListItem.Property(Role.Conductor)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`ListItem.Property(Role.Orchestra)`</b>,
+/// \anchor ListItem_Property_Role_Orchestra
+/// _string_,
+/// @return The name of the orchestra performing the selected song.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link ListItem_Property_Role_Orchestra `ListItem.Property(Role.Orchestra)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`ListItem.Property(Role.Lyricist)`</b>,
+/// \anchor ListItem_Property_Role_Lyricist
+/// _string_,
+/// @return The name of the person who wrote the lyrics of the selected song.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link ListItem_Property_Role_Lyricist `ListItem.Property(Role.Lyricist)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`ListItem.Property(Role.Remixer)`</b>,
+/// \anchor ListItem_Property_Role_Remixer
+/// _string_,
+/// @return The name of the person who remixed the selected song.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link ListItem_Property_Role_Remixer `ListItem.Property(Role.Remixer)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`ListItem.Property(Role.Arranger)`</b>,
+/// \anchor ListItem_Property_Role_Arranger
+/// _string_,
+/// @return The name of the person who arranged the selected song.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link ListItem_Property_Role_Arranger `ListItem.Property(Role.Arranger)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`ListItem.Property(Role.Engineer)`</b>,
+/// \anchor ListItem_Property_Role_Engineer
+/// _string_,
+/// @return The name of the person who was the engineer of the selected song.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link ListItem_Property_Role_Engineer `ListItem.Property(Role.Engineer)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`ListItem.Property(Role.Producer)`</b>,
+/// \anchor ListItem_Property_Role_Producer
+/// _string_,
+/// @return The name of the person who produced the selected song.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link ListItem_Property_Role_Producer `ListItem.Property(Role.Producer)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`ListItem.Property(Role.DJMixer)`</b>,
+/// \anchor ListItem_Property_Role_DJMixer
+/// _string_,
+/// @return The name of the dj who remixed the selected song.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link ListItem_Property_Role_DJMixer `ListItem.Property(Role.DJMixer)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`ListItem.Property(Role.Mixer)`</b>,
+/// \anchor ListItem_Property_Role_Mixer
+/// _string_,
+/// @return The name of the person who mixed the selected song.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link ListItem_Property_Role_DJMixer `ListItem.Property(Role.DJMixer)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`ListItem.Property(Game.VideoFilter)`</b>,
+/// \anchor ListItem_Property_Game_VideoFilter
+/// _string_,
+/// @return The video filter of the list item representing a
+/// gamewindow control (RETROPLAYER).
+/// See \link RetroPlayer_VideoFilter RetroPlayer.VideoFilter \endlink
+/// for the possible values.
+/// <p><hr>
+/// @skinning_v18 **[New Infolabel]** \link ListItem_Property_Game_VideoFilter `ListItem.Property(Game.VideoFilter)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`ListItem.Property(Game.StretchMode)`</b>,
+/// \anchor ListItem_Property_Game_StretchMode
+/// _string_,
+/// @return The stretch mode of the list item representing a
+/// gamewindow control (RETROPLAYER).
+/// See \link RetroPlayer_StretchMode RetroPlayer.StretchMode \endlink
+/// for the possible values.
+/// <p><hr>
+/// @skinning_v18 **[New Infolabel]** \link ListItem_Property_Game_StretchMode `ListItem.Property(Game.StretchMode)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`ListItem.Property(Game.VideoRotation)`</b>,
+/// \anchor ListItem_Property_Game_VideoRotation
+/// _integer_,
+/// @return The video rotation of the list item representing a
+/// gamewindow control (RETROPLAYER).
+/// See \link RetroPlayer_VideoRotation RetroPlayer.VideoRotation \endlink
+/// for the possible values.
+/// <p><hr>
+/// @skinning_v18 **[New Infolabel]** \link ListItem_Property_Game_VideoRotation `ListItem.Property(Game.VideoRotation)`\endlink
+/// <p>
/// }
/// \table_end
///
/// -----------------------------------------------------------------------------
-/// @}
const infomap listitem_labels[]= {{ "thumb", LISTITEM_THUMB },
{ "icon", LISTITEM_ICON },
{ "actualicon", LISTITEM_ACTUAL_ICON },
@@ -3981,275 +5776,389 @@ const infomap listitem_labels[]= {{ "thumb", LISTITEM_THUMB },
{ "property", LISTITEM_PROPERTY },
};
-/// \page modules__General__List_of_gui_access
-/// \section modules__General__List_of_gui_access_Visualisation Visualisation
-/// @{
+/// \page modules__infolabels_boolean_conditions
+/// \subsection modules__infolabels_boolean_conditions_Visualisation Visualisation
/// \table_start
/// \table_h3{ Labels, Type, Description }
/// \table_row3{ <b>`Visualisation.Enabled`</b>,
/// \anchor Visualisation_Enabled
/// _boolean_,
-/// Returns true if any visualisation has been set in settings (so not None).
+/// @return **True** if any visualisation has been set in settings (so not None).
+/// <p>
/// }
/// \table_row3{ <b>`Visualisation.HasPresets`</b>,
/// \anchor Visualisation_HasPresets
/// _boolean_,
-/// Returns true if the visualisation has built in presets.
+/// @return **True** if the visualisation has built in presets.
+/// <p><hr>
+/// @skinning_v16 **[New Boolean Condition]** \link Visualisation_HasPresets `Visualisation.HasPresets`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Visualisation.Locked`</b>,
/// \anchor Visualisation_Locked
/// _boolean_,
-/// Returns true if the current visualisation preset is locked (eg in Milkdrop.)
+/// @return **True** if the current visualisation preset is locked (e.g. in Milkdrop).
+/// <p>
/// }
/// \table_row3{ <b>`Visualisation.Preset`</b>,
/// \anchor Visualisation_Preset
/// _string_,
-/// Returns the current preset of the visualisation.
+/// @return The current preset of the visualisation.
+/// <p>
/// }
/// \table_row3{ <b>`Visualisation.Name`</b>,
/// \anchor Visualisation_Name
/// _string_,
-/// Returns the name of the visualisation.
+/// @return the name of the visualisation.
+/// <p>
/// }
/// \table_end
///
/// -----------------------------------------------------------------------------
-/// @}
const infomap visualisation[] = {{ "locked", VISUALISATION_LOCKED },
{ "preset", VISUALISATION_PRESET },
{ "haspresets", VISUALISATION_HAS_PRESETS },
{ "name", VISUALISATION_NAME },
{ "enabled", VISUALISATION_ENABLED }};
-/// \page modules__General__List_of_gui_access
-/// \section modules__General__List_of_gui_access_Fanart Fanart
-/// @{
+/// \page modules__infolabels_boolean_conditions
+/// \subsection modules__infolabels_boolean_conditions_Fanart Fanart
/// \table_start
/// \table_h3{ Labels, Type, Description }
/// \table_row3{ <b>`Fanart.Color1`</b>,
/// \anchor Fanart_Color1
/// _string_,
-/// Returns the first of three colors included in the currently selected
-/// Fanart theme for the parent TV Show. Colors are arranged Lightest to
-/// Darkest.
+/// @return The first of three colors included in the currently selected
+/// Fanart theme for the parent TV Show.
+/// @note Colors are arranged Lightest to Darkest.
+/// <p>
/// }
/// \table_row3{ <b>`Fanart.Color2`</b>,
/// \anchor Fanart_Color2
/// _string_,
-/// Returns the second of three colors included in the currently selected
-/// Fanart theme for the parent TV Show. Colors are arranged Lightest to
-/// Darkest.
+/// @return The second of three colors included in the currently selected
+/// Fanart theme for the parent TV Show.
+/// @note Colors are arranged Lightest to Darkest.
+/// <p>
/// }
/// \table_row3{ <b>`Fanart.Color3`</b>,
/// \anchor Fanart_Color3
/// _string_,
-/// Returns the third of three colors included in the currently selected
-/// Fanart theme for the parent TV Show. Colors are arranged Lightest to
-/// Darkest.
+/// @return The third of three colors included in the currently selected
+/// Fanart theme for the parent TV Show.
+/// @note Colors are arranged Lightest to Darkest.
+/// <p>
/// }
/// \table_row3{ <b>`Fanart.Image`</b>,
/// \anchor Fanart_Image
/// _string_,
-/// Returns the fanart image\, if any
+/// @return The fanart image\, if any
+/// <p>
/// }
/// \table_end
///
/// -----------------------------------------------------------------------------
-/// @}
const infomap fanart_labels[] = {{ "color1", FANART_COLOR1 },
{ "color2", FANART_COLOR2 },
{ "color3", FANART_COLOR3 },
{ "image", FANART_IMAGE }};
-/// \page modules__General__List_of_gui_access
-/// \section modules__General__List_of_gui_access_Skin Skin
-/// @{
+/// \page modules__infolabels_boolean_conditions
+/// \subsection modules__infolabels_boolean_conditions_Skin Skin
/// \table_start
/// \table_h3{ Labels, Type, Description }
/// \table_row3{ <b>`Skin.CurrentTheme`</b>,
/// \anchor Skin_CurrentTheme
/// _string_,
-/// Returns the current selected skin theme.
+/// @return The current selected skin theme.
+/// <p>
/// }
/// \table_row3{ <b>`Skin.CurrentColourTheme`</b>,
/// \anchor Skin_CurrentColourTheme
/// _string_,
-/// Returns the current selected colour theme of the skin.
+/// @return the current selected colour theme of the skin.
+/// <p>
/// }
/// \table_row3{ <b>`Skin.AspectRatio`</b>,
/// \anchor Skin_AspectRatio
/// _string_,
-/// Returns the closest aspect ratio match using the resolution info from the skin's addon.xml file.
+/// @return The closest aspect ratio match using the resolution info from the skin's `addon.xml` file.
+/// <p>
/// }
/// \table_row3{ <b>`Skin.Font`</b>,
/// \anchor Skin_Font
/// _string_,
-/// Returns the current fontset from Font.xml.
+/// @return the current fontset from `Font.xml`.
+/// <p><hr>
+/// @skinning_v18 **[New Infolabel]** \link Skin_Font `Skin.Font`\endlink
+/// <p>
/// }
/// \table_end
///
/// -----------------------------------------------------------------------------
-/// @}
const infomap skin_labels[] = {{ "currenttheme", SKIN_THEME },
{ "currentcolourtheme",SKIN_COLOUR_THEME },
{ "aspectratio", SKIN_ASPECT_RATIO},
{ "font", SKIN_FONT}};
-/// \page modules__General__List_of_gui_access
-/// \section modules__General__List_of_gui_access_Window Window
-/// @{
+/// \page modules__infolabels_boolean_conditions
+/// \subsection modules__infolabels_boolean_conditions_Window Window
/// \table_start
/// \table_h3{ Labels, Type, Description }
/// \table_row3{ <b>`Window.IsMedia`</b>,
/// \anchor Window_IsMedia
/// _boolean_,
-/// Returns true if this window is a media window (programs\, music\, video\,
+/// @return **True** if this window is a media window (programs\, music\, video\,
/// scripts\, pictures)
+/// <p>
/// }
/// \table_row3{ <b>`Window.Is(window)`</b>,
/// \anchor Window_Is
/// _boolean_,
-/// Returns true if the window with the given name is the window which is currently rendered.
-/// Useful in xml files that are shared between multiple windows or dialogs.
+/// @return **True** if the window with the given name is the window which is currently rendered.
+/// @param window - the name of the window
+/// @note Useful in xml files that are shared between multiple windows or dialogs.
+/// <p><hr>
+/// @skinning_v17 **[New Boolean Condition]** \ref Window_Is "Window.Is(window)"
+/// <p>
/// }
/// \table_row3{ <b>`Window.IsActive(window)`</b>,
/// \anchor Window_IsActive
/// _boolean_,
-/// Returns true if the window with id or title _window_ is active
-/// (excludes fade out time on dialogs)
+/// @return **True** if the window with id or title _window_ is active
+/// @param window - the id or name of the window
+/// @note Excludes fade out time on dialogs
+/// <p>
/// }
/// \table_row3{ <b>`Window.IsVisible(window)`</b>,
/// \anchor Window_IsVisible
/// _boolean_,
-/// Returns true if the window is visible (includes fade out time on dialogs)
+/// @return **True** if the window is visible
+/// @note Includes fade out time on dialogs
+/// <p>
/// }
/// \table_row3{ <b>`Window.IsTopmost(window)`</b>,
/// \anchor Window_IsTopmost
/// _boolean_,
-/// Returns true if the window with id or title _window_ is on top of the
-/// window stack (excludes fade out time on dialogs)
-/// @deprecated use `Window.IsDialogTopmost(dialog)` instead \par
+/// @return **True** if the window with id or title _window_ is on top of the
+/// window stack.
+/// @param window - the id or name of the window
+/// @note Excludes fade out time on dialogs
+/// @deprecated use \ref Window_IsDialogTopmost "Window.IsDialogTopmost(dialog)" instead
+/// <p>
/// }
/// \table_row3{ <b>`Window.IsDialogTopmost(dialog)`</b>,
/// \anchor Window_IsDialogTopmost
/// _boolean_,
-/// Returns true if the dialog with id or title _dialog_ is on top of the
-/// dialog stack (excludes fade out time on dialogs)
+/// @return **True** if the dialog with id or title _dialog_ is on top of the
+/// dialog stack.
+/// @param window - the id or name of the window
+/// @note Excludes fade out time on dialogs
+/// <p>
/// }
/// \table_row3{ <b>`Window.IsModalDialogTopmost(dialog)`</b>,
/// \anchor Window_IsModalDialogTopmost
/// _boolean_,
-/// Returns true if the dialog with id or title _dialog_ is on top of the
-/// modal dialog stack (excludes fade out time on dialogs)
+/// @return **True** if the dialog with id or title _dialog_ is on top of the
+/// modal dialog stack
+/// @note Excludes fade out time on dialogs
+/// <p>
/// }
/// \table_row3{ <b>`Window.Previous(window)`</b>,
/// \anchor Window_Previous
/// _boolean_,
-/// Returns true if the window with id or title _window_ is being moved from.
-/// Only valid while windows are changing.
+/// @return **True** if the window with id or title _window_ is being moved from.
+/// @param window - the window id or title
+/// @note Only valid while windows are changing.
+/// <p>
/// }
/// \table_row3{ <b>`Window.Next(window)`</b>,
/// \anchor Window_Next
/// _boolean_,
-/// Returns true if the window with id or title _window_ is being moved to.
-/// Only valid while windows are changing.
+/// @return **True** if the window with id or title _window_ is being moved to.
+/// @param window - the window id or title
+/// @note Only valid while windows are changing.
+/// <p>
+/// }
+/// \table_row3{ <b>`Window.Property(Addon.ID)`</b>,
+/// \anchor Window_Property_AddonId
+/// _string_,
+/// @return The id of the selected addon\, in `DialogAddonSettings.xml`.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link Window_Property_AddonId `Window.Property(Addon.ID)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`Window([window]).Property(key)`</b>,
+/// \anchor Window_Window_Property_key
+/// _string_,
+/// @return A window property.
+/// @param window - [opt] window id or name.
+/// @param key - any value.
+/// <p>
+/// }
+/// \table_row3{ <b>`Window(AddonBrowser).Property(Updated)`</b>,
+/// \anchor Window_Addonbrowser_Property_Updated
+/// _string_,
+/// @return The date and time the addon repo was last checked for updates.
+/// @todo move to a future window document.
+/// <p><hr>
+/// @skinning_v15 **[New Infolabel]** \link Window_Addonbrowser_Property_Updated `Window(AddonBrowser).Property(Updated)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`Window(Weather).Property(property)`</b>,
+/// \anchor Window_Weather_Property
+/// _string_,
+/// @return The property for the weather window.
+/// @param property - The requested property. The following are available:
+/// - Current.ConditionIcon
+/// - Day[0-6].OutlookIcon
+/// - Current.FanartCode
+/// - Day[0-6].FanartCode
+/// - WeatherProviderLogo
+/// - Daily.%i.OutlookIcon
+/// - 36Hour.%i.OutlookIcon
+/// - Weekend.%i.OutlookIcon
+/// - Hourly.%i.OutlookIcon
+/// @todo move to a future window document.
+/// <p><hr>
+/// @skinning_v16 **[Updated infolabel]** \link Window_Weather_Property `Window(Weather).Property(property)`\endlink
+/// For skins that support extended weather info\, the following infolabels have been changed:
+/// - Daily.%i.OutlookIcon
+/// - 36Hour.%i.OutlookIcon
+/// - Weekend.%i.OutlookIcon
+/// - Hourly.%i.OutlookIcon
+///
+/// previously the openweathermap addon would provide the full\, hardcoded path to the icon
+/// ie. `resource://resource.images.weathericons.default/28.png`
+/// to make it easier for skins to work with custom icon sets\, it now will return the filename only
+/// i.e. 28.png
+/// @skinning_v13 **[Infolabel Updated]** \link Window_Weather_Property `Window(Weather).Property(property)`\endlink
+/// added `WeatherProviderLogo` propertu - weather provider logo (for weather addons that support it).
+/// <p>
/// }
/// \table_end
///
/// -----------------------------------------------------------------------------
-/// @}
const infomap window_bools[] = {{ "ismedia", WINDOW_IS_MEDIA },
{ "is", WINDOW_IS },
{ "isactive", WINDOW_IS_ACTIVE },
{ "isvisible", WINDOW_IS_VISIBLE },
- { "istopmost", WINDOW_IS_DIALOG_TOPMOST }, // deprecated, remove in v19
+ { "istopmost", WINDOW_IS_DIALOG_TOPMOST }, //! @deprecated, remove in v19
{ "isdialogtopmost", WINDOW_IS_DIALOG_TOPMOST },
{ "ismodaldialogtopmost", WINDOW_IS_MODAL_DIALOG_TOPMOST },
{ "previous", WINDOW_PREVIOUS },
{ "next", WINDOW_NEXT }};
-/// \page modules__General__List_of_gui_access
-/// \section modules__General__List_of_gui_access_Control Control
-/// @{
+/// \page modules__infolabels_boolean_conditions
+/// \subsection modules__infolabels_boolean_conditions_Control Control
/// \table_start
/// \table_h3{ Labels, Type, Description }
/// \table_row3{ <b>`Control.HasFocus(id)`</b>,
/// \anchor Control_HasFocus
/// _boolean_,
-/// Returns true if the currently focused control has id "id".
+/// @return **True** if the currently focused control has id "id".
+/// @param id - The id of the control
+/// <p>
/// }
/// \table_row3{ <b>`Control.IsVisible(id)`</b>,
/// \anchor Control_IsVisible
/// _boolean_,
-/// Returns true if the control with id "id" is visible.
+/// @return **True** if the control with id "id" is visible.
+/// @param id - The id of the control
+/// <p>
/// }
/// \table_row3{ <b>`Control.IsEnabled(id)`</b>,
/// \anchor Control_IsEnabled
/// _boolean_,
-/// Returns true if the control with id "id" is enabled.
+/// @return **True** if the control with id "id" is enabled.
+/// @param id - The id of the control
+/// <p>
/// }
/// \table_row3{ <b>`Control.GetLabel(id)[.index()]`</b>,
/// \anchor Control_GetLabel
/// _string_,
-/// Returns the label value or texture name of the control with the given id.
-/// Optionally you can specify index(1) to retrieve label2 from an Edit
+/// @return The label value or texture name of the control with the given id.
+/// @param id - The id of the control
+/// @param index - [opt] Optionally you can specify index(1) to retrieve label2 from an Edit
/// control.
+/// <p><hr>
+/// @skinning_v15 **[Infolabel Updated]** \link Control_GetLabel `Control.GetLabel(id)`\endlink
+/// added index parameter - allows skinner to retrieve label2 of a control. Only edit controls are supported.
+/// ** Example** : `Control.GetLabel(999).index(1)` where:
+/// - index(0) = label
+/// - index(1) = label2
+/// <p>
/// }
/// \table_end
///
/// -----------------------------------------------------------------------------
-/// @}
const infomap control_labels[] = {{ "hasfocus", CONTROL_HAS_FOCUS },
{ "isvisible", CONTROL_IS_VISIBLE },
{ "isenabled", CONTROL_IS_ENABLED },
{ "getlabel", CONTROL_GET_LABEL }};
-/// \page modules__General__List_of_gui_access
-/// \section modules__General__List_of_gui_access_Playlist Playlist
-/// @{
+/// \page modules__infolabels_boolean_conditions
+/// \subsection modules__infolabels_boolean_conditions_Playlist Playlist
/// \table_start
/// \table_h3{ Labels, Type, Description }
/// \table_row3{ <b>`Playlist.Length(media)`</b>,
/// \anchor Playlist_Length
/// _integer_,
-/// Total size of the current playlist. optional parameter media is either
+/// @return The total size of the current playlist.
+/// @param media - [opt] mediatype with is either
/// video or music.
+/// <p>
/// }
/// \table_row3{ <b>`Playlist.Position(media)`</b>,
/// \anchor Playlist_Position
/// _integer_,
-/// Position of the current item in the current playlist. optional parameter
-/// media is either video or music.
+/// @return The position of the current item in the current playlist.
+/// @param media - [opt] mediatype with is either
+/// video or music.
+/// <p>
/// }
/// \table_row3{ <b>`Playlist.Random`</b>,
/// \anchor Playlist_Random
/// _integer_,
-/// Returns string ID's 590 (Randomize Play Enabled) or 591 (Disabled)
+/// @return String ID for the random mode:
+/// - **16041** (On)
+/// - **591** (Off)
+/// <p><hr>
+/// @skinning_v18 **[Infolabel Updated]** \link Playlist_Random `Playlist.Random`\endlink will
+/// now return **On/Off**
+/// <p>
/// }
/// \table_row3{ <b>`Playlist.Repeat`</b>,
/// \anchor Playlist_Repeat
/// _integer_,
-/// Returns string ID's 592 (Repeat One)\, 593 (Repeat All)\, or 594 (Repeat Off)
+/// @return The String Id for the repeat mode. It can be one of the following
+/// values:
+/// - **592** (Repeat One)
+/// - **593** (Repeat All)
+/// - **594** (Repeat Off)
+/// <p>
/// }
/// \table_row3{ <b>`Playlist.IsRandom`</b>,
/// \anchor Playlist_IsRandom
/// _boolean_,
-/// Returns true if the player is in random mode.
+/// @return **True** if the player is in random mode.
+/// <p>
/// }
/// \table_row3{ <b>`Playlist.IsRepeat`</b>,
/// \anchor Playlist_IsRepeat
/// _boolean_,
-/// Returns true if the player is in repeat all mode.
+/// @return **True** if the player is in repeat all mode.
+/// <p>
/// }
/// \table_row3{ <b>`Playlist.IsRepeatOne`</b>,
/// \anchor Playlist_IsRepeatOne
/// _boolean_,
-/// Returns true if the player is in repeat one mode.
+/// @return **True** if the player is in repeat one mode.
+/// <p>
/// }
/// \table_end
///
/// -----------------------------------------------------------------------------
-/// @}
const infomap playlist[] = {{ "length", PLAYLIST_LENGTH },
{ "position", PLAYLIST_POSITION },
{ "random", PLAYLIST_RANDOM },
@@ -4258,395 +6167,534 @@ const infomap playlist[] = {{ "length", PLAYLIST_LENGTH },
{ "isrepeat", PLAYLIST_ISREPEAT },
{ "isrepeatone", PLAYLIST_ISREPEATONE }};
-/// \page modules__General__List_of_gui_access
-/// \section modules__General__List_of_gui_access_Pvr Pvr
-/// @{
+/// \page modules__infolabels_boolean_conditions
+/// \subsection modules__infolabels_boolean_conditions_Pvr Pvr
/// \table_start
/// \table_h3{ Labels, Type, Description }
/// \table_row3{ <b>`PVR.IsRecording`</b>,
/// \anchor PVR_IsRecording
/// _boolean_,
-/// Returns true when the system is recording a tv or radio programme.
+/// @return **True** when the system is recording a tv or radio programme.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.HasTimer`</b>,
/// \anchor PVR_HasTimer
/// _boolean_,
-/// Returns true when a recording timer is active.
+/// @return **True** when a recording timer is active.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.HasTVChannels`</b>,
/// \anchor PVR_HasTVChannels
/// _boolean_,
-/// Returns true if there are TV channels available
+/// @return **True** if there are TV channels available.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.HasRadioChannels`</b>,
/// \anchor PVR_HasRadioChannels
/// _boolean_,
-/// Returns true if there are radio channels available
+/// @return **True** if there are radio channels available.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.HasNonRecordingTimer`</b>,
/// \anchor PVR_HasNonRecordingTimer
/// _boolean_,
-/// Returns true if there are timers present who currently not do recording
+/// @return **True** if there are timers present who currently not do recording.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.BackendName`</b>,
/// \anchor PVR_BackendName
/// _string_,
-/// Name of the backend being used
+/// @return The name of the backend being used.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.BackendVersion`</b>,
/// \anchor PVR_BackendVersion
/// _string_,
-/// Version of the backend that's being used
+/// @return The version of the backend that's being used.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.BackendHost`</b>,
/// \anchor PVR_BackendHost
/// _string_,
-/// Backend hostname
+/// @return The backend hostname.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.BackendDiskSpace`</b>,
/// \anchor PVR_BackendDiskSpace
/// _string_,
-/// Available diskspace on the backend as string with size
+/// @return The available diskspace on the backend as string with size.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.BackendDiskSpaceProgr`</b>,
/// \anchor PVR_BackendDiskSpaceProgr
/// _integer_,
-/// Available diskspace on the backend as percent value
+/// @return The available diskspace on the backend as percent value.
+/// <p><hr>
+/// @skinning_v14 **[New Infolabel]** \link PVR_BackendDiskSpaceProgr `PVR.BackendDiskSpaceProgr`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`PVR.BackendChannels`</b>,
/// \anchor PVR_BackendChannels
/// _string (integer)_,
-/// Number of available channels the backend provides
+/// @return The number of available channels the backend provides.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.BackendTimers`</b>,
/// \anchor PVR_BackendTimers
/// _string (integer)_,
-/// Number of timers set for the backend
+/// @return The number of timers set for the backend.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.BackendRecordings`</b>,
/// \anchor PVR_BackendRecordings
/// _string (integer)_,
-/// Number of recording available on the backend
+/// @return The number of recordings available on the backend.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.BackendDeletedRecordings`</b>,
/// \anchor PVR_BackendDeletedRecordings
/// _string (integer)_,
-/// Number of deleted recording present on the backend
+/// @return The number of deleted recordings present on the backend.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.BackendNumber`</b>,
/// \anchor PVR_BackendNumber
/// _string_,
-/// Backend number
+/// @return The backend number.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.TotalDiscSpace`</b>,
/// \anchor PVR_TotalDiscSpace
/// _string_,
-/// Total diskspace available for recordings
+/// @return The total diskspace available for recordings.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.NextTimer`</b>,
/// \anchor PVR_NextTimer
/// _boolean_,
-/// Next timer date
+/// @return The next timer date.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.IsPlayingTV`</b>,
/// \anchor PVR_IsPlayingTV
/// _boolean_,
-/// Returns true when live tv is being watched.
+/// @return **True** when live tv is being watched.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.IsPlayingRadio`</b>,
/// \anchor PVR_IsPlayingRadio
/// _boolean_,
-/// Returns true when live radio is being listened to.
+/// @return **True** when live radio is being listened to.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.IsPlayingRecording`</b>,
/// \anchor PVR_IsPlayingRecording
/// _boolean_,
-/// Returns true when a recording is being watched.
+/// @return **True** when a recording is being watched.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.IsPlayingEpgTag`</b>,
/// \anchor PVR_IsPlayingEpgTag
/// _boolean_,
-/// Returns true when an epg tag is being watched.
+/// @return **True** when an epg tag is being watched.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.EpgEventProgress`</b>,
/// \anchor PVR_EpgEventProgress
/// _integer_,
-/// Returns the percentage complete of the currently playing epg event
+/// @return The percentage complete of the currently playing epg event.
+/// <p><hr>
+/// @skinning_v18 **[Infolabel Updated]** \link PVR_EpgEventProgress `PVR.EpgEventProgress`\endlink replaces
+/// the old `PVR.Progress` infolabel.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.ActStreamClient`</b>,
/// \anchor PVR_ActStreamClient
/// _string_,
-/// Stream client name
+/// @return The stream client name.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.ActStreamDevice`</b>,
/// \anchor PVR_ActStreamDevice
/// _string_,
-/// Stream device name
+/// @return The stream device name.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.ActStreamStatus`</b>,
/// \anchor PVR_ActStreamStatus
/// _string_,
-/// Status of the stream
+/// @return The status of the stream.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.ActStreamSignal`</b>,
/// \anchor PVR_ActStreamSignal
/// _string_,
-/// Signal quality of the stream
+/// @return The signal quality of the stream.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.ActStreamSnr`</b>,
/// \anchor PVR_ActStreamSnr
/// _string_,
-/// Signal to noise ratio of the stream
+/// @return The signal to noise ratio of the stream.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.ActStreamBer`</b>,
/// \anchor PVR_ActStreamBer
/// _string_,
-/// Bit error rate of the stream
+/// @return The bit error rate of the stream.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.ActStreamUnc`</b>,
/// \anchor PVR_ActStreamUnc
/// _string_,
-/// UNC value of the stream
+/// @return The UNC value of the stream.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.ActStreamProgrSignal`</b>,
/// \anchor PVR_ActStreamProgrSignal
/// _integer_,
-/// Signal quality of the programme
+/// @return The signal quality of the programme.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.ActStreamProgrSnr`</b>,
/// \anchor PVR_ActStreamProgrSnr
/// _integer_,
-/// Signal to noise ratio of the programme
+/// @return The signal to noise ratio of the programme.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.ActStreamIsEncrypted`</b>,
/// \anchor PVR_ActStreamIsEncrypted
/// _boolean_,
-/// Returns true when channel is encrypted on source
+/// @return **True** when channel is encrypted on source.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.ActStreamEncryptionName`</b>,
/// \anchor PVR_ActStreamEncryptionName
/// _string_,
-/// Encryption used on the stream
+/// @return The encryption used on the stream.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.ActStreamServiceName`</b>,
/// \anchor PVR_ActStreamServiceName
/// _string_,
-/// Returns the service name of played channel if available
+/// @return The service name of played channel if available.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.ActStreamMux`</b>,
/// \anchor PVR_ActStreamMux
/// _string_,
-/// Returns the multiplex type of played channel if available
+/// @return The multiplex type of played channel if available.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.ActStreamProviderName`</b>,
/// \anchor PVR_ActStreamProviderName
/// _string_,
-/// Returns the provider name of the played channel if available
+/// @return The provider name of the played channel if available.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.IsTimeShift`</b>,
/// \anchor PVR_IsTimeShift
/// _boolean_,
-/// Returns true when for channel is timeshift available
+/// @return **True** when for channel is timeshift available.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.TimeShiftProgress`</b>,
/// \anchor PVR_TimeShiftProgress
/// _integer_,
-/// Returns the position of currently timeshifted title on TV as integer
+/// @return The position of currently timeshifted title on TV as integer.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.NowRecordingTitle`</b>,
/// \anchor PVR_NowRecordingTitle
/// _string_,
-/// Title of the programme being recorded
+/// @return The title of the programme being recorded.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.NowRecordingDateTime`</b>,
/// \anchor PVR_NowRecordingDateTime
/// _Date/Time string_,
-/// Start date and time of the current recording
+/// @return The start date and time of the current recording.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.NowRecordingChannel`</b>,
/// \anchor PVR_NowRecordingChannel
/// _string_,
-/// Channel name of the current recording
+/// @return The channel name of the current recording.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.NowRecordingChannelIcon`</b>,
/// \anchor PVR_NowRecordingChannelIcon
/// _string_,
-/// Icon of the current recording channel
+/// @return The icon of the current recording channel.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.NextRecordingTitle`</b>,
/// \anchor PVR_NextRecordingTitle
/// _string_,
-/// Title of the next programme that will be recorded
+/// @return The title of the next programme that will be recorded.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.NextRecordingDateTime`</b>,
/// \anchor PVR_NextRecordingDateTime
/// _Date/Time string_,
-/// Start date and time of the next recording
+/// @return The start date and time of the next recording.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.NextRecordingChannel`</b>,
/// \anchor PVR_NextRecordingChannel
/// _string_,
-/// Channel name of the next recording
+/// @return The channel name of the next recording.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.NextRecordingChannelIcon`</b>,
/// \anchor PVR_NextRecordingChannelIcon
/// _string_,
-/// Icon of the next recording channel
+/// @return The icon of the next recording channel.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.TVNowRecordingTitle`</b>,
/// \anchor PVR_TVNowRecordingTitle
/// _string_,
-/// Title of the tv programme being recorded
+/// @return The title of the tv programme being recorded.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link PVR_TVNowRecordingTitle `PVR.TVNowRecordingTitle`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`PVR.TVNowRecordingDateTime`</b>,
/// \anchor PVR_TVNowRecordingDateTime
/// _Date/Time string_,
-/// Start date and time of the current tv recording
+/// @return The start date and time of the current tv recording.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link PVR_TVNowRecordingDateTime `PVR.TVNowRecordingDateTime`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`PVR.TVNowRecordingChannel`</b>,
/// \anchor PVR_TVNowRecordingChannel
/// _string_,
-/// Channel name of the current tv recording
+/// @return The channel name of the current tv recording.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link PVR_TVNowRecordingChannel `PVR.TVNowRecordingChannel`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`PVR.TVNowRecordingChannelIcon`</b>,
/// \anchor PVR_TVNowRecordingChannelIcon
/// _string_,
-/// Icon of the current recording TV channel
+/// @return The icon of the current recording TV channel.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link PVR_TVNowRecordingChannelIcon `PVR.TVNowRecordingChannelIcon`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`PVR.TVNextRecordingTitle`</b>,
/// \anchor PVR_TVNextRecordingTitle
/// _string_,
-/// Title of the next tv programme that will be recorded
+/// @return The title of the next tv programme that will be recorded.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link PVR_TVNextRecordingTitle `PVR.TVNextRecordingTitle`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`PVR.TVNextRecordingDateTime`</b>,
/// \anchor PVR_TVNextRecordingDateTime
/// _Date/Time string_,
-/// Start date and time of the next tv recording
+/// @return The start date and time of the next tv recording.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link PVR_TVNextRecordingDateTime `PVR.TVNextRecordingDateTime`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`PVR.TVNextRecordingChannel`</b>,
/// \anchor PVR_TVNextRecordingChannel
/// _string_,
-/// Channel name of the next tv recording
+/// @return The channel name of the next tv recording.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link PVR_TVNextRecordingChannel `PVR.TVNextRecordingChannel`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`PVR.TVNextRecordingChannelIcon`</b>,
/// \anchor PVR_TVNextRecordingChannelIcon
-/// ,
-/// Icon of the next recording tv channel
+/// _string_,
+/// @return The icon of the next recording tv channel.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link PVR_TVNextRecordingChannelIcon `PVR.TVNextRecordingChannelIcon`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`PVR.RadioNowRecordingTitle`</b>,
/// \anchor PVR_RadioNowRecordingTitle
/// _string_,
-/// Title of the radio programme being recorded
+/// @return The title of the radio programme being recorded.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link PVR_RadioNowRecordingTitle `PVR.RadioNowRecordingTitle`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`PVR.RadioNowRecordingDateTime`</b>,
/// \anchor PVR_RadioNowRecordingDateTime
/// _Date/Time string_,
-/// Start date and time of the current radio recording
+/// @return The start date and time of the current radio recording.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link PVR_RadioNowRecordingDateTime `PVR.RadioNowRecordingDateTime`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`PVR.RadioNowRecordingChannel`</b>,
/// \anchor PVR_RadioNowRecordingChannel
/// _string_,
-/// Channel name of the current radio recording
+/// @return The channel name of the current radio recording.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link PVR_RadioNowRecordingChannel `PVR.RadioNowRecordingChannel`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`PVR.RadioNowRecordingChannelIcon`</b>,
/// \anchor PVR_RadioNowRecordingChannelIcon
/// _string_,
-/// Icon of the current recording radio channel
+/// @return The icon of the current recording radio channel.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link PVR_RadioNowRecordingChannelIcon `PVR.RadioNowRecordingChannelIcon`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`PVR.RadioNextRecordingTitle`</b>,
/// \anchor PVR_RadioNextRecordingTitle
/// _string_,
-/// Title of the next radio programme that will be recorded
+/// @return The title of the next radio programme that will be recorded.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link PVR_RadioNextRecordingTitle `PVR.RadioNextRecordingTitle`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`PVR.RadioNextRecordingDateTime`</b>,
/// \anchor PVR_RadioNextRecordingDateTime
/// _Date/Time string_,
-/// Start date and time of the next radio recording
+/// @return The start date and time of the next radio recording.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link PVR_RadioNextRecordingDateTime `PVR.RadioNextRecordingDateTime`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`PVR.RadioNextRecordingChannel`</b>,
/// \anchor PVR_RadioNextRecordingChannel
/// _string_,
-/// Channel name of the next radio recording
+/// @return The channel name of the next radio recording.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link PVR_RadioNextRecordingChannel `PVR.RadioNextRecordingChannel`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`PVR.RadioNextRecordingChannelIcon`</b>,
/// \anchor PVR_RadioNextRecordingChannelIcon
/// _string_,
-/// Icon of the next recording radio channel
+/// @return The icon of the next recording radio channel.
+/// <p><hr>
+/// @skinning_v17 **[New Infolabel]** \link PVR_RadioNextRecordingChannelIcon `PVR.RadioNextRecordingChannelIcon`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`PVR.IsRecordingTV`</b>,
/// \anchor PVR_IsRecordingTV
/// _boolean_,
-/// Returns true when the system is recording a tv programme.
+/// @return **True** when the system is recording a tv programme.
+/// <p><hr>
+/// @skinning_v17 **[New Boolean Condition]** \link PVR_IsRecordingTV `PVR.IsRecordingTV`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`PVR.HasTVTimer`</b>,
/// \anchor PVR_HasTVTimer
/// _boolean_,
-/// Returns true if at least one tv timer is active.
+/// @return **True** if at least one tv timer is active.
+/// <p><hr>
+/// @skinning_v17 **[New Boolean Condition]** \link PVR_HasTVTimer `PVR.HasTVTimer`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`PVR.HasNonRecordingTVTimer`</b>,
/// \anchor PVR_HasNonRecordingTVTimer
/// _boolean_,
-/// Returns true if there are tv timers present who currently not do recording
+/// @return **True** if there are tv timers present who currently not do recording.
+/// <p><hr>
+/// @skinning_v17 **[New Boolean Condition]** \link PVR_HasNonRecordingTVTimer `PVR.HasNonRecordingTVTimer`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`PVR.IsRecordingRadio`</b>,
/// \anchor PVR_IsRecordingRadio
/// _boolean_,
-/// Returns true when the system is recording a radio programme.
+/// @return **True** when the system is recording a radio programme.
+/// <p><hr>
+/// @skinning_v17 **[New Boolean Condition]** \link PVR_IsRecordingRadio `PVR.IsRecordingRadio`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`PVR.HasRadioTimer`</b>,
/// \anchor PVR_HasRadioTimer
/// _boolean_,
-/// Returns true if at least one radio timer is active.
+/// @return **True** if at least one radio timer is active.
+/// <p><hr>
+/// @skinning_v17 **[New Boolean Condition]** \link PVR_HasRadioTimer `PVR.HasRadioTimer`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`PVR.HasNonRecordingRadioTimer`</b>,
/// \anchor PVR_HasNonRecordingRadioTimer
/// _boolean_,
-/// Returns true if there are radio timers present who currently not do recording
+/// @return **True** if there are radio timers present who currently not do recording.
+/// <p><hr>
+/// @skinning_v17 **[New Boolean Condition]** \link PVR_HasNonRecordingRadioTimer `PVR.HasRadioTimer`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`PVR.ChannelNumberInput`</b>,
/// \anchor PVR_ChannelNumberInput
/// _string_,
-/// Returns the currently entered channel number while in numeric channel input mode\, an empty string otherwise
+/// @return The currently entered channel number while in numeric channel input mode\, an empty string otherwise.
+/// <p><hr>
+/// @skinning_v18 **[New Infolabel]** \link PVR_ChannelNumberInput `PVR.ChannelNumberInput`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`PVR.CanRecordPlayingChannel`</b>,
/// \anchor PVR_CanRecordPlayingChannel
/// _boolean_,
-/// Returns true if PVR is currently playing a channel and if this channel can be recorded.
+/// @return **True** if PVR is currently playing a channel and if this channel can be recorded.
+/// <p><hr>
+/// @skinning_v18 **[Infolabel Updated]** \link PVR_CanRecordPlayingChannel `PVR.CanRecordPlayingChannel`\endlink replaces
+/// the old `Player.CanRecord` infolabel.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.IsRecordingPlayingChannel`</b>,
/// \anchor PVR_IsRecordingPlayingChannel
/// _boolean_,
-/// Returns true if PVR is currently playing a channel and if this channel is currently recorded.
+/// @return **True** if PVR is currently playing a channel and if this channel is currently recorded.
+/// <p><hr>
+/// @skinning_v18 **[Infolabel Updated]** \link PVR_IsRecordingPlayingChannel `PVR.IsRecordingPlayingChannel`\endlink replaces
+/// the old `Player.Recording` infolabel.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.TimeshiftProgressPlayPos`</b>,
/// \anchor PVR_TimeshiftProgressPlayPos
/// _integer_,
-/// Returns the percentage of the current play position within the PVR timeshift progress.
+/// @return The percentage of the current play position within the PVR timeshift progress.
+/// <p><hr>
+/// @skinning_v18 **[New Infolabel]** \link PVR_TimeshiftProgressPlayPos `PVR.TimeshiftProgressPlayPos`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`PVR.TimeshiftProgressEpgStart`</b>,
/// \anchor PVR_TimeshiftProgressEpgStart
/// _integer_,
-/// Returns the percentage of the start of the currently playing epg event within the PVR timeshift progress.
+/// @return The percentage of the start of the currently playing epg event within the PVR timeshift progress.
+/// <p><hr>
+/// @skinning_v18 **[New Infolabel]** \link PVR_TimeshiftProgressEpgStart `PVR.TimeshiftProgressEpgStart`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`PVR.TimeshiftProgressEpgEnd`</b>,
/// \anchor PVR_TimeshiftProgressEpgEnd
/// _integer_,
-/// Returns the percentage of the end of the currently playing epg event within the PVR timeshift progress.
+/// @return The percentage of the end of the currently playing epg event within the PVR timeshift progress.
+/// <p><hr>
+/// @skinning_v18 **[New Infolabel]** \link PVR_TimeshiftProgressEpgEnd `PVR.TimeshiftProgressEpgEnd`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`PVR.TimeshiftProgressBufferStart`</b>,
/// \anchor PVR_TimeshiftProgressBufferStart
/// _integer_,
-/// Returns the percentage of the start of the timeshift buffer within the PVR timeshift progress.
+/// @return The percentage of the start of the timeshift buffer within the PVR timeshift progress.
+/// <p><hr>
+/// @skinning_v18 **[New Infolabel]** \link PVR_TimeshiftProgressBufferStart `PVR.TimeshiftProgressBufferStart`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`PVR.TimeshiftProgressBufferEnd`</b>,
/// \anchor PVR_TimeshiftProgressBufferEnd
/// _integer_,
-/// Returns the percentage of the end of the timeshift buffer within the PVR timeshift progress.
+/// @return The percentage of the end of the timeshift buffer within the PVR timeshift progress.
+/// <p><hr>
+/// @skinning_v18 **[New Infolabel]** \link PVR_TimeshiftProgressBufferEnd `PVR.TimeshiftProgressBufferEnd`\endlink
+/// <p>
/// }
-/// \table_end
-///
-/// -----------------------------------------------------------------------------
-/// @}
+///
const infomap pvr[] = {{ "isrecording", PVR_IS_RECORDING },
{ "hastimer", PVR_HAS_TIMER },
{ "hastvchannels", PVR_HAS_TV_CHANNELS },
@@ -4724,200 +6772,228 @@ const infomap pvr[] = {{ "isrecording", PVR_IS_RECORDING
{ "timeshiftprogressbufferstart", PVR_TIMESHIFT_PROGRESS_BUFFER_START },
{ "timeshiftprogressbufferend", PVR_TIMESHIFT_PROGRESS_BUFFER_END }};
-/// \page modules__General__List_of_gui_access
-/// \section modules__General__List_of_gui_access_PvrTimes PvrTimes
-/// @{
-/// \table_start
-/// \table_h3{ Labels, Type, Description }
+/// \page modules__infolabels_boolean_conditions
/// \table_row3{ <b>`PVR.EpgEventIcon`</b>,
/// \anchor PVR_EpgEventIcon
/// _string_,
-/// Returns the icon of the currently playing epg event, if any.
+/// @return The icon of the currently playing epg event\, if any.
+/// <p><hr>
+/// @skinning_v18 **[New Infolabel]** \link PVR_EpgEventIcon `PVR_EpgEventIcon`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`PVR.EpgEventDuration`</b>,
/// \anchor PVR_EpgEventDuration
/// _string_,
-/// Returns the duration of the currently playing epg event in the
-/// format hh:mm:ss. hh: will be omitted if hours value is zero.
+/// @return The duration of the currently playing epg event in the
+/// format <b>hh:mm:ss</b>.
+/// @note <b>hh:</b> will be omitted if hours value is zero.
+/// <p><hr>
+/// @skinning_v18 **[Infolabel Updated]** \link PVR_EpgEventDuration `PVR.EpgEventDuration`\endlink replaces
+/// the old `PVR.Duration` infolabel.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.EpgEventDuration(format)`</b>,
/// \anchor PVR_EpgEventDuration_format
/// _string_,
-/// Returns the duration of the currently playing epg event in different formats:
-/// Hours (hh)\, minutes (mm) or seconds (ss).
-/// Also supported: (hh:mm)\, (mm:ss)\, (hh:mm:ss)\, (h:mm:ss).
-/// Added with Leia: (secs)\, (mins)\, (hours) for total time values and (m).
-/// Example: 3661 seconds => h=1\, hh=01\, m=1\, mm=01\, ss=01\, hours=1\, mins=61\, secs=3661
+/// @return The duration of the currently playing EPG event in different formats.
+/// @param format [opt] The format of the return time value.
+/// See \ref TIME_FORMAT for the list of possible values.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.EpgEventElapsedTime`</b>,
/// \anchor PVR_EpgEventElapsedTime
/// _string_,
-/// Returns the time of the current position of the currently playing epg event in the
-/// format hh:mm:ss. hh: will be omitted if hours value is zero.
+/// @return the time of the current position of the currently playing epg event in the
+/// format <b>hh:mm:ss</b>.
+/// @note <b>hh:</b> will be omitted if hours value is zero.
+/// <p><hr>
+/// @skinning_v18 **[Infolabel Updated]** \link PVR_EpgEventElapsedTime `PVR.EpgEventElapsedTime`\endlink replaces
+/// the old `PVR.Time` infolabel.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.EpgEventElapsedTime(format)`</b>,
/// \anchor PVR_EpgEventElapsedTime_format
/// _string_,
-/// Returns the time of the current position of the currently playing epg event in different formats:
-/// Hours (hh)\, minutes (mm) or seconds (ss).
-/// Also supported: (hh:mm)\, (mm:ss)\, (hh:mm:ss)\, (h:mm:ss).
-/// Added with Leia: (secs)\, (mins)\, (hours) for total time values and (m).
-/// Example: 3661 seconds => h=1\, hh=01\, m=1\, mm=01\, ss=01\, hours=1\, mins=61\, secs=3661
+/// @return The time of the current position of the currently playing epg event in different formats.
+/// @param format [opt] The format of the return time value.
+/// See \ref TIME_FORMAT for the list of possible values.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.EpgEventRemainingTime`</b>,
/// \anchor PVR_EpgEventRemainingTime
/// _string_,
-/// Returns the remaining time for currently playing epg event in the
-/// format hh:mm:ss. hh: will be omitted if hours value is zero.
+/// @return The remaining time for currently playing epg event in the
+/// format <b>hh:mm:ss</b>.
+/// @note <b>hh:</b> will be omitted if hours value is zero.
+/// <p><hr>
+/// @skinning_v18 **[New Infolabel]** \link PVR_EpgEventRemainingTime `PVR.EpgEventRemainingTime`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`PVR.EpgEventRemainingTime(format)`</b>,
/// \anchor PVR_EpgEventRemainingTime_format
/// _string_,
-/// Returns the remaining time for currently playing epg event in different formats:
-/// Hours (hh)\, minutes (mm) or seconds (ss).
-/// Also supported: (hh:mm)\, (mm:ss)\, (hh:mm:ss)\, (h:mm:ss).
-/// Added with Leia: (secs)\, (mins)\, (hours) for total time values and (m).
-/// Example: 3661 seconds => h=1\, hh=01\, m=1\, mm=01\, ss=01\, hours=1\, mins=61\, secs=3661
+/// @return The remaining time for currently playing epg event in different formats.
+/// @param format [opt] The format of the return time value.
+/// See \ref TIME_FORMAT for the list of possible values.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.EpgEventSeekTime`</b>,
/// \anchor PVR_EpgEventSeekTime
/// _string_,
-/// Returns the time the user is seeking within the currently playing epg event in the
-/// format hh:mm:ss. hh: will be omitted if hours value is zero.
+/// @return The time the user is seeking within the currently playing epg event in the
+/// format <b>hh:mm:ss</b>.
+/// @note <b>hh:</b> will be omitted if hours value is zero.
+/// <p><hr>
+/// @skinning_v18 **[New Infolabel]** \link PVR_EpgEventSeekTime `PVR.EpgEventSeekTime`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`PVR.EpgEventSeekTime(format)`</b>,
/// \anchor PVR_EpgEventSeekTime_format
/// _string_,
-/// Returns the time the user is seeking within the currently playing epg event in different formats:
-/// Hours (hh)\, minutes (mm) or seconds (ss). When 12 hour clock is used
-/// (xx) will return AM/PM. Also supported: (hh:mm)\, (mm:ss)\, (hh:mm:ss)\, (h:mm:ss).
-/// Added with Leia: (secs)\, (mins)\, (hours) for total time values and (m).
-/// Example: 3661 seconds => h=1\, hh=01\, m=1\, mm=01\, ss=01\, hours=1\, mins=61\, secs=3661
+/// @return The time the user is seeking within the currently playing epg event in different formats.
+/// @param format [opt] The format of the return time value.
+/// See \ref TIME_FORMAT for the list of possible values.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.EpgEventFinishTime`</b>,
/// \anchor PVR_EpgEventFinishTime
/// _string_,
-/// Returns the time the currently playing epg event will end in the
-/// format hh:mm:ss. hh: will be omitted if hours value is zero.
+/// @return The time the currently playing epg event will end in the
+/// format <b>hh:mm:ss</b>.
+/// @note <b>hh:</b> will be omitted if hours value is zero.
+/// <p><hr>
+/// @skinning_v18 **[New Infolabel]** \link PVR_EpgEventFinishTime `PVR.EpgEventFinishTime`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`PVR.EpgEventFinishTime(format)`</b>,
/// \anchor PVR_EpgEventFinishTime_format
/// _string_,
-/// Returns the time the currently playing epg event will end in different formats:
-/// Hours (hh)\, minutes (mm) or seconds (ss). When 12 hour clock is used
-/// (xx) will return AM/PM. Also supported: (hh:mm)\, (mm:ss)\, (hh:mm:ss)\, (h:mm:ss).
-/// Added with Leia: (secs)\, (mins)\, (hours) for total time values and (m).
-/// Example: 3661 seconds => h=1\, hh=01\, m=1\, mm=01\, ss=01\, hours=1\, mins=61\, secs=3661
+/// Returns the time the currently playing epg event will end in different formats.
+/// @param format [opt] The format of the return time value.
+/// See \ref TIME_FORMAT for the list of possible values.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.TimeShiftStart`</b>,
/// \anchor PVR_TimeShiftStart
/// _string_,
-/// Returns the start time of the timeshift buffer in the
-/// format hh:mm:ss. hh: will be omitted if hours value is zero.
+/// @return The start time of the timeshift buffer in the
+/// format <b>hh:mm:ss</b>.
+/// @note <b>hh:</b> will be omitted if hours value is zero.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.TimeShiftStart(format)`</b>,
/// \anchor PVR_TimeShiftStart_format
/// _string_,
-/// Returns the start time of the timeshift buffer in different formats:
-/// Hours (hh)\, minutes (mm) or seconds (ss). When 12 hour clock is used
-/// (xx) will return AM/PM. Also supported: (hh:mm)\, (mm:ss)\, (hh:mm:ss)\, (h:mm:ss).
-/// Added with Leia: (secs)\, (mins)\, (hours) for total time values and (m).
-/// Example: 3661 seconds => h=1\, hh=01\, m=1\, mm=01\, ss=01\, hours=1\, mins=61\, secs=3661
+/// Returns the start time of the timeshift buffer in different formats.
+/// @param format [opt] The format of the return time value.
+/// See \ref TIME_FORMAT for the list of possible values.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.TimeShiftEnd`</b>,
/// \anchor PVR_TimeShiftEnd
/// _string_,
-/// Returns the end time of the timeshift buffer in the
-/// format hh:mm:ss. hh: will be omitted if hours value is zero.
+/// @return The end time of the timeshift buffer in the
+/// format <b>hh:mm:ss</b>.
+/// @note <b>hh:</b> will be omitted if hours value is zero.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.TimeShiftEnd(format)`</b>,
/// \anchor PVR_TimeShiftEnd_format
/// _string_,
-/// Returns the end time of the timeshift buffer in different formats:
-/// Hours (hh)\, minutes (mm) or seconds (ss). When 12 hour clock is used
-/// (xx) will return AM/PM. Also supported: (hh:mm)\, (mm:ss)\, (hh:mm:ss)\, (h:mm:ss).
-/// Added with Leia: (secs)\, (mins)\, (hours) for total time values and (m).
-/// Example: 3661 seconds => h=1\, hh=01\, m=1\, mm=01\, ss=01\, hours=1\, mins=61\, secs=3661
+/// @return The end time of the timeshift buffer in different formats.
+/// @param format [opt] The format of the return time value.
+/// See \ref TIME_FORMAT for the list of possible values.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.TimeShiftCur`</b>,
/// \anchor PVR_TimeShiftCur
/// _string_,
-/// Returns the current playback time within the timeshift buffer in the
-/// format hh:mm:ss. hh: will be omitted if hours value is zero.
+/// @return The current playback time within the timeshift buffer in the
+/// format <b>hh:mm:ss</b>.
+/// @note <b>hh:</b> will be omitted if hours value is zero.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.TimeShiftCur(format)`</b>,
/// \anchor PVR_TimeShiftCur_format
/// _string_,
-/// Returns the current playback time within the timeshift buffer in different formats:
-/// Hours (hh)\, minutes (mm) or seconds (ss). When 12 hour clock is used
-/// (xx) will return AM/PM. Also supported: (hh:mm)\, (mm:ss)\, (hh:mm:ss)\, (h:mm:ss).
-/// Added with Leia: (secs)\, (mins)\, (hours) for total time values and (m).
-/// Example: 3661 seconds => h=1\, hh=01\, m=1\, mm=01\, ss=01\, hours=1\, mins=61\, secs=3661
+/// Returns the current playback time within the timeshift buffer in different formats.
+/// @param format [opt] The format of the return time value.
+/// See \ref TIME_FORMAT for the list of possible values.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.TimeShiftOffset`</b>,
/// \anchor PVR_TimeShiftOffset
/// _string_,
-/// Returns the delta of timeshifted time to actual time in the
-/// format hh:mm:ss. hh: will be omitted if hours value is zero.
+/// @return The delta of timeshifted time to actual time in the
+/// format <b>hh:mm:ss</b>.
+/// @note <b>hh:</b> will be omitted if hours value is zero.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.TimeShiftOffset(format)`</b>,
/// \anchor PVR_TimeShiftOffset_format
/// _string_,
-/// Returns the delta of timeshifted time to actual time in different formats:
-/// Hours (hh)\, minutes (mm) or seconds (ss).
-/// Also supported: (hh:mm)\, (mm:ss)\, (hh:mm:ss)\, (h:mm:ss).
-/// Added with Leia: (secs)\, (mins)\, (hours) for total time values and (m).
-/// Example: 3661 seconds => h=1\, hh=01\, m=1\, mm=01\, ss=01\, hours=1\, mins=61\, secs=3661
+/// Returns the delta of timeshifted time to actual time in different formats.
+/// @param format [opt] The format of the return time value.
+/// See \ref TIME_FORMAT for the list of possible values.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.TimeshiftProgressDuration`</b>,
/// \anchor PVR_TimeshiftProgressDuration
/// _string_,
-/// Returns the duration of the PVR timeshift progress in the
-/// format hh:mm:ss. hh: will be omitted if hours value is zero.
+/// @return the duration of the PVR timeshift progress in the
+/// format <b>hh:mm:ss</b>.
+/// @note <b>hh:</b> will be omitted if hours value is zero.
+/// <p><hr>
+/// @skinning_v18 **[New Infolabel]** \link PVR_TimeshiftProgressDuration `PVR.TimeshiftProgressDuration`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`PVR.TimeshiftProgressDuration(format)`</b>,
/// \anchor PVR_TimeshiftProgressDuration_format
/// _string_,
-/// Returns the duration of the PVR timeshift progress in different formats:
-/// Hours (hh)\, minutes (mm) or seconds (ss).
-/// Also supported: (hh:mm)\, (mm:ss)\, (hh:mm:ss)\, (h:mm:ss).
-/// Added with Leia: (secs)\, (mins)\, (hours) for total time values and (m).
-/// Example: 3661 seconds => h=1\, hh=01\, m=1\, mm=01\, ss=01\, hours=1\, mins=61\, secs=3661
+/// @return The duration of the PVR timeshift progress in different formats.
+/// @param format [opt] The format of the return time value.
+/// See \ref TIME_FORMAT for the list of possible values.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.TimeshiftProgressStartTime`</b>,
/// \anchor PVR_TimeshiftProgressStartTime
/// _string_,
-/// Returns the start time of the PVR timeshift progress in the
-/// format hh:mm:ss. hh: will be omitted if hours value is zero.
+/// @return The start time of the PVR timeshift progress in the
+/// format <b>hh:mm:ss</b>.
+/// @note <b>hh:</b> will be omitted if hours value is zero.
+/// <p><hr>
+/// @skinning_v18 **[New Infolabel]** \link PVR_TimeshiftProgressStartTime `PVR.TimeshiftProgressStartTime`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`PVR.TimeshiftProgressStartTime(format)`</b>,
/// \anchor PVR_TimeshiftProgressStartTime_format
/// _string_,
-/// Returns the start time of the PVR timeshift progress in different formats:
-/// Hours (hh)\, minutes (mm) or seconds (ss).
-/// Also supported: (hh:mm)\, (mm:ss)\, (hh:mm:ss)\, (h:mm:ss).
-/// Added with Leia: (secs)\, (mins)\, (hours) for total time values and (m).
-/// Example: 3661 seconds => h=1\, hh=01\, m=1\, mm=01\, ss=01\, hours=1\, mins=61\, secs=3661
+/// @return The start time of the PVR timeshift progress in different formats.
+/// @param format [opt] The format of the return time value.
+/// See \ref TIME_FORMAT for the list of possible values.
+/// <p>
/// }
/// \table_row3{ <b>`PVR.TimeshiftProgressEndTime`</b>,
/// \anchor PVR_TimeshiftProgressEndTime
/// _string_,
-/// Returns the end time of the PVR timeshift progress in the
-/// format hh:mm:ss. hh: will be omitted if hours value is zero.
+/// @return The end time of the PVR timeshift progress in the
+/// format <b>hh:mm:ss</b>.
+/// @note hh: will be omitted if hours value is zero.
+/// <p><hr>
+/// @skinning_v18 **[New Infolabel]** \link PVR_TimeshiftProgressEndTime `PVR.TimeshiftProgressEndTime`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`PVR.TimeshiftProgressEndTime(format)`</b>,
/// \anchor PVR_TimeshiftProgressEndTime_format
/// _string_,
-/// Returns the end time of the PVR timeshift progress in different formats:
-/// Hours (hh)\, minutes (mm) or seconds (ss).
-/// Also supported: (hh:mm)\, (mm:ss)\, (hh:mm:ss)\, (h:mm:ss).
-/// Added with Leia: (secs)\, (mins)\, (hours) for total time values and (m).
-/// Example: 3661 seconds => h=1\, hh=01\, m=1\, mm=01\, ss=01\, hours=1\, mins=61\, secs=3661
+/// @return The end time of the PVR timeshift progress in different formats.
+/// @param format [opt] The format of the return time value.
+/// See \ref TIME_FORMAT for the list of possible values.
+/// <p>
/// }
/// \table_end
///
/// -----------------------------------------------------------------------------
-/// @}
const infomap pvr_times[] = {{ "epgeventicon", PVR_EPG_EVENT_ICON },
{ "epgeventduration", PVR_EPG_EVENT_DURATION },
{ "epgeventelapsedtime", PVR_EPG_EVENT_ELAPSED_TIME },
@@ -4932,105 +7008,150 @@ const infomap pvr_times[] = {{ "epgeventicon", PVR_EPG_EVENT_ICON
{ "timeshiftprogressstarttime", PVR_TIMESHIFT_PROGRESS_START_TIME },
{ "timeshiftprogressendtime", PVR_TIMESHIFT_PROGRESS_END_TIME }};
-/// \page modules__General__List_of_gui_access
-/// \section modules__General__List_of_gui_access_RDS Radio RDS
-/// \note Only be supported on PVR Radio where the related add-on client can
-/// bring it.
-/// @{
+/// \page modules__infolabels_boolean_conditions
+/// \subsection modules__infolabels_boolean_conditions_RDS RDS
+/// @note Only supported if both the PVR backend and the Kodi client support RDS.
+///
/// \table_start
/// \table_h3{ Labels, Type, Description }
/// \table_row3{ <b>`RDS.HasRds`</b>,
/// \anchor RDS_HasRds
/// _boolean_,
-/// Returns true if RDS is present
+/// @return **True** if RDS is present.
+/// <p><hr>
+/// @skinning_v16 **[New Boolean Condition]** \link RDS_HasRds `RDS.HasRds`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.HasRadioText`</b>,
/// \anchor RDS_HasRadioText
/// _boolean_,
-/// Returns true if RDS contains also Radiotext
+/// @return **True** if RDS contains also Radiotext.
+/// <p><hr>
+/// @skinning_v16 **[New Boolean Condition]** \link RDS_HasRadioText `RDS.HasRadioText`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.HasRadioTextPlus`</b>,
/// \anchor RDS_HasRadioTextPlus
/// _boolean_,
-/// Returns true if RDS with Radiotext contains also the plus information
+/// @return **True** if RDS with Radiotext contains also the plus information.
+/// <p><hr>
+/// @skinning_v16 **[New Boolean Condition]** \link RDS_HasRadioTextPlus `RDS.HasRadioTextPlus`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.HasHotline`</b>,
/// \anchor RDS_HasHotline
/// _boolean_,
-/// Returns true if a hotline phone number is present\n
-/// (Only be available on RadiotextPlus)
+/// @return **True** if a hotline phone number is present.
+/// @note Only available on RadiotextPlus
+/// <p><hr>
+/// @skinning_v16 **[New Boolean Condition]** \link RDS_HasHotline `RDS.HasHotline`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.HasStudio`</b>,
/// \anchor RDS_HasStudio
/// _boolean_,
-/// Returns true if a studio name is present\n
-/// (Only be available on RadiotextPlus)
+/// @return **True** if a studio name is present.
+/// @note Only available on RadiotextPlus
+/// <p><hr>
+/// @skinning_v16 **[New Boolean Condition]** \link RDS_HasStudio `RDS.HasStudio`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.AudioLanguage`</b>,
/// \anchor RDS_AudioLanguage
/// _string_,
-/// The from RDS reported audio language of channel
+/// @return The RDS reported audio language of the channel.
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_AudioLanguage `RDS.AudioLanguage`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.ChannelCountry`</b>,
/// \anchor RDS_ChannelCountry
/// _string_,
-/// Country where the radio channel is sended
+/// @return The country where the radio channel is broadcasted.
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_ChannelCountry `RDS.ChannelCountry`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.GetLine(number)`</b>,
/// \anchor RDS_GetLine
/// _string_,
-/// Returns the last sended RDS text messages on given number\, 0 is the
+/// @return The last sent RDS text messages on given number.
+/// @param number - given number for RDS\, 0 is the
/// last and 4 rows are supported (0-3)
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_GetLine `RDS.GetLine(number)`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.Title`</b>,
/// \anchor RDS_Title
/// _string_,
-/// Title of item; e.g. track title of an album\n
-/// (Only be available on RadiotextPlus)
+/// @return The title of item; e.g. track title of an album.
+/// @note Only available on RadiotextPlus
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_Title `RDS.Title`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.Artist`</b>,
/// \anchor RDS_Artist
/// _string_,
-/// A person or band/collective generally considered responsible for the work\n
-/// (Only be available on RadiotextPlus)
+/// @return A person or band/collective generally considered responsible for the work.
+/// @note Only available on RadiotextPlus
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_Artist `RDS.Artist`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.Band`</b>,
/// \anchor RDS_Band
/// _string_,
-/// Band/orchestra/accompaniment/musician\n
-/// (Only be available on RadiotextPlus)
+/// @return The band/orchestra/musician.
+/// @note Only available on RadiotextPlus
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_Band `RDS.Band`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.Composer`</b>,
/// \anchor RDS_Composer
/// _string_,
-/// Name of the original composer/author\n
-/// (Only be available on RadiotextPlus)
+/// @return The name of the original composer/author.
+/// @note Only available on RadiotextPlus
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_Composer `RDS.Composer`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.Conductor`</b>,
/// \anchor RDS_Conductor
/// _string_,
-/// The artist(s) who performed the work. In classical music this would be
-/// the conductor\n
-/// (Only be available on RadiotextPlus)
+/// @return The artist(s) who performed the work. In classical music this would be
+/// the conductor.
+/// @note Only available on RadiotextPlus
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_Conductor `RDS.Conductor`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.Album`</b>,
/// \anchor RDS_Album
/// _string_,
-/// The collection name to which this track belongs\n
-/// (Only be available on RadiotextPlus)
+/// @return The album of the song.
+/// @note Only available on RadiotextPlus
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_Album `RDS.Album`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.TrackNumber`</b>,
/// \anchor RDS_TrackNumber
/// _string_,
-/// The track number of the item on the album on which it was originally
-/// released.\n
-/// (Only be available on RadiotextPlus)
+/// @return The track number of the item on the album on which it was originally
+/// released.
+/// @note Only be available on RadiotextPlus
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_TrackNumber `RDS.TrackNumber`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.RadioStyle`</b>,
/// \anchor RDS_RadioStyle
/// _string_,
-/// The from radio channel used style of currently played part\, is always
-/// updated on changed\, e.g "popmusic" to "news" or "weather"...
+/// @return The style of current played radio channel\, it is always
+/// updated once the style changes\, e.g "popmusic" to "news" or "weather"...
/// | RDS | RBDS |
/// |:------------------------|:------------------------|
/// | none | none |
@@ -5067,187 +7188,276 @@ const infomap pvr_times[] = {{ "epgeventicon", PVR_EPG_EVENT_ICON
/// | alarm-alarm | alarm-alarm |
/// @note "alarm-alarm" is normally not used from radio stations\, is thought
/// to inform about horrible messages who are needed asap to all people.
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_RadioStyle `RDS.RadioStyle`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.Comment`</b>,
/// \anchor RDS_Comment
/// _string_,
-/// Radio station comment string if available\n
-/// (Only be available on RadiotextPlus)
+/// @return The radio station comment string if available.
+/// @note Only available on RadiotextPlus)
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_Comment `RDS.Comment`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.InfoNews`</b>,
/// \anchor RDS_InfoNews
/// _string_,
-/// Message / headline (if available)\n
-/// (Only be available on RadiotextPlus)
+/// @return The message / headline (if available).
+/// @note Only available on RadiotextPlus
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_InfoNews `RDS.InfoNews`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.InfoNewsLocal`</b>,
/// \anchor RDS_InfoNewsLocal
/// _string_,
-/// Local information news sended from radio channel (if available)\n
-/// (Only be available on RadiotextPlus)
+/// @return The local information news sended from radio channel (if available).
+/// @note Only available on RadiotextPlus
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_InfoNewsLocal `RDS.InfoNewsLocal`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.InfoStock`</b>,
/// \anchor RDS_InfoStock
/// _string_,
-/// Quote information; either as one part or as several distinct parts:
-/// "name 99latest value 99change 99high 99low 99volume" (if available)\n
-/// (Only be available on RadiotextPlus)
+/// @return The stock information; either as one part or as several distinct parts:
+/// "name 99latest value 99change 99high 99low 99volume" (if available).
+/// @note Only available on RadiotextPlus
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_InfoStock `RDS.InfoStock`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.InfoStockSize`</b>,
/// \anchor RDS_InfoStockSize
/// _string_,
-/// Number of rows present in stock information\n
-/// (Only be available on RadiotextPlus)
+/// @return The number of rows present in stock information.
+/// @note Only available on RadiotextPlus
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_InfoStockSize `RDS.InfoStockSize`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.InfoSport`</b>,
/// \anchor RDS_InfoSport
/// _string_,
-/// Result of a game; either as one part or as several distinct parts:
-/// "match 99result"\, e.g. "Bayern München : Borussia 995:5" (if available)\n
-/// (Only be available on RadiotextPlus)
+/// @return The result of a match; either as one part or as several distinct parts:
+/// "match 99result"\, e.g. "Bayern München : Borussia 995:5" (if available).
+/// @note Only available on RadiotextPlus
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_InfoSport `RDS.InfoSport`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.InfoSportSize`</b>,
/// \anchor RDS_InfoSportSize
/// _string_,
-/// Number of rows present in sport information\n
-/// (Only be available on RadiotextPlus)
+/// @return The number of rows present in sport information.
+/// @note Only available on RadiotextPlus
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_InfoSportSize `RDS.InfoSportSize`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.InfoLottery`</b>,
/// \anchor RDS_InfoLottery
/// _string_,
-/// Raffle / lottery: "key word 99values" (if available)\n
-/// (Only be available on RadiotextPlus)
+/// @return The raffle / lottery: "key word 99values" (if available).
+/// @note Only available on RadiotextPlus
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_InfoLottery `RDS.InfoLottery`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.InfoLotterySize`</b>,
/// \anchor RDS_InfoLotterySize
/// _string_,
-/// Number of rows present in lottery information\n
-/// (Only be available on RadiotextPlus)
+/// @return The number of rows present in lottery information.
+/// @note Only available on RadiotextPlus
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_InfoLotterySize `RDS.InfoLotterySize`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.InfoWeather`</b>,
/// \anchor RDS_InfoWeather
/// _string_,
-/// Weather informations sended from radio channel (if available)\n
-/// (Only be available on RadiotextPlus)
+/// @return The weather information (if available).
+/// @note Only available on RadiotextPlus
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_InfoWeather `RDS.InfoWeather`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.InfoWeatherSize`</b>,
/// \anchor RDS_InfoWeatherSize
/// _string_,
-/// Number of rows present in weather information\n
-/// (Only be available on RadiotextPlus)
+/// @return The number of rows present in weather information.
+/// @note Only available on RadiotextPlus
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_InfoWeatherSize `RDS.InfoWeatherSize`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.InfoCinema`</b>,
/// \anchor RDS_InfoCinema
/// _string_,
-/// Information about movies in cinema (if available)\n
-/// (Only be available on RadiotextPlus)
+/// @return The information about movies in cinema (if available).
+/// @note Only available on RadiotextPlus
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_InfoCinema `RDS.InfoCinema`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.InfoCinemaSize`</b>,
/// \anchor RDS_InfoCinemaSize
/// _string_,
-/// Number of rows present in cinema information\n
-/// (Only be available on RadiotextPlus)
+/// @return The number of rows present in cinema information.
+/// @note Only available on RadiotextPlus
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_InfoCinemaSize `RDS.InfoCinemaSize`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.InfoHoroscope`</b>,
/// \anchor RDS_InfoHoroscope
/// _string_,
-/// Horoscope; either as one part or as two distinct parts:
-/// "key word 99text"\, e.g. "sign of the zodiac 99blablabla" (if available)\n
-/// (Only be available on RadiotextPlus)
+/// @return The horoscope; either as one part or as two distinct parts:
+/// "key word 99text"\, e.g. "sign of the zodiac 99blablabla" (if available).
+/// @note Only available on RadiotextPlus
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_InfoHoroscope `RDS.InfoHoroscope`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.InfoHoroscopeSize`</b>,
/// \anchor RDS_InfoHoroscopeSize
/// _string_,
-/// Number of rows present in horoscope information\n
-/// (Only be available on RadiotextPlus)
+/// @return The Number of rows present in horoscope information.
+/// @note Only available on RadiotextPlus
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_InfoHoroscopeSize `RDS.InfoHoroscopeSize`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.InfoOther`</b>,
/// \anchor RDS_InfoOther
/// _string_,
-/// Other information\, not especially specified: "key word 99info" (if available)\n
-/// (Only be available on RadiotextPlus)
+/// @return Other information\, not especially specified: "key word 99info" (if available).
+/// @note Only available on RadiotextPlus
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_InfoOther `RDS.InfoOther`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.InfoOtherSize`</b>,
/// \anchor RDS_InfoOtherSize
/// _string_,
-/// Number of rows present with other informations\n
-/// (Only be available on RadiotextPlus)
+/// @return The number of rows present with other information.
+/// @note Only available on RadiotextPlus
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_InfoOtherSize `RDS.InfoOtherSize`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.ProgStation`</b>,
/// \anchor RDS_ProgStation
/// _string_,
-/// Name of the radio channel
-/// @note becomes also be set from epg if from RDS not available
+/// @return The name of the radio channel.
+/// @note becomes also set from epg if it is not available from RDS
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_ProgStation `RDS.ProgStation`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.ProgNow`</b>,
/// \anchor RDS_ProgNow
/// _string_,
-/// Now played program name
+/// @return The now playing program name.
/// @note becomes also be set from epg if from RDS not available
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_ProgNow `RDS.ProgNow`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.ProgNext`</b>,
/// \anchor RDS_ProgNext
/// _string_,
-/// Next played program name (if available)
+/// @return The next played program name (if available).
/// @note becomes also be set from epg if from RDS not available
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_ProgNext `RDS.ProgNext`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.ProgHost`</b>,
/// \anchor RDS_ProgHost
/// _string_,
-/// Name of the host of the radio show
+/// @return The name of the host of the radio show.
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_ProgHost `RDS.ProgHost`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.ProgEditStaff`</b>,
/// \anchor RDS_ProgEditStaff
/// _string_,
-/// Name of the editorial staff; e.g. name of editorial journalist\n
-/// (Only be available on RadiotextPlus)
+/// @return The name of the editorial staff; e.g. name of editorial journalist.
+/// @note Only available on RadiotextPlus
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_ProgEditStaff `RDS.ProgEditStaff`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.ProgHomepage`</b>,
/// \anchor RDS_ProgHomepage
/// _string_,
-/// Link to radio station homepage\n
-/// (Only be available on RadiotextPlus)
+/// @return The Link to radio station homepage
+/// @note Only available on RadiotextPlus
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_ProgHomepage `RDS.ProgHomepage`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.ProgStyle`</b>,
/// \anchor RDS_ProgStyle
/// _string_,
-/// Human readable string about radiostyle defined from RDS or RBDS
+/// @return A human readable string about radiostyle defined from RDS or RBDS.
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_ProgStyle `RDS.ProgStyle`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.PhoneHotline`</b>,
/// \anchor RDS_PhoneHotline
/// _string_,
-/// The telephone number of the radio station's hotline\n
-/// (Only be available on RadiotextPlus)
+/// @return The telephone number of the radio station's hotline.
+/// @note Only available on RadiotextPlus
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_PhoneHotline `RDS.PhoneHotline`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.PhoneStudio`</b>,
/// \anchor RDS_PhoneStudio
/// _string_,
-/// The telephone number of the radio station's studio\n
-/// (Only be available on RadiotextPlus)
+/// @return The telephone number of the radio station's studio.
+/// @note Only available on RadiotextPlus
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_PhoneStudio `RDS.PhoneStudio`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.SmsStudio`</b>,
/// \anchor RDS_SmsStudio
/// _string_,
-/// The sms number of the radio stations studio (to send directly a sms to
-/// the studio) (if available)\n
-/// (Only be available on RadiotextPlus)
+/// @return The sms number of the radio stations studio (to send directly a sms to
+/// the studio) (if available).
+/// @note Only available on RadiotextPlus
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_SmsStudio `RDS.SmsStudio`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.EmailHotline`</b>,
/// \anchor RDS_EmailHotline
/// _string_,
-/// The email address of the radio stations hotline (if available)\n
-/// (Only be available on RadiotextPlus)
+/// @return The email address of the radio stations hotline (if available).
+/// @note Only available on RadiotextPlus
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_EmailHotline `RDS.EmailHotline`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`RDS.EmailStudio`</b>,
/// \anchor RDS_EmailStudio
/// _string_,
-/// The email address of the radio stations studio (if available)\n
-/// (Only be available on RadiotextPlus)
+/// @return The email address of the radio station's studio (if available).
+/// @note Only available on RadiotextPlus
+/// <p><hr>
+/// @skinning_v16 **[New Infolabel]** \link RDS_EmailStudio `RDS.EmailStudio`\endlink
+/// <p>
/// }
/// \table_end
///
/// -----------------------------------------------------------------------------
-/// @}
const infomap rds[] = {{ "hasrds", RDS_HAS_RDS },
{ "hasradiotext", RDS_HAS_RADIOTEXT },
{ "hasradiotextplus", RDS_HAS_RADIOTEXT_PLUS },
@@ -5294,428 +7504,596 @@ const infomap rds[] = {{ "hasrds", RDS_HAS_RDS },
{ "hashotline", RDS_HAS_HOTLINE_DATA },
{ "hasstudio", RDS_HAS_STUDIO_DATA }};
-/// \page modules__General__List_of_gui_access
-/// \section modules__General__List_of_gui_access_slideshow Slideshow
-/// @{
+/// \page modules__infolabels_boolean_conditions
+/// \subsection modules__infolabels_boolean_conditions_slideshow Slideshow
/// \table_start
/// \table_h3{ Labels, Type, Description }
/// \table_row3{ <b>`Slideshow.IsActive`</b>,
/// \anchor Slideshow_IsActive
/// _boolean_,
-/// Returns true if the picture slideshow is running
+/// @return **True** if the picture slideshow is running.
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.IsPaused`</b>,
/// \anchor Slideshow_IsPaused
/// _boolean_,
-/// Returns true if the picture slideshow is paused
+/// @return **True** if the picture slideshow is paused.
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.IsRandom`</b>,
/// \anchor Slideshow_IsRandom
/// _boolean_,
-/// Returns true if the picture slideshow is in random mode
+/// @return **True** if the picture slideshow is in random mode.
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.IsVideo`</b>,
/// \anchor Slideshow_IsVideo
/// _boolean_,
-/// Returns true if the picture slideshow is playing a video
+/// @return **True** if the picture slideshow is playing a video.
+/// <p><hr>
+/// @skinning_v13 **[New Boolean Condition]** \link Slideshow_IsVideo `Slideshow.IsVideo`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.Altitude`</b>,
/// \anchor Slideshow_Altitude
/// _string_,
-/// Shows the altitude in meters where the current picture was taken. This
-/// is the value of the EXIF GPSInfo.GPSAltitude tag.
+/// @return The altitude in meters where the current picture was taken.
+/// @note This is the value of the EXIF GPSInfo.GPSAltitude tag.
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.Aperture`</b>,
/// \anchor Slideshow_Aperture
/// _string_,
-/// Shows the F-stop used to take the current picture. This is the value of
-/// the EXIF FNumber tag (hex code 0x829D).
+/// @return The F-stop used to take the current picture.
+/// @note This is the value of the EXIF FNumber tag (hex code 0x829D).
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.Author`</b>,
/// \anchor Slideshow_Author
/// _string_,
-/// Shows the name of the person involved in writing about the current
-/// picture. This is the value of the IPTC Writer tag (hex code 0x7A).
+/// @return The name of the person involved in writing about the current
+/// picture.
+/// @note This is the value of the IPTC Writer tag (hex code 0x7A).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link Slideshow_Author `Slideshow.Author`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.Byline`</b>,
/// \anchor Slideshow_Byline
/// _string_,
-/// Shows the name of the person who created the current picture. This is
-/// the value of the IPTC Byline tag (hex code 0x50).
+/// @return The name of the person who created the current picture.
+/// @note This is the value of the IPTC Byline tag (hex code 0x50).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link Slideshow_Byline `Slideshow.Byline`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.BylineTitle`</b>,
/// \anchor Slideshow_BylineTitle
/// _string_,
-/// Shows the title of the person who created the current picture. This is
-/// the value of the IPTC BylineTitle tag (hex code 0x55).
+/// @return The title of the person who created the current picture.
+/// @note This is the value of the IPTC BylineTitle tag (hex code 0x55).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link Slideshow_BylineTitle `Slideshow.BylineTitle`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.CameraMake`</b>,
/// \anchor Slideshow_CameraMake
/// _string_,
-/// Shows the manufacturer of the camera used to take the current picture.
-/// This is the value of the EXIF Make tag (hex code 0x010F).
+/// @return The manufacturer of the camera used to take the current picture.
+/// @note This is the value of the EXIF Make tag (hex code 0x010F).
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.CameraModel`</b>,
/// \anchor Slideshow_CameraModel
/// _string_,
-/// Shows the manufacturer's model name or number of the camera used to take
-/// the current picture. This is the value of the EXIF Model tag (hex code
-/// 0x0110).
+/// @return The manufacturer's model name or number of the camera used to take
+/// the current picture.
+/// @note This is the value of the EXIF Model tag (hex code 0x0110).
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.Caption`</b>,
/// \anchor Slideshow_Caption
/// _string_,
-/// Shows a description of the current picture. This is the value of the
-/// IPTC Caption tag (hex code 0x78).
+/// @return A description of the current picture.
+/// @note This is the value of the IPTC Caption tag (hex code 0x78).
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.Category`</b>,
/// \anchor Slideshow_Category
/// _string_,
-/// Shows the subject of the current picture as a category code. This is the
-/// value of the IPTC Category tag (hex code 0x0F).
+/// @return The subject of the current picture as a category code.
+/// @note This is the value of the IPTC Category tag (hex code 0x0F).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link Slideshow_Category `Slideshow.Category`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.CCDWidth`</b>,
/// \anchor Slideshow_CCDWidth
/// _string_,
-/// Shows the width of the CCD in the camera used to take the current
-/// picture. This is calculated from three EXIF tags (0xA002 * 0xA210 / 0xA20e).
+/// @return The width of the CCD in the camera used to take the current
+/// picture.
+/// @note This is calculated from three EXIF tags (0xA002 * 0xA210 / 0xA20e).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link Slideshow_CCDWidth `Slideshow.CCDWidth`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.City`</b>,
/// \anchor Slideshow_City
/// _string_,
-/// Shows the city where the current picture was taken. This is the value of
-/// the IPTC City tag (hex code 0x5A).
+/// @return The city where the current picture was taken.
+/// @note This is the value of the IPTC City tag (hex code 0x5A).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link Slideshow_City `Slideshow.City`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.Colour`</b>,
/// \anchor Slideshow_Colour
/// _string_,
-/// Shows whether the current picture is "Colour" or "Black and White".
+/// @return the colour of the picture. It can have one of the following values:
+/// - <b>"Colour"</b>
+/// - <b>"Black and White"</b>
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link Slideshow_Colour `Slideshow.Colour`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.CopyrightNotice`</b>,
/// \anchor Slideshow_CopyrightNotice
/// _string_,
-/// Shows the copyright notice of the current picture. This is the value of
-/// the IPTC Copyright tag (hex code 0x74).
+/// @return The copyright notice of the current picture.
+/// @note This is the value of the IPTC Copyright tag (hex code 0x74).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link Slideshow_CopyrightNotice `Slideshow.CopyrightNotice`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.Country`</b>,
/// \anchor Slideshow_Country
/// _string_,
-/// Shows the full name of the country where the current picture was taken.
-/// This is the value of the IPTC CountryName tag (hex code 0x65).
+/// @return The full name of the country where the current picture was taken.
+/// @note This is the value of the IPTC CountryName tag (hex code 0x65).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link Slideshow_Country `Slideshow.Country`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.CountryCode`</b>,
/// \anchor Slideshow_CountryCode
/// _string_,
-/// Shows the country code of the country where the current picture was
-/// taken. This is the value of the IPTC CountryCode tag (hex code 0x64).
+/// @return The country code of the country where the current picture was
+/// taken.
+/// @note This is the value of the IPTC CountryCode tag (hex code 0x64).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link Slideshow_CountryCode `Slideshow.CountryCode`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.Credit`</b>,
/// \anchor Slideshow_Credit
/// _string_,
-/// Shows who provided the current picture. This is the value of the IPTC
-/// Credit tag (hex code 0x6E).
+/// @return Who provided the current picture.
+/// @note This is the value of the IPTC Credit tag (hex code 0x6E).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link Slideshow_Credit `Slideshow.Credit`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.DigitalZoom`</b>,
/// \anchor Slideshow_DigitalZoom
/// _string_,
-/// Shows the digital zoom ratio when the current picture was taken. This is
-/// the value of the EXIF .DigitalZoomRatio tag (hex code 0xA404).
+/// @return The digital zoom ratio when the current picture was taken.
+/// @note This is the value of the EXIF .DigitalZoomRatio tag (hex code 0xA404).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link Slideshow_DigitalZoom `Slideshow.DigitalZoom`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.EXIFComment`</b>,
/// \anchor Slideshow_EXIFComment
/// _string_,
-/// Shows a description of the current picture. This is the value of the
-/// EXIF User Comment tag (hex code 0x9286). This is the same value as
-/// Slideshow.SlideComment.
+/// @return A description of the current picture.
+/// @note This is the value of the EXIF User Comment tag (hex code 0x9286).
+/// This is the same value as \ref Slideshow_SlideComment "Slideshow.SlideComment".
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.EXIFDate`</b>,
/// \anchor Slideshow_EXIFDate
/// _string_,
-/// Shows the localized date of the current picture. The short form of the
-/// date is used. The value of the EXIF DateTimeOriginal tag (hex code
+/// @return The localized date of the current picture. The short form of the
+/// date is used.
+/// @note The value of the EXIF DateTimeOriginal tag (hex code
/// 0x9003) is preferred. If the DateTimeOriginal tag is not found\, the
/// value of DateTimeDigitized (hex code 0x9004) or of DateTime (hex code
/// 0x0132) might be used.
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link Slideshow_EXIFDate `Slideshow.EXIFDate`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.EXIFDescription`</b>,
/// \anchor Slideshow_EXIFDescription
/// _string_,
-/// Shows a short description of the current picture. The SlideComment\,
-/// EXIFComment or Caption values might contain a longer description. This
-/// is the value of the EXIF ImageDescription tag (hex code 0x010E).
+/// @return A short description of the current picture. The SlideComment\,
+/// EXIFComment or Caption values might contain a longer description.
+/// @note This is the value of the EXIF ImageDescription tag (hex code 0x010E).
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.EXIFSoftware`</b>,
/// \anchor Slideshow_EXIFSoftware
/// _string_,
-/// Shows the name and version of the firmware used by the camera that took
-/// the current picture. This is the value of the EXIF Software tag (hex
-/// code 0x0131).
+/// @return The name and version of the firmware used by the camera that took
+/// the current picture.
+/// @note This is the value of the EXIF Software tag (hex code 0x0131).
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.EXIFTime`</b>,
/// \anchor Slideshow_EXIFTime
/// _string_,
-/// Shows the date/timestamp of the current picture. The localized short
-/// form of the date and time is used. The value of the EXIF
-/// DateTimeOriginal tag (hex code 0x9003) is preferred. If the
-/// DateTimeOriginal tag is not found\, the value of DateTimeDigitized (hex
-/// code 0x9004) or of DateTime (hex code 0x0132) might be used.
+/// @return The date/timestamp of the current picture. The localized short
+/// form of the date and time is used.
+/// @note The value of the EXIF DateTimeOriginal tag (hex code 0x9003) is
+/// preferred. If the DateTimeOriginal tag is not found\, the value of
+/// DateTimeDigitized (hex code 0x9004) or of DateTime (hex code 0x0132)
+/// might be used.
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.Exposure`</b>,
/// \anchor Slideshow_Exposure
/// _string_,
-/// Shows the class of the program used by the camera to set exposure when
-/// the current picture was taken. Values include "Manual"\,
-/// "Program (Auto)"\, "Aperture priority (Semi-Auto)"\, "Shutter priority
-/// (semi-auto)"\, etc. This is the value of the EXIF ExposureProgram tag
+/// @return The class of the program used by the camera to set exposure when
+/// the current picture was taken. Values include:
+/// - <b>"Manual"</b>
+/// - <b>"Program (Auto)"</b>
+/// - <b>"Aperture priority (Semi-Auto)"</b>
+/// - <b>"Shutter priority (semi-auto)"</b>
+/// - etc...
+/// @note This is the value of the EXIF ExposureProgram tag
/// (hex code 0x8822).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link Slideshow_Exposure `Slideshow.Exposure`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.ExposureBias`</b>,
/// \anchor Slideshow_ExposureBias
/// _string_,
-/// Shows the exposure bias of the current picture. Typically this is a
-/// number between -99.99 and 99.99. This is the value of the EXIF
-/// ExposureBiasValue tag (hex code 0x9204).
+/// @return The exposure bias of the current picture. Typically this is a
+/// number between -99.99 and 99.99.
+/// @note This is the value of the EXIF ExposureBiasValue tag (hex code 0x9204).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link Slideshow_ExposureBias `Slideshow.ExposureBias`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.ExposureMode`</b>,
/// \anchor Slideshow_ExposureMode
/// _string_,
-/// Shows the exposure mode of the current picture. The possible values are
-/// "Automatic"\, "Manual"\, and "Auto bracketing". This is the value of the
-/// EXIF ExposureMode tag (hex code 0xA402).
+/// @return The exposure mode of the current picture. The possible values are:
+/// - <b>"Automatic"</b>
+/// - <b>"Manual"</b>
+/// - <b>"Auto bracketing"</b>
+/// @note This is the value of the EXIF ExposureMode tag (hex code 0xA402).
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.ExposureTime`</b>,
/// \anchor Slideshow_ExposureTime
/// _string_,
-/// Shows the exposure time of the current picture\, in seconds. This is the
-/// value of the EXIF ExposureTime tag (hex code 0x829A). If the
-/// ExposureTime tag is not found\, the ShutterSpeedValue tag (hex code
+/// @return The exposure time of the current picture\, in seconds.
+/// @note This is the value of the EXIF ExposureTime tag (hex code 0x829A).
+/// If the ExposureTime tag is not found\, the ShutterSpeedValue tag (hex code
/// 0x9201) might be used.
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.Filedate`</b>,
/// \anchor Slideshow_Filedate
/// _string_,
-/// Shows the file date of the current picture
+/// @return The file date of the current picture.
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.Filename`</b>,
/// \anchor Slideshow_Filename
/// _string_,
-/// Shows the file name of the current picture
+/// @return The file name of the current picture.
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.Filesize`</b>,
/// \anchor Slideshow_Filesize
/// _string_,
-/// Shows the file size of the current picture
+/// @return The file size of the current picture.
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.FlashUsed`</b>,
/// \anchor Slideshow_FlashUsed
/// _string_,
-/// Shows the status of flash when the current picture was taken. The value
-/// will be either "Yes" or "No"\, and might include additional information.
-/// This is the value of the EXIF Flash tag (hex code 0x9209).
+/// @return The status of flash when the current picture was taken. The value
+/// will be either <b>"Yes"</b> or <b>"No"</b>\, and might include additional information.
+/// @note This is the value of the EXIF Flash tag (hex code 0x9209).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link Slideshow_FlashUsed `Slideshow.FlashUsed`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.FocalLength`</b>,
/// \anchor Slideshow_FocalLength
/// _string_,
-/// Shows the focal length of the lens\, in mm. This is the value of the EXIF
-/// FocalLength tag (hex code 0x920A).
+/// @return The focal length of the lens\, in mm.
+/// @note This is the value of the EXIF FocalLength tag (hex code 0x920A).
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.FocusDistance`</b>,
/// \anchor Slideshow_FocusDistance
/// _string_,
-/// Shows the distance to the subject\, in meters. This is the value of the
-/// EXIF SubjectDistance tag (hex code 0x9206).
+/// @return The distance to the subject\, in meters.
+/// @note This is the value of the EXIF SubjectDistance tag (hex code 0x9206).
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.Headline`</b>,
/// \anchor Slideshow_Headline
/// _string_,
-/// Shows a synopsis of the contents of the current picture. This is the
-/// value of the IPTC Headline tag (hex code 0x69).
+/// @return A synopsis of the contents of the current picture.
+/// @note This is the value of the IPTC Headline tag (hex code 0x69).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link Slideshow_Headline `Slideshow.Headline`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.ImageType`</b>,
/// \anchor Slideshow_ImageType
/// _string_,
-/// Shows the color components of the current picture. This is the value of
-/// the IPTC ImageType tag (hex code 0x82).
+/// @return The color components of the current picture.
+/// @note This is the value of the IPTC ImageType tag (hex code 0x82).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link Slideshow_ImageType `Slideshow.ImageType`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.IPTCDate`</b>,
/// \anchor Slideshow_IPTCDate
/// _string_,
-/// Shows the date when the intellectual content of the current picture was
-/// created\, rather than when the picture was created. This is the value of
-/// the IPTC DateCreated tag (hex code 0x37).
+/// @return The date when the intellectual content of the current picture was
+/// created\, rather than when the picture was created.
+/// @note This is the value of the IPTC DateCreated tag (hex code 0x37).
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.ISOEquivalence`</b>,
/// \anchor Slideshow_ISOEquivalence
/// _string_,
-/// Shows the ISO speed of the camera when the current picture was taken.
-/// This is the value of the EXIF ISOSpeedRatings tag (hex code 0x8827).
+/// @return The ISO speed of the camera when the current picture was taken.
+/// @note This is the value of the EXIF ISOSpeedRatings tag (hex code 0x8827).
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.Keywords`</b>,
/// \anchor Slideshow_Keywords
/// _string_,
-/// Shows keywords assigned to the current picture. This is the value of the
-/// IPTC Keywords tag (hex code 0x19).
+/// @return The keywords assigned to the current picture.
+/// @note This is the value of the IPTC Keywords tag (hex code 0x19).
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.Latitude`</b>,
/// \anchor Slideshow_Latitude
/// _string_,
-/// Shows the latitude where the current picture was taken (degrees\,
-/// minutes\, seconds North or South). This is the value of the EXIF
-/// GPSInfo.GPSLatitude and GPSInfo.GPSLatitudeRef tags.
+/// @return The latitude where the current picture was taken (degrees\,
+/// minutes\, seconds North or South).
+/// @note This is the value of the EXIF GPSInfo.GPSLatitude and
+/// GPSInfo.GPSLatitudeRef tags.
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.LightSource`</b>,
/// \anchor Slideshow_LightSource
/// _string_,
-/// Shows the kind of light source when the picture was taken. Possible
-/// values include "Daylight"\, "Fluorescent"\, "Incandescent"\, etc. This is
-/// the value of the EXIF LightSource tag (hex code 0x9208).
+/// @return The kind of light source when the picture was taken. Possible
+/// values include:
+/// - <b>"Daylight"</b>
+/// - <b>"Fluorescent"</b>
+/// - <b>"Incandescent"</b>
+/// - etc...
+/// @note This is the value of the EXIF LightSource tag (hex code 0x9208).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link Slideshow_LightSource `Slideshow.LightSource`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.LongEXIFDate`</b>,
/// \anchor Slideshow_LongEXIFDate
/// _string_,
-/// Shows only the localized date of the current picture. The long form of
-/// the date is used. The value of the EXIF DateTimeOriginal tag (hex code
+/// @return Only the localized date of the current picture. The long form of
+/// the date is used.
+/// @note The value of the EXIF DateTimeOriginal tag (hex code
/// 0x9003) is preferred. If the DateTimeOriginal tag is not found\, the
/// value of DateTimeDigitized (hex code 0x9004) or of DateTime (hex code
/// 0x0132) might be used.
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link Slideshow_LongEXIFDate `Slideshow.LongEXIFDate`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.LongEXIFTime`</b>,
/// \anchor Slideshow_LongEXIFTime
/// _string_,
-/// Shows the date/timestamp of the current picture. The localized long form
-/// of the date and time is used. The value of the EXIF DateTimeOriginal tag
+/// @return The date/timestamp of the current picture. The localized long form
+/// of the date and time is used.
+/// @note The value of the EXIF DateTimeOriginal tag
/// (hex code 0x9003) is preferred. if the DateTimeOriginal tag is not found\,
/// the value of DateTimeDigitized (hex code 0x9004) or of DateTime (hex
/// code 0x0132) might be used.
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link Slideshow_LongEXIFTime `Slideshow.LongEXIFTime`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.Longitude`</b>,
/// \anchor Slideshow_Longitude
/// _string_,
-/// Shows the longitude where the current picture was taken (degrees\,
-/// minutes\, seconds East or West). This is the value of the EXIF
-/// GPSInfo.GPSLongitude and GPSInfo.GPSLongitudeRef tags.
+/// @return The longitude where the current picture was taken (degrees\,
+/// minutes\, seconds East or West).
+/// @note This is the value of the EXIF GPSInfo.GPSLongitude and
+/// GPSInfo.GPSLongitudeRef tags.
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.MeteringMode`</b>,
/// \anchor Slideshow_MeteringMode
/// _string_,
-/// Shows the metering mode used when the current picture was taken. The
-/// possible values are "Center weight"\, "Spot"\, or "Matrix". This is the
-/// value of the EXIF MeteringMode tag (hex code 0x9207).
+/// @return The metering mode used when the current picture was taken. The
+/// possible values are:
+/// - <b>"Center weight"</b>
+/// - <b>"Spot"</b>
+/// - <b>"Matrix"</b>
+/// @note This is the value of the EXIF MeteringMode tag (hex code 0x9207).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link Slideshow_MeteringMode `Slideshow.MeteringMode`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.ObjectName`</b>,
/// \anchor Slideshow_ObjectName
/// _string_,
-/// Shows a shorthand reference for the current picture. This is the value
-/// of the IPTC ObjectName tag (hex code 0x05).
+/// @return a shorthand reference for the current picture.
+/// @note This is the value of the IPTC ObjectName tag (hex code 0x05).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link Slideshow_ObjectName `Slideshow.ObjectName`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.Orientation`</b>,
/// \anchor Slideshow_Orientation
/// _string_,
-/// Shows the orientation of the current picture. Possible values are "Top
-/// Left"\, "Top Right"\, "Left Top"\, "Right Bottom"\, etc. This is the value
-/// of the EXIF Orientation tag (hex code 0x0112).
+/// @return The orientation of the current picture. Possible values are:
+/// - <b>"Top Left"</b>
+/// - <b>"Top Right"</b>
+/// - <b>"Left Top"</b>
+/// - <b>"Right Bottom"</b>
+/// - etc...
+/// @note This is the value of the EXIF Orientation tag (hex code 0x0112).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link Slideshow_Orientation `Slideshow.Orientation`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.Path`</b>,
/// \anchor Slideshow_Path
/// _string_,
-/// Shows the file path of the current picture
+/// @return The file path of the current picture.
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.Process`</b>,
/// \anchor Slideshow_Process
/// _string_,
-/// Shows the process used to compress the current picture
+/// @return The process used to compress the current picture.
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link Slideshow_Process `Slideshow.Process`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.ReferenceService`</b>,
/// \anchor Slideshow_ReferenceService
/// _string_,
-/// Shows the Service Identifier of a prior envelope to which the current
-/// picture refers. This is the value of the IPTC ReferenceService tag (hex
-/// code 0x2D).
+/// @return The Service Identifier of a prior envelope to which the current
+/// picture refers.
+/// @note This is the value of the IPTC ReferenceService tag (hex code 0x2D).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link Slideshow_ReferenceService `Slideshow.ReferenceService`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.Resolution`</b>,
/// \anchor Slideshow_Resolution
/// _string_,
-/// Shows the dimensions of the current picture (Width x Height)
+/// @return The dimensions of the current picture (Width x Height)
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.SlideComment`</b>,
/// \anchor Slideshow_SlideComment
/// _string_,
-/// Shows a description of the current picture. This is the value of the
-/// EXIF User Comment tag (hex code 0x9286). This is the same value as
-/// Slideshow.EXIFComment.
+/// @return A description of the current picture.
+/// @note This is the value of the EXIF User Comment tag (hex code 0x9286).
+/// This is the same value as \ref Slideshow_EXIFComment "Slideshow.EXIFComment".
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.SlideIndex`</b>,
/// \anchor Slideshow_SlideIndex
/// _string_,
-/// Shows the slide index of the current picture
+/// @return The slide index of the current picture.
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.Source`</b>,
/// \anchor Slideshow_Source
/// _string_,
-/// Shows the original owner of the current picture. This is the value of
-/// the IPTC Source tag (hex code 0x73).
+/// @return The original owner of the current picture.
+/// @note This is the value of the IPTC Source tag (hex code 0x73).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link Slideshow_Source `Slideshow.Source`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.SpecialInstructions`</b>,
/// \anchor Slideshow_SpecialInstructions
/// _string_,
-/// Shows other editorial instructions concerning the use of the current
-/// picture. This is the value of the IPTC SpecialInstructions tag (hex
-/// code 0x28).
+/// @return Other editorial instructions concerning the use of the current
+/// picture.
+/// @note This is the value of the IPTC SpecialInstructions tag (hex code 0x28).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link Slideshow_SpecialInstructions `Slideshow.SpecialInstructions`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.State`</b>,
/// \anchor Slideshow_State
/// _string_,
-/// Shows the State/Province where the current picture was taken. This is
-/// the value of the IPTC ProvinceState tag (hex code 0x5F).
+/// @return The State/Province where the current picture was taken.
+/// @note This is the value of the IPTC ProvinceState tag (hex code 0x5F).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link Slideshow_State `Slideshow.State`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.Sublocation`</b>,
/// \anchor Slideshow_Sublocation
/// _string_,
-/// Shows the location within a city where the current picture was taken -
-/// might indicate the nearest landmark. This is the value of the IPTC
-/// SubLocation tag (hex code 0x5C).
+/// @return The location within a city where the current picture was taken -
+/// might indicate the nearest landmark.
+/// @note This is the value of the IPTC SubLocation tag (hex code 0x5C).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link Slideshow_Sublocation `Slideshow.Sublocation`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.SupplementalCategories`</b>,
/// \anchor Slideshow_SupplementalCategories
/// _string_,
-/// Shows supplemental category codes to further refine the subject of the
-/// current picture. This is the value of the IPTC SuppCategory tag (hex
+/// @return The supplemental category codes to further refine the subject of the
+/// current picture.
+/// @note This is the value of the IPTC SuppCategory tag (hex
/// code 0x14).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link Slideshow_SupplementalCategories `Slideshow.SupplementalCategories`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.TimeCreated`</b>,
/// \anchor Slideshow_TimeCreated
/// _string_,
-/// Shows the time when the intellectual content of the current picture was
-/// created\, rather than when the picture was created. This is the value of
-/// the IPTC TimeCreated tag (hex code 0x3C).
+/// @return The time when the intellectual content of the current picture was
+/// created\, rather than when the picture was created.
+/// @note This is the value of the IPTC TimeCreated tag (hex code 0x3C).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link Slideshow_TimeCreated `Slideshow.TimeCreated`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.TransmissionReference`</b>,
/// \anchor Slideshow_TransmissionReference
/// _string_,
-/// Shows a code representing the location of original transmission of the
-/// current picture. This is the value of the IPTC TransmissionReference tag
+/// @return A code representing the location of original transmission of the
+/// current picture.
+/// @note This is the value of the IPTC TransmissionReference tag
/// (hex code 0x67).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link Slideshow_TransmissionReference `Slideshow.TransmissionReference`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.Urgency`</b>,
/// \anchor Slideshow_Urgency
/// _string_,
-/// Shows the urgency of the current picture. Values are 1-9. The 1 is most
-/// urgent. Some image management programs use urgency to indicate picture
+/// @return The urgency of the current picture. Values are 1-9. The 1 is most
+/// urgent.
+/// @note Some image management programs use urgency to indicate picture
/// rating\, where urgency 1 is 5 stars and urgency 5 is 1 star. Urgencies
/// 6-9 are not used for rating. This is the value of the IPTC Urgency tag
/// (hex code 0x0A).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link Slideshow_Urgency `Slideshow.Urgency`\endlink
+/// <p>
/// }
/// \table_row3{ <b>`Slideshow.WhiteBalance`</b>,
/// \anchor Slideshow_WhiteBalance
/// _string_,
-/// Shows the white balance mode set when the current picture was taken.
-/// The possible values are "Manual" and "Auto". This is the value of the
-/// EXIF WhiteBalance tag (hex code 0xA403).
+/// @return The white balance mode set when the current picture was taken.
+/// The possible values are:
+/// - <b>"Manual"</b>
+/// - <b>"Auto"</b>
+/// <p>
+/// @note This is the value of the EXIF WhiteBalance tag (hex code 0xA403).
+/// <p><hr>
+/// @skinning_v13 **[New Infolabel]** \link Slideshow_WhiteBalance `Slideshow.WhiteBalance`\endlink
+/// <p>
/// }
/// \table_end
///
/// -----------------------------------------------------------------------------
-/// @}
const infomap slideshow[] = {{ "ispaused", SLIDESHOW_ISPAUSED },
{ "isactive", SLIDESHOW_ISACTIVE },
{ "isvideo", SLIDESHOW_ISVIDEO },
@@ -5782,8 +8160,249 @@ const infomap slideshow[] = {{ "ispaused", SLIDESHOW_ISPAUSED
{ "imagetype", SLIDESHOW_IPTC_IMAGETYPE },
};
+/// \page modules__infolabels_boolean_conditions
+/// \subsection modules__infolabels_boolean_conditions_Library Library
+/// @todo Make this annotate an array of infobools/labels to make it easier to track
+/// \table_start
+/// \table_h3{ Labels, Type, Description }
+/// \table_row3{ <b>`Library.IsScanning`</b>,
+/// \anchor Library_IsScanning
+/// _boolean_,
+/// @return **True** if the library is being scanned.
+/// <p>
+/// }
+/// \table_row3{ <b>`Library.IsScanningVideo`</b>,
+/// \anchor Library_IsScanningVideo
+/// _boolean_,
+/// @return **True** if the video library is being scanned.
+/// <p>
+/// }
+/// \table_row3{ <b>`Library.IsScanningMusic`</b>,
+/// \anchor Library_IsScanningMusic
+/// _boolean_,
+/// @return **True** if the music library is being scanned.
+/// <p>
+/// }
+/// \table_row3{ <b>`Library.HasContent(music)`</b>,
+/// \anchor Library_HasContent_Music
+/// _boolean_,
+/// @return **True** if the library has music content.
+/// <p>
+/// }
+/// \table_row3{ <b>`Library.HasContent(video)`</b>,
+/// \anchor Library_HasContent_Video
+/// _boolean_,
+/// @return **True** if the library has video content.
+/// <p>
+/// }
+/// \table_row3{ <b>`Library.HasContent(movies)`</b>,
+/// \anchor Library_HasContent_Movies
+/// _boolean_,
+/// @return **True** if the library has movies.
+/// <p>
+/// }
+/// \table_row3{ <b>`Library.HasContent(tvshows)`</b>,
+/// \anchor Library_HasContent_TVShows
+/// _boolean_,
+/// @return **True** if the library has tvshows.
+/// <p>
+/// }
+/// \table_row3{ <b>`Library.HasContent(musicvideos)`</b>,
+/// \anchor Library_HasContent_MusicVideos
+/// _boolean_,
+/// @return **True** if the library has music videos.
+/// <p>
+/// }
+/// \table_row3{ <b>`Library.HasContent(moviesets)`</b>,
+/// \anchor Library_HasContent_MovieSets
+/// _boolean_,
+/// @return **True** if the library has movie sets.
+/// <p>
+/// }
+/// \table_row3{ <b>`Library.HasContent(singles)`</b>,
+/// \anchor Library_HasContent_Singles
+/// _boolean_,
+/// @return **True** if the library has singles.
+/// <p>
+/// }
+/// \table_row3{ <b>`Library.HasContent(compilations)`</b>,
+/// \anchor Library_HasContent_Compilations
+/// _boolean_,
+/// @return **True** if the library has compilations.
+/// <p>
+/// }
+/// \table_row3{ <b>`Library.HasContent(Role.Composer)`</b>,
+/// \anchor Library_HasContent_Role_Composer
+/// _boolean_,
+/// @return **True** if there are songs in the library which have composers.
+/// <p><hr>
+/// @skinning_v17 **[New Boolean Condition]** \link Library_HasContent_Role_Composer `Library.HasContent(Role.Composer)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`Library.HasContent(Role.Conductor)`</b>,
+/// \anchor Library_HasContent_Role_Conductor
+/// _boolean_,
+/// @return **True** if there are songs in the library which have a conductor.
+/// <p><hr>
+/// @skinning_v17 **[New Boolean Condition]** \link Library_HasContent_Role_Conductor `Library.HasContent(Role.Conductor)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`Library.HasContent(Role.Orchestra)`</b>,
+/// \anchor Library_HasContent_Role_Orchestra
+/// _boolean_,
+/// @return **True** if there are songs in the library which have an orchestra.
+/// <p><hr>
+/// @skinning_v17 **[New Boolean Condition]** \link Library_HasContent_Role_Orchestra `Library.HasContent(Role.Orchestra)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`Library.HasContent(Role.Lyricist)`</b>,
+/// \anchor Library_HasContent_Role_Lyricist
+/// _boolean_,
+/// @return **True** if there are songs in the library which have a lyricist.
+/// <p><hr>
+/// @skinning_v17 **[New Boolean Condition]** \link Library_HasContent_Role_Lyricist `Library.HasContent(Role.Lyricist)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`Library.HasContent(Role.Remixer)`</b>,
+/// \anchor Library_HasContent_Role_Remixer
+/// _boolean_,
+/// @return **True** if there are songs in the library which have a remixer.
+/// <p><hr>
+/// @skinning_v17 **[New Boolean Condition]** \link Library_HasContent_Role_Remixer `Library.HasContent(Role.Remixer)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`Library.HasContent(Role.Arranger)`</b>,
+/// \anchor Library_HasContent_Role_Remixer
+/// _boolean_,
+/// @return **True** if there are songs in the library which have an arranger.
+/// <p><hr>
+/// @skinning_v17 **[New Boolean Condition]** \link Library_HasContent_Role_Remixer `Library.HasContent(Role.Arranger)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`Library.HasContent(Role.Engineer)`</b>,
+/// \anchor Library_HasContent_Role_Engineer
+/// _boolean_,
+/// @return **True** if there are songs in the library which have an engineer.
+/// <p><hr>
+/// @skinning_v17 **[New Boolean Condition]** \link Library_HasContent_Role_Engineer `Library.HasContent(Role.Engineer)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`Library.HasContent(Role.Producer)`</b>,
+/// \anchor Library_HasContent_Role_Producer
+/// _boolean_,
+/// @return **True** if there are songs in the library which have an producer.
+/// <p><hr>
+/// @skinning_v17 **[New Boolean Condition]** \link Library_HasContent_Role_Producer `Library.HasContent(Role.Producer)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`Library.HasContent(Role.DJMixer)`</b>,
+/// \anchor Library_HasContent_Role_DJMixer
+/// _boolean_,
+/// @return **True** if there are songs in the library which have a DJMixer.
+/// <p><hr>
+/// @skinning_v17 **[New Boolean Condition]** \link Library_HasContent_Role_DJMixer `Library.HasContent(Role.DJMixer)`\endlink
+/// <p>
+/// }
+/// \table_row3{ <b>`Library.HasContent(Role.Mixer)`</b>,
+/// \anchor Library_HasContent_Role_Mixer
+/// _boolean_,
+/// @return **True** if there are songs in the library which have a mixer.
+/// <p><hr>
+/// @skinning_v17 **[New Boolean Condition]** \link Library_HasContent_Role_Mixer `Library.HasContent(Role.Mixer)`\endlink
+/// <p>
+/// }
+/// \table_end
+///
+/// -----------------------------------------------------------------------------
+
+
+/// \page modules__infolabels_boolean_conditions
+/// \section modules_rm_infolabels_booleans Additional revision history for Infolabels and Boolean Conditions
+/// <hr>
+/// \subsection modules_rm_infolabels_booleans_v18 Kodi v18 (Leia)
+///
+/// @skinning_v18 **[Removed Infolabels]** The following infolabels have been removed:
+/// - `Listitem.Property(artistthumbs)`, `Listitem.Property(artistthumb)` - use
+/// \link ListItem_Art_Type `ListItem.Art(type)`\endlink with <b>albumartist[n].*</b> or <b>artist[n].*</b> as <b>type</b>
+/// - `ADSP.ActiveStreamType`
+/// - `ADSP.DetectedStreamType`
+/// - `ADSP.MasterName`
+/// - `ADSP.MasterInfo`
+/// - `ADSP.MasterOwnIcon`
+/// - `ADSP.MasterOverrideIcon`
+/// - `ListItem.ChannelNumber`, `ListItem.SubChannelNumber`, `MusicPlayer.ChannelNumber`,
+/// `MusicPlayer.SubChannelNumber`, `VideoPlayer.ChannelNumber`,
+/// `VideoPlayer.SubChannelNumber`. Please use the following alternatives
+/// \link ListItem_ChannelNumberLabel `ListItem.ChannelNumberLabel` \endlink,
+/// \link MusicPlayer_ChannelNumberLabel `MusicPlayer.ChannelNumberLabel` \endlink
+/// \link VideoPlayer_ChannelNumberLabel `VideoPlayer.ChannelNumberLabel` \endlink from now on.
+///
+/// @skinning_v18 **[Removed Boolean Conditions]** The following infobools have been removed:
+/// - `System.HasModalDialog` - use \link System_HasActiveModalDialog `System.HasActiveModalDialog` \endlink and
+/// \link System_HasVisibleModalDialog `System.HasVisibleModalDialog`\endlink instead
+/// - `StringCompare()` - use \link String_IsEqual `String.IsEqual(info,string)`\endlink instead
+/// - `SubString()` - use \link String_Contains `String.Contains(info,substring)`\endlink instead
+/// - `IntegerGreaterThan()` - use \link Integer_IsGreater `Integer.IsGreater(info,number)`\endlink instead
+/// - `IsEmpty()` - use \link String_IsEmpty `String.IsEmpty(info)`\endlink instead
+/// - `System.HasADSP`
+/// - `ADSP.IsActive`
+/// - `ADSP.HasInputResample`
+/// - `ADSP.HasPreProcess`
+/// - `ADSP.HasMasterProcess`
+/// - `ADSP.HasPostProcess`
+/// - `ADSP.HasOutputResample`
+/// - `ADSP.MasterActive`
+/// <hr>
+/// \subsection modules_rm_infolabels_booleans_v17 Kodi v17 (Krypton)
+/// @skinning_v17 **[Removed Infolabels]** The following infolabels have been removed:
+/// - `ListItem.StarRating` - use the other ratings instead.
+///
+/// @skinning_v17 **[Removed Boolean Conditions]** The following infobools have been removed:
+/// - `on` - use `true` instead
+/// - `off` - use `false` instead
+/// - `Player.ShowCodec`
+/// - `System.GetBool(pvrmanager.enabled)`
+/// <hr>
+/// \subsection modules_rm_infolabels_booleans_v16 Kodi v16 (Jarvis)
+/// @skinning_v16 **[New Boolean Conditions]** The following infobools were added:
+/// - `System.HasADSP`
+/// - `ADSP.IsActive`
+/// - `ADSP.HasInputResample`
+/// - `ADSP.HasPreProcess`
+/// - `ADSP.HasMasterProcess`
+/// - `ADSP.HasPostProcess`
+/// - `ADSP.HasOutputResample`
+/// - `ADSP.MasterActive`
+/// - `System.HasModalDialog`
+///
+/// @skinning_v16 **[New Infolabels]** The following infolabels were added:
+/// - `ADSP.ActiveStreamType`
+/// - `ADSP.DetectedStreamType`
+/// - `ADSP.MasterName`
+/// - `ADSP.MasterInfo`
+/// - `ADSP.MasterOwnIcon`
+/// - `ADSP.MasterOverrideIcon`
+///
+/// @skinning_v16 **[Removed Boolean Conditions]** The following infobols were removed:
+/// - `System.Platform.ATV2`
+
+/// <hr>
+/// \subsection modules_rm_infolabels_booleans_v15 Kodi v15 (Isengard)
+/// <hr>
+/// \subsection modules_rm_infolabels_booleans_v14 Kodi v14 (Helix)
+/// @skinning_v14 **[New Infolabels]** The following infolabels were added:
+/// - `ListItem.SubChannelNumber`
+/// - `MusicPlayer.SubChannelNumber`
+/// - `VideoPlayer.SubChannelNumber`
+///
+/// <hr>
+/// \subsection modules_rm_infolabels_booleans_v13 XBMC v13 (Gotham)
+/// @skinning_v13 **[Removed Infolabels]** The following infolabels were removed:
+/// - `Network.SubnetAddress`
+///
+/// <hr>
// Crazy part, to use tableofcontents must it be on end
-/// \page modules__General__List_of_gui_access
+/// \page modules__infolabels_boolean_conditions
/// \tableofcontents
CGUIInfoManager::Property::Property(const std::string &property, const std::string &parameters)
@@ -6713,7 +9332,7 @@ bool CGUIInfoManager::GetMultiInfoBool(const CGUIInfo &info, int contextWindow,
else
value = GetImage(info.GetData1(), contextWindow);
- // Handle the case when a value contains time separator (:). This makes IntegerGreaterThan
+ // Handle the case when a value contains time separator (:). This makes Integer.IsGreater
// useful for Player.Time* members without adding a separate set of members returning time in seconds
if (value.find_first_of( ':' ) != value.npos)
integer = StringUtils::TimeStringToSeconds(value);
@@ -6872,7 +9491,7 @@ void CGUIInfoManager::SetCurrentItem(const CFileItem &item)
SetChanged();
NotifyObservers(ObservableMessageCurrentItem);
- // todo this should be handled by one of the observers above and forwarded
+ // @todo this should be handled by one of the observers above and forwarded
CServiceBroker::GetAnnouncementManager()->Announce(ANNOUNCEMENT::Info, "xbmc", "OnChanged");
}
diff --git a/xbmc/XBDateTime.h b/xbmc/XBDateTime.h
index 510f99dd32..0693f8faca 100644
--- a/xbmc/XBDateTime.h
+++ b/xbmc/XBDateTime.h
@@ -16,25 +16,53 @@
Note the use of bitmasking, e.g.
TIME_FORMAT_HH_MM_SS = TIME_FORMAT_HH | TIME_FORMAT_MM | TIME_FORMAT_SS
\sa StringUtils::SecondsToTimeString
+ \note For InfoLabels use the equivalent value listed (bold)
+ on the description of each enum value.
+ \note<b>Example:</b> 3661 seconds => h=1, hh=01, m=1, mm=01, ss=01, hours=1, mins=61, secs=3661
+ <p><hr>
+ @skinning_v18 **[Infolabels Updated]** Added <b>secs</b>, <b>mins</b>, <b>hours</b> (total time) and **m** as possible formats for
+ InfoLabels that support the definition of a time format. Examples are:
+ - \link Player_SeekOffset_format `Player.SeekOffset(format)`\endlink
+ - \link Player_TimeRemaining_format `Player.TimeRemaining(format)`\endlink
+ - \link Player_Time_format `Player.Time(format)`\endlink
+ - \link Player_Duration_format `Player.Duration(format)`\endlink
+ - \link Player_FinishTime_format `Player.FinishTime(format)`\endlink
+ - \link Player_StartTime_format `Player.StartTime(format)` \endlink
+ - \link Player_SeekNumeric_format `Player.SeekNumeric(format)`\endlink
+ - \link ListItem_Duration_format `ListItem.Duration(format)`\endlink
+ - \link PVR_EpgEventDuration_format `PVR.EpgEventDuration(format)`\endlink
+ - \link PVR_EpgEventElapsedTime_format `PVR.EpgEventElapsedTime(format)`\endlink
+ - \link PVR_EpgEventRemainingTime_format `PVR.EpgEventRemainingTime(format)`\endlink
+ - \link PVR_EpgEventSeekTime_format `PVR.EpgEventSeekTime(format)`\endlink
+ - \link PVR_EpgEventFinishTime_format `PVR.EpgEventFinishTime(format)`\endlink
+ - \link PVR_TimeShiftStart_format `PVR.TimeShiftStart(format)`\endlink
+ - \link PVR_TimeShiftEnd_format `PVR.TimeShiftEnd(format)`\endlink
+ - \link PVR_TimeShiftCur_format `PVR.TimeShiftCur(format)`\endlink
+ - \link PVR_TimeShiftOffset_format `PVR.TimeShiftOffset(format)`\endlink
+ - \link PVR_TimeshiftProgressDuration_format `PVR.TimeshiftProgressDuration(format)`\endlink
+ - \link PVR_TimeshiftProgressEndTime `PVR.TimeshiftProgressEndTime`\endlink
+ - \link PVR_TimeshiftProgressEndTime_format `PVR.TimeshiftProgressEndTime(format)`\endlink
+ <p>
*/
-enum TIME_FORMAT { TIME_FORMAT_GUESS = 0,
- TIME_FORMAT_SS = 1,
- TIME_FORMAT_MM = 2,
- TIME_FORMAT_MM_SS = 3,
- TIME_FORMAT_HH = 4,
- TIME_FORMAT_HH_SS = 5, // not particularly useful
- TIME_FORMAT_HH_MM = 6,
- TIME_FORMAT_HH_MM_SS = 7,
- TIME_FORMAT_XX = 8, // AM/PM
- TIME_FORMAT_HH_MM_XX = 14,
- TIME_FORMAT_HH_MM_SS_XX = 15,
- TIME_FORMAT_H = 16,
- TIME_FORMAT_H_MM_SS = 19,
- TIME_FORMAT_H_MM_SS_XX = 27,
- TIME_FORMAT_SECS = 32,
- TIME_FORMAT_MINS = 64,
- TIME_FORMAT_HOURS = 128,
- TIME_FORMAT_M = 256 };
+enum TIME_FORMAT { TIME_FORMAT_GUESS = 0, ///< usually used as the fallback value if the format value is empty
+ TIME_FORMAT_SS = 1, ///< <b>ss</b> - seconds only
+ TIME_FORMAT_MM = 2, ///< <b>mm</b> - minutes only (2-digit)
+ TIME_FORMAT_MM_SS = 3, ///< <b>mm:ss</b> - minutes and seconds
+ TIME_FORMAT_HH = 4, ///< <b>hh</b> - hours only (2-digit)
+ TIME_FORMAT_HH_SS = 5, ///< <b>hh:ss</b> - hours and seconds (this is not particularly useful)
+ TIME_FORMAT_HH_MM = 6, ///< <b>hh:mm</b> - hours and minutes
+ TIME_FORMAT_HH_MM_SS = 7, ///< <b>hh:mm:ss</b> - hours, minutes and seconds
+ TIME_FORMAT_XX = 8, ///< <b>xx</b> - returns AM/PM for a 12-hour clock
+ TIME_FORMAT_HH_MM_XX = 14, ///< <b>hh:mm xx</b> - returns hours and minutes in a 12-hour clock format (AM/PM)
+ TIME_FORMAT_HH_MM_SS_XX = 15, ///< <b>hh:mm:ss xx</b> - returns hours (2-digit), minutes and seconds in a 12-hour clock format (AM/PM)
+ TIME_FORMAT_H = 16, ///< <b>h</b> - hours only (1-digit)
+ TIME_FORMAT_H_MM_SS = 19, ///< <b>hh:mm:ss</b> - hours, minutes and seconds
+ TIME_FORMAT_H_MM_SS_XX = 27, ///< <b>hh:mm:ss xx</b> - returns hours (1-digit), minutes and seconds in a 12-hour clock format (AM/PM)
+ TIME_FORMAT_SECS = 32, ///< <b>secs</b> - total time in seconds
+ TIME_FORMAT_MINS = 64, ///< <b>mins</b> - total time in minutes
+ TIME_FORMAT_HOURS = 128, ///< <b>hours</b> - total time in hours
+ TIME_FORMAT_M = 256 ///< <b>m</b> - minutes only (1-digit)
+ };
class CDateTime;
diff --git a/xbmc/addons/kodi-addon-dev-kit/doxygen/Modules/modules_general.dox b/xbmc/addons/kodi-addon-dev-kit/doxygen/Modules/modules_general.dox
index 481a0db8d6..f7e04ca269 100644
--- a/xbmc/addons/kodi-addon-dev-kit/doxygen/Modules/modules_general.dox
+++ b/xbmc/addons/kodi-addon-dev-kit/doxygen/Modules/modules_general.dox
@@ -3,6 +3,6 @@
\page general_parts General Development parts
\brief \doc_header{ General Add-On Development parts }
-\subpage modules__General__List_of_gui_access
+\subpage modules__infolabels_boolean_conditions
\subpage page_List_of_built_in_functions
*/
diff --git a/xbmc/guilib/guiinfo/GUIInfoLabels.h b/xbmc/guilib/guiinfo/GUIInfoLabels.h
index f92c63d56d..4930662cda 100644
--- a/xbmc/guilib/guiinfo/GUIInfoLabels.h
+++ b/xbmc/guilib/guiinfo/GUIInfoLabels.h
@@ -35,7 +35,7 @@
#define PLAYER_TIME 27
#define PLAYER_TIME_REMAINING 28
#define PLAYER_DURATION 29
-#define PLAYER_SHOWCODEC 30
+// unused 30
#define PLAYER_SHOWINFO 31
#define PLAYER_VOLUME 32
#define PLAYER_MUTED 33