From 3eb76d053db78be1f0b50f70134aa5a3b46ba77d Mon Sep 17 00:00:00 2001 From: Stéphane Doyon Date: Tue, 15 Jul 2008 14:55:31 +0000 Subject: talk.c helper functions to voice a filename, in a more generic way than from tree.c Voice a file or dir's thumbnail from path components, or spell last path component. Ability to prefix the thumbnail or spelling with some talk ids. This is the talk_file patch from FS#6323, just refactored a bit. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18048 a1c6a512-1295-4272-9138-f99709370657 --- apps/tree.c | 50 ++++++++++++++++---------------------------------- 1 file changed, 16 insertions(+), 34 deletions(-) (limited to 'apps/tree.c') diff --git a/apps/tree.c b/apps/tree.c index 54f3b8997c..603500cef4 100644 --- a/apps/tree.c +++ b/apps/tree.c @@ -1049,57 +1049,39 @@ static void say_filetype(int attr) static int ft_play_dirname(char* name) { - char dirname_mp3_filename[MAX_PATH+1]; - #if CONFIG_CODEC != SWCODEC if (audio_status() & AUDIO_STATUS_PLAY) return 0; #endif - snprintf(dirname_mp3_filename, sizeof(dirname_mp3_filename), "%s/%s/%s", - tc.currdir[1] ? tc.currdir : "" , name, - dir_thumbnail_name); - - DEBUGF("Checking for %s\n", dirname_mp3_filename); - - if (!file_exists(dirname_mp3_filename)) + if(talk_file(tc.currdir, name, dir_thumbnail_name, NULL, + NULL, false)) { - DEBUGF("Failed to find: %s\n", dirname_mp3_filename); - return -1; + if(global_settings.talk_filetype) + talk_id(VOICE_DIR, true); + return 1; } - - DEBUGF("Found: %s\n", dirname_mp3_filename); - - talk_file(dirname_mp3_filename, false); - if(global_settings.talk_filetype) - talk_id(VOICE_DIR, true); - return 1; + else + return -1; } static void ft_play_filename(char *dir, char *file) { - char name_mp3_filename[MAX_PATH+1]; - #if CONFIG_CODEC != SWCODEC if (audio_status() & AUDIO_STATUS_PLAY) return; #endif - if (strcasecmp(&file[strlen(file) - strlen(file_thumbnail_ext)], - file_thumbnail_ext)) - { /* file has no .talk extension */ - snprintf(name_mp3_filename, sizeof(name_mp3_filename), - "%s/%s%s", dir, file, file_thumbnail_ext); - - talk_file(name_mp3_filename, false); - } + if (strlen(file) > strlen(file_thumbnail_ext) + && strcasecmp(&file[strlen(file) - strlen(file_thumbnail_ext)], + file_thumbnail_ext)) + /* file has no .talk extension */ + talk_file(dir, NULL, file, file_thumbnail_ext, + NULL, false); else - { /* it already is a .talk file, play this directly */ - snprintf(name_mp3_filename, sizeof(name_mp3_filename), - "%s/%s", dir, file); - talk_id(LANG_VOICE_DIR_HOVER, false); /* prefix it */ - talk_file(name_mp3_filename, true); - } + /* it already is a .talk file, play this directly, but prefix it. */ + talk_file(dir, NULL, file, NULL, + TALK_IDARRAY(LANG_VOICE_DIR_HOVER), false); } /* These two functions are called by the USB and shutdown handlers */ -- cgit v1.2.3