From 91bfc4ca9589d324e5ead72c1fbf641151527e33 Mon Sep 17 00:00:00 2001 From: Stéphane Doyon Date: Tue, 15 Jul 2008 15:33:23 +0000 Subject: Voice the playlist catalog. See FS#6323. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18050 a1c6a512-1295-4272-9138-f99709370657 --- apps/lang/english.lang | 4 ++-- apps/playlist_catalog.c | 39 +++++++++++++++++++++++++++++++-------- 2 files changed, 33 insertions(+), 10 deletions(-) (limited to 'apps') diff --git a/apps/lang/english.lang b/apps/lang/english.lang index 92e02e13b8..79a0d27ec1 100644 --- a/apps/lang/english.lang +++ b/apps/lang/english.lang @@ -7341,7 +7341,7 @@ *: "%s doesn't exist" - *: "" + *: "Playlist directory doesn't exist" @@ -7355,7 +7355,7 @@ *: "No Playlists" - *: "" + *: "No Playlists" diff --git a/apps/playlist_catalog.c b/apps/playlist_catalog.c index f23036ddea..15d74fa363 100644 --- a/apps/playlist_catalog.c +++ b/apps/playlist_catalog.c @@ -43,6 +43,7 @@ #include "debug.h" #include "playlist_catalog.h" #include "statusbar.h" +#include "talk.h" #define MAX_PLAYLISTS 400 #define PLAYLIST_DISPLAY_COUNT 10 @@ -95,7 +96,7 @@ static int initialize_catalog(void) if (!playlist_dir_exists) { if (mkdir(playlist_dir) < 0) { - gui_syncsplash(HZ*2, str(LANG_CATALOG_NO_DIRECTORY), + gui_syncsplash(HZ*2, ID2P(LANG_CATALOG_NO_DIRECTORY), playlist_dir); return -1; } @@ -129,7 +130,7 @@ static int create_playlist_list(char** playlists, int num_items, if (ft_load(tc, playlist_dir) < 0) { - gui_syncsplash(HZ*2, str(LANG_CATALOG_NO_DIRECTORY), + gui_syncsplash(HZ*2, ID2P(LANG_CATALOG_NO_DIRECTORY), playlist_dir); goto exit; } @@ -209,6 +210,13 @@ static char* playlist_callback_name(int selected_item, void* data, return buffer; } +static int playlist_callback_voice(int selected_item, void* data) +{ + char** playlists = (char**) data; + talk_file_or_spell(playlist_dir, playlists[selected_item], NULL, false); + return 0; +} + /* Display all playlists in catalog. Selected "playlist" is returned. If "view" mode is set then we're not adding anything into playlist. */ static int display_playlists(char* playlist, bool view) @@ -226,7 +234,7 @@ static int display_playlists(char* playlist, bool view) if (num_playlists <= 0) { - gui_syncsplash(HZ*2, str(LANG_CATALOG_NO_PLAYLISTS)); + gui_syncsplash(HZ*2, ID2P(LANG_CATALOG_NO_PLAYLISTS)); return -1; } @@ -235,16 +243,19 @@ static int display_playlists(char* playlist, bool view) gui_synclist_init(&playlist_lists, playlist_callback_name, playlists, false, 1, NULL); + if(global_settings.talk_menu) + gui_synclist_set_voice_callback(&playlist_lists, + playlist_callback_voice); gui_synclist_set_nb_items(&playlist_lists, num_playlists); gui_synclist_draw(&playlist_lists); + gui_synclist_speak_item(&playlist_lists); while (!exit) { - int button = get_action(CONTEXT_LIST,HZ/2); + int button; char* sel_file; - - gui_synclist_do_button(&playlist_lists, &button,LIST_WRAP_UNLESS_HELD); - + list_do_action(CONTEXT_LIST,HZ/2, + &playlist_lists, &button,LIST_WRAP_UNLESS_HELD); sel_file = playlists[gui_synclist_get_sel_pos(&playlist_lists)]; switch (button) @@ -280,7 +291,10 @@ static int display_playlists(char* playlist, bool view) exit = true; } else + { gui_synclist_draw(&playlist_lists); + gui_synclist_speak_item(&playlist_lists); + } } break; @@ -304,6 +318,15 @@ static int display_playlists(char* playlist, bool view) insert */ static void display_insert_count(int count) { + static long talked_tick = 0; + if(count && (talked_tick == 0 + || TIME_AFTER(current_tick, talked_tick+5*HZ))) + { + talked_tick = current_tick; + talk_number(count, false); + talk_id(LANG_PLAYLIST_INSERT_COUNT, true); + } + gui_syncsplash(0, str(LANG_PLAYLIST_INSERT_COUNT), count, str(LANG_OFF_ABORT)); } @@ -390,7 +413,7 @@ static int add_to_playlist(const char* playlist, bool new_playlist, /* search directory for tracks and append to playlist */ bool recurse = false; const char *lines[] = { - str(LANG_RECURSE_DIRECTORY_QUESTION), sel}; + ID2P(LANG_RECURSE_DIRECTORY_QUESTION), sel}; const struct text_message message={lines, 2}; struct add_track_context context; -- cgit v1.2.3