src/ProdOnName.cpp

Sat, 11 Feb 2023 15:48:02 +0100

author
Michiel Broek <mbroek@mbse.eu>
date
Sat, 11 Feb 2023 15:48:02 +0100
changeset 493
520306773450
parent 228
c859e8efa470
permissions
-rw-r--r--

Monitor iSpindels: use global variables instead of repeated expensive MySQL calls. Use the yeast temperature ranges for the colors on the thermometer scale. Don't show SVG and ABV if the OG is not yet known. Turn statusfield red if offline. Extra mon_ispindles fields yeast_lo and yeast_hi. Need at least bmsd version 0.3.42. If a websocket message is received that cannot be parsed, show the whole received message.

228
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1 /**
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2 * ProdOnName.cpp is part of bmsapp.
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3 *
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
4 * bmsapp is free software: you can redistribute it and/or modify
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
5 * it under the terms of the GNU General Public License as published by
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
6 * the Free Software Foundation, either version 3 of the License, or
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
7 * (at your option) any later version.
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
8 *
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
9 * bmsapp is distributed in the hope that it will be useful,
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
12 * GNU General Public License for more details.
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
13 *
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
14 * You should have received a copy of the GNU General Public License
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
16 */
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
17 #include "ProdOnName.h"
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
18 #include "MainWindow.h"
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
19 #include "EditProduct.h"
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
20 #include "config.h"
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
21 #include "global.h"
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
22
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
23
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
24 ProdOnName::ProdOnName(QWidget *parent) : QDialog(parent)
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
25 {
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
26 qDebug() << "ProdOnName start";
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
27
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
28 gridLayout = new QGridLayout(this);
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
29 gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
30 tableOnName = new QTableWidget(this);
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
31 tableOnName->setObjectName(QString::fromUtf8("tableOnName"));
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
32 tableOnName->setEnabled(true);
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
33 QSizePolicy sizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding);
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
34 sizePolicy.setHorizontalStretch(0);
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
35 sizePolicy.setVerticalStretch(0);
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
36 sizePolicy.setHeightForWidth(tableOnName->sizePolicy().hasHeightForWidth());
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
37 tableOnName->setSizePolicy(sizePolicy);
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
38 tableOnName->setMinimumSize(QSize(1164, 0));
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
39 gridLayout->addWidget(tableOnName, 0, 0, 1, 1);
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
40
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
41 groupBox = new QGroupBox(this);
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
42 groupBox->setObjectName(QString::fromUtf8("groupBox"));
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
43 groupBox->setEnabled(true);
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
44 groupBox->setFlat(false);
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
45
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
46 horizontalLayout = new QHBoxLayout(groupBox);
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
47 horizontalLayout->setSpacing(6);
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
48 horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout"));
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
49 horizontalLayout->setContentsMargins(0, 0, 0, 0);
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
50
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
51 quitButton = new QPushButton(groupBox);
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
52 quitButton->setObjectName(QString::fromUtf8("quitButton"));
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
53 quitButton->setMinimumSize(QSize(80, 24));
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
54 quitButton->setText(tr("Quit"));
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
55 QIcon icon;
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
56 icon.addFile(QString::fromUtf8(":icons/silk/door_out.png"), QSize(), QIcon::Normal, QIcon::Off);
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
57 quitButton->setIcon(icon);
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
58 horizontalLayout->addWidget(quitButton, 0, Qt::AlignCenter);
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
59 gridLayout->addWidget(groupBox, 1, 0, 1, 1);
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
60
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
61 connect(quitButton, SIGNAL(clicked()), parent, SLOT(fromProdOnName()));
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
62 connect(this, SIGNAL(setStatus(QString)), parent, SLOT(statusMsg(QString)));
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
63 emit refreshTable();
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
64 }
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
65
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
66
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
67 void ProdOnName::refreshTable()
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
68 {
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
69 QString w;
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
70 QWidget* pWidget;
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
71 QHBoxLayout* pLayout;
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
72
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
73 qDebug() << "ProdOnName reload";
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
74 QSqlQuery query("SELECT record,name,st_name,og,fg,brew_date_start,code FROM products WHERE stage = '11' ORDER BY name,brew_date_start");
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
75 const QStringList labels({tr("Name"), tr("Style"), tr("OG"), tr("FG"), tr("Date"), tr("Code"), tr("Edit")});
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
76
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
77 this->tableOnName->setColumnCount(7);
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
78 this->tableOnName->setColumnWidth(0, 500); /* Product name */
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
79 this->tableOnName->setColumnWidth(1, 200); /* Style */
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
80 this->tableOnName->setColumnWidth(2, 75); /* OG */
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
81 this->tableOnName->setColumnWidth(3, 75); /* FG */
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
82 this->tableOnName->setColumnWidth(4, 100); /* Date */
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
83 this->tableOnName->setColumnWidth(5, 100); /* Code */
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
84 this->tableOnName->setColumnWidth(6, 90); /* Edit button */
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
85 this->tableOnName->setRowCount(query.size());
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
86 this->tableOnName->setHorizontalHeaderLabels(labels);
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
87 this->tableOnName->verticalHeader()->hide();
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
88
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
89 query.first();
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
90 for (int ridx = 0 ; ridx < query.size() ; ridx++ ) {
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
91
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
92 this->tableOnName->setItem(ridx, 0, new QTableWidgetItem(query.value("name").toString()));
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
93 this->tableOnName->setItem(ridx, 1, new QTableWidgetItem(query.value("st_name").toString()));
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
94 QTableWidgetItem *item = new QTableWidgetItem(QString("%1").arg(query.value("og").toFloat(), 4, 'f', 3, '0' ));
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
95 item->setTextAlignment(Qt::AlignCenter|Qt::AlignVCenter);
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
96 this->tableOnName->setItem(ridx, 2, item);
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
97
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
98 item = new QTableWidgetItem(QString("%1").arg(query.value("fg").toFloat(), 4, 'f', 3, '0' ));
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
99 item->setTextAlignment(Qt::AlignCenter|Qt::AlignVCenter);
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
100 this->tableOnName->setItem(ridx, 3, item);
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
101
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
102 this->tableOnName->setItem(ridx, 4, new QTableWidgetItem(query.value("brew_date_start").toDate().toString("dd MMM yyyy")));
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
103 this->tableOnName->setItem(ridx, 5, new QTableWidgetItem(query.value("code").toString()));
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
104
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
105 /* Add the Edit button */
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
106 QWidget* pWidget = new QWidget();
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
107 QPushButton* btn_edit = new QPushButton();
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
108 btn_edit->setObjectName(QString("%1").arg(query.value(0).toString())); /* Send record with the button */
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
109 btn_edit->setText(tr("Edit"));
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
110 connect(btn_edit, SIGNAL(clicked()), this, SLOT(on_editButton_clicked()));
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
111 QHBoxLayout* pLayout = new QHBoxLayout(pWidget);
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
112 pLayout->addWidget(btn_edit);
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
113 pLayout->setContentsMargins(5, 0, 5, 0);
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
114 pWidget->setLayout(pLayout);
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
115 this->tableOnName->setCellWidget(ridx, 6, pWidget);
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
116 query.next();
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
117 }
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
118
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
119 emit setStatus(QString(tr("Total items: %1")).arg(query.size()));
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
120 }
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
121
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
122
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
123 ProdOnName::~ProdOnName() {}
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
124
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
125
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
126 void ProdOnName::edit(int recno)
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
127 {
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
128 EditProduct dialog(recno, this);
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
129 /* Signal from editor if a refresh is needed */
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
130 connect(&dialog, SIGNAL(entry_changed()), this, SLOT(refreshTable()));
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
131 dialog.setModal(true);
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
132 dialog.exec();
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
133 }
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
134
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
135
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
136 void ProdOnName::on_editButton_clicked()
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
137 {
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
138 QPushButton *pb = qobject_cast<QPushButton *>(QObject::sender());
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
139 int recno = pb->objectName().toInt();
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
140 edit(recno);
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
141 }
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
142
c859e8efa470 Added archive products on name.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
143

mercurial