|
Rockbox mail archiveSubject: RE: ANNOUNCE: New Talkbox PatchRE: ANNOUNCE: New Talkbox Patch
From: Jonah, Jim <Jim.Jonah_at_compuware.com>
Date: Thu, 15 May 2003 08:07:00 -0400 Hi, Can you refresh my memory on how these thumbnails are created/named please? Thanks! Jim -----Original Message----- From: ds2list [mailto:ds2list_at_yahoo.com] Sent: Thursday, May 15, 2003 5:21 AM To: rockbox_at_cool.haxx.se Subject: ANNOUNCE: New Talkbox Patch Here is a new patch against Rockbox 2.0 stable. New features in this patch are: 1) There is now a Configuration menu option for switching thumbnailing on and off: It is in: F1->General Settings->File View->Play Thumbnails Which can be set to yes or no. 2) There are 2 modes of thumbnail playing available, which can be configured in: F1->General Settings->File View->Thumbnail Mode The options are: "enter": Play thumbnail when you enter a directory "hover": Play a thumbnail when the cursor is hovering over a directory Known Problems: - When in the hover mode, the cursor disappears for a given selection after playing the thumbnail. - Not sure if added global settings are saved properly yet, so the feature has to be enabled each time you boot. My web space is down right now, so I'll to post the images for the Recorder, FM Recorder and Player when it comes up at: http://pages.sbcglobal.net/gsudindranath/index.html In the meantime, here is the patch: diff -ur rockbox-2.0/apps/main.c rockbox-2.0-talkbox/apps/main.c --- rockbox-2.0/apps/main.c 2003-02-14 01:44:33.000000000 -0800 +++ rockbox-2.0-talkbox/apps/main.c 2003-05-07 20:06:49.000000000 -0700 _at__at_ -56,6 +56,7 _at__at_ void app_main(void) { init(); + global_settings.repeat_mode = 0; browse_root(); } diff -ur rockbox-2.0/apps/recorder/recording.c rockbox-2.0-talkbox/apps/recorder/recording.c --- rockbox-2.0/apps/recorder/recording.c 2003-04-10 17:44:21.000000000 -0700 +++ rockbox-2.0-talkbox/apps/recorder/recording.c 2003-05-07 20:12:15.000000000 -0700 _at__at_ -40,6 +40,7 _at__at_ #include "timefuncs.h" #include "debug.h" #include "misc.h" +#include "tree.h" bool f2_rec_screen(void); bool f3_rec_screen(void); _at__at_ -54,6 +55,9 _at__at_ extern unsigned long record_start_frame; /* Frame number where recording started */ +bool use_alt_filename; +char alt_filename[MAX_PATH]; + #define SOURCE_MIC 0 #define SOURCE_LINE 1 #define SOURCE_SPDIF 2 _at__at_ -202,7 +206,15 _at__at_ if(!mpeg_status()) { have_recorded = true; - mpeg_record(create_filename()); + + if (!use_alt_filename) + { + mpeg_record(create_filename()); + } + else + { + mpeg_record(alt_filename); + } status_set_playmode(STATUS_RECORD); update_countdown = 1; /* Update immediately */ last_seconds = 0; _at__at_ -630,3 +642,35 _at__at_ return false; } + + +bool record_thumbnail(void) +{ + bool result = true; + + if (result) + { + use_alt_filename = true; + snprintf(alt_filename, sizeof(alt_filename), "%s/%s", get_currdir(), ".dirname.mp3"); + + int fd = open(alt_filename, O_RDONLY); + + if (fd > -1) + { + close(fd); + remove(alt_filename); + } + + recording_screen(); + use_alt_filename = false; + + return true; + } + else + { + DEBUGF("No directory selected\n"); + return false; + } + +} + diff -ur rockbox-2.0/apps/recorder/recording.h rockbox-2.0-talkbox/apps/recorder/recording.h --- rockbox-2.0/apps/recorder/recording.h 2002-11-10 08:42:31.000000000 -0800 +++ rockbox-2.0-talkbox/apps/recorder/recording.h 2003-05-03 16:18:12.000000000 -0700 _at__at_ -20,5 +20,6 _at__at_ #define RECORDING_H bool recording_screen(void); +bool record_thumbnail(void); #endif diff -ur rockbox-2.0/apps/screens.c rockbox-2.0-talkbox/apps/screens.c --- rockbox-2.0/apps/screens.c 2003-04-02 16:18:14.000000000 -0800 +++ rockbox-2.0-talkbox/apps/screens.c 2003-05-12 01:36:47.000000000 -0700 _at__at_ -31,6 +31,14 _at__at_ #include "status.h" #include "playlist.h" #include "sprintf.h" +#include "debug.h" + +#ifdef HAVE_RECORDER_KEYPAD +#include "recording.h" +#include "tree.h" +#endif + +bool confirm_record_thumbnail(void); #ifdef HAVE_LCD_BITMAP #define BMPHEIGHT_usb_logo 32 _at__at_ -270,7 +278,20 _at__at_ lcd_clear_display(); + +#ifdef HAVE_MAS3587F + + if (strcmp(get_currdir(), "/") != 0) { + + lcd_putsxy(8, 0, "Record Thumbnail"); + lcd_bitmap(bitmap_icons_7x8[Icon_UpArrow], + LCD_WIDTH/2 - 3, LCD_HEIGHT/2 - h*2, 7, 8, true); + } +#endif + /* Shuffle mode */ + DEBUGF("LCD_WIDTH is %d and w is %d\n", LCD_WIDTH, w); + lcd_putsxy(0, LCD_HEIGHT/2 - h*2, str(LANG_SHUFFLE)); lcd_putsxy(0, LCD_HEIGHT/2 - h, str(LANG_F2_MODE)); lcd_putsxy(0, LCD_HEIGHT/2, _at__at_ -343,6 +364,23 _at__at_ used = true; break; +#ifdef HAVE_MAS3587F + case BUTTON_UP: + case BUTTON_F2 | BUTTON_UP: + + + if (strcmp(get_currdir(), "/") != 0) + { + + if (confirm_record_thumbnail()) + { + record_thumbnail(); + } + } + used = true; + break; +#endif + case BUTTON_DOWN: case BUTTON_F2 | BUTTON_DOWN: global_settings.dirfilter++; _at__at_ -466,6 +504,48 _at__at_ return false; } + +bool confirm_record_thumbnail(void) +{ + + bool yesno; + bool done; + + if (strcmp(get_currdir(), "/") == 0) + return false; + + lcd_clear_display(); + + + lcd_putsxy(0, LCD_HEIGHT/2 - 30, "Record Thumbnail"); + lcd_putsxy(0, LCD_HEIGHT/2 - 20, "in directory?:"); + lcd_putsxy(0, LCD_HEIGHT/2 - 5, get_currdir()); + lcd_putsxy(4, LCD_HEIGHT/2 + 10, "PLAY - Confirm"); + lcd_putsxy(5, LCD_HEIGHT/2 + 20, " F2 - Cancel"); + lcd_update(); + + + done=false; + yesno=false; + + while(!done) { + switch (button_get(true)) { + case BUTTON_PLAY: + yesno=true; + done = true; + break; + + case BUTTON_F2: + yesno=false; + done = true; + break; + } + } + + return yesno; + +} + #endif #ifdef HAVE_LCD_BITMAP _at__at_ -633,3 +713,7 _at__at_ sleep(ticks); } } + + + + diff -ur rockbox-2.0/apps/settings.c rockbox-2.0-talkbox/apps/settings.c --- rockbox-2.0/apps/settings.c 2003-04-11 00:47:30.000000000 -0700 +++ rockbox-2.0-talkbox/apps/settings.c 2003-05-12 01:48:29.000000000 -0700 _at__at_ -1041,6 +1041,15 _at__at_ #endif else if (!strcasecmp(name, "volume fade")) set_cfg_bool(&global_settings.fade_on_stop, value); + + else if (!strcasecmp(name, "play thumbnails")) + set_cfg_bool(&global_settings.play_thumbnails, value); + else if (!strcasecmp(name, "thumbnail mode")) { + static char* options[] = {"enter","hover"}; + set_cfg_option(&global_settings.thumbnail_mode, value, options, 2); + } + + } close(fd); _at__at_ -1426,6 +1435,21 _at__at_ global_settings.rec_right_gain); write(fd, buf, strlen(buf)); #endif + { + static char* options[] = {"off","on"}; + snprintf(buf, sizeof(buf), + "play thumbnails: %s\r\n", + options[global_settings.play_thumbnails]); + write(fd, buf, strlen(buf)); + } + + { + static char* options[] = {"enter","hover"}; + snprintf(buf, sizeof(buf), + "thumbnail mode: %s\r\n", + options[global_settings.thumbnail_mode]); + write(fd, buf, strlen(buf)); + } close(fd); lcd_clear_display(); diff -ur rockbox-2.0/apps/settings.h rockbox-2.0-talkbox/apps/settings.h --- rockbox-2.0/apps/settings.h 2003-03-12 07:30:57.000000000 -0800 +++ rockbox-2.0-talkbox/apps/settings.h 2003-05-12 01:48:47.000000000 -0700 _at__at_ -150,6 +150,11 _at__at_ int scroll_step; /* pixels to advance per update */ bool fade_on_stop; /* fade on pause/unpause/stop */ + bool play_thumbnails; /* Enable/disable playing of directory + name thumbnails */ + int thumbnail_mode; /* When to play directory thumbnails: + 0=when entering a directory + 1=when cursor is over a directory */ }; /* prototypes */ diff -ur rockbox-2.0/apps/settings_menu.c rockbox-2.0-talkbox/apps/settings_menu.c --- rockbox-2.0/apps/settings_menu.c 2003-03-12 07:30:58.000000000 -0800 +++ rockbox-2.0-talkbox/apps/settings_menu.c 2003-05-12 01:49:27.000000000 -0700 _at__at_ -588,6 +588,20 _at__at_ return set_bool( str(LANG_FOLLOW), &global_settings.browse_current ); } + +static bool play_thumbnails(void) +{ + return set_bool( "Play Thumbnails", &global_settings.play_thumbnails ); +} + +static bool thumbnail_mode(void) +{ + char* names[] = { "enter", "hover"}; + + return set_option("Thumbnail Mode", &global_settings.thumbnail_mode, + names, 2, NULL ); +} + static bool playback_settings_menu(void) { int m; _at__at_ -683,6 +697,8 _at__at_ { str(LANG_CASE_MENU), sort_case }, { str(LANG_FILTER), dir_filter }, { str(LANG_FOLLOW), browse_current }, + { "Play Thumbnails", play_thumbnails }, + { "Thumbnail Mode", thumbnail_mode }, }; m = menu_init( items, sizeof items / sizeof(struct menu_items) ); diff -ur rockbox-2.0/apps/tree.c rockbox-2.0-talkbox/apps/tree.c --- rockbox-2.0/apps/tree.c 2003-04-14 00:53:58.000000000 -0700 +++ rockbox-2.0-talkbox/apps/tree.c 2003-05-15 01:56:27.000000000 -0700 _at__at_ -75,6 +75,8 _at__at_ static char lastdir[MAX_PATH]; static char lastfile[MAX_PATH]; static char currdir[MAX_PATH]; + + static bool reload_dir = false; void browse_root(void) _at__at_ -168,6 +170,43 _at__at_ return start_index; } +static int play_dirname(int start_index) +{ + + int dirname_mp3_file; + int repeat_mode; + char dirname_mp3_filename[1000]; + int seed = current_tick; + + playlist_clear(); + + snprintf(dirname_mp3_filename, sizeof(dirname_mp3_filename),"%s/%s/%s", currdir, dircache[start_index].name, ".dirname.mp3"); + + DEBUGF("Checking for %s\n", dirname_mp3_filename); + + dirname_mp3_file = open(dirname_mp3_filename, O_RDONLY); + + if (dirname_mp3_file < 0) + { + DEBUGF("Failed to find: %s\n", dirname_mp3_filename); + return -1; + } + + close(dirname_mp3_file); + + DEBUGF("Found: %s\n", dirname_mp3_filename); + playlist_add(dirname_mp3_filename); + + repeat_mode = global_settings.repeat_mode; + global_settings.repeat_mode = 0; + play_list(dircache[start_index].name, NULL, + 0, false, + 0, seed, 0, 0, -1); + global_settings.repeat_mode = repeat_mode; + return 1; +} + + static int compare(const void* p1, const void* p2) { struct entry* e1 = (struct entry*)p1; _at__at_ -209,7 +248,6 _at__at_ } } - static int showdir(char *path, int start) { int icon_type = 0; _at__at_ -486,6 +524,7 _at__at_ return filesindir; } + bool ask_resume(void) { #ifdef HAVE_LCD_CHARCELLS _at__at_ -727,7 +766,6 _at__at_ return used; } - bool dirbrowse(char *root) { int numentries=0; _at__at_ -745,6 +783,8 _at__at_ bool update_all = false; /* set this to true when the whole file list has been refreshed on screen */ + int last_thumbnail_played=-1; + #ifdef HAVE_LCD_BITMAP int fw, fh; lcd_getstringsize("A", &fw, &fh); _at__at_ -773,6 +813,20 _at__at_ bool restore = false; + if (file->attr & ATTR_DIRECTORY) { + + /* play directory thumbnail */ + if (global_settings.play_thumbnails && + (global_settings.thumbnail_mode == 1) && + (last_thumbnail_played != dircursor+dirstart) && + (!(mpeg_status() & MPEG_STATUS_PLAY))) { + + DEBUGF("Playing directory thumbnail: %s", currdir); + play_dirname(dircursor+dirstart); + last_thumbnail_played = dircursor+dirstart; + } + } + button = button_get_w_tmo(HZ/5); switch ( button ) { case TREE_EXIT: _at__at_ -832,6 +886,15 _at__at_ snprintf(buf,sizeof(buf),"/%s",file->name); if (file->attr & ATTR_DIRECTORY) { + + if (global_settings.play_thumbnails && + (global_settings.thumbnail_mode == 0) && + (!(mpeg_status() & MPEG_STATUS_PLAY))) { + /* play_dirname */ + DEBUGF("Playing directory thumbnail: %s", currdir); + play_dirname(dircursor+dirstart); + } + memcpy(currdir,buf,sizeof(currdir)); if ( dirlevel < MAX_DIR_LEVELS ) { dirpos[dirlevel] = dirstart; _at__at_ -1185,6 +1248,7 _at__at_ return true; } + static int plsize = 0; static bool add_dir(char* dirname, int fd) { _at__at_ -1285,3 +1349,8 _at__at_ return true; } + +char * get_currdir(void) +{ + return currdir; +} diff -ur rockbox-2.0/apps/tree.h rockbox-2.0-talkbox/apps/tree.h --- rockbox-2.0/apps/tree.h 2003-03-12 12:21:28.000000000 -0800 +++ rockbox-2.0-talkbox/apps/tree.h 2003-05-03 17:45:02.000000000 -0700 _at__at_ -36,5 +36,6 _at__at_ void set_current_file(char *path); bool dirbrowse(char *root); bool create_playlist(void); +char * get_currdir(void); #endif The contents of this e-mail are intended for the named addressee only. It contains information that may be confidential. Unless you are the named addressee or an authorized designee, you may not copy or use it, or disclose it to anyone else. If you received it in error please notify us immediately and then destroy it. Received on 2003-05-15 Page template was last modified "Tue Sep 7 00:00:02 2021" The Rockbox Crew -- Privacy Policy |