Fri, 20 May 2022 22:06:06 +0200
Version 0.2.1. Updated translations.
#ifndef _GLOBAL_H #define _GLOBAL_H #include <QList> #include <QString> #include <QTranslator> #include <QDate> #define Ka1 0.0000004445 #define Ka2 0.0000000000468 #define MMCa 40.048 #define MMMg 24.305 #define MMNa 22.98976928 #define MMCl 35.453 #define MMSO4 96.0626 #define MMCO3 60.01684 #define MMHCO3 61.01684 #define MMCaSO4 172.171 #define MMCaCl2 147.015 #define MMCaCO3 100.087 #define MMMgCl2 95.211 /* Since 27-06-2021 */ #define MMMgSO4 246.475 #define MMNaHCO3 84.007 #define MMNa2CO3 105.996 #define MMNaCl 58.443 #define MMCaOH2 74.06268 #define SpecificHeatWater 1.0 #define SpecificHeatMalt 0.399 //cal/g.°C #define SlakingHeat 10.318 //cal/g.°C #define equip_tun_weight 2.0 // 2 Kg pot #define equip_tun_specific_heat 0.110 #define MaltVolume 0.87 // l/kg 0.688 volgens internetbronnen, gemeten 0.874 l/kg, na enige tijd maischen 0,715 l/kg (A3 Otten). struct Acid { QString name_en; QString name_nl; double pK1; double pK2; double pK3; double MolWt; double AcidSG; double AcidPrc; }; extern QList<Acid> my_acids; /* * Fermentables, Hops, Miscs, Yeasts and Mashs are stored in the * database in json arrays. These are the QList structures. */ struct Fermentables { QString f_name; QString f_origin; QString f_supplier; double f_amount; double f_cost; int f_type; double f_yield; double f_color; double f_coarse_fine_diff; double f_moisture; double f_diastatic_power; double f_protein; double f_dissolved_protein; double f_max_in_batch; int f_graintype; int f_added; bool f_recommend_mash; bool f_add_after_boil; bool f_adjust_to_total_100; double f_percentage; double f_di_ph; double f_acid_to_ph_57; double f_inventory; ///< In product, current inventory. bool f_avail; ///< Product available in database. }; struct Hops { QString h_name; QString h_origin; double h_amount; double h_cost; int h_type; int h_form; int h_useat; double h_time; double h_alpha; double h_beta; double h_hsi; double h_humulene; double h_caryophyllene; double h_cohumulone; double h_myrcene; double h_total_oil; double h_inventory; ///< In product, current inventory. bool h_avail; ///< Product available in database. }; struct Miscs { QString m_name; double m_amount; int m_type; int m_use_use; double m_time; bool m_amount_is_weight; double m_cost; double m_inventory; ///< In product, current inventory. bool m_avail; ///< Product available in database. }; struct Yeasts { QString y_name; QString y_laboratory; QString y_product_id; double y_amount; int y_type; int y_form; double y_min_temperature; double y_max_temperature; int y_flocculation; double y_attenuation; double y_cells; double y_tolerance; int y_use; bool y_sta1; bool y_bacteria; bool y_harvest_top; int y_harvest_time; double y_pitch_temperature; bool y_pofpos; int y_zymocide; int y_gr_hl_lo; double y_sg_lo; int y_gr_hl_hi; double y_sg_hi; double y_cost; double y_inventory; ///< In product, current inventory. bool y_avail; ///< Product available in database. }; struct Mashs { QString step_name; int step_type; double step_volume; ///< The water volume upto this step. double step_infuse_amount; ///< Infuse/decoction volume this step. double step_infuse_temp; ///< Infuse/decoction temperature. double step_temp; ///< Start tmperature this step. double step_time; ///< Step rest time. double ramp_time; ///< Estimated ramp time to this step. double end_temp; ///< End temperature this step. double step_wg_ratio; ///< Current water/grain ratio. double step_ph; ///< In product, measured pH. double step_sg; ///< In product, measured SG. }; /* * The main recipe record stored in the database. */ struct Recipe { int record; QString uuid; bool locked; QString st_name; QString st_letter; QString st_guide; QString st_category; int st_category_number; int st_type; double st_og_min; double st_og_max; double st_fg_min; double st_fg_max; double st_ibu_min; double st_ibu_max; double st_color_min; double st_color_max; double st_carb_min; double st_carb_max; double st_abv_min; double st_abv_max; QString name; QString notes; int type; double batch_size; double boil_size; double boil_time; double efficiency; double est_og; double est_fg; double est_abv; double est_color; int color_method; double est_ibu; int ibu_method; double est_carb; double sparge_temp; double sparge_ph; double sparge_volume; int sparge_source; int sparge_acid_type; double sparge_acid_perc; double sparge_acid_amount; double mash_ph; QString mash_name; bool calc_acid; QString w1_name; ///< Water source 1 double w1_amount; double w1_calcium; double w1_sulfate; double w1_chloride; double w1_sodium; double w1_magnesium; double w1_total_alkalinity; double w1_ph; double w1_cost; QString w2_name; ///< Water source 2 double w2_amount; double w2_calcium; double w2_sulfate; double w2_chloride; double w2_sodium; double w2_magnesium; double w2_total_alkalinity; double w2_ph; double w2_cost; double wg_amount; ///< Mixed water double wg_calcium; double wg_sulfate; double wg_chloride; double wg_sodium; double wg_magnesium; double wg_total_alkalinity; double wg_ph; double wb_calcium; ///< Treated water double wb_sulfate; double wb_chloride; double wb_sodium; double wb_magnesium; double wb_total_alkalinity; double wb_ph; int wa_acid_name; double wa_acid_perc; int wa_base_name; QList<Fermentables> fermentables; QList<Hops> hops; QList<Miscs> miscs; QList<Yeasts> yeasts; QList<Mashs> mashs; /* * These are not in the MySL database, but are global variables * that belong with the loaded recipe data and are present to * make things easier. */ int fermentables_row; ///< Current row, -1 is invalid. bool fermentables_use100; ///< Use percentages instead of amount int hops_row; int miscs_row; int yeasts_row; int mashs_row; double mashs_kg; ///< Kg fermentables in the mash. int mashs_time; ///< Total mash time. double preboil_sg; }; /* * The main product record stored in the database. */ struct Product { int record; QString uuid; QString name; QString code; QDate birth; int stage; QString notes; bool log_brew; bool log_fermentation; bool log_ispindel; bool log_co2pressure; int inventory_reduced; bool locked; QString eq_name; QString eq_notes; double eq_boil_size; double eq_batch_size; double eq_tun_volume; double eq_tun_weight; double eq_tun_specific_heat; int eq_tun_material; double eq_tun_height; double eq_top_up_water; double eq_trub_chiller_loss; double eq_evap_rate; double eq_boil_time; bool eq_calc_boil_volume; double eq_top_up_kettle; double eq_hop_utilization; double eq_lauter_volume; double eq_lauter_height; double eq_lauter_deadspace; double eq_kettle_volume; double eq_kettle_height; double eq_mash_volume; double eq_mash_max; double eq_efficiency; QDateTime brew_date_start; double brew_mash_ph; double brew_mash_sg; double brew_mash_efficiency; double brew_sparge_temperature; double brew_sparge_volume; double brew_sparge_est; double brew_sparge_ph; double brew_preboil_volume; double brew_preboil_sg; double brew_preboil_ph; double brew_preboil_efficiency; double brew_aboil_volume; double brew_aboil_sg; double brew_aboil_ph; double brew_aboil_efficiency; int brew_cooling_method; double brew_cooling_time; double brew_cooling_to; double brew_whirlpool9; double brew_whirlpool7; double brew_whirlpool6; double brew_whirlpool2; double brew_fermenter_volume; double brew_fermenter_extrawater; double brew_fermenter_tcloss; double brew_aeration_time; double brew_aeration_speed; int brew_aeration_type; double brew_fermenter_sg; double brew_fermenter_ibu; double brew_fermenter_color; QDateTime brew_date_end; double og; double fg; double primary_start_temp; double primary_max_temp; double primary_end_temp; double primary_end_sg; QDate primary_end_date; double secondary_temp; double secondary_end_sg; QDate secondary_end_date; double tertiary_temp; QDate package_date; double package_volume; double package_infuse_amount; double package_infuse_abv; QString package_infuse_notes; double package_abv; double package_ph; double bottle_amount; double bottle_carbonation; int bottle_priming_sugar; double bottle_priming_amount; double bottle_priming_water; double bottle_carbonation_temp; double keg_amount; double keg_carbonation; int keg_priming_sugar; double keg_priming_amount; double keg_priming_water; double keg_carbonation_temp; bool keg_forced_carb; double keg_pressure; QString taste_notes; double taste_rate; QDate taste_date; QString taste_color; QString taste_transparency; QString taste_head; QString taste_aroma; QString taste_taste; QString taste_mouthfeel; QString taste_aftertaste; QString st_name; QString st_letter; QString st_guide; QString st_category; int st_category_number; int st_type; double st_og_min; double st_og_max; double st_fg_min; double st_fg_max; double st_ibu_min; double st_ibu_max; double st_color_min; double st_color_max; double st_carb_min; double st_carb_max; double st_abv_min; double st_abv_max; int type; double batch_size; double boil_size; double boil_time; double efficiency; double est_og; double est_og3; double est_fg; double est_abv; double est_color; int color_method; double est_ibu; int ibu_method; double est_carb; double sparge_temp; double sparge_ph; double sparge_volume; int sparge_source; int sparge_acid_type; double sparge_acid_perc; double sparge_acid_amount; double mash_ph; QString mash_name; bool calc_acid; QString w1_name; ///< Water source 1 double w1_amount; double w1_calcium; double w1_sulfate; double w1_chloride; double w1_sodium; double w1_magnesium; double w1_total_alkalinity; double w1_ph; double w1_cost; QString w2_name; ///< Water source 2 double w2_amount; double w2_calcium; double w2_sulfate; double w2_chloride; double w2_sodium; double w2_magnesium; double w2_total_alkalinity; double w2_ph; double w2_cost; double wg_amount; ///< Mixed water double wg_calcium; double wg_sulfate; double wg_chloride; double wg_sodium; double wg_magnesium; double wg_total_alkalinity; double wg_ph; double wb_calcium; ///< Treated water double wb_sulfate; double wb_chloride; double wb_sodium; double wb_magnesium; double wb_total_alkalinity; double wb_ph; int wa_acid_name; double wa_acid_perc; int wa_base_name; bool starter_enable; int starter_type; double starter_sg; int starter_viability; QDate yeast_prod_date; double yeast_pitchrate; int prop_type[4]; double prop_volume[4]; int divide_type; double divide_size; double divide_factor; int divide_parts; int divide_part; QList<Fermentables> fermentables; QList<Hops> hops; QList<Miscs> miscs; QList<Yeasts> yeasts; QList<Mashs> mashs; /* * These are not in the MySL database, but are global variables * that belong with the loaded product data and are present to * make things easier. */ int fermentables_row; ///< Current row, -1 is invalid. bool fermentables_use100; ///< Use percentages instead of amount bool fermentables_ok; ///< Inventory check int hops_row; bool hops_ok; int miscs_row; bool miscs_ok; int yeasts_row; bool yeasts_ok; bool waters_ok; int mashs_row; double mashs_kg; ///< Kg fermentables in the mash. int mashs_time; ///< Total mash time. double est_mash_sg; double preboil_sg; double final_abv; /// ABV after dilution/infusion. }; extern Recipe *recipe; extern Product *product; extern QString my_brewery_name; extern QByteArray my_logoByteArray; extern int my_factor_mashhop; extern int my_factor_fwh; extern int my_factor_pellet; extern int my_factor_plug; extern int my_factor_wethop; extern int my_factor_cryohop; extern int my_ibu_method; extern int my_color_method; extern double my_brix_correction; extern double my_grain_absorbtion; extern int my_default_water; extern QString my_yeastlab; enum ProdStages { PROD_STAGE_PLAN, PROD_STAGE_WAIT, PROD_STAGE_BREW, PROD_STAGE_PRIMARY, PROD_STAGE_SECONDARY, PROD_STAGE_TERTIARY, PROD_STAGE_PACKAGE, PROD_STAGE_CARBONATION, PROD_STAGE_MATURE, PROD_STAGE_TASTE, PROD_STAGE_READY, PROD_STAGE_CLOSED }; extern const QStringList prod_stages; extern const QStringList prod_split; extern const QStringList recipe_types; extern const QStringList style_types; enum FermentableTypes { FERMENTABLE_TYPE_GRAIN, FERMENTABLE_TYPE_SUGAR, FERMENTABLE_TYPE_EXTRACT, FERMENTABLE_TYPE_DRY_EXTRACT, FERMENTABLE_TYPE_ADJUCT }; extern const QStringList fermentable_types; enum FermentableGraintypes { FERMENTABLE_GRAINTYPE_BASE, FERMENTABLE_GRAINTYPE_ROAST, FERMENTABLE_GRAINTYPE_CRYSTAL, FERMENTABLE_GRAINTYPE_KILNED, FERMENTABLE_GRAINTYPE_SOUR_MALT, FERMENTABLE_GRAINTYPE_SPECIAL, FERMENTABLE_GRAINTYPE_NO_MALT }; extern const QStringList fermentable_graintypes; enum FermentableAdded { FERMENTABLE_ADDED_MASH, FERMENTABLE_ADDED_BOIL, FERMENTABLE_ADDED_FERMENTATION, FERMENTABLE_ADDED_LAGERING, FERMENTABLE_ADDED_BOTTLE, FERMENTABLE_ADDED_KEGS }; extern const QStringList fermentable_added; enum HopTypes { HOP_TYPE_BITTERING, HOP_TYPE_AROMA, HOP_TYPE_BOTH }; extern const QStringList hop_types; enum HopForms { HOP_FORMS_PELLET, HOP_FORMS_PLUG, HOP_FORMS_LEAF, HOP_FORMS_LEAF_WET, HOP_FORMS_CRYO }; extern const QStringList hop_forms; enum HopUseat { HOP_USEAT_MASH, HOP_USEAT_FWH, HOP_USEAT_BOIL, HOP_USEAT_AROMA, HOP_USEAT_WHIRLPOOL, HOP_USEAT_DRY_HOP }; extern const QStringList hop_useat; enum MiscTypes { MISC_TYPES_SPICE, MISC_TYPES_HERB, MISC_TYPES_FLAVOR, MISC_TYPES_FINING, MISC_TYPES_WATER_AGENT, MISC_TYPES_YEAST_NUTRIENT, MISC_TYPES_OTHER }; extern const QStringList misc_types; enum MiscUses { MISC_USES_STARTER, MISC_USES_MASH, MISC_USES_BOIL, MISC_USES_PRIMARY, MISC_USES_SECONDARY, MISC_USES_BOTTLING }; extern const QStringList misc_uses; enum YeastTypes { YEAST_TYPES_LAGER, YEAST_TYPES_ALE, YEAST_TYPES_WHEAT, YEAST_TYPES_WINE, YEAST_TYPES_CHAMPAGNE, YEAST_TYPES_BRETT, YEAST_TYPES_KVEIK, YEAST_TYPES_HYBRID }; extern const QStringList yeast_types; enum YeastForms { YEAST_FORMS_LIQUID, YEAST_FORMS_DRY, YEAST_FORMS_SLANT, YEAST_FORMS_CULTURE, YEAST_FORMS_FROZEN, YEAST_FORMS_BOTTLE, YEAST_FORMS_DRIED }; extern const QStringList yeast_forms; enum YeastUse { YEAST_USE_PRIMARY, YEAST_USE_SECONDARY, YEAST_USE_TERTIARY, YEAST_USE_BOTTLE }; extern const QStringList yeast_use; enum Starters { STARTERS_STIRRED, STARTERS_SHAKEN, STARTERS_SIMPLE }; extern const QStringList starters; extern const QStringList step_types; extern const QStringList tun_materials; #endif