Thu, 21 Apr 2022 17:22:01 +0200
New recipe, calculate the boil_size. Lot's of ignoreChanges removeals and where needed QSignalBlocker is used. Bottle priming calculation added. In fermentables editor block and release to100 settings only in mash to fermentation steps, bottle and kegging are ignored. Update the IBU slider after hop changes. Set the mash name when another mash profile is selected. Don't backup initial infuse amount if there was no mash table. A small cosmetic layout change on the mash tab.
#ifndef _MAINWINDOW_H #define _MAINWINDOW_H #include "RecipesTree.h" #include "InventorySuppliers.h" #include "InventoryFermentables.h" #include "InventoryHops.h" #include "InventoryYeasts.h" #include "InventoryMiscs.h" #include "InventoryWaters.h" #include "InventoryEquipments.h" #include "ProfileWaters.h" #include "ProfileMashs.h" #include "ProfileStyles.h" #include "ProfileFerments.h" #include "Setup.h" #include <QMainWindow> #include <QStandardItemModel> #include <QMenu> #include <QToolButton> #include <QApplication> #include <QDateTime> #include <QDebug> #include <QDir> // #include <QDomDocument> #include <QFile> #include <QList> #include <QMetaProperty> #include <QObject> #include <QSettings> #include <QString> #include <QTextStream> #include <QTranslator> #include <QtSql> #include <QUuid> #include <QStyle> #include <QPlainTextEdit> #include <QMessageBox> #include <QLabel> #include <QImage> #include <QImageReader> #include <QImageWriter> #include <QColorSpace> #include <QGraphicsView> #include <QFileDialog> #include <QXmlStreamReader> #include <QXmlStreamWriter> #include <QJsonArray> #include <QJsonDocument> #include <QJsonObject> #include <QMap> #include <QPrinter> #include <QWidget> #include <QWebSocket> typedef struct IniMySQL { QString host; ///< MySQL host QString port; ///< MySQL port QString name; ///< MySQL database QString user; ///< MySQL username QString pass; ///< MySQL password QString charset; ///< MySQL character encoding } IniMySQL; static IniMySQL dbProd; static IniMySQL dbDev; typedef struct IniWS { QString host; ///< MQTT host QString port; ///< MQTT port } IniWS; static IniWS wsProd; static IniWS wsDev; //struct Acid //{ // QString name; // double pK1; // double pK2; // double pK3; // double MolWt; // double AcidSG; // double AcidPrc; //}; //static QList<Acid> my_acids; namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(bool useDevelopOption, bool startConfigOption, QWidget *parent = 0); ~MainWindow(); // Keep pointers to new windows. RecipesTree *RecipesTreeWindow; InventorySuppliers *InventorySuppliersWindow; InventoryFermentables *InventoryFermentablesWindow; InventoryHops *InventoryHopsWindow; InventoryYeasts *InventoryYeastsWindow; InventoryMiscs *InventoryMiscsWindow; InventoryWaters *InventoryWatersWindow; InventoryEquipments *InventoryEquipmentsWindow; ProfileWaters *ProfileWatersWindow; ProfileMashs *ProfileMashsWindow; ProfileStyles *ProfileStylesWindow; ProfileFerments *ProfileFermentsWindow; Setup *SetupWindow; private slots: void on_actionExit_triggered(); void on_actionRecipes_triggered(); void on_actionSuppliers_triggered(); void on_actionFermentables_triggered(); void on_actionHops_triggered(); void on_actionYeasts_triggered(); void on_actionMiscs_triggered(); void on_actionWaters_triggered(); void on_actionEquipments_triggered(); void on_actionSupplies_list_triggered(); void on_actionYeast_bank_triggered(); void on_actionWater_profiles_triggered(); void on_actionMash_profiles_triggered(); void on_actionStyles_profiles_triggered(); void on_actionFerments_profiles_triggered(); void on_actionSetup_triggered(); void on_actionAbout_triggered(); public slots: void fromRecipesTree(); void fromInventorySuppliers(); void fromInventoryFermentables(); void fromInventoryHops(); void fromInventoryYeasts(); void fromInventoryMiscs(); void fromInventoryWaters(); void fromInventoryEquipments(); void fromProfileWaters(); void fromProfileMashs(); void fromProfileStyles(); void fromProfileFerments(); void fromSetup(); void windowTitle(QString); void statusMsg(QString); private: Ui::MainWindow *ui; QWebSocket *webSocket; /** * @brief Load profile_setup record and set global variables. */ void loadSetup(); /** * @brief Open Websocket connection. * @param develop Is true if connect to develop server, else production. * @return Returns true if succes. */ bool openWS(bool develop); void wsConnected(); void wsClosed(); void wsTextMessageReceived(QString message); /** * @brief Read user settings for the MySQL connection. * Settings in $HOME/.config/mbse/bmsapp.ini */ void readsettings(); /** * @brief Write or update the user settings for the MySQL connection. */ void writesettings(); }; #endif