mirror of
https://github.com/libretro/RetroArch
synced 2025-04-10 06:44:27 +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))
|
if(g_extern.lifecycle_mode_state & (1ULL << MODE_INFO_DRAW))
|
||||||
rmenu_settings_msg(S_MSG_EXTRACTED_ZIPFILE, S_DELAY_180);
|
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)) ||
|
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)))
|
(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)
|
if (ret == 0)
|
||||||
RARCH_LOG("Removed temporary unzipped ROM file: [%s].\n", g_extern.fullpath);
|
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_UNZIP_DELETE_PENDING);
|
||||||
|
g_extern.lifecycle_mode_state |= (1ULL << MODE_FILEBROWSER_REFRESH_PENDING);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -558,7 +558,12 @@ static void browser_update(void *data, uint64_t input, const char *extensions)
|
|||||||
filebrowser_action_t action = FILEBROWSER_ACTION_NOOP;
|
filebrowser_action_t action = FILEBROWSER_ACTION_NOOP;
|
||||||
bool ret = true;
|
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;
|
action = FILEBROWSER_ACTION_DOWN;
|
||||||
else if (input & (1ULL << RMENU_DEVICE_NAV_UP))
|
else if (input & (1ULL << RMENU_DEVICE_NAV_UP))
|
||||||
action = FILEBROWSER_ACTION_UP;
|
action = FILEBROWSER_ACTION_UP;
|
||||||
|
@ -138,35 +138,53 @@ void rmenu_settings_set(unsigned setting)
|
|||||||
case S_UNZIP_MODE_DECREMENT:
|
case S_UNZIP_MODE_DECREMENT:
|
||||||
if (g_extern.lifecycle_mode_state & (1ULL << MODE_UNZIP_TO_CACHEDIR))
|
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);
|
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))
|
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);
|
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))
|
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);
|
g_extern.lifecycle_mode_state |= (1ULL << MODE_UNZIP_TO_CURDIR_AND_LOAD_FIRST_FILE);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case S_UNZIP_MODE_INCREMENT:
|
case S_UNZIP_MODE_INCREMENT:
|
||||||
if (g_extern.lifecycle_mode_state & (1ULL << MODE_UNZIP_TO_CURDIR))
|
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);
|
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))
|
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);
|
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))
|
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);
|
g_extern.lifecycle_mode_state |= (1ULL << MODE_UNZIP_TO_CACHEDIR);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include "../../../file.h"
|
||||||
#include "file_browser.h"
|
#include "file_browser.h"
|
||||||
|
|
||||||
static bool filebrowser_parse_directory(void *data, unsigned stack_size,
|
static bool filebrowser_parse_directory(void *data, unsigned stack_size,
|
||||||
@ -101,6 +102,20 @@ bool with_extension)
|
|||||||
return ret;
|
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)
|
static bool filebrowser_pop_directory (void *data)
|
||||||
{
|
{
|
||||||
filebrowser_t *filebrowser = (filebrowser_t*)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 +
|
filebrowser->current_dir.ptr = (min(filebrowser->current_dir.ptr +
|
||||||
entries_to_scroll, filebrowser->current_dir.list->size-1));
|
entries_to_scroll, filebrowser->current_dir.list->size-1));
|
||||||
break;
|
break;
|
||||||
|
case FILEBROWSER_ACTION_REFRESH:
|
||||||
|
ret = filebrowser_refresh_directory(filebrowser, filebrowser_get_current_path(filebrowser));
|
||||||
|
break;
|
||||||
case FILEBROWSER_ACTION_OK:
|
case FILEBROWSER_ACTION_OK:
|
||||||
ret = filebrowser_push_directory(filebrowser, filebrowser_get_current_path(filebrowser), true);
|
ret = filebrowser_push_directory(filebrowser, filebrowser_get_current_path(filebrowser), true);
|
||||||
break;
|
break;
|
||||||
|
@ -38,6 +38,7 @@ typedef enum
|
|||||||
FILEBROWSER_ACTION_LEFT,
|
FILEBROWSER_ACTION_LEFT,
|
||||||
FILEBROWSER_ACTION_RIGHT,
|
FILEBROWSER_ACTION_RIGHT,
|
||||||
FILEBROWSER_ACTION_OK,
|
FILEBROWSER_ACTION_OK,
|
||||||
|
FILEBROWSER_ACTION_REFRESH,
|
||||||
FILEBROWSER_ACTION_CANCEL,
|
FILEBROWSER_ACTION_CANCEL,
|
||||||
FILEBROWSER_ACTION_SCROLL_UP,
|
FILEBROWSER_ACTION_SCROLL_UP,
|
||||||
FILEBROWSER_ACTION_SCROLL_DOWN,
|
FILEBROWSER_ACTION_SCROLL_DOWN,
|
||||||
|
@ -135,6 +135,7 @@ enum menu_enums
|
|||||||
MODE_UNZIP_TO_CURDIR_AND_LOAD_FIRST_FILE_AND_CLEAN,
|
MODE_UNZIP_TO_CURDIR_AND_LOAD_FIRST_FILE_AND_CLEAN,
|
||||||
MODE_UNZIP_TO_CACHEDIR,
|
MODE_UNZIP_TO_CACHEDIR,
|
||||||
MODE_UNZIP_DELETE_PENDING,
|
MODE_UNZIP_DELETE_PENDING,
|
||||||
|
MODE_FILEBROWSER_REFRESH_PENDING,
|
||||||
};
|
};
|
||||||
|
|
||||||
// All config related settings go here.
|
// All config related settings go here.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user