2017-04-27 18:18:03 +00:00
|
|
|
// SPDX-License-Identifier: GPL-2.0
|
2013-01-11 01:26:10 +00:00
|
|
|
#ifndef PREF_H
|
|
|
|
#define PREF_H
|
|
|
|
|
2013-04-01 10:51:49 +00:00
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
2017-11-24 10:51:13 +00:00
|
|
|
#else
|
|
|
|
#include <stdbool.h>
|
2013-04-01 10:51:49 +00:00
|
|
|
#endif
|
|
|
|
|
2014-06-26 17:01:31 +00:00
|
|
|
#include "units.h"
|
2015-07-01 19:32:46 +00:00
|
|
|
#include "taxonomy.h"
|
2014-06-26 17:01:31 +00:00
|
|
|
|
2014-02-28 04:09:57 +00:00
|
|
|
typedef struct
|
|
|
|
{
|
2017-11-19 08:46:19 +00:00
|
|
|
bool po2;
|
|
|
|
bool pn2;
|
|
|
|
bool phe;
|
2017-03-24 18:11:31 +00:00
|
|
|
double po2_threshold_min;
|
|
|
|
double po2_threshold_max;
|
2013-01-11 01:26:10 +00:00
|
|
|
double pn2_threshold;
|
|
|
|
double phe_threshold;
|
|
|
|
} partial_pressure_graphs_t;
|
|
|
|
|
2015-06-22 21:44:05 +00:00
|
|
|
typedef struct {
|
2015-07-01 19:32:46 +00:00
|
|
|
enum taxonomy_category category[3];
|
2015-06-22 21:44:05 +00:00
|
|
|
} geocoding_prefs_t;
|
|
|
|
|
2016-01-22 18:55:03 +00:00
|
|
|
typedef struct {
|
|
|
|
const char *language;
|
2016-09-20 19:35:49 +00:00
|
|
|
const char *lang_locale;
|
2016-01-22 18:55:03 +00:00
|
|
|
bool use_system_language;
|
|
|
|
} locale_prefs_t;
|
|
|
|
|
2015-07-03 21:07:58 +00:00
|
|
|
enum deco_mode {
|
|
|
|
BUEHLMANN,
|
|
|
|
RECREATIONAL,
|
|
|
|
VPMB
|
|
|
|
};
|
|
|
|
|
2018-08-13 15:07:30 +00:00
|
|
|
enum def_file_behavior {
|
|
|
|
UNDEFINED_DEFAULT_FILE,
|
|
|
|
LOCAL_DEFAULT_FILE,
|
|
|
|
NO_DEFAULT_FILE,
|
|
|
|
CLOUD_DEFAULT_FILE
|
|
|
|
};
|
|
|
|
|
2016-08-10 18:50:00 +00:00
|
|
|
typedef struct {
|
|
|
|
bool dont_check_for_updates;
|
2017-11-18 18:57:50 +00:00
|
|
|
const char *last_version_used;
|
2018-08-15 15:19:29 +00:00
|
|
|
int next_check;
|
2016-08-10 18:50:00 +00:00
|
|
|
} update_manager_prefs_t;
|
|
|
|
|
2016-08-10 21:10:15 +00:00
|
|
|
typedef struct {
|
2017-11-18 18:57:50 +00:00
|
|
|
const char *vendor;
|
|
|
|
const char *product;
|
|
|
|
const char *device;
|
|
|
|
const char *device_name;
|
2016-08-10 21:10:15 +00:00
|
|
|
} dive_computer_prefs_t;
|
|
|
|
|
2020-01-04 08:26:09 +00:00
|
|
|
// NOTE: these enums are duplicated in mobile-widgets/qmlinterface.h
|
2018-07-28 19:18:54 +00:00
|
|
|
enum unit_system_values {
|
|
|
|
METRIC,
|
|
|
|
IMPERIAL,
|
|
|
|
PERSONALIZE
|
|
|
|
};
|
|
|
|
|
2018-06-13 14:45:19 +00:00
|
|
|
// ********** PREFERENCES **********
|
|
|
|
// This struct is kept global for all of ssrf
|
|
|
|
// most of the fields are loaded from git as
|
|
|
|
// part of the dives, but some fields are loaded
|
|
|
|
// from local storage (QSettings)
|
|
|
|
// The struct is divided in groups (sorted)
|
|
|
|
// and elements within the group is sorted
|
|
|
|
//
|
|
|
|
// When adding items to this list, please keep
|
|
|
|
// the list sorted (easier to find something)
|
2013-01-11 01:26:10 +00:00
|
|
|
struct preferences {
|
2018-06-13 14:45:19 +00:00
|
|
|
// ********** Animations **********
|
|
|
|
int animation_speed;
|
|
|
|
|
|
|
|
// ********** CloudStorage **********
|
2020-11-02 20:17:40 +00:00
|
|
|
bool cloud_auto_sync;
|
2015-06-15 12:52:12 +00:00
|
|
|
const char *cloud_base_url;
|
2017-11-18 18:57:50 +00:00
|
|
|
const char *cloud_storage_email;
|
|
|
|
const char *cloud_storage_email_encoded;
|
2018-06-13 14:45:19 +00:00
|
|
|
const char *cloud_storage_password;
|
|
|
|
const char *cloud_storage_pin;
|
2018-09-02 12:35:43 +00:00
|
|
|
int cloud_timeout;
|
|
|
|
int cloud_verification_status;
|
2018-06-13 14:45:19 +00:00
|
|
|
bool save_password_local;
|
|
|
|
|
|
|
|
// ********** DiveComputer **********
|
|
|
|
dive_computer_prefs_t dive_computer;
|
2018-09-20 19:03:09 +00:00
|
|
|
dive_computer_prefs_t dive_computer1;
|
|
|
|
dive_computer_prefs_t dive_computer2;
|
|
|
|
dive_computer_prefs_t dive_computer3;
|
|
|
|
dive_computer_prefs_t dive_computer4;
|
2023-04-02 06:28:33 +00:00
|
|
|
bool sync_dc_time;
|
2018-06-13 14:45:19 +00:00
|
|
|
|
2019-12-07 18:27:25 +00:00
|
|
|
// ********** Display *************
|
2020-11-04 22:29:48 +00:00
|
|
|
bool display_invalid_dives;
|
|
|
|
const char *divelist_font;
|
|
|
|
double font_size;
|
|
|
|
double mobile_scale;
|
|
|
|
bool show_developer;
|
2022-05-20 07:28:49 +00:00
|
|
|
bool three_m_based_grid;
|
2022-08-17 00:17:04 +00:00
|
|
|
bool map_short_names;
|
2018-06-13 14:45:19 +00:00
|
|
|
|
2019-12-07 18:27:25 +00:00
|
|
|
// ********** Equipment tab *******
|
|
|
|
const char *default_cylinder;
|
2023-07-09 00:14:27 +00:00
|
|
|
bool include_unused_tanks;
|
2020-12-11 22:55:18 +00:00
|
|
|
bool display_default_tank_infos;
|
2019-12-07 18:27:25 +00:00
|
|
|
|
2018-06-13 14:45:19 +00:00
|
|
|
// ********** General **********
|
|
|
|
bool auto_recalculate_thumbnails;
|
2018-07-10 13:04:35 +00:00
|
|
|
bool extract_video_thumbnails;
|
|
|
|
int extract_video_thumbnails_position; // position in stream: 0=first 100=last second
|
|
|
|
const char *ffmpeg_executable; // path of ffmpeg binary
|
2018-06-13 14:45:19 +00:00
|
|
|
int defaultsetpoint; // default setpoint in mbar
|
|
|
|
const char *default_filename;
|
2018-08-13 15:07:30 +00:00
|
|
|
enum def_file_behavior default_file_behavior;
|
2018-06-13 14:45:19 +00:00
|
|
|
int o2consumption; // ml per min
|
|
|
|
int pscr_ratio; // dump ratio times 1000
|
|
|
|
bool use_default_file;
|
2019-11-28 08:47:12 +00:00
|
|
|
bool extraEnvironmentalDefault;
|
2019-11-19 09:52:33 +00:00
|
|
|
bool salinityEditDefault;
|
2018-06-13 14:45:19 +00:00
|
|
|
|
|
|
|
// ********** Geocoding **********
|
2015-06-22 21:44:05 +00:00
|
|
|
geocoding_prefs_t geocoding;
|
2018-06-13 14:45:19 +00:00
|
|
|
|
|
|
|
// ********** Language **********
|
2020-11-02 20:17:40 +00:00
|
|
|
const char *date_format;
|
2018-06-13 14:45:19 +00:00
|
|
|
bool date_format_override;
|
2020-11-02 20:17:40 +00:00
|
|
|
const char *date_format_short;
|
2018-06-13 14:45:19 +00:00
|
|
|
locale_prefs_t locale; //: TODO: move the rest of locale based info here.
|
2020-11-02 20:17:40 +00:00
|
|
|
const char *time_format;
|
2018-06-13 14:45:19 +00:00
|
|
|
bool time_format_override;
|
|
|
|
|
|
|
|
// ********** Network **********
|
|
|
|
bool proxy_auth;
|
|
|
|
const char *proxy_host;
|
|
|
|
int proxy_port;
|
|
|
|
int proxy_type;
|
|
|
|
const char *proxy_user;
|
|
|
|
const char *proxy_pass;
|
|
|
|
|
|
|
|
// ********** Planner **********
|
|
|
|
int ascratelast6m;
|
|
|
|
int ascratestops;
|
|
|
|
int ascrate50;
|
|
|
|
int ascrate75; // All rates in mm / sec
|
|
|
|
depth_t bestmixend;
|
|
|
|
int bottompo2;
|
|
|
|
int bottomsac;
|
|
|
|
int decopo2;
|
|
|
|
int decosac;
|
|
|
|
int descrate;
|
|
|
|
bool display_duration;
|
|
|
|
bool display_runtime;
|
|
|
|
bool display_transitions;
|
|
|
|
bool display_variations;
|
|
|
|
bool doo2breaks;
|
2019-01-10 20:18:53 +00:00
|
|
|
bool dobailout;
|
2019-10-29 16:57:34 +00:00
|
|
|
bool o2narcotic;
|
2018-06-13 14:45:19 +00:00
|
|
|
bool drop_stone_mode;
|
|
|
|
bool last_stop; // At 6m?
|
|
|
|
int min_switch_duration; // seconds
|
2019-03-25 21:40:59 +00:00
|
|
|
int surface_segment; // seconds at the surface after planned dive
|
2018-06-13 14:45:19 +00:00
|
|
|
enum deco_mode planner_deco_mode;
|
|
|
|
int problemsolvingtime;
|
|
|
|
int reserve_gas;
|
|
|
|
int sacfactor;
|
|
|
|
bool safetystop;
|
|
|
|
bool switch_at_req_stop;
|
|
|
|
bool verbatim_plan;
|
|
|
|
|
|
|
|
// ********** TecDetails **********
|
|
|
|
bool calcalltissues;
|
|
|
|
bool calcceiling;
|
|
|
|
bool calcceiling3m;
|
|
|
|
bool calcndltts;
|
2019-01-29 13:27:27 +00:00
|
|
|
bool decoinfo; // Show deco info in infobox
|
2018-06-13 14:45:19 +00:00
|
|
|
bool dcceiling;
|
|
|
|
enum deco_mode display_deco_mode;
|
|
|
|
bool ead;
|
2018-09-02 12:35:43 +00:00
|
|
|
int gfhigh;
|
|
|
|
int gflow;
|
2018-06-13 14:45:19 +00:00
|
|
|
bool gf_low_at_maxdepth;
|
|
|
|
bool hrgraph;
|
|
|
|
bool mod;
|
|
|
|
double modpO2;
|
|
|
|
bool percentagegraph;
|
|
|
|
partial_pressure_graphs_t pp_graphs;
|
|
|
|
bool redceiling;
|
|
|
|
bool rulergraph;
|
|
|
|
bool show_average_depth;
|
|
|
|
bool show_ccr_sensors;
|
|
|
|
bool show_ccr_setpoint;
|
|
|
|
bool show_icd;
|
|
|
|
bool show_pictures_in_profile;
|
|
|
|
bool show_sac;
|
|
|
|
bool show_scr_ocpo2;
|
|
|
|
bool tankbar;
|
2018-09-02 12:35:43 +00:00
|
|
|
int vpmb_conservatism;
|
2018-06-13 14:45:19 +00:00
|
|
|
bool zoomed_plot;
|
2023-06-18 03:28:51 +00:00
|
|
|
bool infobox;
|
2018-06-13 14:45:19 +00:00
|
|
|
|
|
|
|
// ********** Units **********
|
2018-07-28 19:18:54 +00:00
|
|
|
bool coordinates_traditional;
|
|
|
|
enum unit_system_values unit_system;
|
|
|
|
struct units units;
|
2018-06-13 14:45:19 +00:00
|
|
|
|
|
|
|
// ********** UpdateManager **********
|
2016-08-10 18:50:00 +00:00
|
|
|
update_manager_prefs_t update_manager;
|
2013-01-11 01:26:10 +00:00
|
|
|
};
|
2018-06-13 14:45:19 +00:00
|
|
|
|
2017-02-04 16:55:25 +00:00
|
|
|
extern struct preferences prefs, default_prefs, git_prefs;
|
2013-01-11 01:26:10 +00:00
|
|
|
|
2014-08-22 22:22:02 +00:00
|
|
|
extern const char *system_divelist_default_font;
|
2014-08-27 13:00:10 +00:00
|
|
|
extern double system_divelist_default_font_size;
|
2015-02-08 19:35:50 +00:00
|
|
|
|
|
|
|
extern const char *system_default_directory(void);
|
2013-01-12 01:07:22 +00:00
|
|
|
extern const char *system_default_filename();
|
2014-08-27 13:00:10 +00:00
|
|
|
extern bool subsurface_ignore_font(const char *font);
|
2018-06-20 19:45:53 +00:00
|
|
|
extern void subsurface_OS_pref_setup();
|
2017-11-25 08:22:19 +00:00
|
|
|
extern void copy_prefs(struct preferences *src, struct preferences *dest);
|
2013-01-11 18:14:10 +00:00
|
|
|
|
2020-10-25 17:52:15 +00:00
|
|
|
extern void set_informational_units(const char *units);
|
|
|
|
extern void set_git_prefs(const char *prefs);
|
|
|
|
|
2013-04-01 10:51:49 +00:00
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
2014-02-11 18:14:46 +00:00
|
|
|
#endif // PREF_H
|