Skip to content

Commit f97d6c9

Browse files
committed
improve cloudsync settings and missing labels
1 parent 5048003 commit f97d6c9

9 files changed

Lines changed: 88 additions & 14 deletions

File tree

configuration.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2613,6 +2613,9 @@ static struct config_uint_setting *populate_settings_uint(
26132613
#ifdef HAVE_NETWORKGAMEPAD
26142614
SETTING_UINT("network_remote_base_port", &settings->uints.network_remote_base_port, true, DEFAULT_NETWORK_REMOTE_BASE_PORT, false);
26152615
#endif
2616+
#ifdef HAVE_CLOUDSYNC
2617+
SETTING_UINT("cloud_sync_sync_mode", &settings->uints.cloud_sync_sync_mode, true, CLOUD_SYNC_MODE_AUTOMATIC, false);
2618+
#endif
26162619

26172620
#ifdef HAVE_LANGEXTRA
26182621
SETTING_UINT("user_language", msg_hash_get_uint(MSG_HASH_USER_LANGUAGE), true, frontend_driver_get_user_language(), false);

configuration.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,13 @@ enum override_type
8989
OVERRIDE_GAME
9090
};
9191

92+
enum cloud_sync_mode_type
93+
{
94+
CLOUD_SYNC_MODE_AUTOMATIC = 0,
95+
CLOUD_SYNC_MODE_MANUAL,
96+
CLOUD_SYNC_MODE_LAST
97+
};
98+
9299
enum settings_glob_flags
93100
{
94101
SETTINGS_FLG_MODIFIED = (1 << 0),
@@ -238,6 +245,7 @@ typedef struct settings
238245
unsigned network_cmd_port;
239246
unsigned network_remote_base_port;
240247
unsigned keymapper_port;
248+
unsigned cloud_sync_sync_mode;
241249
unsigned video_window_opacity;
242250
unsigned crt_switch_resolution;
243251
unsigned crt_switch_resolution_super;

intl/msg_hash_lbl.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3690,6 +3690,18 @@ MSG_HASH(
36903690
MENU_ENUM_LABEL_CLOUD_SYNC_ENABLE,
36913691
"cloud_sync_enable"
36923692
)
3693+
MSG_HASH(
3694+
MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_MODE,
3695+
"cloud_sync_sync_mode"
3696+
)
3697+
MSG_HASH(
3698+
MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_MODE_AUTOMATIC,
3699+
"cloud_sync_sync_mode_automatic"
3700+
)
3701+
MSG_HASH(
3702+
MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_MODE_MANUAL,
3703+
"cloud_sync_sync_mode_manual"
3704+
)
36933705
MSG_HASH(
36943706
MENU_ENUM_LABEL_CLOUD_SYNC_DESTRUCTIVE,
36953707
"cloud_sync_destructive"

intl/msg_hash_us.h

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1353,12 +1353,20 @@ MSG_HASH(
13531353
"When disabled, files are moved to a backup folder before being overwritten or deleted."
13541354
)
13551355
MSG_HASH(
1356-
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_STARTUP_SYNC,
1357-
"Sync on startup"
1356+
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE,
1357+
"Sync Mode"
13581358
)
13591359
MSG_HASH(
1360-
MENU_ENUM_SUBLABEL_CLOUD_SYNC_STARTUP_SYNC,
1361-
"When enabled, automatically sync with cloud storage when RetroArch starts."
1360+
MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_MODE,
1361+
"Automatic: Sync on RetroArch startup and when cores are unloaded. Manual: Only sync when 'Sync Now' button is manually triggered."
1362+
)
1363+
MSG_HASH(
1364+
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_AUTOMATIC,
1365+
"Automatic"
1366+
)
1367+
MSG_HASH(
1368+
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_MANUAL,
1369+
"Manual"
13621370
)
13631371
MSG_HASH(
13641372
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,

menu/cbs/menu_cbs_sublabel.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,7 @@ DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_retro_achievements_settings_list, ME
261261
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_saving_settings_list, MENU_ENUM_SUBLABEL_SAVING_SETTINGS)
262262
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_settings_list, MENU_ENUM_SUBLABEL_CLOUD_SYNC_SETTINGS)
263263
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_enable, MENU_ENUM_SUBLABEL_CLOUD_SYNC_ENABLE)
264+
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_sync_mode, MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_MODE)
264265
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_destructive, MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE)
265266
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_sync_saves, MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_SAVES)
266267
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_sync_configs, MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_CONFIGS)
@@ -635,6 +636,7 @@ DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_core_list, MENU_
635636
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_core_list_unload, MENU_ENUM_SUBLABEL_CORE_LIST_UNLOAD)
636637
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_download_core, MENU_ENUM_SUBLABEL_DOWNLOAD_CORE)
637638
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_update_installed_cores, MENU_ENUM_SUBLABEL_UPDATE_INSTALLED_CORES)
639+
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_sync_now, MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_NOW)
638640
#if defined(ANDROID)
639641
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_switch_installed_cores_pfd, MENU_ENUM_SUBLABEL_SWITCH_INSTALLED_CORES_PFD)
640642
#endif
@@ -4611,6 +4613,9 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
46114613
case MENU_ENUM_LABEL_UPDATE_INSTALLED_CORES:
46124614
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_update_installed_cores);
46134615
break;
4616+
case MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_NOW:
4617+
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_sync_now);
4618+
break;
46144619
#if defined(ANDROID)
46154620
case MENU_ENUM_LABEL_SWITCH_INSTALLED_CORES_PFD:
46164621
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_switch_installed_cores_pfd);
@@ -5247,6 +5252,9 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
52475252
case MENU_ENUM_LABEL_CLOUD_SYNC_ENABLE:
52485253
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cloud_sync_enable);
52495254
break;
5255+
case MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_MODE:
5256+
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cloud_sync_sync_mode);
5257+
break;
52505258
case MENU_ENUM_LABEL_CLOUD_SYNC_DESTRUCTIVE:
52515259
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cloud_sync_destructive);
52525260
break;

menu/menu_displaylist.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11061,6 +11061,7 @@ unsigned menu_displaylist_build_list(
1106111061
{
1106211062
menu_displaylist_build_info_selective_t build_list[] = {
1106311063
{MENU_ENUM_LABEL_CLOUD_SYNC_ENABLE, PARSE_ONLY_BOOL, true},
11064+
{MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_MODE, PARSE_ONLY_UINT, true},
1106411065
{MENU_ENUM_LABEL_CLOUD_SYNC_DESTRUCTIVE, PARSE_ONLY_BOOL, true},
1106511066
{MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_SAVES, PARSE_ONLY_BOOL, true},
1106611067
{MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_CONFIGS, PARSE_ONLY_BOOL, true},

menu/menu_setting.c

Lines changed: 35 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5343,6 +5343,30 @@ static size_t setting_get_string_representation_uint_input_auto_game_focus(
53435343
return 0;
53445344
}
53455345

5346+
#ifdef HAVE_CLOUDSYNC
5347+
static size_t setting_get_string_representation_uint_cloud_sync_sync_mode(
5348+
rarch_setting_t *setting, char *s, size_t len)
5349+
{
5350+
if (setting)
5351+
{
5352+
switch (*setting->value.target.unsigned_integer)
5353+
{
5354+
case CLOUD_SYNC_MODE_AUTOMATIC:
5355+
return strlcpy(s,
5356+
msg_hash_to_str(
5357+
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_AUTOMATIC),
5358+
len);
5359+
case CLOUD_SYNC_MODE_MANUAL:
5360+
return strlcpy(s,
5361+
msg_hash_to_str(
5362+
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE_MANUAL),
5363+
len);
5364+
}
5365+
}
5366+
return 0;
5367+
}
5368+
#endif
5369+
53465370
#if defined(HAVE_OVERLAY)
53475371
static size_t setting_get_string_representation_uint_input_overlay_show_inputs(
53485372
rarch_setting_t *setting, char *s, size_t len)
@@ -11804,20 +11828,22 @@ static bool setting_append_list(
1180411828
general_read_handler,
1180511829
SD_FLAG_NONE);
1180611830

11807-
CONFIG_BOOL(
11831+
CONFIG_UINT(
1180811832
list, list_info,
11809-
&settings->bools.cloud_sync_startup_sync,
11810-
MENU_ENUM_LABEL_CLOUD_SYNC_STARTUP_SYNC,
11811-
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_STARTUP_SYNC,
11812-
true,
11813-
MENU_ENUM_LABEL_VALUE_OFF,
11814-
MENU_ENUM_LABEL_VALUE_ON,
11833+
&settings->uints.cloud_sync_sync_mode,
11834+
MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_MODE,
11835+
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_MODE,
11836+
CLOUD_SYNC_MODE_AUTOMATIC,
1181511837
&group_info,
1181611838
&subgroup_info,
1181711839
parent_group,
1181811840
general_write_handler,
11819-
general_read_handler,
11820-
SD_FLAG_NONE);
11841+
general_read_handler);
11842+
(*list)[list_info->index - 1].ui_type = ST_UI_TYPE_UINT_COMBOBOX;
11843+
(*list)[list_info->index - 1].action_ok = &setting_action_ok_uint;
11844+
(*list)[list_info->index - 1].get_string_representation =
11845+
&setting_get_string_representation_uint_cloud_sync_sync_mode;
11846+
menu_settings_list_current_add_range(list, list_info, 0, CLOUD_SYNC_MODE_LAST-1, 1, true, true);
1182111847

1182211848
CONFIG_STRING_OPTIONS(
1182311849
list, list_info,

msg_hash.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3283,6 +3283,9 @@ enum msg_hash_enums
32833283
MENU_LABEL(SAVING_SETTINGS),
32843284
MENU_LABEL(CLOUD_SYNC_SETTINGS),
32853285
MENU_LABEL(CLOUD_SYNC_ENABLE),
3286+
MENU_LABEL(CLOUD_SYNC_SYNC_MODE),
3287+
MENU_LABEL(CLOUD_SYNC_SYNC_MODE_AUTOMATIC),
3288+
MENU_LABEL(CLOUD_SYNC_SYNC_MODE_MANUAL),
32863289
MENU_LABEL(CLOUD_SYNC_DESTRUCTIVE),
32873290
MENU_LABEL(CLOUD_SYNC_SYNC_SAVES),
32883291
MENU_LABEL(CLOUD_SYNC_SYNC_CONFIGS),

retroarch.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3717,6 +3717,11 @@ bool command_event(enum event_command cmd, void *data)
37173717
runloop_st->subsystem_current_count = 0;
37183718
content_clear_subsystem();
37193719
}
3720+
#ifdef HAVE_CLOUDSYNC
3721+
/* Sync on core unload if in automatic mode */
3722+
if (settings->uints.cloud_sync_sync_mode == CLOUD_SYNC_MODE_AUTOMATIC)
3723+
task_push_cloud_sync();
3724+
#endif
37203725
}
37213726

37223727
#ifdef HAVE_MENU
@@ -6044,7 +6049,7 @@ int rarch_main(int argc, char *argv[], void *data)
60446049
settings->bools.ui_companion_start_on_boot
60456050
);
60466051
#ifdef HAVE_CLOUDSYNC
6047-
if (settings->bools.cloud_sync_startup_sync)
6052+
if (settings->uints.cloud_sync_sync_mode == CLOUD_SYNC_MODE_AUTOMATIC)
60486053
task_push_cloud_sync();
60496054
#endif
60506055
#if !defined(HAVE_MAIN) || defined(HAVE_QT)

0 commit comments

Comments
 (0)