Rockbox.org home
release
dev builds
extras
themes manual
wiki
device status forums
mailing lists
IRC bugs
patches
dev guide
translations



Rockbox mail archive

Subject: RE: ANNOUNCE: New Talkbox Patch

RE: 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