src/EditProduct.h

Fri, 20 May 2022 20:43:33 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Fri, 20 May 2022 20:43:33 +0200
changeset 225
448e4187cada
parent 221
54828816233f
child 227
7966bf14cc34
permissions
-rw-r--r--

Implemented the tasting tab. On the generic tab, show the ingredients check or the read only prompt on the same place depending on the product stage. Fixed the yeasts ingredients in stock check. Reordered the tab order of all edit fields. It looks like this module is ready and needs testing.

#ifndef _EDITPRODUCT_H
#define _EDITPRODUCT_H

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

#include "global.h"

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();

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 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 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 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_source_changed(int val);
    void sp_type_changed(int val);
    void sp_ph_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 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 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_orange = "QProgressBar::chunk {background: #EB7331;}";
    QString bar_green = "QProgressBar::chunk {background: #008C00;}";
    QString bar_20 = "QProgressBar::chunk {background: #004D00;}";
    QString bar_40 = "QProgressBar::chunk {background: #008C00;}";
    QString bar_60 = "QProgressBar::chunk {background: #00BF00;}";
    QString bar_80 = "QProgressBar::chunk {background: #00FF00;}";
    QString bar_100 = "QProgressBar::chunk {background: #80FF80;}";
    int recno;
    bool textIsChanged = false;
    double ret_fg;
    /*
     * Variables for popup ingredients editing.
     */
    QComboBox *fselectEdit, *faddedEdit, *hselectEdit,*haddedEdit, *useatEdit, *mselectEdit, *yselectEdit;
    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;
    QSpinBox *htimeEdit, *mtimeEdit;
    QCheckBox *to100Edit, *finstockEdit, *hinstockEdit, *minstockEdit, *yinstockEdit;
    QLabel *htimeLabel, *mtimeLabel, *mamountLabel, *yamountLabel, *ivolLabel, *itmpLabel;

    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);
    void set_brewing_salt(QString salt, double val);
    void calcMiscs();
    void calcFermentables();
    void calcFermentablesFromOG(double og);
    void calcIBUs();
    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 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();
};

#endif

mercurial