From 12def933dce1e8da8cd09731fd37a02a96ae6fba Mon Sep 17 00:00:00 2001 From: Eric Warmenhoven Date: Sun, 11 Aug 2024 16:12:35 -0400 Subject: [PATCH] cloud sync: add options to sync thumbnails and system files, default off (#16869) --- configuration.c | 2 ++ configuration.h | 2 ++ intl/msg_hash_lbl.h | 10 +++++++++- intl/msg_hash_us.h | 20 ++++++++++++++++++-- menu/cbs/menu_cbs_sublabel.c | 12 ++++++++++-- menu/menu_displaylist.c | 2 ++ menu/menu_setting.c | 30 ++++++++++++++++++++++++++++++ msg_hash.h | 2 ++ tasks/task_cloudsync.c | 14 ++++++++++++++ 9 files changed, 89 insertions(+), 5 deletions(-) diff --git a/configuration.c b/configuration.c index 4d28c288d8..01c27df78c 100644 --- a/configuration.c +++ b/configuration.c @@ -1784,6 +1784,8 @@ static struct config_bool_setting *populate_settings_bool( 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, true, false); SETTING_BOOL("cloud_sync_sync_configs", &settings->bools.cloud_sync_sync_configs, true, true, false); + SETTING_BOOL("cloud_sync_sync_thumbs", &settings->bools.cloud_sync_sync_thumbs, true, false, false); + SETTING_BOOL("cloud_sync_sync_system", &settings->bools.cloud_sync_sync_system, 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); diff --git a/configuration.h b/configuration.h index 32a84d4a0b..74cfff1148 100644 --- a/configuration.h +++ b/configuration.h @@ -964,6 +964,8 @@ typedef struct settings bool cloud_sync_destructive; bool cloud_sync_sync_saves; bool cloud_sync_sync_configs; + bool cloud_sync_sync_thumbs; + bool cloud_sync_sync_system; /* Misc. */ bool discord_enable; diff --git a/intl/msg_hash_lbl.h b/intl/msg_hash_lbl.h index 7ac19d207f..4510d9f6fd 100644 --- a/intl/msg_hash_lbl.h +++ b/intl/msg_hash_lbl.h @@ -3643,7 +3643,15 @@ MSG_HASH( MSG_HASH( MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_CONFIGS, "cloud_sync_sync_configs" - ) + ) +MSG_HASH( + MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_THUMBS, + "cloud_sync_sync_thumbs" + ) +MSG_HASH( + MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_SYSTEM, + "cloud_sync_sync_system" + ) MSG_HASH( MENU_ENUM_LABEL_CLOUD_SYNC_DRIVER, "cloud_sync_driver" diff --git a/intl/msg_hash_us.h b/intl/msg_hash_us.h index 13db943020..e6979b89f0 100644 --- a/intl/msg_hash_us.h +++ b/intl/msg_hash_us.h @@ -1251,7 +1251,15 @@ MSG_HASH( MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, "Sync: Configuration Files" - ) + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_THUMBS, + "Sync: Thumbnail Images" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_SYSTEM, + "Sync: System Files" + ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_SAVES, "When enabled, saves/states will be synced to cloud." @@ -1260,10 +1268,18 @@ 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_SYNC_THUMBS, + "When enabled, thumbnail images will be synced to cloud. Not generally recommended except for large collections of custom thumbnail images; otherwise the thumbnail downloader is a better choice." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_SYSTEM, + "When enabled, system files will be synced to cloud. This can significantly increase the time it takes to sync; use with caution." + ) 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" diff --git a/menu/cbs/menu_cbs_sublabel.c b/menu/cbs/menu_cbs_sublabel.c index ce63248272..5b4b5df43e 100644 --- a/menu/cbs/menu_cbs_sublabel.c +++ b/menu/cbs/menu_cbs_sublabel.c @@ -259,8 +259,10 @@ 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_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_sync_thumbs, MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_THUMBS) +DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_sync_system, MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_SYSTEM) 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) @@ -5064,6 +5066,12 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs, 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_SYNC_THUMBS: + BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cloud_sync_sync_thumbs); + break; + case MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_SYSTEM: + BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cloud_sync_sync_system); + break; case MENU_ENUM_LABEL_CLOUD_SYNC_DRIVER: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cloud_sync_driver); break; diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 1a9bad889a..9f5dae3358 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -10710,6 +10710,8 @@ unsigned menu_displaylist_build_list( {MENU_ENUM_LABEL_CLOUD_SYNC_DESTRUCTIVE, PARSE_ONLY_BOOL, true}, {MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_SAVES, PARSE_ONLY_BOOL, true}, {MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_CONFIGS, PARSE_ONLY_BOOL, true}, + {MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_THUMBS, PARSE_ONLY_BOOL, true}, + {MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_SYSTEM, PARSE_ONLY_BOOL, true}, {MENU_ENUM_LABEL_CLOUD_SYNC_DRIVER, PARSE_ONLY_STRING_OPTIONS, true}, {MENU_ENUM_LABEL_CLOUD_SYNC_URL, PARSE_ONLY_STRING, false}, {MENU_ENUM_LABEL_CLOUD_SYNC_USERNAME, PARSE_ONLY_STRING, false}, diff --git a/menu/menu_setting.c b/menu/menu_setting.c index bc71c1000e..b291e1ff62 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -11891,6 +11891,36 @@ static bool setting_append_list( general_read_handler, SD_FLAG_NONE); + CONFIG_BOOL( + list, list_info, + &settings->bools.cloud_sync_sync_thumbs, + MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_THUMBS, + MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_THUMBS, + 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_system, + MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_SYSTEM, + MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_SYSTEM, + 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, diff --git a/msg_hash.h b/msg_hash.h index 1eac9a1d2f..7f1823ffe4 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -3236,6 +3236,8 @@ enum msg_hash_enums MENU_LABEL(CLOUD_SYNC_DESTRUCTIVE), MENU_LABEL(CLOUD_SYNC_SYNC_SAVES), MENU_LABEL(CLOUD_SYNC_SYNC_CONFIGS), + MENU_LABEL(CLOUD_SYNC_SYNC_THUMBS), + MENU_LABEL(CLOUD_SYNC_SYNC_SYSTEM), MENU_LABEL(CLOUD_SYNC_DRIVER), MENU_LABEL(CLOUD_SYNC_URL), MENU_LABEL(CLOUD_SYNC_USERNAME), diff --git a/tasks/task_cloudsync.c b/tasks/task_cloudsync.c index e67ec0b21c..4950f09def 100644 --- a/tasks/task_cloudsync.c +++ b/tasks/task_cloudsync.c @@ -339,6 +339,20 @@ static struct string_list *task_cloud_sync_directory_map(void) string_list_append(list, "states", attr); list->elems[list->size - 1].userdata = strdup(dir_get_ptr(RARCH_DIR_SAVESTATE)); } + + if (settings->bools.cloud_sync_sync_thumbs) + { + string_list_append(list, "thumbnails", attr); + strlcpy(dir, settings->paths.directory_thumbnails, sizeof(dir)); + list->elems[list->size - 1].userdata = strdup(dir); + } + + if (settings->bools.cloud_sync_sync_system) + { + string_list_append(list, "system", attr); + strlcpy(dir, settings->paths.directory_system, sizeof(dir)); + list->elems[list->size - 1].userdata = strdup(dir); + } } return list;