(Filebrowser/RMenu) Now refreshes filebrowser when unzipping a file

This commit is contained in:
twinaphex 2013-01-13 08:58:57 +01:00
parent 37ed33daba
commit 32495632d8
6 changed files with 53 additions and 7 deletions

View File

@ -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
} }

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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,

View File

@ -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.