summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/gui/skin_engine/skin_display.c19
-rw-r--r--apps/gui/skin_engine/skin_parser.c5
-rw-r--r--apps/gui/skin_engine/skin_render.c1
-rw-r--r--apps/gui/skin_engine/skin_tokens.c14
4 files changed, 36 insertions, 3 deletions
diff --git a/apps/gui/skin_engine/skin_display.c b/apps/gui/skin_engine/skin_display.c
index 78db4eb371..47de4638d8 100644
--- a/apps/gui/skin_engine/skin_display.c
+++ b/apps/gui/skin_engine/skin_display.c
@@ -162,9 +162,22 @@ void draw_progressbar(struct gui_wps *gwps, int line, struct progressbar *pb)
162#if CONFIG_TUNER 162#if CONFIG_TUNER
163 else if (in_radio_screen() || (get_radio_status() != FMRADIO_OFF)) 163 else if (in_radio_screen() || (get_radio_status() != FMRADIO_OFF))
164 { 164 {
165 int min = fm_region_data[global_settings.fm_region].freq_min; 165#ifdef HAVE_RADIO_RSSI
166 end = radio_current_frequency() - min; 166 if (pb->type == SKIN_TOKEN_TUNER_RSSI_BAR)
167 length = fm_region_data[global_settings.fm_region].freq_max - min; 167 {
168 int val = tuner_get(RADIO_RSSI);
169 int min = tuner_get(RADIO_RSSI_MIN);
170 int max = tuner_get(RADIO_RSSI_MAX);
171 end = val - min;
172 length = max - min;
173 }
174 else
175#endif
176 {
177 int min = fm_region_data[global_settings.fm_region].freq_min;
178 end = radio_current_frequency() - min;
179 length = fm_region_data[global_settings.fm_region].freq_max - min;
180 }
168 } 181 }
169#endif 182#endif
170 else if (id3 && id3->length) 183 else if (id3 && id3->length)
diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c
index c94ef4e5b5..818edfbd07 100644
--- a/apps/gui/skin_engine/skin_parser.c
+++ b/apps/gui/skin_engine/skin_parser.c
@@ -742,6 +742,8 @@ static int parse_progressbar_tag(struct skin_element* element,
742 token->type = SKIN_TOKEN_VOLUMEBAR; 742 token->type = SKIN_TOKEN_VOLUMEBAR;
743 else if (token->type == SKIN_TOKEN_BATTERY_PERCENT) 743 else if (token->type == SKIN_TOKEN_BATTERY_PERCENT)
744 token->type = SKIN_TOKEN_BATTERY_PERCENTBAR; 744 token->type = SKIN_TOKEN_BATTERY_PERCENTBAR;
745 else if (token->type == SKIN_TOKEN_TUNER_RSSI)
746 token->type = SKIN_TOKEN_TUNER_RSSI_BAR;
745 pb->type = token->type; 747 pb->type = token->type;
746 748
747 return 0; 749 return 0;
@@ -1408,6 +1410,9 @@ static int skin_element_callback(struct skin_element* element, void* data)
1408 case SKIN_TOKEN_VOLUME: 1410 case SKIN_TOKEN_VOLUME:
1409 case SKIN_TOKEN_BATTERY_PERCENT: 1411 case SKIN_TOKEN_BATTERY_PERCENT:
1410 case SKIN_TOKEN_PLAYER_PROGRESSBAR: 1412 case SKIN_TOKEN_PLAYER_PROGRESSBAR:
1413#ifdef HAVE_RADIO_RSSI
1414 case SKIN_TOKEN_TUNER_RSSI:
1415#endif
1411 function = parse_progressbar_tag; 1416 function = parse_progressbar_tag;
1412 break; 1417 break;
1413 case SKIN_TOKEN_SUBLINE_TIMEOUT: 1418 case SKIN_TOKEN_SUBLINE_TIMEOUT:
diff --git a/apps/gui/skin_engine/skin_render.c b/apps/gui/skin_engine/skin_render.c
index a9e6319317..68a5433eb1 100644
--- a/apps/gui/skin_engine/skin_render.c
+++ b/apps/gui/skin_engine/skin_render.c
@@ -143,6 +143,7 @@ static bool do_non_text_tags(struct gui_wps *gwps, struct skin_draw_info *info,
143 case SKIN_TOKEN_BATTERY_PERCENTBAR: 143 case SKIN_TOKEN_BATTERY_PERCENTBAR:
144#ifdef HAVE_LCD_BITMAP 144#ifdef HAVE_LCD_BITMAP
145 case SKIN_TOKEN_PROGRESSBAR: 145 case SKIN_TOKEN_PROGRESSBAR:
146 case SKIN_TOKEN_TUNER_RSSI_BAR:
146 { 147 {
147 struct progressbar *bar = (struct progressbar*)token->value.data; 148 struct progressbar *bar = (struct progressbar*)token->value.data;
148 if (do_refresh) 149 if (do_refresh)
diff --git a/apps/gui/skin_engine/skin_tokens.c b/apps/gui/skin_engine/skin_tokens.c
index efe67a186e..c2ee7bf426 100644
--- a/apps/gui/skin_engine/skin_tokens.c
+++ b/apps/gui/skin_engine/skin_tokens.c
@@ -478,6 +478,20 @@ const char *get_radio_token(struct wps_token *token, int preset_offset,
478#ifdef HAVE_RADIO_RSSI 478#ifdef HAVE_RADIO_RSSI
479 case SKIN_TOKEN_TUNER_RSSI: 479 case SKIN_TOKEN_TUNER_RSSI:
480 snprintf(buf, buf_size, "%d",tuner_get(RADIO_RSSI)); 480 snprintf(buf, buf_size, "%d",tuner_get(RADIO_RSSI));
481 if (intval)
482 {
483 int val = tuner_get(RADIO_RSSI);
484 int min = tuner_get(RADIO_RSSI_MIN);
485 int max = tuner_get(RADIO_RSSI_MAX);
486 if (limit == TOKEN_VALUE_ONLY)
487 {
488 *intval = val;
489 }
490 else
491 {
492 *intval = 1+(limit-1)*(val-min)/(max-1-min);
493 }
494 }
481 return buf; 495 return buf;
482 case SKIN_TOKEN_TUNER_RSSI_MIN: 496 case SKIN_TOKEN_TUNER_RSSI_MIN:
483 snprintf(buf, buf_size, "%d",tuner_get(RADIO_RSSI_MIN)); 497 snprintf(buf, buf_size, "%d",tuner_get(RADIO_RSSI_MIN));