Thu, 30 Jun 2022 10:38:03 +0200
Translated to English.
310 | 1 | /** |
2 | * MonCO2meters.cpp is part of bmsapp. | |
3 | * | |
4 | * bmsapp is free software: you can redistribute it and/or modify | |
5 | * it under the terms of the GNU General Public License as published by | |
6 | * the Free Software Foundation, either version 3 of the License, or | |
7 | * (at your option) any later version. | |
8 | * | |
9 | * bmsapp is distributed in the hope that it will be useful, | |
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 | * GNU General Public License for more details. | |
13 | * | |
14 | * You should have received a copy of the GNU General Public License | |
15 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | |
16 | */ | |
17 | #include "MonCO2meters.h" | |
18 | #include "EditSupplier.h" | |
19 | #include "MainWindow.h" | |
20 | #include "config.h" | |
21 | ||
22 | ||
23 | ||
24 | /* | |
25 | * Build the table and buttons on the mainscreen. | |
26 | * Don't use a ui file, do it dynamicly. | |
27 | */ | |
28 | MonCO2meters::MonCO2meters(QWidget *parent) : QDialog(parent) | |
29 | { | |
30 | qDebug() << "MonCO2meters start"; | |
31 | ||
32 | gridLayout = new QGridLayout(this); | |
33 | gridLayout->setObjectName(QString::fromUtf8("gridLayout")); | |
313
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
34 | tableCO2meters = new QTableWidget(this); |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
35 | tableCO2meters->setObjectName(QString::fromUtf8("tableCO2meters")); |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
36 | tableCO2meters->setEnabled(true); |
310 | 37 | QSizePolicy sizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); |
38 | sizePolicy.setHorizontalStretch(0); | |
39 | sizePolicy.setVerticalStretch(0); | |
313
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
40 | sizePolicy.setHeightForWidth(tableCO2meters->sizePolicy().hasHeightForWidth()); |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
41 | tableCO2meters->setSizePolicy(sizePolicy); |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
42 | tableCO2meters->setMinimumSize(QSize(1054, 0)); |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
43 | gridLayout->addWidget(tableCO2meters, 0, 0, 1, 1); |
310 | 44 | |
45 | groupBox = new QGroupBox(this); | |
46 | groupBox->setObjectName(QString::fromUtf8("groupBox")); | |
47 | groupBox->setEnabled(true); | |
48 | groupBox->setFlat(false); | |
49 | horizontalLayout = new QHBoxLayout(groupBox); | |
50 | horizontalLayout->setSpacing(6); | |
51 | horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout")); | |
52 | horizontalLayout->setContentsMargins(0, 0, 0, 0); | |
53 | quitButton = new QPushButton(groupBox); | |
54 | quitButton->setObjectName(QString::fromUtf8("quitButton")); | |
55 | quitButton->setMinimumSize(QSize(80, 24)); | |
56 | quitButton->setText(tr("Quit")); | |
57 | QIcon icon; | |
58 | icon.addFile(QString::fromUtf8(":icons/silk/door_out.png"), QSize(), QIcon::Normal, QIcon::Off); | |
59 | quitButton->setIcon(icon); | |
313
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
60 | horizontalLayout->addWidget(quitButton, 0, Qt::AlignCenter); |
310 | 61 | gridLayout->addWidget(groupBox, 1, 0, 1, 1); |
62 | ||
63 | connect(quitButton, SIGNAL(clicked()), parent, SLOT(fromMonCO2meters())); | |
64 | connect(this, SIGNAL(setStatus(QString)), parent, SLOT(statusMsg(QString))); | |
313
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
65 | connect(parent, SIGNAL(updateCO2meters(QString)), this, SLOT(refreshCO2meters(QString))); |
310 | 66 | emit refreshTable(); |
67 | } | |
68 | ||
69 | ||
70 | void MonCO2meters::refreshTable() | |
71 | { | |
313
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
72 | QTableWidgetItem *item; |
310 | 73 | |
313
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
74 | qDebug() << "MonCO2meters reload"; |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
75 | QSqlQuery query("SELECT record,node,alias,online,mode,beercode,beername,temperature,pressure_bar FROM mon_co2meters ORDER BY node,alias"); |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
76 | const QStringList labels({tr("Node"), tr("Unit"), tr("Status"), tr("Beer"), tr("Temperature"), tr("Pressure"), tr("Details")}); |
310 | 77 | |
313
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
78 | this->tableCO2meters->setColumnCount(7); |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
79 | this->tableCO2meters->setColumnWidth(0, 150); /* Node */ |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
80 | this->tableCO2meters->setColumnWidth(1, 100); /* Unit */ |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
81 | this->tableCO2meters->setColumnWidth(2, 100); /* Status */ |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
82 | this->tableCO2meters->setColumnWidth(3, 390); /* Beer */ |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
83 | this->tableCO2meters->setColumnWidth(4, 100); /* Temperature */ |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
84 | this->tableCO2meters->setColumnWidth(5, 100); /* Pressure */ |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
85 | this->tableCO2meters->setColumnWidth(6, 90); /* Edit button */ |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
86 | this->tableCO2meters->setRowCount(query.size()); |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
87 | this->tableCO2meters->setHorizontalHeaderLabels(labels); |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
88 | this->tableCO2meters->verticalHeader()->hide(); |
310 | 89 | /* Set the widget size to 1054 x 575 in the ui. */ |
90 | ||
91 | query.first(); | |
313
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
92 | for (int i = 0 ; i < query.size() ; i++ ) { |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
93 | this->tableCO2meters->setItem(i, 0, new QTableWidgetItem(query.value("node").toString())); |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
94 | this->tableCO2meters->setItem(i, 1, new QTableWidgetItem(query.value("alias").toString())); |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
95 | |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
96 | if (query.value("online").toInt()) { |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
97 | item = new QTableWidgetItem(QString("Ok")); |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
98 | } else { |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
99 | item = new QTableWidgetItem(QString("Offline")); |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
100 | item->setForeground(QBrush(QColor(Qt::red))); |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
101 | } |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
102 | item->setTextAlignment(Qt::AlignCenter|Qt::AlignVCenter); |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
103 | this->tableCO2meters->setItem(i, 2, item); |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
104 | |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
105 | if (query.value("mode").toString() == "ON") { |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
106 | item = new QTableWidgetItem(query.value("beercode").toString()+" - "+query.value("beername").toString()); |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
107 | this->tableCO2meters->setItem(i, 3, item); |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
108 | } else { |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
109 | this->tableCO2meters->setItem(i, 3, new QTableWidgetItem(QString(""))); |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
110 | } |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
111 | |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
112 | if (query.value("online").toInt()) { |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
113 | item = new QTableWidgetItem(QString("%1°C").arg(query.value("temperature").toDouble(), 4, 'f', 3, '0')); |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
114 | item->setTextAlignment(Qt::AlignCenter|Qt::AlignVCenter); |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
115 | this->tableCO2meters->setItem(i, 4, item); |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
116 | item = new QTableWidgetItem(QString("%1 bar").arg(query.value("pressure_bar").toDouble(), 2, 'f', 1, '0')); |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
117 | item->setTextAlignment(Qt::AlignCenter|Qt::AlignVCenter); |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
118 | this->tableCO2meters->setItem(i, 5, item); |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
119 | } else { |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
120 | this->tableCO2meters->setItem(i, 4, new QTableWidgetItem(QString(""))); |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
121 | this->tableCO2meters->setItem(i, 5, new QTableWidgetItem(QString(""))); |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
122 | } |
310 | 123 | |
124 | /* Add the Edit button */ | |
125 | QWidget* pWidget = new QWidget(); | |
126 | QPushButton* btn_edit = new QPushButton(); | |
127 | btn_edit->setObjectName(QString("%1").arg(query.value(0).toString())); /* Send record with the button */ | |
313
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
128 | btn_edit->setText(tr("Details")); |
310 | 129 | connect(btn_edit, SIGNAL(clicked()), this, SLOT(on_editButton_clicked())); |
130 | QHBoxLayout* pLayout = new QHBoxLayout(pWidget); | |
131 | pLayout->addWidget(btn_edit); | |
132 | pLayout->setContentsMargins(5, 0, 5, 0); | |
133 | pWidget->setLayout(pLayout); | |
313
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
134 | this->tableCO2meters->setCellWidget(i, 6, pWidget); |
310 | 135 | query.next(); |
136 | } | |
137 | emit setStatus(QString(tr("Total items: %1")).arg(query.size())); | |
138 | } | |
139 | ||
140 | ||
141 | MonCO2meters::~MonCO2meters() {} | |
142 | ||
143 | ||
313
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
144 | void MonCO2meters::refreshCO2meters(QString data) |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
145 | { |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
146 | qDebug() << "refreshCO2meters" << data; |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
147 | emit refreshTable(); |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
148 | } |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
149 | |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
150 | |
310 | 151 | void MonCO2meters::edit(int recno) |
152 | { | |
313
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
153 | // EditSupplier dialog(recno, this); |
310 | 154 | /* Signal from editor if a refresh is needed */ |
313
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
155 | // connect(&dialog, SIGNAL(entry_changed()), this, SLOT(refreshTable())); |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
156 | // dialog.setModal(true); |
966b5de3182e
Added monitor co2meters overview
Michiel Broek <mbroek@mbse.eu>
parents:
310
diff
changeset
|
157 | // dialog.exec(); |
310 | 158 | } |
159 | ||
160 | ||
161 | void MonCO2meters::on_editButton_clicked() | |
162 | { | |
163 | QPushButton *pb = qobject_cast<QPushButton *>(QObject::sender()); | |
164 | int recno = pb->objectName().toInt(); | |
165 | edit(recno); | |
166 | } | |
167 | ||
168 |