summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/cuesheet.c2
-rw-r--r--apps/cuesheet.h5
-rw-r--r--apps/lang/english.lang14
-rw-r--r--apps/onplay.c29
4 files changed, 47 insertions, 3 deletions
diff --git a/apps/cuesheet.c b/apps/cuesheet.c
index afd0ba1ea6..9bac3681f3 100644
--- a/apps/cuesheet.c
+++ b/apps/cuesheet.c
@@ -253,7 +253,7 @@ static char *list_get_name_cb(int selected_item,
return buffer;
}
-static void browse_cuesheet(struct cuesheet *cue)
+void browse_cuesheet(struct cuesheet *cue)
{
struct gui_synclist lists;
int action;
diff --git a/apps/cuesheet.h b/apps/cuesheet.h
index ed1207f810..51e38605ca 100644
--- a/apps/cuesheet.h
+++ b/apps/cuesheet.h
@@ -66,7 +66,10 @@ bool parse_cuesheet(char *file, struct cuesheet *cue);
/* reads a cuesheet to find the audio track associated to it */
bool get_trackname_from_cuesheet(char *filename, char *buf);
-/* displays a cuesheet to the screen (it is stored in the plugin buffer) */
+/* display a cuesheet struct */
+void browse_cuesheet(struct cuesheet *cue);
+
+/* display a cuesheet file after parsing and loading it to the plugin buffer */
bool display_cuesheet_content(char* filename);
/* finds the index of the current track played within a cuesheet */
diff --git a/apps/lang/english.lang b/apps/lang/english.lang
index e8dcf4867d..502c9f8900 100644
--- a/apps/lang/english.lang
+++ b/apps/lang/english.lang
@@ -10806,3 +10806,17 @@
*: "Playlist Viewer Settings"
</voice>
</phrase>
+<phrase>
+ id: LANG_BROWSE_CUESHEET
+ desc:
+ user:
+ <source>
+ *: "Browse Cuesheet"
+ </source>
+ <dest>
+ *: "Browse Cuesheet"
+ </dest>
+ <voice>
+ *: "Browse Cuesheet"
+ </voice>
+</phrase>
diff --git a/apps/onplay.c b/apps/onplay.c
index 244cd77987..ae25ae37d0 100644
--- a/apps/onplay.c
+++ b/apps/onplay.c
@@ -64,6 +64,7 @@
#ifdef HAVE_TAGCACHE
#include "tagtree.h"
#endif
+#include "cuesheet.h"
#if (LCD_DEPTH > 1) || (defined(HAVE_LCD_REMOTE) && (LCD_REMOTE_DEPTH > 1))
#include "backdrop.h"
@@ -925,6 +926,32 @@ MENUITEM_FUNCTION_DYNTEXT(rating_item, 0, set_rating_inline,
ratingitem_callback, Icon_Questionmark);
#endif
+static bool view_cue(void)
+{
+ struct mp3entry* id3 = audio_current_track();
+ if(id3 && cuesheet_is_enabled() && id3->cuesheet_type)
+ {
+ browse_cuesheet(curr_cue);
+ }
+ return false;
+}
+static int view_cue_item_callback(int action,const struct menu_item_ex *this_item)
+{
+ (void)this_item;
+ struct mp3entry* id3 = audio_current_track();
+ switch (action)
+ {
+ case ACTION_REQUEST_MENUITEM:
+ if (!selected_file || !cuesheet_is_enabled()
+ || !id3 || !id3->cuesheet_type)
+ return ACTION_EXIT_MENUITEM;
+ break;
+ }
+ return action;
+}
+MENUITEM_FUNCTION(view_cue_item, 0, ID2P(LANG_BROWSE_CUESHEET),
+ view_cue, NULL, view_cue_item_callback, Icon_NOICON);
+
/* CONTEXT_WPS items */
MENUITEM_FUNCTION(browse_id3_item, 0, ID2P(LANG_MENU_SHOW_ID3_INFO),
browse_id3, NULL, NULL, Icon_NOICON);
@@ -1038,7 +1065,7 @@ MAKE_ONPLAYMENU( wps_onplay_menu, ID2P(LANG_ONPLAY_MENU_TITLE),
#ifdef HAVE_TAGCACHE
&rating_item,
#endif
- &bookmark_menu, &browse_id3_item,
+ &bookmark_menu, &browse_id3_item, &view_cue_item,
#ifdef HAVE_PITCHSCREEN
&pitch_screen_item,
#endif