From 106d33125b628f28e143ec8729cab7a626733a80 Mon Sep 17 00:00:00 2001 From: pentarctagon Date: Sat, 18 May 2024 22:10:40 -0500 Subject: [PATCH] preferences accessor cleanup have external access to the preferences go through explicitly named accessors as much as possible rather than directly using get() and set(). also have the general preferences file directly use its `prefs` config. --- src/controller_base.cpp | 2 +- src/cursor.cpp | 1 + src/deprecation.cpp | 2 +- src/desktop/paths.cpp | 4 +- src/game_config_manager.cpp | 6 +- src/game_launcher.cpp | 4 +- .../dialogs/multiplayer/mp_alerts_options.cpp | 30 ++--- src/mp_ui_alerts.cpp | 6 +- src/preferences/display.cpp | 9 +- src/preferences/display.hpp | 1 + src/preferences/editor.hpp | 2 - src/preferences/game.hpp | 4 +- src/preferences/general.cpp | 119 +++++++++++------- src/preferences/general.hpp | 24 ++-- src/preferences/lobby.hpp | 1 - src/video.cpp | 6 +- 16 files changed, 133 insertions(+), 88 deletions(-) diff --git a/src/controller_base.cpp b/src/controller_base.cpp index c3c3c7282ce6..19b86bf11d50 100644 --- a/src/controller_base.cpp +++ b/src/controller_base.cpp @@ -299,7 +299,7 @@ bool controller_base::handle_scroll(int mousex, int mousey, int mouse_flags) { const bool mouse_in_window = video::window_has_mouse_focus() - || preferences::get("scroll_when_mouse_outside", true); + || preferences::get_scroll_when_mouse_outside(true); int scroll_speed = preferences::scroll_speed(); double dx = 0.0, dy = 0.0; diff --git a/src/cursor.cpp b/src/cursor.cpp index b4bd18d7cf0a..3dab2a29a348 100644 --- a/src/cursor.cpp +++ b/src/cursor.cpp @@ -22,6 +22,7 @@ #include "picture.hpp" #include "preferences/game.hpp" +#include "preferences/display.hpp" #include "sdl/utils.hpp" #include diff --git a/src/deprecation.cpp b/src/deprecation.cpp index d3573146b5e0..689254749d65 100644 --- a/src/deprecation.cpp +++ b/src/deprecation.cpp @@ -79,7 +79,7 @@ std::string deprecated_message( const lg::logger& out_log = *log_ptr; FORCE_LOG_TO(out_log, log_deprecate) << message; // whether to show the error in the ingame chat area - if(preferences::get("show_deprecation", game_config::wesnoth_version.is_dev_version())) { + if(preferences::get_show_deprecation(game_config::wesnoth_version.is_dev_version())) { lg::log_to_chat() << message << '\n'; } } diff --git a/src/desktop/paths.cpp b/src/desktop/paths.cpp index 1e95f84823eb..d27fb5eba18f 100644 --- a/src/desktop/paths.cpp +++ b/src/desktop/paths.cpp @@ -150,13 +150,13 @@ inline std::string pretty_path(const std::string& path) inline config get_bookmarks_config() { - auto cfg = preferences::get_child("dir_bookmarks"); + auto cfg = preferences::dir_bookmarks(); return cfg ? *cfg : config{}; } inline void commit_bookmarks_config(config& cfg) { - preferences::set_child("dir_bookmarks", cfg); + preferences::set_dir_bookmarks(cfg); } } // unnamed namespace diff --git a/src/game_config_manager.cpp b/src/game_config_manager.cpp index 09ebedda9db4..b9c6870e3f6f 100644 --- a/src/game_config_manager.cpp +++ b/src/game_config_manager.cpp @@ -76,15 +76,15 @@ game_config_manager::game_config_manager(const commandline_options& cmdline_opts } // Clean the cache of any old Wesnoth version's cache data - if(const std::string last_cleaned = preferences::get("_last_cache_cleaned_ver"); !last_cleaned.empty()) { + if(const std::string last_cleaned = preferences::last_cache_cleared_version(); !last_cleaned.empty()) { if(version_info{last_cleaned} < game_config::wesnoth_version) { if(cache_.clean_cache()) { - preferences::set("_last_cache_cleaned_ver", game_config::wesnoth_version.str()); + preferences::set_last_cache_cleared_version(game_config::wesnoth_version.str()); } } } else { // If the preference wasn't set, set it, else the cleaning will never happen :P - preferences::set("_last_cache_cleaned_ver", game_config::wesnoth_version.str()); + preferences::set_last_cache_cleared_version(game_config::wesnoth_version.str()); } } diff --git a/src/game_launcher.cpp b/src/game_launcher.cpp index 1351be7ce2a6..09f721fbc8e9 100644 --- a/src/game_launcher.cpp +++ b/src/game_launcher.cpp @@ -205,8 +205,8 @@ game_launcher::game_launcher(const commandline_options& cmdline_opts) const int xres = std::get<0>(*cmdline_opts_.resolution); const int yres = std::get<1>(*cmdline_opts_.resolution); if(xres > 0 && yres > 0) { - preferences::_set_resolution(point(xres, yres)); - preferences::_set_maximized(false); + preferences::set_resolution(point(xres, yres)); + preferences::set_maximized(false); } } if(cmdline_opts_.screenshot) { diff --git a/src/gui/dialogs/multiplayer/mp_alerts_options.cpp b/src/gui/dialogs/multiplayer/mp_alerts_options.cpp index 9d5035dd1801..cfe894b2ff88 100644 --- a/src/gui/dialogs/multiplayer/mp_alerts_options.cpp +++ b/src/gui/dialogs/multiplayer/mp_alerts_options.cpp @@ -34,17 +34,17 @@ namespace gui2::dialogs { -static toggle_button* setup_pref_toggle_button(const std::string& id, bool def, window& window) +static toggle_button* setup_pref_toggle_button(const std::string& id, const std::string& type, bool def, window& window) { - toggle_button* b = find_widget(&window, id, false, true); - b->set_value(preferences::get(id, def)); + toggle_button* b = find_widget(&window, id+"_"+type, false, true); + b->set_value(preferences::mp_alert_option(id, type, def)); //ensure we have yes / no for the toggle button, so that the preference matches the toggle button for sure. - if (preferences::get(id).empty()) { - preferences::set(id, def); + if (preferences::has_mp_alert_option(id, type)) { + preferences::set_mp_alert_option(id, type, def); } - connect_signal_mouse_left_click(*b, std::bind([b, id]() { preferences::set(id, b->get_value_bool()); })); + connect_signal_mouse_left_click(*b, std::bind([b, id, type]() { preferences::set_mp_alert_option(id, type, b->get_value_bool()); })); return b; } @@ -52,27 +52,27 @@ static toggle_button* setup_pref_toggle_button(const std::string& id, bool def, static void setup_item(const std::string& item, window& window) { // Set up the sound checkbox - setup_pref_toggle_button(item+"_sound", mp::ui_alerts::get_def_pref_sound(item), window); + setup_pref_toggle_button(item, "sound", mp::ui_alerts::get_def_pref_sound(item), window); // Set up the notification checkbox - toggle_button* notif = setup_pref_toggle_button(item+"_notif", mp::ui_alerts::get_def_pref_notif(item), window); + toggle_button* notif = setup_pref_toggle_button(item, "notif", mp::ui_alerts::get_def_pref_notif(item), window); // Check if desktop notifications are available if (!desktop::notifications::available()) { notif->set_value(false); notif->set_active(false); - preferences::set(item+"_notif", false); + preferences::set_mp_alert_option(item, "notif", false); } else { notif->set_active(true); } // Set up the in_lobby checkbox - setup_pref_toggle_button(item+"_lobby", mp::ui_alerts::get_def_pref_lobby(item), window); + setup_pref_toggle_button(item, "lobby", mp::ui_alerts::get_def_pref_lobby(item), window); } -static void set_pref_and_button(const std::string& id, bool value, window& window) +static void set_pref_and_button(const std::string& id, const std::string& type, bool value, window& window) { - preferences::set(id,value); + preferences::set_mp_alert_option(id, type, value); toggle_button* button = find_widget(&window, id, false, true); button->set_value(value); } @@ -80,9 +80,9 @@ static void set_pref_and_button(const std::string& id, bool value, window& windo static void revert_to_default_pref_values(window& window) { for (const std::string& i : mp::ui_alerts::items) { - set_pref_and_button(i+"_sound", mp::ui_alerts::get_def_pref_sound(i), window); - set_pref_and_button(i+"_notif", mp::ui_alerts::get_def_pref_notif(i), window); - set_pref_and_button(i+"_lobby", mp::ui_alerts::get_def_pref_lobby(i), window); + set_pref_and_button(i, "sound", mp::ui_alerts::get_def_pref_sound(i), window); + set_pref_and_button(i, "notif", mp::ui_alerts::get_def_pref_notif(i), window); + set_pref_and_button(i, "lobby", mp::ui_alerts::get_def_pref_lobby(i), window); } } diff --git a/src/mp_ui_alerts.cpp b/src/mp_ui_alerts.cpp index e75bc3058dca..abf9e6ab6e9e 100644 --- a/src/mp_ui_alerts.cpp +++ b/src/mp_ui_alerts.cpp @@ -36,17 +36,17 @@ namespace { bool lobby_pref(const std::string& id) { - return preferences::get(id + "_lobby", get_def_pref_lobby(id)); + return preferences::mp_alert_option(id, "lobby", get_def_pref_lobby(id)); } bool sound_pref(const std::string& id) { - return preferences::get(id + "_sound", get_def_pref_sound(id)); + return preferences::mp_alert_option(id, "sound", get_def_pref_sound(id)); } bool notif_pref(const std::string& id) { - return preferences::get(id + "_notif", get_def_pref_notif(id)); + return preferences::mp_alert_option(id, "notif", get_def_pref_notif(id)); } const std::string _player_joins = "player_joins"; diff --git a/src/preferences/display.cpp b/src/preferences/display.cpp index d684a24451ec..946b5d0d5b1e 100644 --- a/src/preferences/display.cpp +++ b/src/preferences/display.cpp @@ -37,16 +37,21 @@ namespace preferences { +bool use_color_cursors() +{ + return get("color_cursors", true); +} + void set_color_cursors(bool value) { - _set_color_cursors(value); + preferences::set("color_cursors", value); cursor::set(); } bool show_standing_animations() { - return preferences::get("unit_standing_animations", true); + return get("unit_standing_animations", true); } void set_show_standing_animations(bool value) diff --git a/src/preferences/display.hpp b/src/preferences/display.hpp index fbd1c51c4b18..6b01b7df1119 100644 --- a/src/preferences/display.hpp +++ b/src/preferences/display.hpp @@ -18,6 +18,7 @@ namespace preferences { +bool use_color_cursors(); void set_color_cursors(bool value); bool show_standing_animations(); diff --git a/src/preferences/editor.hpp b/src/preferences/editor.hpp index 02bddad5163d..dae2dbae881e 100644 --- a/src/preferences/editor.hpp +++ b/src/preferences/editor.hpp @@ -32,8 +32,6 @@ namespace editor { int auto_update_transitions(); void set_auto_update_transitions(int value); - //std::vector* get_editor_history(); - std::string default_dir(); bool draw_terrain_codes(); diff --git a/src/preferences/game.hpp b/src/preferences/game.hpp index c3a2bd8c53b6..7cc3ac06f364 100644 --- a/src/preferences/game.hpp +++ b/src/preferences/game.hpp @@ -229,8 +229,8 @@ void set_show_all_units_in_help(bool value); compression::format save_compression_format(); -std::set&encountered_units(); -std::set&encountered_terrains(); +std::set& encountered_units(); +std::set& encountered_terrains(); std::string custom_command(); void set_custom_command(const std::string& command); diff --git a/src/preferences/general.cpp b/src/preferences/general.cpp index f224f79db51e..b6a18a37d65d 100644 --- a/src/preferences/general.cpp +++ b/src/preferences/general.cpp @@ -122,17 +122,17 @@ void prefs_event_handler::handle_window_event(const SDL_Event& event) switch(event.window.event) { case SDL_WINDOWEVENT_RESIZED: - _set_resolution(video::window_size()); + set_resolution(video::window_size()); break; case SDL_WINDOWEVENT_MAXIMIZED: - _set_maximized(true); + set_maximized(true); break; case SDL_WINDOWEVENT_RESTORED: - _set_maximized(fullscreen() || false); + set_maximized(fullscreen() || false); break; } @@ -443,18 +443,18 @@ bool vsync() return get("vsync", true); } -void _set_resolution(const point& res) +void set_resolution(const point& res) { - preferences::set("xresolution", std::to_string(res.x)); - preferences::set("yresolution", std::to_string(res.y)); + prefs["xresolution"] = std::to_string(res.x); + prefs["yresolution"] = std::to_string(res.y); } -void _set_maximized(bool ison) +void set_maximized(bool ison) { prefs["maximized"] = ison; } -void _set_fullscreen(bool ison) +void set_fullscreen(bool ison) { prefs["fullscreen"] = ison; } @@ -541,7 +541,7 @@ std::string language() void set_language(const std::string& s) { - preferences::set("locale", s); + prefs["locale"] = s; } std::string gui_theme() @@ -551,7 +551,7 @@ std::string gui_theme() void set_gui_theme(const std::string& s) { - preferences::set("gui2_theme", s); + prefs["gui2_theme"] = s; } bool ellipses() @@ -561,7 +561,7 @@ bool ellipses() void set_ellipses(bool ison) { - preferences::set("show_side_colors", ison); + prefs["show_side_colors"] = ison; } bool grid() @@ -571,7 +571,7 @@ bool grid() void set_grid(bool ison) { - preferences::set("grid", ison); + prefs["grid"] = ison; } std::size_t sound_buffer_size() @@ -599,7 +599,7 @@ void save_sound_buffer_size(const std::size_t size) if (get("sound_buffer_size") == new_size) return; - preferences::set("sound_buffer_size", new_size); + prefs["sound_buffer_size"] = new_size; sound::reset_sound(); } @@ -682,15 +682,15 @@ bool turn_bell() bool set_turn_bell(bool ison) { if(!turn_bell() && ison) { - preferences::set("turn_bell", true); + prefs["turn_bell"] = true; if(!music_on() && !sound_on() && !UI_sound_on()) { if(!sound::init_sound()) { - preferences::set("turn_bell", false); + prefs["turn_bell"] = false; return false; } } } else if(turn_bell() && !ison) { - preferences::set("turn_bell", false); + prefs["turn_bell"] = false; sound::stop_bell(); if(!music_on() && !sound_on() && !UI_sound_on()) sound::close_sound(); @@ -706,15 +706,15 @@ bool UI_sound_on() bool set_UI_sound(bool ison) { if(!UI_sound_on() && ison) { - preferences::set("UI_sound", true); + prefs["UI_sound"] = true; if(!music_on() && !sound_on() && !turn_bell()) { if(!sound::init_sound()) { - preferences::set("UI_sound", false); + prefs["UI_sound"] = false; return false; } } } else if(UI_sound_on() && !ison) { - preferences::set("UI_sound", false); + prefs["UI_sound"] = false; sound::stop_UI_sound(); if(!music_on() && !sound_on() && !turn_bell()) sound::close_sound(); @@ -734,15 +734,15 @@ bool sound_on() bool set_sound(bool ison) { if(!sound_on() && ison) { - preferences::set("sound", true); + prefs["sound"] = true; if(!music_on() && !turn_bell() && !UI_sound_on()) { if(!sound::init_sound()) { - preferences::set("sound", false); + prefs["sound"] = false; return false; } } } else if(sound_on() && !ison) { - preferences::set("sound", false); + prefs["sound"] = false; sound::stop_sound(); if(!music_on() && !turn_bell() && !UI_sound_on()) sound::close_sound(); @@ -757,17 +757,17 @@ bool music_on() bool set_music(bool ison) { if(!music_on() && ison) { - preferences::set("music", true); + prefs["music"] = true; if(!sound_on() && !turn_bell() && !UI_sound_on()) { if(!sound::init_sound()) { - preferences::set("music", false); + prefs["music"] = false; return false; } } else sound::play_music(); } else if(music_on() && !ison) { - preferences::set("music", false); + prefs["music"] = false; if(!sound_on() && !turn_bell() && !UI_sound_on()) sound::close_sound(); else @@ -783,7 +783,7 @@ bool stop_music_in_background() void set_stop_music_in_background(bool ison) { - preferences::set("stop_music_in_background", ison); + prefs["stop_music_in_background"] = ison; } int scroll_speed() @@ -818,17 +818,17 @@ int mouse_scroll_threshold() bool animate_map() { - return preferences::get("animate_map", true); + return get("animate_map", true); } bool animate_water() { - return preferences::get("animate_water", true); + return get("animate_water", true); } bool minimap_movement_coding() { - return preferences::get("minimap_movement_coding", true); + return get("minimap_movement_coding", true); } void toggle_minimap_movement_coding() @@ -838,7 +838,7 @@ void toggle_minimap_movement_coding() bool minimap_terrain_coding() { - return preferences::get("minimap_terrain_coding", true); + return get("minimap_terrain_coding", true); } void toggle_minimap_terrain_coding() @@ -848,7 +848,7 @@ void toggle_minimap_terrain_coding() bool minimap_draw_units() { - return preferences::get("minimap_draw_units", true); + return get("minimap_draw_units", true); } void toggle_minimap_draw_units() @@ -858,7 +858,7 @@ void toggle_minimap_draw_units() bool minimap_draw_villages() { - return preferences::get("minimap_draw_villages", true); + return get("minimap_draw_villages", true); } void toggle_minimap_draw_villages() @@ -868,7 +868,7 @@ void toggle_minimap_draw_villages() bool minimap_draw_terrain() { - return preferences::get("minimap_draw_terrain", true); + return get("minimap_draw_terrain", true); } void toggle_minimap_draw_terrain() @@ -906,16 +906,6 @@ void set_draw_delay(int value) prefs["draw_delay"] = value; } -bool use_color_cursors() -{ - return get("color_cursors", true); -} - -void _set_color_cursors(bool value) -{ - preferences::set("color_cursors", value); -} - void load_hotkeys() { hotkey::load_custom_hotkeys(game_config_view::wrap(prefs)); @@ -977,7 +967,7 @@ bool disable_auto_moves() void set_disable_auto_moves(bool value) { - preferences::set("disable_auto_moves", value); + prefs["disable_auto_moves"] = value; } bool damage_prediction_allow_monte_carlo_simulation() @@ -1214,4 +1204,45 @@ std::string editor_chosen_addon() return prefs["editor_chosen_addon"]; } +void set_mp_alert_option(const std::string& id, const std::string& type, bool value) +{ + prefs[id+"_"+type] = value; +} +bool mp_alert_option(const std::string& id, const std::string& type, bool def) +{ + return prefs[id+"_"+type].to_bool(def); +} +bool has_mp_alert_option(const std::string& id, const std::string& type) +{ + return have_setting(id+"_"+type); +} + +void set_last_cache_cleared_version(const std::string& version) +{ + prefs["_last_cache_cleaned_ver"] = version; +} +std::string last_cache_cleared_version() +{ + return prefs["_last_cache_cleaned_ver"]; +} + +bool get_show_deprecation(bool def) +{ + return get("show_deprecation", def); +} + +bool get_scroll_when_mouse_outside(bool def) +{ + return get("scroll_when_mouse_outside", def); +} + +void set_dir_bookmarks(const config& cfg) +{ + set_child("dir_bookmarks", cfg); +} +optional_const_config dir_bookmarks() +{ + return get_child("dir_bookmarks"); +} + } // end namespace preferences diff --git a/src/preferences/general.hpp b/src/preferences/general.hpp index a296166c343c..3f81e60d7f83 100644 --- a/src/preferences/general.hpp +++ b/src/preferences/general.hpp @@ -73,7 +73,7 @@ namespace preferences { void set_scroll_to_action(bool ison); point resolution(); - void _set_resolution(const point& res); + void set_resolution(const point& res); int pixel_scale(); void set_pixel_scale(const int scale); @@ -82,10 +82,10 @@ namespace preferences { void set_auto_pixel_scale(bool choice); bool maximized(); - void _set_maximized(bool ison); + void set_maximized(bool ison); bool fullscreen(); - void _set_fullscreen(bool ison); + void set_fullscreen(bool ison); bool vsync(); void set_vsync(bool ison); @@ -163,7 +163,6 @@ namespace preferences { void add_alias(const std::string& alias, const std::string& command); optional_const_config get_alias(); - std::string allied_color(); void set_allied_color(const std::string& color_id); @@ -200,9 +199,6 @@ namespace preferences { bool show_disengaged_orb(); void set_show_disengaged_orb(bool show_orb); - bool use_color_cursors(); - void _set_color_cursors(bool value); - int scroll_speed(); void set_scroll_speed(const int scroll); @@ -330,4 +326,18 @@ namespace preferences { */ std::string editor_chosen_addon(); + void set_mp_alert_option(const std::string& id, const std::string& type, bool value); + bool mp_alert_option(const std::string& id, const std::string& type, bool def = false); + bool has_mp_alert_option(const std::string& id, const std::string& type); + + void set_last_cache_cleared_version(const std::string& version); + std::string last_cache_cleared_version(); + + bool get_show_deprecation(bool def); + + bool get_scroll_when_mouse_outside(bool def); + + void set_dir_bookmarks(const config& cfg); + optional_const_config dir_bookmarks(); + } // end namespace preferences diff --git a/src/preferences/lobby.hpp b/src/preferences/lobby.hpp index d5de607be1ec..8037048de9a7 100644 --- a/src/preferences/lobby.hpp +++ b/src/preferences/lobby.hpp @@ -22,7 +22,6 @@ bool whisper_friends_only(); void set_whisper_friends_only(bool v); bool auto_open_whisper_windows(); -void set_auto_open_whisper_windows(bool v); bool fi_invert(); void set_fi_invert(bool value); diff --git a/src/video.cpp b/src/video.cpp index e5faf1a7706a..fb8336bea259 100644 --- a/src/video.cpp +++ b/src/video.cpp @@ -790,7 +790,7 @@ void set_fullscreen(bool fullscreen) } // Update the config value in any case. - preferences::_set_fullscreen(fullscreen); + preferences::set_fullscreen(fullscreen); } void toggle_fullscreen() @@ -822,8 +822,8 @@ bool set_resolution(const point& resolution) // Change the saved values in preferences. LOG_DP << "updating resolution to " << resolution; - preferences::_set_resolution(resolution); - preferences::_set_maximized(false); + preferences::set_resolution(resolution); + preferences::set_maximized(false); return true; }