mirror of
https://github.com/libretro/RetroArch
synced 2025-03-03 04:14:00 +00:00
allow saves and configs to be optionally synced to cloud
This commit is contained in:
parent
286d65b42e
commit
c570a6a20a
@ -1769,6 +1769,8 @@ static struct config_bool_setting *populate_settings_bool(
|
||||
SETTING_BOOL("location_allow", &settings->bools.location_allow, true, false, false);
|
||||
SETTING_BOOL("cloud_sync_enable", &settings->bools.cloud_sync_enable, true, false, false);
|
||||
SETTING_BOOL("cloud_sync_destructive", &settings->bools.cloud_sync_destructive, true, false, false);
|
||||
SETTING_BOOL("cloud_sync_sync_saves", &settings->bools.cloud_sync_sync_saves, true, false, false);
|
||||
SETTING_BOOL("cloud_sync_sync_configs", &settings->bools.cloud_sync_sync_configs, true, false, false);
|
||||
SETTING_BOOL("discord_allow", &settings->bools.discord_enable, true, false, false);
|
||||
#ifdef HAVE_MIST
|
||||
SETTING_BOOL("steam_rich_presence_enable", &settings->bools.steam_rich_presence_enable, true, false, false);
|
||||
|
@ -960,6 +960,8 @@ typedef struct settings
|
||||
/* Cloud Sync */
|
||||
bool cloud_sync_enable;
|
||||
bool cloud_sync_destructive;
|
||||
bool cloud_sync_sync_saves;
|
||||
bool cloud_sync_sync_configs;
|
||||
|
||||
/* Misc. */
|
||||
bool discord_enable;
|
||||
|
@ -3636,6 +3636,14 @@ MSG_HASH(
|
||||
MENU_ENUM_LABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||
"cloud_sync_destructive"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_SAVES,
|
||||
"cloud_sync_sync_saves"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_CONFIGS,
|
||||
"cloud_sync_sync_configs"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_CLOUD_SYNC_DRIVER,
|
||||
"cloud_sync_driver"
|
||||
|
@ -1244,10 +1244,26 @@ MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
||||
"Destructive Cloud Sync"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_SAVES,
|
||||
"Sync: Saves/States"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||
"Sync: Configuration Files"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_SAVES,
|
||||
"When enabled, saves/states will be synced to cloud."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_CONFIGS,
|
||||
"When enabled, configuration files will be synced to cloud."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||
"When disabled, files are moved to a backup folder before being overwritten or deleted."
|
||||
)
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
||||
"Cloud Sync Backend"
|
||||
|
@ -257,6 +257,8 @@ DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_saving_settings_list, MENU_
|
||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_settings_list, MENU_ENUM_SUBLABEL_CLOUD_SYNC_SETTINGS)
|
||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_enable, MENU_ENUM_SUBLABEL_CLOUD_SYNC_ENABLE)
|
||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_destructive, MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE)
|
||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_sync_saves, MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_SAVES)
|
||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_sync_configs, MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_CONFIGS)
|
||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_driver, MENU_ENUM_SUBLABEL_CLOUD_SYNC_DRIVER)
|
||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_url, MENU_ENUM_SUBLABEL_CLOUD_SYNC_URL)
|
||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_username, MENU_ENUM_SUBLABEL_CLOUD_SYNC_USERNAME)
|
||||
@ -5049,6 +5051,12 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
|
||||
case MENU_ENUM_LABEL_CLOUD_SYNC_DESTRUCTIVE:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cloud_sync_destructive);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_SAVES:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cloud_sync_sync_saves);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_CONFIGS:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cloud_sync_sync_configs);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_CLOUD_SYNC_DRIVER:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cloud_sync_driver);
|
||||
break;
|
||||
|
@ -10708,12 +10708,14 @@ unsigned menu_displaylist_build_list(
|
||||
case DISPLAYLIST_CLOUD_SYNC_SETTINGS_LIST:
|
||||
{
|
||||
menu_displaylist_build_info_t build_list[] = {
|
||||
{MENU_ENUM_LABEL_CLOUD_SYNC_ENABLE, PARSE_ONLY_BOOL },
|
||||
{MENU_ENUM_LABEL_CLOUD_SYNC_DESTRUCTIVE, PARSE_ONLY_BOOL },
|
||||
{MENU_ENUM_LABEL_CLOUD_SYNC_DRIVER, PARSE_ONLY_STRING_OPTIONS },
|
||||
{MENU_ENUM_LABEL_CLOUD_SYNC_URL, PARSE_ONLY_STRING },
|
||||
{MENU_ENUM_LABEL_CLOUD_SYNC_USERNAME, PARSE_ONLY_STRING },
|
||||
{MENU_ENUM_LABEL_CLOUD_SYNC_PASSWORD, PARSE_ONLY_STRING },
|
||||
{MENU_ENUM_LABEL_CLOUD_SYNC_ENABLE, PARSE_ONLY_BOOL },
|
||||
{MENU_ENUM_LABEL_CLOUD_SYNC_DESTRUCTIVE, PARSE_ONLY_BOOL },
|
||||
{MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_SAVES, PARSE_ONLY_BOOL },
|
||||
{MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_CONFIGS, PARSE_ONLY_BOOL },
|
||||
{MENU_ENUM_LABEL_CLOUD_SYNC_DRIVER, PARSE_ONLY_STRING_OPTIONS },
|
||||
{MENU_ENUM_LABEL_CLOUD_SYNC_URL, PARSE_ONLY_STRING },
|
||||
{MENU_ENUM_LABEL_CLOUD_SYNC_USERNAME, PARSE_ONLY_STRING },
|
||||
{MENU_ENUM_LABEL_CLOUD_SYNC_PASSWORD, PARSE_ONLY_STRING },
|
||||
};
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(build_list); i++)
|
||||
|
@ -11830,6 +11830,36 @@ static bool setting_append_list(
|
||||
general_read_handler,
|
||||
SD_FLAG_NONE);
|
||||
|
||||
CONFIG_BOOL(
|
||||
list, list_info,
|
||||
&settings->bools.cloud_sync_sync_saves,
|
||||
MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_SAVES,
|
||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_SAVES,
|
||||
false,
|
||||
MENU_ENUM_LABEL_VALUE_OFF,
|
||||
MENU_ENUM_LABEL_VALUE_ON,
|
||||
&group_info,
|
||||
&subgroup_info,
|
||||
parent_group,
|
||||
general_write_handler,
|
||||
general_read_handler,
|
||||
SD_FLAG_NONE);
|
||||
|
||||
CONFIG_BOOL(
|
||||
list, list_info,
|
||||
&settings->bools.cloud_sync_sync_configs,
|
||||
MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_CONFIGS,
|
||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||
false,
|
||||
MENU_ENUM_LABEL_VALUE_OFF,
|
||||
MENU_ENUM_LABEL_VALUE_ON,
|
||||
&group_info,
|
||||
&subgroup_info,
|
||||
parent_group,
|
||||
general_write_handler,
|
||||
general_read_handler,
|
||||
SD_FLAG_NONE);
|
||||
|
||||
CONFIG_STRING_OPTIONS(
|
||||
list, list_info,
|
||||
settings->arrays.cloud_sync_driver,
|
||||
|
@ -3230,6 +3230,8 @@ enum msg_hash_enums
|
||||
MENU_LABEL(CLOUD_SYNC_SETTINGS),
|
||||
MENU_LABEL(CLOUD_SYNC_ENABLE),
|
||||
MENU_LABEL(CLOUD_SYNC_DESTRUCTIVE),
|
||||
MENU_LABEL(CLOUD_SYNC_SYNC_SAVES),
|
||||
MENU_LABEL(CLOUD_SYNC_SYNC_CONFIGS),
|
||||
MENU_LABEL(CLOUD_SYNC_DRIVER),
|
||||
MENU_LABEL(CLOUD_SYNC_URL),
|
||||
MENU_LABEL(CLOUD_SYNC_USERNAME),
|
||||
|
@ -302,23 +302,32 @@ static void task_cloud_sync_manifest_append_dir(file_list_t *manifest,
|
||||
static struct string_list *task_cloud_sync_directory_map(void)
|
||||
{
|
||||
static struct string_list *list = NULL;
|
||||
settings_t *settings = config_get_ptr();
|
||||
|
||||
if (!list)
|
||||
{
|
||||
union string_list_elem_attr attr = {0};
|
||||
char dir[PATH_MAX_LENGTH];
|
||||
list = string_list_new();
|
||||
|
||||
string_list_append(list, "config", attr);
|
||||
fill_pathname_application_special(dir,
|
||||
sizeof(dir), APPLICATION_SPECIAL_DIRECTORY_CONFIG);
|
||||
list->elems[list->size - 1].userdata = strdup(dir);
|
||||
if (settings->bools.cloud_sync_sync_configs)
|
||||
{
|
||||
string_list_append(list, "config", attr);
|
||||
fill_pathname_application_special(dir,
|
||||
sizeof(dir), APPLICATION_SPECIAL_DIRECTORY_CONFIG);
|
||||
list->elems[list->size - 1].userdata = strdup(dir);
|
||||
}
|
||||
|
||||
string_list_append(list, "saves", attr);
|
||||
list->elems[list->size - 1].userdata = strdup(dir_get_ptr(RARCH_DIR_SAVEFILE));
|
||||
if (settings->bools.cloud_sync_sync_saves)
|
||||
{
|
||||
string_list_append(list, "saves", attr);
|
||||
list->elems[list->size - 1].userdata = strdup(dir_get_ptr(RARCH_DIR_SAVEFILE));
|
||||
|
||||
string_list_append(list, "states", attr);
|
||||
list->elems[list->size - 1].userdata = strdup(dir_get_ptr(RARCH_DIR_SAVESTATE));
|
||||
string_list_append(list, "states", attr);
|
||||
list->elems[list->size - 1].userdata = strdup(dir_get_ptr(RARCH_DIR_SAVESTATE));
|
||||
}
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user