summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/gui/gwps-common.c10
-rw-r--r--apps/gui/gwps.c27
-rw-r--r--apps/gui/gwps.h7
-rw-r--r--apps/gui/wps_debug.c3
-rw-r--r--apps/gui/wps_parser.c14
5 files changed, 53 insertions, 8 deletions
diff --git a/apps/gui/gwps-common.c b/apps/gui/gwps-common.c
index a81b855..e40aa77 100644
--- a/apps/gui/gwps-common.c
+++ b/apps/gui/gwps-common.c
@@ -1394,6 +1394,16 @@ static const char *get_token_value(struct gui_wps *gwps,
token->value.i))
return "v";
return NULL;
+ case WPS_TOKEN_VIEWMODE:
+ if (intval)
+ {
+ if (data->current_mode > limit)
+ data->current_mode = 1;
+ *intval = data->current_mode;
+ }
+ snprintf(buf, buf_size, "%d", data->current_mode);
+ return buf;
+
default:
return NULL;
}
diff --git a/apps/gui/gwps.c b/apps/gui/gwps.c
index 9b6d6b5..bac5032 100644
--- a/apps/gui/gwps.c
+++ b/apps/gui/gwps.c
@@ -136,7 +136,7 @@ long gui_wps_show(void)
bool update_track = false;
int i;
long last_left = 0, last_right = 0;
-
+ bool isremote = false;
wps_state_init();
#ifdef HAVE_LCD_CHARCELLS
@@ -234,7 +234,10 @@ long gui_wps_show(void)
#else
button = get_action(CONTEXT_WPS|ALLOW_SOFTLOCK,HZ/5);
#endif
-
+#if NB_SCREENS > 1
+ isremote = get_action_statuscode(NULL)&ACTION_REMOTE;
+#endif
+
/* Exit if audio has stopped playing. This can happen if using the
sleep timer with the charger plugged or if starting a recording
from F1 */
@@ -292,13 +295,23 @@ long gui_wps_show(void)
break;
case ACTION_WPS_BROWSE:
+ if (gui_wps[isremote?1:0].data->current_mode > -1)
+ {
+ /* will get set to 0 eventually again in wps_parser.c */
+ gui_wps[isremote?1:0].data->current_mode =
+ gui_wps[isremote?1:0].data->current_mode+1;
+ restore = true;
+ }
+ else
+ {
#ifdef HAVE_LCD_CHARCELLS
- status_set_record(false);
- status_set_audio(false);
+ status_set_record(false);
+ status_set_audio(false);
#endif
- FOR_NB_SCREENS(i)
- gui_wps[i].display->stop_scroll();
- return GO_TO_PREVIOUS_BROWSER;
+ FOR_NB_SCREENS(i)
+ gui_wps[i].display->stop_scroll();
+ return GO_TO_PREVIOUS_BROWSER;
+ }
break;
/* play/pause */
diff --git a/apps/gui/gwps.h b/apps/gui/gwps.h
index 6a4849c..a414ca3 100644
--- a/apps/gui/gwps.h
+++ b/apps/gui/gwps.h
@@ -295,7 +295,10 @@ enum wps_token_type {
WPS_VIEWPORT_ENABLE,
/* buttons */
- WPS_TOKEN_BUTTON_VOLUME
+ WPS_TOKEN_BUTTON_VOLUME,
+
+ WPS_TOKEN_VIEWMODE
+
};
struct wps_token {
@@ -429,6 +432,8 @@ struct wps_data
/* tick the volume button was last pressed */
unsigned int button_time_volume;
+ /* the current mode (used with %mo tag), -1 means modes not being used */
+ char current_mode;
};
/* initial setup of wps_data */
diff --git a/apps/gui/wps_debug.c b/apps/gui/wps_debug.c
index 5a18218..ad595e3 100644
--- a/apps/gui/wps_debug.c
+++ b/apps/gui/wps_debug.c
@@ -435,6 +435,9 @@ static char *get_token_desc(struct wps_token *token, struct wps_data *data,
snprintf(buf, bufsize, "Volume button timeout:%d",
token->value.i);
break;
+ case WPS_TOKEN_VIEWMODE:
+ snprintf(buf, bufsize, "viewmode");
+ break;
default:
snprintf(buf, bufsize, "FIXME (code: %d)",
token->type);
diff --git a/apps/gui/wps_parser.c b/apps/gui/wps_parser.c
index 1b845c9..f421a0c 100644
--- a/apps/gui/wps_parser.c
+++ b/apps/gui/wps_parser.c
@@ -162,6 +162,8 @@ static int parse_albumart_load(const char *wps_bufptr,
static int parse_albumart_conditional(const char *wps_bufptr,
struct wps_token *token, struct wps_data *wps_data);
#endif /* HAVE_ALBUMART */
+static int parse_viewmode(const char *wps_bufptr,
+ struct wps_token *token, struct wps_data *wps_data);
#ifdef CONFIG_RTC
#define WPS_RTC_REFRESH WPS_REFRESH_DYNAMIC
@@ -281,6 +283,8 @@ static const struct wps_tag all_tags[] = {
{ WPS_TOKEN_PLAYBACK_STATUS, "mp", WPS_REFRESH_DYNAMIC, NULL },
{ WPS_TOKEN_BUTTON_VOLUME, "mv", WPS_REFRESH_DYNAMIC,
parse_timeout },
+ { WPS_TOKEN_VIEWMODE, "mo", WPS_REFRESH_STATIC,
+ parse_viewmode },
#ifdef HAVE_LCD_BITMAP
{ WPS_TOKEN_PEAKMETER, "pm", WPS_REFRESH_PEAK_METER, NULL },
@@ -1142,6 +1146,15 @@ static int parse_albumart_conditional(const char *wps_bufptr,
};
#endif /* HAVE_ALBUMART */
+static int parse_viewmode(const char *wps_bufptr,
+ struct wps_token *token,
+ struct wps_data *wps_data)
+{
+ (void)wps_bufptr; (void)token;
+ wps_data->current_mode = 1;
+ /* are we going to add parameters? */
+ return 0;
+}
/* Parse a generic token from the given string. Return the length read */
static int parse_token(const char *wps_bufptr, struct wps_data *wps_data)
{
@@ -1476,6 +1489,7 @@ void wps_data_init(struct wps_data *wps_data)
wps_data->full_line_progressbar = false;
#endif
wps_data->button_time_volume = 0;
+ wps_data->current_mode = -1;
wps_data->wps_loaded = false;
}