mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
preferences: use std::string in struct preferences
This is a messy commit, because the "qPref" system relies heavily on QString, which means lots of conversions between the two worlds. Ultimately, I plan to base the preferences system on std::string and only convert to QString when pushing through Qt's property system or when writing into Qt's settings. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
82fc9de40b
commit
ccdd92aeb7
78 changed files with 645 additions and 694 deletions
243
core/pref.cpp
243
core/pref.cpp
|
@ -3,153 +3,112 @@
|
|||
#include "subsurface-string.h"
|
||||
#include "git-access.h" // for CLOUD_HOST
|
||||
|
||||
struct preferences prefs, git_prefs;
|
||||
struct preferences default_prefs = {
|
||||
.animation_speed = 500,
|
||||
.cloud_base_url = "https://" CLOUD_HOST_EU "/", // if we don't know any better, use the European host
|
||||
struct preferences prefs, git_prefs, default_prefs;
|
||||
|
||||
preferences::preferences() :
|
||||
animation_speed(500),
|
||||
cloud_base_url("https://" CLOUD_HOST_EU "/"), // if we don't know any better, use the European host
|
||||
#if defined(SUBSURFACE_MOBILE)
|
||||
.cloud_timeout = 10,
|
||||
cloud_timeout(10),
|
||||
#else
|
||||
.cloud_timeout = 5,
|
||||
cloud_timeout(5),
|
||||
#endif
|
||||
.sync_dc_time = false,
|
||||
.display_invalid_dives = false,
|
||||
.divelist_font = NULL,
|
||||
.font_size = -1,
|
||||
.mobile_scale = 1.0,
|
||||
.show_developer = true,
|
||||
.three_m_based_grid = false,
|
||||
.map_short_names = false,
|
||||
.default_cylinder = NULL,
|
||||
.include_unused_tanks = false,
|
||||
.display_default_tank_infos = true,
|
||||
.auto_recalculate_thumbnails = true,
|
||||
.extract_video_thumbnails = true,
|
||||
.extract_video_thumbnails_position = 20, // The first fifth seems like a reasonable place
|
||||
.ffmpeg_executable = NULL,
|
||||
.defaultsetpoint = 1100,
|
||||
.default_filename = NULL,
|
||||
.default_file_behavior = LOCAL_DEFAULT_FILE,
|
||||
.o2consumption = 720,
|
||||
.pscr_ratio = 100,
|
||||
.use_default_file = true,
|
||||
.extraEnvironmentalDefault = false,
|
||||
.salinityEditDefault = false,
|
||||
.geocoding = {
|
||||
.category = { TC_NONE, TC_NONE, TC_NONE }
|
||||
},
|
||||
.date_format = NULL,
|
||||
.date_format_override = false,
|
||||
.date_format_short = NULL,
|
||||
.locale = {
|
||||
.use_system_language = true,
|
||||
},
|
||||
.time_format = NULL,
|
||||
.time_format_override = false,
|
||||
.proxy_auth = false,
|
||||
.proxy_host = NULL,
|
||||
.proxy_port = 0,
|
||||
.proxy_type = 0,
|
||||
.proxy_user = NULL,
|
||||
.proxy_pass = NULL,
|
||||
.ascratelast6m = 9000 / 60,
|
||||
.ascratestops = 9000 / 60,
|
||||
.ascrate50 = 9000 / 60,
|
||||
.ascrate75 = 9000 / 60,
|
||||
.bestmixend = { 30000 },
|
||||
.bottompo2 = 1400,
|
||||
.bottomsac = 20000,
|
||||
.decopo2 = 1600,
|
||||
.decosac = 17000,
|
||||
.descrate = 18000 / 60,
|
||||
.display_duration = true,
|
||||
.display_runtime = true,
|
||||
.display_transitions = true,
|
||||
.display_variations = false,
|
||||
.doo2breaks = false,
|
||||
.dobailout = false,
|
||||
.o2narcotic = true,
|
||||
.drop_stone_mode = false,
|
||||
.last_stop = false,
|
||||
.min_switch_duration = 60,
|
||||
.surface_segment = 0,
|
||||
.planner_deco_mode = BUEHLMANN,
|
||||
.problemsolvingtime = 4,
|
||||
.reserve_gas=40000,
|
||||
.sacfactor = 400,
|
||||
.safetystop = true,
|
||||
.switch_at_req_stop = false,
|
||||
.verbatim_plan = false,
|
||||
.calcalltissues = false,
|
||||
.calcceiling = false,
|
||||
.calcceiling3m = false,
|
||||
.calcndltts = false,
|
||||
.decoinfo = true,
|
||||
.dcceiling = true,
|
||||
.display_deco_mode = BUEHLMANN,
|
||||
.ead = false,
|
||||
.gfhigh = 75,
|
||||
.gflow = 30,
|
||||
.gf_low_at_maxdepth = false,
|
||||
.hrgraph = false,
|
||||
.mod = false,
|
||||
.modpO2 = 1.6,
|
||||
.percentagegraph = false,
|
||||
.pp_graphs = {
|
||||
.po2 = false,
|
||||
.pn2 = false,
|
||||
.phe = false,
|
||||
.po2_threshold_min = 0.16,
|
||||
.po2_threshold_max = 1.6,
|
||||
.pn2_threshold = 4.0,
|
||||
.phe_threshold = 13.0,
|
||||
},
|
||||
.redceiling = false,
|
||||
.rulergraph = false,
|
||||
.show_average_depth = true,
|
||||
.show_ccr_sensors = false,
|
||||
.show_ccr_setpoint = false,
|
||||
.show_icd = false,
|
||||
.show_pictures_in_profile = true,
|
||||
.show_sac = false,
|
||||
.show_scr_ocpo2 = false,
|
||||
.tankbar = false,
|
||||
.vpmb_conservatism = 3,
|
||||
.zoomed_plot = false,
|
||||
.infobox = true,
|
||||
.coordinates_traditional = true,
|
||||
.unit_system = METRIC,
|
||||
.units = SI_UNITS,
|
||||
.update_manager = { false, NULL, 0 }
|
||||
};
|
||||
|
||||
/* copy a preferences block, including making copies of all included strings */
|
||||
void copy_prefs(struct preferences *src, struct preferences *dest)
|
||||
sync_dc_time(false),
|
||||
display_invalid_dives(false),
|
||||
font_size(-1),
|
||||
mobile_scale(1.0),
|
||||
show_developer(true),
|
||||
three_m_based_grid(false),
|
||||
map_short_names(false),
|
||||
include_unused_tanks(false),
|
||||
display_default_tank_infos(true),
|
||||
auto_recalculate_thumbnails(true),
|
||||
extract_video_thumbnails(true),
|
||||
extract_video_thumbnails_position(20), // The first fifth seems like a reasonable place
|
||||
defaultsetpoint(1100),
|
||||
default_file_behavior(LOCAL_DEFAULT_FILE),
|
||||
o2consumption(720),
|
||||
pscr_ratio(100),
|
||||
use_default_file(true),
|
||||
extraEnvironmentalDefault(false),
|
||||
salinityEditDefault(false),
|
||||
date_format_override(false),
|
||||
time_format_override(false),
|
||||
proxy_auth(false),
|
||||
proxy_port(0),
|
||||
proxy_type(0),
|
||||
ascratelast6m(9000 / 60),
|
||||
ascratestops(9000 / 60),
|
||||
ascrate50(9000 / 60),
|
||||
ascrate75(9000 / 60),
|
||||
bestmixend({ 30000 }),
|
||||
bottompo2(1400),
|
||||
bottomsac(20000),
|
||||
decopo2(1600),
|
||||
decosac(17000),
|
||||
descrate(18000 / 60),
|
||||
display_duration(true),
|
||||
display_runtime(true),
|
||||
display_transitions(true),
|
||||
display_variations(false),
|
||||
doo2breaks(false),
|
||||
dobailout(false),
|
||||
o2narcotic(true),
|
||||
drop_stone_mode(false),
|
||||
last_stop(false),
|
||||
min_switch_duration(60),
|
||||
surface_segment(0),
|
||||
planner_deco_mode(BUEHLMANN),
|
||||
problemsolvingtime(4),
|
||||
reserve_gas(40000),
|
||||
sacfactor(400),
|
||||
safetystop(true),
|
||||
switch_at_req_stop(false),
|
||||
verbatim_plan(false),
|
||||
calcalltissues(false),
|
||||
calcceiling(false),
|
||||
calcceiling3m(false),
|
||||
calcndltts(false),
|
||||
decoinfo(true),
|
||||
dcceiling(true),
|
||||
display_deco_mode(BUEHLMANN),
|
||||
ead(false),
|
||||
gfhigh(75),
|
||||
gflow(30),
|
||||
gf_low_at_maxdepth(false),
|
||||
hrgraph(false),
|
||||
mod(false),
|
||||
modpO2(1.6),
|
||||
percentagegraph(false),
|
||||
redceiling(false),
|
||||
rulergraph(false),
|
||||
show_average_depth(true),
|
||||
show_ccr_sensors(false),
|
||||
show_ccr_setpoint(false),
|
||||
show_icd(false),
|
||||
show_pictures_in_profile(true),
|
||||
show_sac(false),
|
||||
show_scr_ocpo2(false),
|
||||
tankbar(false),
|
||||
vpmb_conservatism(3),
|
||||
zoomed_plot(false),
|
||||
infobox(true),
|
||||
coordinates_traditional(true),
|
||||
unit_system(METRIC),
|
||||
units(SI_UNITS)
|
||||
{
|
||||
*dest = *src;
|
||||
dest->divelist_font = copy_string(src->divelist_font);
|
||||
dest->default_filename = copy_string(src->default_filename);
|
||||
dest->default_cylinder = copy_string(src->default_cylinder);
|
||||
dest->cloud_base_url = copy_string(src->cloud_base_url);
|
||||
dest->proxy_host = copy_string(src->proxy_host);
|
||||
dest->proxy_user = copy_string(src->proxy_user);
|
||||
dest->proxy_pass = copy_string(src->proxy_pass);
|
||||
dest->time_format = copy_string(src->time_format);
|
||||
dest->date_format = copy_string(src->date_format);
|
||||
dest->date_format_short = copy_string(src->date_format_short);
|
||||
dest->cloud_storage_password = copy_string(src->cloud_storage_password);
|
||||
dest->cloud_storage_email = copy_string(src->cloud_storage_email);
|
||||
dest->cloud_storage_email_encoded = copy_string(src->cloud_storage_email_encoded);
|
||||
dest->ffmpeg_executable = copy_string(src->ffmpeg_executable);
|
||||
}
|
||||
|
||||
/*
|
||||
* Free strduped prefs before exit.
|
||||
*
|
||||
* These are not real leaks but they plug the holes found by eg.
|
||||
* valgrind so you can find the real leaks.
|
||||
*/
|
||||
void free_prefs()
|
||||
preferences::~preferences() = default;
|
||||
|
||||
void set_git_prefs(std::string_view prefs)
|
||||
{
|
||||
// nop
|
||||
if (contains(prefs, "TANKBAR"))
|
||||
git_prefs.tankbar = 1;
|
||||
if (contains(prefs, "SHOW_SETPOINT"))
|
||||
git_prefs.show_ccr_setpoint = 1;
|
||||
if (contains(prefs, "SHOW_SENSORS"))
|
||||
git_prefs.show_ccr_sensors = 1;
|
||||
if (contains(prefs, "PO2_GRAPH"))
|
||||
git_prefs.pp_graphs.po2 = 1;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue