From 96f42a56467dd72ab42f7e01949ec3cb4b7955df Mon Sep 17 00:00:00 2001 From: Evan Kenny Date: Mon, 1 Jul 2024 15:19:17 +0100 Subject: skin engine: Add tags to display Quickscreen Items A set of new tags for themes that allow them to display a quickscreen item's name or value like what is displayed on the default quickscreen. There are 8 tags in total, 2 for each direction or "item". One type of tag displays the setting name, while the other displays the setting's value. All tags output an "ERR" string if no valid setting is found for that item. Quickscreen Item name tags: %QT, %QR, %QB and %QL. Quickscreen Item value tags: %Qt, %Qr, %Qb and %Ql. Change-Id: Ia08ba5940e38065e051a0aefa2cff142c9e58684 --- apps/gui/skin_engine/skin_tokens.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'apps') diff --git a/apps/gui/skin_engine/skin_tokens.c b/apps/gui/skin_engine/skin_tokens.c index 42c56f7203..ba9396ae74 100644 --- a/apps/gui/skin_engine/skin_tokens.c +++ b/apps/gui/skin_engine/skin_tokens.c @@ -66,6 +66,7 @@ #include "fixedpoint.h" #endif #include "list.h" +#include "option_select.h" #include "wps.h" #define NOINLINE __attribute__ ((noinline)) @@ -658,6 +659,23 @@ static const char* NOINLINE get_lif_token_value(struct gui_wps *gwps, return NULL; } +#ifdef HAVE_QUICKSCREEN +static const char* get_qs_token_value(enum quickscreen_item item, bool data_token, + char *buf, int buf_size) +{ + const struct settings_list *qs_setting = global_settings.qs_items[item]; + + if (qs_setting == NULL) + return "ERR"; + + if (data_token) + return option_get_valuestring(qs_setting, buf, buf_size, + option_value_as_int(qs_setting)); + + return P2STR(ID2P(qs_setting->lang_id)); +} +#endif + /* Return the tags value as text. buf should be used as temp storage if needed. intval is used with conditionals/enums: when this function is called, @@ -1374,6 +1392,25 @@ const char *get_token_value(struct gui_wps *gwps, return NULL; #endif +#ifdef HAVE_QUICKSCREEN + case SKIN_TOKEN_TOP_QUICKSETTING_NAME: + return get_qs_token_value(QUICKSCREEN_TOP, false, buf, buf_size); + case SKIN_TOKEN_TOP_QUICKSETTING_VALUE: + return get_qs_token_value(QUICKSCREEN_TOP, true, buf, buf_size); + case SKIN_TOKEN_RIGHT_QUICKSETTING_NAME: + return get_qs_token_value(QUICKSCREEN_RIGHT, false, buf, buf_size); + case SKIN_TOKEN_RIGHT_QUICKSETTING_VALUE: + return get_qs_token_value(QUICKSCREEN_RIGHT, true, buf, buf_size); + case SKIN_TOKEN_BOTTOM_QUICKSETTING_NAME: + return get_qs_token_value(QUICKSCREEN_BOTTOM, false, buf, buf_size); + case SKIN_TOKEN_BOTTOM_QUICKSETTING_VALUE: + return get_qs_token_value(QUICKSCREEN_BOTTOM, true, buf, buf_size); + case SKIN_TOKEN_LEFT_QUICKSETTING_NAME: + return get_qs_token_value(QUICKSCREEN_LEFT, false, buf, buf_size); + case SKIN_TOKEN_LEFT_QUICKSETTING_VALUE: + return get_qs_token_value(QUICKSCREEN_LEFT, true, buf, buf_size); +#endif + case SKIN_TOKEN_SETTING: { const struct settings_list *s = token->value.xdata; -- cgit v1.2.3