summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/status.c7
-rw-r--r--apps/status.h1
-rw-r--r--apps/wps-display.c67
-rw-r--r--docs/CREDITS1
-rw-r--r--docs/CUSTOM_WPS_FORMAT12
5 files changed, 88 insertions, 0 deletions
diff --git a/apps/status.c b/apps/status.c
index 3cb6722bca..c7f46db6fb 100644
--- a/apps/status.c
+++ b/apps/status.c
@@ -82,6 +82,13 @@ void status_set_ffmode(enum playmode mode)
status_draw(false);
}
+enum playmode status_get_ffmode(void)
+{
+ /* only use this function for STATUS_FASTFORWARD or STATUS_FASTBACKWARD */
+ /* use audio_status() for other modes */
+ return ff_mode;
+}
+
int current_playmode(void)
{
int audio_stat = audio_status();
diff --git a/apps/status.h b/apps/status.h
index a3c471bafd..0d8c80d7a8 100644
--- a/apps/status.h
+++ b/apps/status.h
@@ -32,6 +32,7 @@ enum playmode
void status_init(void);
void status_set_ffmode(enum playmode mode);
+enum playmode status_get_ffmode(void);
#ifdef HAVE_LCD_BITMAP
bool statusbar(bool state);
#if CONFIG_KEYPAD == RECORDER_PAD
diff --git a/apps/wps-display.c b/apps/wps-display.c
index 11a2506611..318da5a717 100644
--- a/apps/wps-display.c
+++ b/apps/wps-display.c
@@ -43,6 +43,7 @@
#include "powermgmt.h"
#include "sprintf.h"
#include "backlight.h"
+#include "button.h"
#ifdef HAVE_LCD_BITMAP
#include "icons.h"
@@ -578,6 +579,72 @@ static char* get_tag(struct mp3entry* cid3,
}
break;
+
+ case 'm': /* playback repeat mode */
+ switch (tag[1])
+ {
+ case 'f': /* off */
+ if (global_settings.repeat_mode == REPEAT_OFF)
+ return "f";
+ else
+ return NULL;
+ case 'a': /* all */
+ if (global_settings.repeat_mode == REPEAT_ALL)
+ return "a";
+ else
+ return NULL;
+ case 'o': /* one */
+ if (global_settings.repeat_mode == REPEAT_ONE)
+ return "o";
+ else
+ return NULL;
+ case 's': /* shuffle */
+ if (global_settings.repeat_mode == REPEAT_SHUFFLE)
+ return "s";
+ else
+ return NULL;
+ /* playback status */
+ case 'p': /* play */
+ *flags |= WPS_REFRESH_DYNAMIC;
+ int status = audio_status();
+ if (status == AUDIO_STATUS_PLAY && \
+ !(status & AUDIO_STATUS_PAUSE))
+ return "p";
+ else
+ return NULL;
+ case 'u': /* pause*/
+ *flags |= WPS_REFRESH_DYNAMIC;
+ if (audio_status() & AUDIO_STATUS_PAUSE && \
+ (! status_get_ffmode()))
+ return "u";
+ else
+ return NULL;
+ case 'w': /* fast forward */
+ *flags |= WPS_REFRESH_DYNAMIC;
+ if (status_get_ffmode() == STATUS_FASTFORWARD)
+ return "w";
+ else
+ return NULL;
+ case 'b': /* Fast backwards */
+ *flags |= WPS_REFRESH_DYNAMIC;
+ if (status_get_ffmode() == STATUS_FASTBACKWARD)
+ return "b";
+ else
+ return NULL;
+ case 'h': /* hold */
+ *flags |= WPS_REFRESH_DYNAMIC;
+ if (button_hold())
+ return "h";
+ else
+ return NULL;
+ case 'r': /* remote hold */
+ *flags |= WPS_REFRESH_DYNAMIC;
+ if (remote_button_hold())
+ return "r";
+ else
+ return NULL;
+ }
+ break;
case 'b': /* battery info */
*flags |= WPS_REFRESH_DYNAMIC;
diff --git a/docs/CREDITS b/docs/CREDITS
index 2e7e064faf..6b1d893d08 100644
--- a/docs/CREDITS
+++ b/docs/CREDITS
@@ -131,3 +131,4 @@ Frederic Devernay
José M. Fandiño
Gadi Cohen
Naftali Goldstein
+David Dent
diff --git a/docs/CUSTOM_WPS_FORMAT b/docs/CUSTOM_WPS_FORMAT
index 171a7d5906..87dd5c35f6 100644
--- a/docs/CUSTOM_WPS_FORMAT
+++ b/docs/CUSTOM_WPS_FORMAT
@@ -67,6 +67,18 @@ Playlist/Song Info Tags:
%pt : Total Track Time
%pv : Current volume
+Repeat mode tags:
+ %mf : repeat off, returns f
+ %ma : repeat all, returns a
+ %mo : repeat one, returns o
+ %ms : repeat shuffle, returns s
+
+Playback mode tags:
+ %mp : play, returns p
+ %mu : pause, returns u
+ %mw : fastforward, returns w
+ %mb : fastbackward, returns b
+
Conditional Tags (If/Else block):
%?xx<|> : Conditional: if the tag specified by "xx" has a value, the
text between the "<" and the "|" is displayed, else the text