mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-11-10 05:32:40 -05:00
tree.c small cleanup
Change-Id: Ifd254f195f92833398b3f752a55d258cf7718183
This commit is contained in:
parent
68f511984e
commit
1a17b5cb8e
1 changed files with 52 additions and 85 deletions
133
apps/tree.c
133
apps/tree.c
|
|
@ -112,13 +112,47 @@ struct entry* tree_get_entry_at(struct tree_context *t, int index)
|
|||
return &entries[index];
|
||||
}
|
||||
|
||||
static struct entry *tree_get_valid_entry_at(const char* funcname,
|
||||
struct tree_context *t, int index)
|
||||
{
|
||||
struct entry *entry = tree_get_entry_at(t, index);
|
||||
if (!entry)
|
||||
panicf("Invalid tree entry %s", funcname);
|
||||
/*DEBUGF("%s tc: %x idx: %d\n", funcname, t, index);*/
|
||||
return entry;
|
||||
}
|
||||
|
||||
static bool ext_stripit(bool isdir, int attr, int dirfilter)
|
||||
{
|
||||
if(!isdir)
|
||||
{
|
||||
switch(global_settings.show_filename_ext)
|
||||
{
|
||||
case 0:
|
||||
/* show file extension: off */
|
||||
return true;
|
||||
break;
|
||||
case 1:
|
||||
/* show file extension: on */
|
||||
break;
|
||||
case 2:
|
||||
/* show file extension: only unknown types */
|
||||
return filetype_supported(attr);
|
||||
case 3:
|
||||
default:
|
||||
/* show file extension: only when viewing all */
|
||||
return (dirfilter != SHOW_ID3DB && dirfilter != SHOW_ALL);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
static const char* tree_get_filename(int selected_item, void *data,
|
||||
char *buffer, size_t buffer_len)
|
||||
{
|
||||
struct tree_context * local_tc=(struct tree_context *)data;
|
||||
char *name;
|
||||
int attr=0;
|
||||
bool stripit = false;
|
||||
#ifdef HAVE_TAGCACHE
|
||||
bool id3db = *(local_tc->dirfilter) == SHOW_ID3DB;
|
||||
|
||||
|
|
@ -129,38 +163,13 @@ static const char* tree_get_filename(int selected_item, void *data,
|
|||
else
|
||||
#endif
|
||||
{
|
||||
struct entry *entry = tree_get_entry_at(local_tc, selected_item);
|
||||
if (!entry)
|
||||
panicf("Invalid tree entry %s", __func__);
|
||||
struct entry *entry =
|
||||
tree_get_valid_entry_at(__func__, local_tc, selected_item);
|
||||
name = entry->name;
|
||||
attr = entry->attr;
|
||||
}
|
||||
|
||||
if(!(attr & ATTR_DIRECTORY))
|
||||
{
|
||||
switch(global_settings.show_filename_ext)
|
||||
{
|
||||
case 0:
|
||||
/* show file extension: off */
|
||||
stripit = true;
|
||||
break;
|
||||
case 1:
|
||||
/* show file extension: on */
|
||||
break;
|
||||
case 2:
|
||||
/* show file extension: only unknown types */
|
||||
stripit = filetype_supported(attr);
|
||||
break;
|
||||
case 3:
|
||||
default:
|
||||
/* show file extension: only when viewing all */
|
||||
stripit = (*(local_tc->dirfilter) != SHOW_ID3DB) &&
|
||||
(*(local_tc->dirfilter) != SHOW_ALL);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(stripit)
|
||||
if(ext_stripit((attr & ATTR_DIRECTORY), attr, *(local_tc->dirfilter)))
|
||||
{
|
||||
return(strip_extension(buffer, buffer_len, name));
|
||||
}
|
||||
|
|
@ -173,9 +182,8 @@ static int tree_get_filecolor(int selected_item, void * data)
|
|||
if (*tc.dirfilter == SHOW_ID3DB)
|
||||
return -1;
|
||||
struct tree_context * local_tc=(struct tree_context *)data;
|
||||
struct entry *entry = tree_get_entry_at(local_tc, selected_item);
|
||||
if (!entry)
|
||||
panicf("Invalid tree entry %s", __func__);
|
||||
struct entry *entry =
|
||||
tree_get_valid_entry_at(__func__, local_tc, selected_item);
|
||||
|
||||
return filetype_get_color(entry->name, entry->attr);
|
||||
}
|
||||
|
|
@ -192,9 +200,8 @@ static enum themable_icons tree_get_fileicon(int selected_item, void * data)
|
|||
else
|
||||
#endif
|
||||
{
|
||||
struct entry *entry = tree_get_entry_at(local_tc, selected_item);
|
||||
if (!entry)
|
||||
panicf("Invalid tree entry %s", __func__);
|
||||
struct entry *entry =
|
||||
tree_get_valid_entry_at(__func__, local_tc, selected_item);
|
||||
|
||||
return filetype_get_icon(entry->attr);
|
||||
}
|
||||
|
|
@ -219,10 +226,8 @@ static int tree_voice_cb(int selected_item, void * data)
|
|||
else
|
||||
#endif
|
||||
{
|
||||
struct entry *entry = tree_get_entry_at(local_tc, selected_item);
|
||||
if (!entry)
|
||||
panicf("Invalid tree entry %s", __func__);
|
||||
|
||||
struct entry *entry =
|
||||
tree_get_valid_entry_at(__func__, local_tc, selected_item);
|
||||
name = entry->name;
|
||||
attr = entry->attr;
|
||||
}
|
||||
|
|
@ -278,38 +283,17 @@ static int tree_voice_cb(int selected_item, void * data)
|
|||
|
||||
/* spell name AFTER voicing filetype */
|
||||
if (spell_name) {
|
||||
bool stripit = false;
|
||||
bool stripit = ext_stripit(is_dir, attr, *(local_tc->dirfilter));
|
||||
char *ext = NULL;
|
||||
|
||||
/* Don't spell the extension if it's not displayed */
|
||||
if (!is_dir) {
|
||||
switch(global_settings.show_filename_ext) {
|
||||
case 0:
|
||||
/* show file extension: off */
|
||||
stripit = true;
|
||||
break;
|
||||
case 1:
|
||||
/* show file extension: on */
|
||||
stripit = false;
|
||||
break;
|
||||
case 2:
|
||||
/* show file extension: only unknown types */
|
||||
stripit = filetype_supported(attr);
|
||||
break;
|
||||
case 3:
|
||||
default:
|
||||
/* show file extension: only when viewing all */
|
||||
stripit = (*(local_tc->dirfilter) != SHOW_ID3DB) &&
|
||||
(*(local_tc->dirfilter) != SHOW_ALL);
|
||||
break;
|
||||
}
|
||||
|
||||
if (stripit) {
|
||||
ext = strrchr(name, '.');
|
||||
if (ext)
|
||||
*ext = 0;
|
||||
}
|
||||
}
|
||||
|
||||
talk_spell(name, true);
|
||||
|
||||
if (stripit && ext)
|
||||
|
|
@ -342,7 +326,6 @@ void tree_init(void)
|
|||
strcpy(tc.currdir, "/");
|
||||
}
|
||||
|
||||
|
||||
struct tree_context* tree_get_context(void)
|
||||
{
|
||||
return &tc;
|
||||
|
|
@ -773,10 +756,8 @@ static int dirbrowse(void)
|
|||
break;
|
||||
if (tc.browse->flags & BROWSE_SELECTONLY)
|
||||
{
|
||||
struct entry *entry = tree_get_entry_at(&tc, tc.selected_item);
|
||||
if (!entry)
|
||||
panicf("Invalid tree entry %s", __func__);
|
||||
|
||||
struct entry *entry =
|
||||
tree_get_valid_entry_at(__func__, &tc, tc.selected_item);
|
||||
short attr = entry->attr;
|
||||
if(!(attr & ATTR_DIRECTORY))
|
||||
{
|
||||
|
|
@ -925,9 +906,8 @@ static int dirbrowse(void)
|
|||
else
|
||||
#endif
|
||||
{
|
||||
struct entry *entry = tree_get_entry_at(&tc, tc.selected_item);
|
||||
if (!entry)
|
||||
panicf("Invalid tree entry %s", __func__);
|
||||
struct entry *entry =
|
||||
tree_get_valid_entry_at(__func__, &tc, tc.selected_item);
|
||||
|
||||
attr = entry->attr;
|
||||
|
||||
|
|
@ -1045,19 +1025,6 @@ static int dirbrowse(void)
|
|||
int create_playlist(void)
|
||||
{
|
||||
bool ret;
|
||||
#if 0 /* handled in catalog_add_to_a_playlist() */
|
||||
char filename[MAX_PATH + 16]; /* add enough space for extension */
|
||||
const char *playlist_dir = catalog_get_directory();
|
||||
if (tc.currdir[1] && strcmp(tc.currdir, playlist_dir) != 0)
|
||||
snprintf(filename, sizeof filename, "%s.m3u8", tc.currdir);
|
||||
else
|
||||
snprintf(filename, sizeof filename, "%s/all.m3u8", playlist_dir);
|
||||
|
||||
if (kbd_input(filename, MAX_PATH, NULL))
|
||||
return 0;
|
||||
splashf(0, "%s %s", str(LANG_CREATING), filename);
|
||||
#endif
|
||||
|
||||
trigger_cpu_boost();
|
||||
ret = catalog_add_to_a_playlist(tc.currdir, ATTR_DIRECTORY, true, NULL, NULL);
|
||||
cancel_cpu_boost();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue