mirror of
https://github.com/Rockbox/rockbox.git
synced 2026-04-11 16:37:45 -04:00
added setting to retain file browser directory on reboots WIP
I added the setting keep_directory which automatically updates the last directory visited and restores it on next boot --added manual entry Change-Id: I0ffe6531d591d693806ce0bf56fe22b99e3315e9
This commit is contained in:
parent
380b7b3e32
commit
c86fd2318d
10 changed files with 53 additions and 1 deletions
|
|
@ -453,6 +453,13 @@ int ft_load(struct tree_context* c, const char* tempdir)
|
||||||
check_file_thumbnails(c); /* map .talk to ours */
|
check_file_thumbnails(c); /* map .talk to ours */
|
||||||
|
|
||||||
tree_unlock_cache(c);
|
tree_unlock_cache(c);
|
||||||
|
|
||||||
|
if (global_settings.keep_directory)
|
||||||
|
{
|
||||||
|
path_append(global_status.browse_last_folder, c->currdir, PA_SEP_HARD,
|
||||||
|
sizeof(global_status.browse_last_folder));
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
static void ft_load_font(char *file)
|
static void ft_load_font(char *file)
|
||||||
|
|
|
||||||
|
|
@ -17029,3 +17029,17 @@
|
||||||
general_purpose_led: "Use LED indicators"
|
general_purpose_led: "Use LED indicators"
|
||||||
</voice>
|
</voice>
|
||||||
</phrase>
|
</phrase>
|
||||||
|
<phrase>
|
||||||
|
id: LANG_KEEP_DIRECTORY
|
||||||
|
desc: file browser setting
|
||||||
|
user: core
|
||||||
|
<source>
|
||||||
|
*: "Always remember last folder"
|
||||||
|
</source>
|
||||||
|
<dest>
|
||||||
|
*: "Always remember last folder"
|
||||||
|
</dest>
|
||||||
|
<voice>
|
||||||
|
*: "Always remember last folder"
|
||||||
|
</voice>
|
||||||
|
</phrase>
|
||||||
|
|
|
||||||
|
|
@ -199,6 +199,7 @@ static int clear_start_directory(void)
|
||||||
splash(HZ, ID2P(LANG_RESET_DONE_CLEAR));
|
splash(HZ, ID2P(LANG_RESET_DONE_CLEAR));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
MENUITEM_SETTING(keep_directory, &global_settings.keep_directory, NULL);
|
||||||
MENUITEM_FUNCTION(clear_start_directory_item, 0, ID2P(LANG_RESET_START_DIR),
|
MENUITEM_FUNCTION(clear_start_directory_item, 0, ID2P(LANG_RESET_START_DIR),
|
||||||
clear_start_directory, NULL, Icon_file_view_menu);
|
clear_start_directory, NULL, Icon_file_view_menu);
|
||||||
|
|
||||||
|
|
@ -209,6 +210,7 @@ MAKE_MENU(file_menu, ID2P(LANG_FILE), filemenu_callback, Icon_file_view_menu,
|
||||||
&sort_case, &sort_dir, &sort_file, &interpret_numbers,
|
&sort_case, &sort_dir, &sort_file, &interpret_numbers,
|
||||||
&dirfilter, &show_filename_ext, &browse_current,
|
&dirfilter, &show_filename_ext, &browse_current,
|
||||||
&show_path_in_browser,
|
&show_path_in_browser,
|
||||||
|
&keep_directory,
|
||||||
&clear_start_directory_item
|
&clear_start_directory_item
|
||||||
#ifdef HAVE_HOTKEY
|
#ifdef HAVE_HOTKEY
|
||||||
,&hotkey_tree_item
|
,&hotkey_tree_item
|
||||||
|
|
|
||||||
|
|
@ -2039,6 +2039,12 @@ void validate_start_directory_init(void) /* INIT_ATTR */
|
||||||
path_append(dirpath, PATH_ROOTSTR,
|
path_append(dirpath, PATH_ROOTSTR,
|
||||||
PA_SEP_HARD, sizeof(global_settings.start_directory));
|
PA_SEP_HARD, sizeof(global_settings.start_directory));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!global_settings.keep_directory) /* reset to root / if !keep_directory */
|
||||||
|
{
|
||||||
|
path_append(global_status.browse_last_folder, PATH_ROOTSTR, PA_SEP_HARD,
|
||||||
|
sizeof(global_status.browse_last_folder));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* ndef __PCTOOL__ */
|
#endif /* ndef __PCTOOL__ */
|
||||||
|
|
|
||||||
|
|
@ -118,7 +118,9 @@ static int browser(void* param)
|
||||||
int filter = SHOW_SUPPORTED;
|
int filter = SHOW_SUPPORTED;
|
||||||
char folder[MAX_PATH] = "/";
|
char folder[MAX_PATH] = "/";
|
||||||
/* stuff needed to remember position in file browser */
|
/* stuff needed to remember position in file browser */
|
||||||
static char last_folder[MAX_PATH] = "/";
|
/*static char last_folder[MAX_PATH] = "/"*/
|
||||||
|
char *last_folder = global_status.browse_last_folder;
|
||||||
|
|
||||||
/* and stuff for the database browser */
|
/* and stuff for the database browser */
|
||||||
#ifdef HAVE_TAGCACHE
|
#ifdef HAVE_TAGCACHE
|
||||||
static int last_db_dirlevel = 0, last_db_selection = 0, last_ft_dirlevel = 0;
|
static int last_db_dirlevel = 0, last_db_selection = 0, last_ft_dirlevel = 0;
|
||||||
|
|
|
||||||
|
|
@ -628,6 +628,11 @@ static bool settings_write_config(const char* filename, int options)
|
||||||
case SETTINGS_SAVE_RESUMEINFO:
|
case SETTINGS_SAVE_RESUMEINFO:
|
||||||
if (!(setting->flags & F_RESUMESETTING))
|
if (!(setting->flags & F_RESUMESETTING))
|
||||||
continue;
|
continue;
|
||||||
|
if (setting->setting == &global_status.browse_last_folder
|
||||||
|
&& (!global_settings.keep_directory))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case SETTINGS_SAVE_ALL:
|
case SETTINGS_SAVE_ALL:
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -365,6 +365,7 @@ struct system_status
|
||||||
int font_id[NB_SCREENS]; /* font id of the settings font for each screen */
|
int font_id[NB_SCREENS]; /* font id of the settings font for each screen */
|
||||||
|
|
||||||
bool resume_modified; /* playlist is modified (=> warn before erase) */
|
bool resume_modified; /* playlist is modified (=> warn before erase) */
|
||||||
|
char browse_last_folder[MAX_PATH];/* only saved if keep_directory = true */
|
||||||
};
|
};
|
||||||
|
|
||||||
struct user_settings
|
struct user_settings
|
||||||
|
|
@ -893,6 +894,7 @@ struct user_settings
|
||||||
|
|
||||||
char start_directory[MAX_PATHNAME+1];
|
char start_directory[MAX_PATHNAME+1];
|
||||||
/* Has the root been customized from the .cfg file? false = no, true = loaded from cfg */
|
/* Has the root been customized from the .cfg file? false = no, true = loaded from cfg */
|
||||||
|
bool keep_directory; /* this saves the last path visited in the file browser */
|
||||||
bool root_menu_customized;
|
bool root_menu_customized;
|
||||||
#ifdef HAVE_QUICKSCREEN
|
#ifdef HAVE_QUICKSCREEN
|
||||||
bool shortcuts_replaces_qs;
|
bool shortcuts_replaces_qs;
|
||||||
|
|
|
||||||
|
|
@ -148,6 +148,13 @@
|
||||||
#define SYSTEM_STATUS(flags,var,default,name) \
|
#define SYSTEM_STATUS(flags,var,default,name) \
|
||||||
{flags|F_RESUMESETTING|F_T_INT, &global_status.var,-1, \
|
{flags|F_RESUMESETTING|F_T_INT, &global_status.var,-1, \
|
||||||
INT(default), name, UNUSED}
|
INT(default), name, UNUSED}
|
||||||
|
|
||||||
|
#define SYSTEM_STATUS_TEXT_SETTING(flags,var,name,default,prefix,suffix) \
|
||||||
|
{flags|F_RESUMESETTING|F_T_UCHARPTR, &global_status.var,-1, \
|
||||||
|
CHARPTR(default),name, \
|
||||||
|
{.filename_setting= \
|
||||||
|
(struct filename_setting[]){ \
|
||||||
|
{prefix,suffix,sizeof(global_status.var)}}} }
|
||||||
/* system_status settings items will be saved to resume.cfg
|
/* system_status settings items will be saved to resume.cfg
|
||||||
Use for int which use the set_sound() function to set them
|
Use for int which use the set_sound() function to set them
|
||||||
These items WILL be included in the users exported settings files
|
These items WILL be included in the users exported settings files
|
||||||
|
|
@ -1498,6 +1505,9 @@ const struct settings_list settings[] = {
|
||||||
#endif /* HAVE_DISK_STORAGE */
|
#endif /* HAVE_DISK_STORAGE */
|
||||||
/* browser */
|
/* browser */
|
||||||
TEXT_SETTING(0, start_directory, "start directory", "/", NULL, NULL),
|
TEXT_SETTING(0, start_directory, "start directory", "/", NULL, NULL),
|
||||||
|
SYSTEM_STATUS_TEXT_SETTING(0, browse_last_folder, "last folder", "/", NULL, NULL),
|
||||||
|
OFFON_SETTING(0, keep_directory, LANG_KEEP_DIRECTORY, false, "keep directory", NULL),
|
||||||
|
|
||||||
CHOICE_SETTING(0, dirfilter, LANG_FILTER, SHOW_SUPPORTED, "show files",
|
CHOICE_SETTING(0, dirfilter, LANG_FILTER, SHOW_SUPPORTED, "show files",
|
||||||
"all,supported,music,playlists", NULL, 4, ID2P(LANG_ALL),
|
"all,supported,music,playlists", NULL, 4, ID2P(LANG_ALL),
|
||||||
ID2P(LANG_FILTER_SUPPORTED), ID2P(LANG_FILTER_MUSIC),
|
ID2P(LANG_FILTER_SUPPORTED), ID2P(LANG_FILTER_MUSIC),
|
||||||
|
|
|
||||||
|
|
@ -756,6 +756,7 @@ Nyx Guan
|
||||||
Arin Kim
|
Arin Kim
|
||||||
Ingmar Steen
|
Ingmar Steen
|
||||||
Lourenço Soares
|
Lourenço Soares
|
||||||
|
Yegor Chernyshov
|
||||||
|
|
||||||
The libmad team
|
The libmad team
|
||||||
The wavpack team
|
The wavpack team
|
||||||
|
|
|
||||||
|
|
@ -194,6 +194,9 @@ each option pertains both to files and directories):
|
||||||
\item [Recording Directory.]
|
\item [Recording Directory.]
|
||||||
Save recordings in the selected directory.
|
Save recordings in the selected directory.
|
||||||
}
|
}
|
||||||
|
\item [Always remember last folder.]
|
||||||
|
Saves the last position in the file browser on shutdown.
|
||||||
|
This directory (and if applicable last file) will be restored next boot.
|
||||||
\item [Start Directory.]
|
\item [Start Directory.]
|
||||||
Set as default start directory for the File Browser.
|
Set as default start directory for the File Browser.
|
||||||
\note{If you have \setting{Auto-Change Directory} and
|
\note{If you have \setting{Auto-Change Directory} and
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue