subsurface/core/pref.h
Berthold Stoeger a15682ee76 Make handling of booleans consistent on the C-side of preferences
Boolean settings were declared in pref.h randomly as bools and shorts.
Since the code relied anyway on bool being well-defined and identical
on the C- and C++-sides, turn all of them into bools. They use less
space and express intent more clearly.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2017-11-20 20:56:13 +01:00

195 lines
4.1 KiB
C

// SPDX-License-Identifier: GPL-2.0
#ifndef PREF_H
#define PREF_H
#ifdef __cplusplus
extern "C" {
#endif
#include "units.h"
#include "taxonomy.h"
typedef struct
{
bool po2;
bool pn2;
bool phe;
double po2_threshold_min;
double po2_threshold_max;
double pn2_threshold;
double phe_threshold;
} partial_pressure_graphs_t;
typedef struct {
const char *access_token;
const char *user_id;
const char *album_id;
} facebook_prefs_t;
typedef struct {
enum taxonomy_category category[3];
} geocoding_prefs_t;
typedef struct {
const char *language;
const char *lang_locale;
bool use_system_language;
} locale_prefs_t;
enum deco_mode {
BUEHLMANN,
RECREATIONAL,
VPMB
};
typedef struct {
bool dont_check_for_updates;
bool dont_check_exists;
const char *last_version_used;
const char *next_check;
} update_manager_prefs_t;
typedef struct {
const char *vendor;
const char *product;
const char *device;
const char *device_name;
int download_mode;
} dive_computer_prefs_t;
struct preferences {
const char *divelist_font;
const char *default_filename;
const char *default_cylinder;
const char *cloud_base_url;
const char *cloud_git_url;
const char *time_format;
const char *date_format;
const char *date_format_short;
bool time_format_override;
bool date_format_override;
double font_size;
partial_pressure_graphs_t pp_graphs;
bool mod;
double modpO2;
bool ead;
bool dcceiling;
bool redceiling;
bool calcceiling;
bool calcceiling3m;
bool calcalltissues;
bool calcndltts;
short gflow;
short gfhigh;
int animation_speed;
bool gf_low_at_maxdepth;
bool show_ccr_setpoint;
bool show_ccr_sensors;
bool display_invalid_dives;
short unit_system;
struct units units;
bool coordinates_traditional;
bool show_sac;
bool display_unused_tanks;
bool show_average_depth;
bool zoomed_plot;
bool hrgraph;
bool percentagegraph;
bool rulergraph;
bool tankbar;
bool save_userid_local;
const char *userid;
int ascrate75; // All rates in mm / sec
int ascrate50;
int ascratestops;
int ascratelast6m;
int descrate;
int sacfactor;
int problemsolvingtime;
int bottompo2;
int decopo2;
enum deco_mode display_deco_mode;
depth_t bestmixend;
int proxy_type;
const char *proxy_host;
int proxy_port;
bool proxy_auth;
const char *proxy_user;
const char *proxy_pass;
bool doo2breaks;
bool drop_stone_mode;
bool last_stop; // At 6m?
bool verbatim_plan;
bool display_runtime;
bool display_duration;
bool display_transitions;
bool display_variations;
bool safetystop;
bool switch_at_req_stop;
int reserve_gas;
int min_switch_duration; // seconds
int bottomsac;
int decosac;
int o2consumption; // ml per min
int pscr_ratio; // dump ratio times 1000
int defaultsetpoint; // default setpoint in mbar
bool show_pictures_in_profile;
bool use_default_file;
short default_file_behavior;
facebook_prefs_t facebook;
const char *cloud_storage_password;
const char *cloud_storage_newpassword;
const char *cloud_storage_email;
const char *cloud_storage_email_encoded;
bool save_password_local;
short cloud_verification_status;
bool cloud_background_sync;
geocoding_prefs_t geocoding;
enum deco_mode planner_deco_mode;
short vpmb_conservatism;
int time_threshold;
int distance_threshold;
bool git_local_only;
short cloud_timeout;
locale_prefs_t locale; //: TODO: move the rest of locale based info here.
update_manager_prefs_t update_manager;
dive_computer_prefs_t dive_computer;
};
enum unit_system_values {
METRIC,
IMPERIAL,
PERSONALIZE
};
enum def_file_behavior {
UNDEFINED_DEFAULT_FILE,
LOCAL_DEFAULT_FILE,
NO_DEFAULT_FILE,
CLOUD_DEFAULT_FILE
};
enum cloud_status {
CS_UNKNOWN,
CS_INCORRECT_USER_PASSWD,
CS_NEED_TO_VERIFY,
CS_VERIFIED,
CS_NOCLOUD
};
extern struct preferences prefs, default_prefs, git_prefs;
#define PP_GRAPHS_ENABLED (prefs.pp_graphs.po2 || prefs.pp_graphs.pn2 || prefs.pp_graphs.phe)
extern const char *system_divelist_default_font;
extern double system_divelist_default_font_size;
extern const char *system_default_directory(void);
extern const char *system_default_filename();
extern bool subsurface_ignore_font(const char *font);
extern void subsurface_OS_pref_setup();
#ifdef __cplusplus
}
#endif
#endif // PREF_H