have show parent dir (for dirs and files) and filter extension (for files) options visible all the time

This commit is contained in:
Brad Parker 2016-09-25 21:47:12 -04:00
parent 95406cb1c6
commit 6826ec7748

View File

@ -3417,142 +3417,138 @@ static int menu_displaylist_parse_generic(
if (list_size == 0) if (list_size == 0)
{ {
menu_entries_append_enum(info->list,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_ITEMS),
msg_hash_to_str(MENU_ENUM_LABEL_NO_ITEMS),
MENU_ENUM_LABEL_NO_ITEMS,
MENU_SETTING_NO_ITEM, 0, 0);
string_list_free(str_list); string_list_free(str_list);
str_list = NULL;
return 0;
} }
else
for (i = 0; i < list_size; i++)
{ {
bool is_dir; for (i = 0; i < list_size; i++)
char label[PATH_MAX_LENGTH] = {0};
const char *path = NULL;
enum msg_hash_enums enum_idx = MSG_UNKNOWN;
enum msg_file_type file_type = FILE_TYPE_NONE;
switch (str_list->elems[i].attr.i)
{ {
case RARCH_DIRECTORY: bool is_dir;
file_type = FILE_TYPE_DIRECTORY; char label[PATH_MAX_LENGTH] = {0};
break; const char *path = NULL;
case RARCH_COMPRESSED_ARCHIVE: enum msg_hash_enums enum_idx = MSG_UNKNOWN;
file_type = FILE_TYPE_CARCHIVE; enum msg_file_type file_type = FILE_TYPE_NONE;
break;
case RARCH_COMPRESSED_FILE_IN_ARCHIVE: switch (str_list->elems[i].attr.i)
file_type = FILE_TYPE_IN_CARCHIVE; {
break; case RARCH_DIRECTORY:
case RARCH_PLAIN_FILE: file_type = FILE_TYPE_DIRECTORY;
default: break;
file_type = (enum msg_file_type)info->type_default; case RARCH_COMPRESSED_ARCHIVE:
switch (type) file_type = FILE_TYPE_CARCHIVE;
break;
case RARCH_COMPRESSED_FILE_IN_ARCHIVE:
file_type = FILE_TYPE_IN_CARCHIVE;
break;
case RARCH_PLAIN_FILE:
default:
file_type = (enum msg_file_type)info->type_default;
switch (type)
{
case DISPLAYLIST_CORES_DETECTED:
/* in case of deferred_core_list we have to interpret
* every archive as an archive to disallow instant loading
*/
if (path_is_compressed_file(str_list->elems[i].data))
file_type = FILE_TYPE_CARCHIVE;
break;
default:
break;
}
break;
}
is_dir = (file_type == FILE_TYPE_DIRECTORY);
if (!is_dir)
{
if (BIT32_GET(filebrowser_types, FILEBROWSER_SELECT_DIR))
continue;
if (BIT32_GET(filebrowser_types, FILEBROWSER_SCAN_DIR))
continue;
}
/* Need to preserve slash first time. */
path = str_list->elems[i].data;
if (*info->path && !path_is_compressed)
path = path_basename(path);
if (BIT32_GET(filebrowser_types, FILEBROWSER_SELECT_COLLECTION))
{
if (is_dir)
file_type = FILE_TYPE_DIRECTORY;
else
file_type = FILE_TYPE_PLAYLIST_COLLECTION;
}
if (settings->multimedia.builtin_mediaplayer_enable ||
settings->multimedia.builtin_imageviewer_enable)
{
switch (path_is_media_type(path))
{ {
case DISPLAYLIST_CORES_DETECTED: case RARCH_CONTENT_MOVIE:
/* in case of deferred_core_list we have to interpret #ifdef HAVE_FFMPEG
* every archive as an archive to disallow instant loading if (settings->multimedia.builtin_mediaplayer_enable)
*/ file_type = FILE_TYPE_MOVIE;
if (path_is_compressed_file(str_list->elems[i].data)) #endif
file_type = FILE_TYPE_CARCHIVE; break;
case RARCH_CONTENT_MUSIC:
#ifdef HAVE_FFMPEG
if (settings->multimedia.builtin_mediaplayer_enable)
file_type = FILE_TYPE_MUSIC;
#endif
break;
case RARCH_CONTENT_IMAGE:
#ifdef HAVE_IMAGEVIEWER
if (settings->multimedia.builtin_imageviewer_enable
&& type != DISPLAYLIST_IMAGES)
file_type = FILE_TYPE_IMAGEVIEWER;
else
file_type = FILE_TYPE_IMAGE;
#endif
break; break;
default: default:
break; break;
} }
break; }
}
is_dir = (file_type == FILE_TYPE_DIRECTORY); switch (file_type)
if (!is_dir)
{
if (BIT32_GET(filebrowser_types, FILEBROWSER_SELECT_DIR))
continue;
if (BIT32_GET(filebrowser_types, FILEBROWSER_SCAN_DIR))
continue;
}
/* Need to preserve slash first time. */
path = str_list->elems[i].data;
if (*info->path && !path_is_compressed)
path = path_basename(path);
if (BIT32_GET(filebrowser_types, FILEBROWSER_SELECT_COLLECTION))
{
if (is_dir)
file_type = FILE_TYPE_DIRECTORY;
else
file_type = FILE_TYPE_PLAYLIST_COLLECTION;
}
if (settings->multimedia.builtin_mediaplayer_enable ||
settings->multimedia.builtin_imageviewer_enable)
{
switch (path_is_media_type(path))
{ {
case RARCH_CONTENT_MOVIE: case FILE_TYPE_PLAIN:
#ifdef HAVE_FFMPEG #if 0
if (settings->multimedia.builtin_mediaplayer_enable) enum_idx = MENU_ENUM_LABEL_FILE_BROWSER_PLAIN_FILE;
file_type = FILE_TYPE_MOVIE; #endif
#endif
break; break;
case RARCH_CONTENT_MUSIC: case FILE_TYPE_MOVIE:
#ifdef HAVE_FFMPEG enum_idx = MENU_ENUM_LABEL_FILE_BROWSER_MOVIE_OPEN;
if (settings->multimedia.builtin_mediaplayer_enable)
file_type = FILE_TYPE_MUSIC;
#endif
break; break;
case RARCH_CONTENT_IMAGE: case FILE_TYPE_MUSIC:
#ifdef HAVE_IMAGEVIEWER enum_idx = MENU_ENUM_LABEL_FILE_BROWSER_MUSIC_OPEN;
if (settings->multimedia.builtin_imageviewer_enable break;
&& type != DISPLAYLIST_IMAGES) case FILE_TYPE_IMAGE:
file_type = FILE_TYPE_IMAGEVIEWER; enum_idx = MENU_ENUM_LABEL_FILE_BROWSER_IMAGE;
else break;
file_type = FILE_TYPE_IMAGE; case FILE_TYPE_IMAGEVIEWER:
#endif enum_idx = MENU_ENUM_LABEL_FILE_BROWSER_IMAGE_OPEN_WITH_VIEWER;
break;
case FILE_TYPE_DIRECTORY:
enum_idx = MENU_ENUM_LABEL_FILE_BROWSER_DIRECTORY;
break; break;
default: default:
break; break;
} }
}
switch (file_type) items_found++;
{ menu_entries_append_enum(info->list, path, label,
case FILE_TYPE_PLAIN: enum_idx,
#if 0 file_type, 0, 0);
enum_idx = MENU_ENUM_LABEL_FILE_BROWSER_PLAIN_FILE;
#endif
break;
case FILE_TYPE_MOVIE:
enum_idx = MENU_ENUM_LABEL_FILE_BROWSER_MOVIE_OPEN;
break;
case FILE_TYPE_MUSIC:
enum_idx = MENU_ENUM_LABEL_FILE_BROWSER_MUSIC_OPEN;
break;
case FILE_TYPE_IMAGE:
enum_idx = MENU_ENUM_LABEL_FILE_BROWSER_IMAGE;
break;
case FILE_TYPE_IMAGEVIEWER:
enum_idx = MENU_ENUM_LABEL_FILE_BROWSER_IMAGE_OPEN_WITH_VIEWER;
break;
case FILE_TYPE_DIRECTORY:
enum_idx = MENU_ENUM_LABEL_FILE_BROWSER_DIRECTORY;
break;
default:
break;
} }
items_found++;
menu_entries_append_enum(info->list, path, label,
enum_idx,
file_type, 0, 0);
} }
string_list_free(str_list); if (str_list && str_list->size > 0)
string_list_free(str_list);
if (items_found == 0) if (items_found == 0)
{ {
@ -3561,8 +3557,6 @@ static int menu_displaylist_parse_generic(
msg_hash_to_str(MENU_ENUM_LABEL_NO_ITEMS), msg_hash_to_str(MENU_ENUM_LABEL_NO_ITEMS),
MENU_ENUM_LABEL_NO_ITEMS, MENU_ENUM_LABEL_NO_ITEMS,
MENU_SETTING_NO_ITEM, 0, 0); MENU_SETTING_NO_ITEM, 0, 0);
goto end;
} }
/* We don't want to show 'filter by extension' for this. */ /* We don't want to show 'filter by extension' for this. */