1
0
Fork 0
forked from len0rd/rockbox

song rating support.. should probably be moved with browse id3 to a "song options" submenu in the wps context menu...

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7013 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Michiel Van Der Kolk 2005-07-04 22:01:31 +00:00
parent 55819b7859
commit afe0941ae5
5 changed files with 69 additions and 0 deletions

View file

@ -382,6 +382,7 @@ int rundb_init(void)
audio_set_track_buffer_event(&rundb_buffer_track); audio_set_track_buffer_event(&rundb_buffer_track);
audio_set_track_changed_event(&rundb_track_change); audio_set_track_changed_event(&rundb_track_change);
audio_set_track_unbuffer_event(&rundb_unbuffer_track); audio_set_track_unbuffer_event(&rundb_unbuffer_track);
logf("rundb inited.");
#endif #endif
rundbsize=lseek(rundb_fd,0,SEEK_END); rundbsize=lseek(rundb_fd,0,SEEK_END);
return 0; return 0;
@ -451,6 +452,7 @@ void writerundbentry(struct mp3entry *id)
} }
void writeruntimeinfo(struct mp3entry *id) { void writeruntimeinfo(struct mp3entry *id) {
logf("rundb write");
if(!id->rundbhash) if(!id->rundbhash)
addrundbentry(id); addrundbentry(id);
else else
@ -474,6 +476,7 @@ void clearruntimeinfo(struct mp3entry *id) {
void loadruntimeinfo(struct mp3entry *id) void loadruntimeinfo(struct mp3entry *id)
{ {
logf("rundb load");
clearruntimeinfo(id); clearruntimeinfo(id);
clearfileentryinfo(id); clearfileentryinfo(id);
if(!getfentrybyfilename(id)) { if(!getfentrybyfilename(id)) {

View file

@ -3154,3 +3154,15 @@ desc: in settings_menu.
eng: "Gather runtime data (experimental)" eng: "Gather runtime data (experimental)"
voice: "Gather runtime data" voice: "Gather runtime data"
new: new:
id: LANG_MENU_SET_RATING
desc: in wps context menu
eng: "Set song rating"
voice: "Set song rating"
new:
id: LANG_RATING
desc: in set_rating
eng: "Rating:"
voice "Rating"
new:

View file

@ -556,6 +556,9 @@ int onplay(char* file, int attr, int from)
items[i].desc = ID2P(LANG_MENU_SHOW_ID3_INFO); items[i].desc = ID2P(LANG_MENU_SHOW_ID3_INFO);
items[i].function = browse_id3; items[i].function = browse_id3;
i++; i++;
items[i].desc = ID2P(LANG_MENU_SET_RATING);
items[i].function = set_rating;
i++;
} }
#ifdef HAVE_MULTIVOLUME #ifdef HAVE_MULTIVOLUME

View file

@ -1417,3 +1417,53 @@ bool browse_id3(void)
return false; return false;
} }
bool set_rating(void)
{
struct mp3entry* id3 = audio_current_track();
int button;
bool exit = false;
char rating_text[20];
if (!(audio_status() & AUDIO_STATUS_PLAY))
return false;
while (!exit)
{
lcd_clear_display();
lcd_puts(0, 0, str(LANG_RATING));
snprintf(rating_text,sizeof(rating_text),"%d",id3->rating);
lcd_puts(0,1,rating_text);
lcd_update();
button = button_get(true);
switch(button)
{
case SETTINGS_DEC:
if (id3->rating > 0)
id3->rating--;
else
id3->rating = 10;
break;
case SETTINGS_INC:
if (id3->rating < 10)
id3->rating++;
else
id3->rating = 0;
break;
case SETTINGS_CANCEL:
#ifdef SETTINGS_OK2
case SETTINGS_OK2:
#endif
/* eat release event */
button_get(true);
exit = true;
break;
default:
if(default_event_handler(button) == SYS_USB_CONNECTED)
return true;
break;
}
}
return false;
}

View file

@ -55,6 +55,7 @@ bool set_time_screen(const char* string, struct tm *tm);
bool shutdown_screen(void); bool shutdown_screen(void);
bool browse_id3(void); bool browse_id3(void);
bool set_rating(void);
#endif #endif