src/EditProduct.h

Thu, 18 Aug 2022 20:34:15 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Thu, 18 Aug 2022 20:34:15 +0200
changeset 401
583148eb6e01
parent 395
7212b980a527
child 439
31419b7cee69
permissions
-rw-r--r--

Init est_carb field for new products.

#ifndef _EDITPRODUCT_H
#define _EDITPRODUCT_H

#include "MainWindow.h"

#include <QDialog>
#include <QStringList>
#include <QJsonDocument>
#include <QJsonObject>
#include <QDoubleSpinBox>
#include <QCheckBox>
#include <QComboBox>
#include <QRadioButton>
#include <QLineEdit>
#include <QDialogButtonBox>
#include <QList>
#include <QLabel>
#include <QCalendarWidget>
#include <QClipboard>
#include <QTableWidget>

#include "global.h"

class Callout;

struct StepResult {
    double	svol;
    double	irate;
    double	ncells;
    double	totcells;
    double	growf;
};

namespace Ui {
class EditProduct;
}

class EditProduct : public QDialog
{
    Q_OBJECT

signals:
    void entry_changed();

public:
    explicit EditProduct(int id, QWidget *parent = 0);
    ~EditProduct();

public slots:
    void tooltip(QPointF point, bool state);

private slots:
    void on_saveButton_clicked();
    void on_quitButton_clicked();
    void on_deleteButton_clicked();
    void on_exportButton_clicked();
    void on_printButton_clicked();
    void is_changed();
    void code_changed(QString);
    void name_changed(QString);
    void notes_changed();
    void style_changed(int val);
    void colormethod_changed(int val);
    void ibumethod_changed(int val);
    void est_og_changed(double val);
    void efficiency_changed(double val);
    void boil_time_changed(int val);
    void batch_size_changed(double val);
    void brew_type_changed(int val);
    void locked_changed(bool val);
    void eq_changed(int val);
    void refreshFermentables();
    void refreshHops();
    void refreshMiscs();
    void refreshYeasts();
    void refreshMashs();
    void refreshWaters();
    void refreshAll();
    void ferment_amount_changed(double val);
    void ferment_pct_changed(double val);
    void ferment_to100_changed(bool val);
    void ferment_select_changed(int val);
    void ferment_instock_changed(bool val);
    void ferment_added_changed(int val);
    void hop_amount_changed(double val);
    void hop_time_changed(int val);
    void hop_select_changed(int val);
    void hop_instock_changed(bool val);
    void hop_useat_changed(int val);
    void misc_amount_changed(double val);
    void misc_time_changed(int val);
    void misc_select_changed(int val);
    void misc_instock_changed(bool val);
    void misc_useat_changed(int val);
    void yeast_prod_date_clear();
    void yeast_prod_date_today();
    void yeast_prod_date_changed(QDate val);
    void yeast_method_changed(int val);
    void yeast_starter_sg_changed(double val);
    void yeast_starter_edit_clicked();
    void yeast_pitchrate_button_clicked();
    void yeast_amount_changed(double val);
    void yeast_select_changed(int val);
    void yeast_instock_changed(bool val);
    void yeast_useat_changed(int val);
    void addFermentRow_clicked();
    void deleteFermentRow_clicked();
    void editFermentRow_clicked();
    void addHopRow_clicked();
    void deleteHopRow_clicked();
    void editHopRow_clicked();
    void addMiscRow_clicked();
    void deleteMiscRow_clicked();
    void editMiscRow_clicked();
    void addYeastRow_clicked();
    void deleteYeastRow_clicked();
    void editYeastRow_clicked();
    void addMashRow_clicked();
    void deleteMashRow_clicked();
    void editMashRow_clicked();
    void upMashRow_clicked();
    void downMashRow_clicked();
    void split_add_clicked();
    void split_del_clicked();
    void split_splitat_changed(int val);
    void split_table_changed(int nRow, int nCol);

    void w1_name_changed(int val);
    void w2_name_changed(int val);
    void w2_volume_changed(double val);
    void wb_cacl2_changed(double val);
    void wb_caso4_changed(double val);
    void wb_mgso4_changed(double val);
    void wb_nacl_changed(double val);
    void wb_mgcl2_changed(double val);
    void wb_nahco3_changed(double val);
    void wb_caco3_changed(double val);
    void sp_cacl2_changed(double val);
    void sp_caso4_changed(double val);
    void sp_mgso4_changed(double val);
    void sp_nacl_changed(double val);
    void sp_mgcl2_changed(double val);
    void mw_calc_acid_clicked();
    void wt_target_changed(int val);
    void mw_ph_changed(double val);
    void mw_acid_changed(double val);
    void mw_type_changed(int val);
    void sp_volume_changed(double val);
    void sp_temp_changed(double val);
    void sp_group_changed(int val);
    void sp_type_changed(int val);
    void sp_ph_changed(double val);
    void sp_acid_changed(double val);
    void step_name_changed(QString val);
    void step_type_changed(int val);
    void step_temp_changed(double val);
    void end_temp_changed(double val);
    void step_time_changed(double val);
    void ramp_time_changed(double val);
    void infuse_changed(double val);
    void mash_select_changed(int val);
    void mash_name_changed(QString);
    void stepph_changed(double val);
    void stepsg_changed(double val);
    void stepbrix_changed(double val);
    void brew_date_clear();
    void brew_date_today();
    void brew_start_date_changed(QDate val);
    void brew_start_time_changed(QTime val);
    void brew_end_today();
    void brew_end_date_changed(QDate val);
    void brew_end_time_changed(QTime val);
    void brew_date_ack();
    void brew_mashph_changed(double val);
    void brew_mashsg_changed(double val);
    void brew_spargeph_changed(double val);
    void brew_preboilph_changed(double val);
    void brew_preboilsg_changed(double val);
    void brew_preboilvol_changed(double val);
    void brew_preboil_cm_changed(double val);
    void brew_preboil_button();
    void brew_aboilph_changed(double val);
    void brew_aboilsg_changed(double val);
    void brew_aboilvol_changed(double val);
    void brew_aboil_cm_changed(double val);
    void brew_aboil_button();
    void brew_cooling_method_changed(int val);
    void brew_cooling_to_changed(double val);
    void brew_cooling_time_changed(double val);
    void brew_whirlpool9_changed(double val);
    void brew_whirlpool7_changed(double val);
    void brew_whirlpool6_changed(double val);
    void brew_whirlpool2_changed(double val);
    void brew_aerwith_changed(int val);
    void brew_aerspeed_changed(double val);
    void brew_aertime_changed(double val);
    void brew_trubloss_changed(double val);
    void brew_topupwater_changed(double val);
    void brew_log_button();
    void savePNG();
    void brix_changed(double val);
    void primary_start_changed(double val);
    void primary_peak_changed(double val);
    void primary_end_changed(double val);
    void primary_sg_changed(double val);
    void primary_sg_button();
    void primary_date_changed(QDate val);
    void primary_date_button();
    void primary_date_ack();
    void secondary_temp_changed(double val);
    void secondary_sg_changed(double val);
    void secondary_sg_button();
    void secondary_date_changed(QDate val);
    void secondary_date_button();
    void secondary_date_ack();
    void tertiary_temp_changed(double val);
    void tertiary_sg_changed(double val);
    void tertiary_sg_button();
    void ferm_log1_button();
    void ferm_log2_button();
    void pack_date_changed(QDate val);
    void pack_date_button();
    void pack_date_ack();
    void pack_volume_changed(double val);
    void pack_ph_changed(double val);
    void pack_infusion_vol_changed(double val);
    void pack_infusion_abv_changed(double val);
    void pack_infusion_txt_changed(QString val);
    void pack_abv_changed(double val);
    void bottle_volume_changed(double val);
    void bottle_co2_changed(double val);
    void bottle_sugar_changed(int val);
    void bottle_water_changed(double val);
    void bottle_temp_changed(double val);
    void kegs_volume_changed(double val);
    void kegs_co2_changed(double val);
    void kegs_sugar_changed(int val);
    void kegs_water_changed(double val);
    void kegs_forced_changed(bool val);
    void kegs_temp_changed(double val);
    void carb_log_button();
    void taste_date_changed(QDate val);
    void taste_date_button();
    void taste_date_ack();
    void taste_rate_changed(double val);
    void taste_color_changed(QString val);
    void taste_transparency_changed(QString val);
    void taste_head_changed(QString val);
    void taste_aroma_changed(QString val);
    void taste_taste_changed(QString val);
    void taste_mouthfeel_changed(QString val);
    void taste_aftertaste_changed(QString val);
    void taste_notes_changed();

    /* Modified progress bars */
    void ferment_perc_mash_valueChanged(int value);
    void ferment_perc_sugars_valueChanged(int value);
    void ferment_perc_cara_valueChanged(int value);
    void ferment_lintner_valueChanged(int value);
    void hop_Flavour_valueChanged(int value);
    void hop_Aroma_valueChanged(int value);

private:
    Ui::EditProduct *ui;
    QString bar_red = "QProgressBar::chunk {background: #FF0000;}";
    QString bar_green = "QProgressBar::chunk {background: #008C00;}";
    QString bar_20 = "QProgressBar::chunk {background: #004D00;}";
    int recno;
    bool textIsChanged = false;
    double ret_fg;
    /*
     * Variables for popup ingredients editing.
     */
    QComboBox *fselectEdit, *faddedEdit, *hselectEdit,*haddedEdit, *useatEdit, *mselectEdit, *yselectEdit, *splitatEdit;
    QLineEdit *fnameEdit, *fsupplierEdit, *hnameEdit, *horiginEdit, *mnameEdit, *ynameEdit, *ylaboratoryEdit, *yproduct_idEdit, *stepnameEdit;
    QDoubleSpinBox *famountEdit, *pctEdit, *fmaxEdit, *hamountEdit, *ibuEdit, *mamountEdit, *yamountEdit, *stepphEdit, *stepsgEdit;
    QDoubleSpinBox *steptempEdit, *endtempEdit, *steptimeEdit, *ramptimeEdit, *stepivolEdit, *stepitmpEdit, *brixEdit;
    QDoubleSpinBox *vol_leftEdit, *vol_availEdit;
    QSpinBox *htimeEdit, *mtimeEdit;
    QCheckBox *to100Edit, *finstockEdit, *hinstockEdit, *minstockEdit, *yinstockEdit;
    QLabel *htimeLabel, *mtimeLabel, *mamountLabel, *yamountLabel, *ivolLabel, *itmpLabel;
    QTableWidget *splitTable;
    QPushButton *split_addButton, *split_delButton;
    QChart *chart;
    QChartView *chartView;
    Callout *t_tooltip = 0;

    void to100Fermentables(int row);
    static bool ferment_sort_test(const Fermentables &D1, const Fermentables &D2);
    static bool hop_sort_test(const Hops &D1, const Hops &D2);
    static bool misc_sort_test(const Miscs &D1, const Miscs &D2);
    static bool yeast_sort_test(const Yeasts &D1, const Yeasts &D2);
    void WindowTitle();
    void calcSupplies();
    void showEquipment();
    void initEquipment();
    void setStage();
    void brewing_salt_sub(QString salt, double val, int use);
    void set_brewing_salt(QString salt, double val, int use);
    void calcMiscs();
    void calcFermentables();
    void calcFermentablesFromOG(double og);
    void calcIBUs();
    void calcStyle();
    void calcBU();
    void adjustHops(double factor);
    void adjustMiscs(double factor);
    double ZAlkalinity(double pHZ);
    double ZRA(double pHZ);
    double BufferCapacity(Fermentables F);
    double AcidRequired(double ZpH, Fermentables F);
    double ProtonDeficit(double pHZ);
    double MashpH();
    void setButtons(bool locked);
    void calcWater();
    void calcSparge();
    double GetBUGU();
    double GetOptSO4Clratio();
    double getGrowthRate(int stype, double totcells, double egrams);
    StepResult calcStep(double svol, int stype, double start);
    void calcSteps(int stype, double start, double needed);
    void initYeast();
    void calcViability();
    void calcYeast();
    void adjustYeasts(double factor);
    double infusionVol(double step_infused, double step_mashkg, double infuse_temp, double step_temp, double last_temp);
    double decoctionVol(double step_volume, double step_temp, double prev_temp);
    void calcMash();
    void adjustWaters(double factor);
    void updateBrewday();
    void calcEfficiencyBeforeBoil();
    void calcEfficiencyAfterBoil();
    void brew_volume_calc(double volume, double kettle_volume, double kettle_height, double est_volume, bool aboil);
    double get_fg(double gravity);
    double ResCO2(double T);
    double CarbCO2toS(double CO2, double T, double SFactor);
    double GetPressure(double CO2, double T1, double T2);
    double CarbCO2ToPressure(double CO2, double T);
    void calcPack();
    void exportBeerXML();
    void copyProduct();
    void copyRecipe();
    void toforumProduct();
    void splitProduct();
    void split_show();
    void reduce_fermentable(int i);
    void reduce_hop(int i);
    void reduce_misc(int i);
    void reduce_yeast(int i);
    void inventory_reduce();
    bool block_fermentable(int stage, int added);
    bool block_hop(int stage, int useat);
    bool block_misc(int stage, int use_use);
    bool block_yeast(int stage, int use);
    void check_waters();
};

#endif

mercurial