mirror of
https://github.com/libretro/RetroArch.git
synced 2025-02-28 05:35:34 +00:00
(Filebrowser/RMenu) Now refreshes filebrowser when unzipping a file
This commit is contained in:
parent
37ed33daba
commit
32495632d8
@ -115,6 +115,8 @@ void console_load_game(const char *path)
|
||||
if(g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW))
|
||||
rmenu_settings_msg(S_MSG_EXTRACTED_ZIPFILE, S_DELAY_180);
|
||||
|
||||
g_extern.lifecycle_mode_state |= (1ULL << MODE_FILEBROWSER_REFRESH_PENDING);
|
||||
|
||||
if ((g_extern.lifecycle_mode_state & (1ULL << MODE_UNZIP_TO_CURDIR_AND_LOAD_FIRST_FILE)) ||
|
||||
(g_extern.lifecycle_mode_state & (1ULL << MODE_UNZIP_TO_CURDIR_AND_LOAD_FIRST_FILE_AND_CLEAN)))
|
||||
{
|
||||
@ -358,6 +360,7 @@ begin_loop:
|
||||
if (ret == 0)
|
||||
RARCH_LOG("Removed temporary unzipped ROM file: [%s].\n", g_extern.fullpath);
|
||||
g_extern.lifecycle_mode_state &= ~(1ULL << MODE_UNZIP_DELETE_PENDING);
|
||||
g_extern.lifecycle_mode_state |= (1ULL << MODE_FILEBROWSER_REFRESH_PENDING);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@ -558,7 +558,12 @@ static void browser_update(void *data, uint64_t input, const char *extensions)
|
||||
filebrowser_action_t action = FILEBROWSER_ACTION_NOOP;
|
||||
bool ret = true;
|
||||
|
||||
if (input & (1ULL << RMENU_DEVICE_NAV_DOWN))
|
||||
if (g_extern.lifecycle_mode_state & (1ULL << MODE_FILEBROWSER_REFRESH_PENDING))
|
||||
{
|
||||
action = FILEBROWSER_ACTION_REFRESH;
|
||||
g_extern.lifecycle_mode_state &= ~(1ULL << MODE_FILEBROWSER_REFRESH_PENDING);
|
||||
}
|
||||
else if (input & (1ULL << RMENU_DEVICE_NAV_DOWN))
|
||||
action = FILEBROWSER_ACTION_DOWN;
|
||||
else if (input & (1ULL << RMENU_DEVICE_NAV_UP))
|
||||
action = FILEBROWSER_ACTION_UP;
|
||||
|
@ -138,35 +138,53 @@ void rmenu_settings_set(unsigned setting)
|
||||
case S_UNZIP_MODE_DECREMENT:
|
||||
if (g_extern.lifecycle_mode_state & (1ULL << MODE_UNZIP_TO_CACHEDIR))
|
||||
{
|
||||
g_extern.lifecycle_mode_state &= ~(1ULL << MODE_UNZIP_TO_CACHEDIR);
|
||||
g_extern.lifecycle_mode_state &= ~((1ULL << MODE_UNZIP_TO_CACHEDIR) |
|
||||
(1ULL << MODE_UNZIP_TO_CURDIR_AND_LOAD_FIRST_FILE_AND_CLEAN) |
|
||||
(1ULL << MODE_UNZIP_TO_CURDIR_AND_LOAD_FIRST_FILE) |
|
||||
(1ULL << MODE_UNZIP_TO_CURDIR));
|
||||
g_extern.lifecycle_mode_state |= (1ULL << MODE_UNZIP_TO_CURDIR_AND_LOAD_FIRST_FILE_AND_CLEAN);
|
||||
}
|
||||
else if (g_extern.lifecycle_mode_state & (1ULL << MODE_UNZIP_TO_CURDIR_AND_LOAD_FIRST_FILE))
|
||||
{
|
||||
g_extern.lifecycle_mode_state &= ~(1ULL << MODE_UNZIP_TO_CURDIR_AND_LOAD_FIRST_FILE);
|
||||
g_extern.lifecycle_mode_state &= ~((1ULL << MODE_UNZIP_TO_CACHEDIR) |
|
||||
(1ULL << MODE_UNZIP_TO_CURDIR_AND_LOAD_FIRST_FILE_AND_CLEAN) |
|
||||
(1ULL << MODE_UNZIP_TO_CURDIR_AND_LOAD_FIRST_FILE) |
|
||||
(1ULL << MODE_UNZIP_TO_CURDIR));
|
||||
g_extern.lifecycle_mode_state |= (1ULL << MODE_UNZIP_TO_CURDIR);
|
||||
}
|
||||
|
||||
else if (g_extern.lifecycle_mode_state & (1ULL << MODE_UNZIP_TO_CURDIR_AND_LOAD_FIRST_FILE_AND_CLEAN))
|
||||
{
|
||||
g_extern.lifecycle_mode_state &= ~(1ULL << MODE_UNZIP_TO_CURDIR_AND_LOAD_FIRST_FILE_AND_CLEAN);
|
||||
g_extern.lifecycle_mode_state &= ~((1ULL << MODE_UNZIP_TO_CACHEDIR) |
|
||||
(1ULL << MODE_UNZIP_TO_CURDIR_AND_LOAD_FIRST_FILE_AND_CLEAN) |
|
||||
(1ULL << MODE_UNZIP_TO_CURDIR_AND_LOAD_FIRST_FILE) |
|
||||
(1ULL << MODE_UNZIP_TO_CURDIR));
|
||||
g_extern.lifecycle_mode_state |= (1ULL << MODE_UNZIP_TO_CURDIR_AND_LOAD_FIRST_FILE);
|
||||
}
|
||||
break;
|
||||
case S_UNZIP_MODE_INCREMENT:
|
||||
if (g_extern.lifecycle_mode_state & (1ULL << MODE_UNZIP_TO_CURDIR))
|
||||
{
|
||||
g_extern.lifecycle_mode_state &= ~(1ULL << MODE_UNZIP_TO_CURDIR);
|
||||
g_extern.lifecycle_mode_state &= ~((1ULL << MODE_UNZIP_TO_CACHEDIR) |
|
||||
(1ULL << MODE_UNZIP_TO_CURDIR_AND_LOAD_FIRST_FILE_AND_CLEAN) |
|
||||
(1ULL << MODE_UNZIP_TO_CURDIR_AND_LOAD_FIRST_FILE) |
|
||||
(1ULL << MODE_UNZIP_TO_CURDIR));
|
||||
g_extern.lifecycle_mode_state |= (1ULL << MODE_UNZIP_TO_CURDIR_AND_LOAD_FIRST_FILE);
|
||||
}
|
||||
else if (g_extern.lifecycle_mode_state & (1ULL << MODE_UNZIP_TO_CURDIR_AND_LOAD_FIRST_FILE))
|
||||
{
|
||||
g_extern.lifecycle_mode_state &= ~(1ULL << MODE_UNZIP_TO_CURDIR_AND_LOAD_FIRST_FILE);
|
||||
g_extern.lifecycle_mode_state &= ~((1ULL << MODE_UNZIP_TO_CACHEDIR) |
|
||||
(1ULL << MODE_UNZIP_TO_CURDIR_AND_LOAD_FIRST_FILE_AND_CLEAN) |
|
||||
(1ULL << MODE_UNZIP_TO_CURDIR_AND_LOAD_FIRST_FILE) |
|
||||
(1ULL << MODE_UNZIP_TO_CURDIR));
|
||||
g_extern.lifecycle_mode_state |= (1ULL << MODE_UNZIP_TO_CURDIR_AND_LOAD_FIRST_FILE_AND_CLEAN);
|
||||
}
|
||||
else if (g_extern.lifecycle_mode_state & (1ULL << MODE_UNZIP_TO_CURDIR_AND_LOAD_FIRST_FILE_AND_CLEAN))
|
||||
{
|
||||
g_extern.lifecycle_mode_state &= ~(1ULL << MODE_UNZIP_TO_CURDIR_AND_LOAD_FIRST_FILE_AND_CLEAN);
|
||||
g_extern.lifecycle_mode_state &= ~((1ULL << MODE_UNZIP_TO_CACHEDIR) |
|
||||
(1ULL << MODE_UNZIP_TO_CURDIR_AND_LOAD_FIRST_FILE_AND_CLEAN) |
|
||||
(1ULL << MODE_UNZIP_TO_CURDIR_AND_LOAD_FIRST_FILE) |
|
||||
(1ULL << MODE_UNZIP_TO_CURDIR));
|
||||
g_extern.lifecycle_mode_state |= (1ULL << MODE_UNZIP_TO_CACHEDIR);
|
||||
}
|
||||
break;
|
||||
|
@ -16,6 +16,7 @@
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include "../../../file.h"
|
||||
#include "file_browser.h"
|
||||
|
||||
static bool filebrowser_parse_directory(void *data, unsigned stack_size,
|
||||
@ -101,6 +102,20 @@ bool with_extension)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static bool filebrowser_refresh_directory(void *data, const char * path)
|
||||
{
|
||||
filebrowser_t *filebrowser = (filebrowser_t*)data;
|
||||
bool ret = true;
|
||||
|
||||
char basedir[PATH_MAX];
|
||||
fill_pathname_basedir(basedir, path, sizeof(basedir));
|
||||
|
||||
ret = filebrowser_parse_directory(filebrowser, filebrowser->directory_stack_size, basedir,
|
||||
filebrowser->extensions);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static bool filebrowser_pop_directory (void *data)
|
||||
{
|
||||
filebrowser_t *filebrowser = (filebrowser_t*)data;
|
||||
@ -209,6 +224,9 @@ bool filebrowser_iterate(void *data, unsigned action)
|
||||
filebrowser->current_dir.ptr = (min(filebrowser->current_dir.ptr +
|
||||
entries_to_scroll, filebrowser->current_dir.list->size-1));
|
||||
break;
|
||||
case FILEBROWSER_ACTION_REFRESH:
|
||||
ret = filebrowser_refresh_directory(filebrowser, filebrowser_get_current_path(filebrowser));
|
||||
break;
|
||||
case FILEBROWSER_ACTION_OK:
|
||||
ret = filebrowser_push_directory(filebrowser, filebrowser_get_current_path(filebrowser), true);
|
||||
break;
|
||||
|
@ -38,6 +38,7 @@ typedef enum
|
||||
FILEBROWSER_ACTION_LEFT,
|
||||
FILEBROWSER_ACTION_RIGHT,
|
||||
FILEBROWSER_ACTION_OK,
|
||||
FILEBROWSER_ACTION_REFRESH,
|
||||
FILEBROWSER_ACTION_CANCEL,
|
||||
FILEBROWSER_ACTION_SCROLL_UP,
|
||||
FILEBROWSER_ACTION_SCROLL_DOWN,
|
||||
|
Loading…
x
Reference in New Issue
Block a user