(XMB) Dynamic wallpapers

This commit is contained in:
Jean-André Santoni 2015-06-04 17:17:23 +07:00
parent b09b7e602c
commit 6da346f456
5 changed files with 78 additions and 0 deletions

View File

@ -548,6 +548,7 @@ static void config_set_defaults(void)
settings->menu.pointer.enable = pointer_enable;
settings->menu.timedate_enable = true;
settings->menu.core_enable = true;
settings->menu.dynamic_wallpaper_enable = false;
*settings->menu.wallpaper = '\0';
settings->menu.collapse_subgroups_enable = collapse_subgroups_enable;
settings->menu.show_advanced_settings = show_advanced_settings;
@ -672,6 +673,7 @@ static void config_set_defaults(void)
*settings->input.overlay = '\0';
*settings->core_assets_directory = '\0';
*settings->assets_directory = '\0';
*settings->dynamic_wallpapers_directory = '\0';
*settings->playlist_directory = '\0';
*settings->video.shader_path = '\0';
*settings->video.shader_dir = '\0';
@ -1209,6 +1211,7 @@ static bool config_load_file(const char *path, bool set_defaults)
CONFIG_GET_BOOL_BASE(conf, settings, menu.pointer.enable, "menu_pointer_enable");
CONFIG_GET_BOOL_BASE(conf, settings, menu.timedate_enable, "menu_timedate_enable");
CONFIG_GET_BOOL_BASE(conf, settings, menu.core_enable, "menu_core_enable");
CONFIG_GET_BOOL_BASE(conf, settings, menu.dynamic_wallpaper_enable, "menu_dynamic_wallpaper_enable");
CONFIG_GET_BOOL_BASE(conf, settings, menu.navigation.wraparound.horizontal_enable, "menu_navigation_wraparound_horizontal_enable");
CONFIG_GET_BOOL_BASE(conf, settings, menu.navigation.wraparound.vertical_enable, "menu_navigation_wraparound_vertical_enable");
CONFIG_GET_BOOL_BASE(conf, settings, menu.navigation.browser.filter.supported_extensions_enable, "menu_navigation_browser_filter_supported_extensions_enable");
@ -1442,11 +1445,14 @@ static bool config_load_file(const char *path, bool set_defaults)
config_get_path(conf, "input_remapping_directory", settings->input_remapping_directory, sizeof(settings->input_remapping_directory));
config_get_path(conf, "core_assets_directory", settings->core_assets_directory, sizeof(settings->core_assets_directory));
config_get_path(conf, "assets_directory", settings->assets_directory, sizeof(settings->assets_directory));
config_get_path(conf, "dynamic_wallpapers_directory", settings->dynamic_wallpapers_directory, sizeof(settings->dynamic_wallpapers_directory));
config_get_path(conf, "playlist_directory", settings->playlist_directory, sizeof(settings->playlist_directory));
if (!strcmp(settings->core_assets_directory, "default"))
*settings->core_assets_directory = '\0';
if (!strcmp(settings->assets_directory, "default"))
*settings->assets_directory = '\0';
if (!strcmp(settings->dynamic_wallpapers_directory, "default"))
*settings->dynamic_wallpapers_directory = '\0';
if (!strcmp(settings->playlist_directory, "default"))
*settings->playlist_directory = '\0';
#ifdef HAVE_MENU
@ -2325,6 +2331,7 @@ bool config_save_file(const char *path)
config_set_bool(conf,"menu_pointer_enable", settings->menu.pointer.enable);
config_set_bool(conf,"menu_timedate_enable", settings->menu.timedate_enable);
config_set_bool(conf,"menu_core_enable", settings->menu.core_enable);
config_set_bool(conf,"menu_dynamic_wallpaper_enable", settings->menu.dynamic_wallpaper_enable);
config_set_path(conf, "menu_wallpaper", settings->menu.wallpaper);
#endif
config_set_bool(conf, "video_vsync", settings->video.vsync);
@ -2408,6 +2415,12 @@ bool config_save_file(const char *path)
config_set_path(conf, "assets_directory",
*settings->assets_directory ?
settings->assets_directory : "default");
config_set_path(conf, "dynamic_wallpapers_directory",
*settings->dynamic_wallpapers_directory ?
settings->dynamic_wallpapers_directory : "default");
config_set_path(conf, "dynamic_wallpapers_directory",
*settings->dynamic_wallpapers_directory ?
settings->dynamic_wallpapers_directory : "default");
config_set_path(conf, "playlist_directory",
*settings->playlist_directory ?
settings->playlist_directory : "default");

View File

@ -111,6 +111,7 @@ typedef struct settings
bool pause_libretro;
bool timedate_enable;
bool core_enable;
bool dynamic_wallpaper_enable;
bool throttle;
char wallpaper[PATH_MAX_LENGTH];
@ -311,6 +312,7 @@ typedef struct settings
char core_assets_directory[PATH_MAX_LENGTH];
char assets_directory[PATH_MAX_LENGTH];
char dynamic_wallpapers_directory[PATH_MAX_LENGTH];
char menu_config_directory[PATH_MAX_LENGTH];
#if defined(HAVE_MENU)
char menu_content_directory[PATH_MAX_LENGTH];

View File

@ -696,10 +696,30 @@ static void xmb_list_switch_new(xmb_handle_t *xmb,
unsigned i;
size_t end = 0;
menu_handle_t *menu = menu_driver_get_ptr();
settings_t *settings = config_get_ptr();
if (!menu)
return;
if (settings->menu.dynamic_wallpaper_enable)
{
char path[PATH_MAX_LENGTH];
char *tmp = string_replace_substring(xmb->title_name, "/", " ");
if (tmp)
{
fill_pathname_join(path, settings->dynamic_wallpapers_directory, tmp, sizeof(path));
free(tmp);
}
strlcat(path, ".png", sizeof(path));
if (path_file_exists(path))
rarch_main_data_msg_queue_push(DATA_TYPE_IMAGE, path,
"cb_menu_wallpaper", 0, 1, true);
}
end = file_list_get_size(list);
for (i = 0; i < end; i++)

View File

@ -2606,6 +2606,15 @@ int setting_get_description(const char *label, char *s,
"menu interfaces try to look for loadable \n"
"assets, etc.");
}
else if (!strcmp(label, "dynamic_wallpapers_directory"))
{
snprintf(s, len,
" -- Dynamic Wallpapers Directory. \n"
" \n"
" The place to store wallpapers that will \n"
"be loaded dynamically by the menu depending \n"
"on context.");
}
else if (!strcmp(label, "slowmotion_ratio"))
{
snprintf(s, len,
@ -5536,6 +5545,18 @@ static bool setting_append_list_menu_options(
menu_settings_list_current_add_values(list, list_info, "png");
settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY);
CONFIG_BOOL(
settings->menu.dynamic_wallpaper_enable,
"menu_dynamic_wallpaper_enable",
"Dynamic Wallpaper",
true,
"OFF",
"ON",
group_info.name,
subgroup_info.name,
general_write_handler,
general_read_handler);
CONFIG_BOOL(
settings->menu.pause_libretro,
"menu_pause_libretro",
@ -6274,6 +6295,21 @@ static bool setting_append_list_directory_options(
list_info,
SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION);
CONFIG_DIR(
settings->dynamic_wallpapers_directory,
"dynamic_wallpapers_directory",
"Dynamic Wallpapers Directory",
"",
"<default>",
group_info.name,
subgroup_info.name,
general_write_handler,
general_read_handler);
settings_data_list_current_add_flags(
list,
list_info,
SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION);
CONFIG_DIR(
settings->menu_content_directory,
"rgui_browser_directory",

View File

@ -89,6 +89,10 @@
# loadable assets, etc.
# assets_directory =
# Dynamic wallpapers directory. The place to store the wallpapers dynamically
# loaded by the menu depending on context.
# dynamic_wallpapers_directory =
# Sets start directory for menu config browser.
# rgui_config_directory =
@ -615,6 +619,9 @@
# Path to a .png image to set as menu wallpaper.
# menu_wallpaper =
# Dynamically load a new wallpaper depending on context.
# menu_dynamic_wallpaper_enable = false
# Wrap-around toe beginning and/or end if boundary of list reached horizontally
# menu_navigation_wraparound_horizontal_enable = false