src/EditProduct.h

Tue, 17 May 2022 16:57:48 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Tue, 17 May 2022 16:57:48 +0200
changeset 214
641540dc6ef2
parent 213
a167ee979cac
child 219
fa7cad488e27
permissions
-rw-r--r--

Added the brew end date and time settings. Added a confirm button the is only displayed if everything is ready for the next step. This check includes that the end of the brew is at least two hours after the start. This completes the brewday tab page.

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

    /* 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;
    /*
     * 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);
};

#endif

mercurial