14 * You should have received a copy of the GNU General Public License |
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/>. |
15 * along with this program. If not, see <http://www.gnu.org/licenses/>. |
16 */ |
16 */ |
17 #include "ProfileWaters.h" |
17 #include "ProfileWaters.h" |
18 #include "EditProfileWater.h" |
18 #include "EditProfileWater.h" |
19 #include "../ui/ui_ProfileWaters.h" |
19 #include "MainWindow.h" |
20 #include "config.h" |
20 #include "config.h" |
21 #include "bmsapp.h" |
21 #include "bmsapp.h" |
22 |
22 |
23 |
23 |
24 ProfileWaters::ProfileWaters(QWidget *parent) : QDialog(parent), ui(new Ui::ProfileWaters) |
24 ProfileWaters::ProfileWaters(QWidget *parent) : QDialog(parent) |
25 { |
25 { |
26 qDebug() << "ProfileWaters start"; |
26 qDebug() << "ProfileWaters start"; |
27 |
27 |
28 ui->setupUi(this); |
28 gridLayout = new QGridLayout(this); |
|
29 gridLayout->setObjectName(QString::fromUtf8("gridLayout")); |
|
30 tableWaters = new QTableWidget(this); |
|
31 tableWaters->setObjectName(QString::fromUtf8("tableWaters")); |
|
32 tableWaters->setEnabled(true); |
|
33 QSizePolicy sizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); |
|
34 sizePolicy.setHorizontalStretch(0); |
|
35 sizePolicy.setVerticalStretch(0); |
|
36 tableWaters->setSizePolicy(sizePolicy); |
|
37 tableWaters->setMinimumSize(QSize(1154, 0)); |
|
38 gridLayout->addWidget(tableWaters, 0, 0, 1, 1); |
|
39 |
|
40 groupBox = new QGroupBox(this); |
|
41 groupBox->setObjectName(QString::fromUtf8("groupBox")); |
|
42 groupBox->setEnabled(true); |
|
43 groupBox->setFlat(false); |
|
44 horizontalLayout = new QHBoxLayout(groupBox); |
|
45 horizontalLayout->setSpacing(6); |
|
46 horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout")); |
|
47 horizontalLayout->setContentsMargins(0, 0, 0, 0); |
|
48 |
|
49 quitButton = new QPushButton(groupBox); |
|
50 quitButton->setObjectName(QString::fromUtf8("quitButton")); |
|
51 quitButton->setMinimumSize(QSize(80, 24)); |
|
52 quitButton->setText(tr("Quit")); |
|
53 QIcon icon; |
|
54 icon.addFile(QString::fromUtf8(":icons/silk/door_out.png"), QSize(), QIcon::Normal, QIcon::Off); |
|
55 quitButton->setIcon(icon); |
|
56 horizontalLayout->addWidget(quitButton, 0, Qt::AlignLeft); |
|
57 |
|
58 insertButton = new QPushButton(groupBox); |
|
59 insertButton->setObjectName(QString::fromUtf8("insertButton")); |
|
60 insertButton->setMinimumSize(QSize(80, 24)); |
|
61 insertButton->setText(tr("New")); |
|
62 QIcon icon3; |
|
63 icon3.addFile(QString::fromUtf8(":icons/silk/table_row_insert.png"), QSize(), QIcon::Normal, QIcon::Off); |
|
64 insertButton->setIcon(icon3); |
|
65 horizontalLayout->addWidget(insertButton, 0, Qt::AlignRight); |
|
66 gridLayout->addWidget(groupBox, 1, 0, 1, 1); |
|
67 |
|
68 connect(quitButton, SIGNAL(clicked()), parent, SLOT(fromProfileWaters())); |
|
69 connect(insertButton, SIGNAL(clicked()), this, SLOT(on_insertButton_clicked())); |
29 emit refreshTable(); |
70 emit refreshTable(); |
30 |
|
31 setWindowTitle( QString("BMSapp - %1 - Profile Waters").arg(VERSIONSTRING) ); |
|
32 } |
71 } |
33 |
72 |
34 |
73 |
35 void ProfileWaters::refreshTable() |
74 void ProfileWaters::refreshTable() |
36 { |
75 { |
42 qDebug() << "ProfileWaters reload"; |
81 qDebug() << "ProfileWaters reload"; |
43 |
82 |
44 QSqlQuery query("SELECT * FROM profile_water ORDER BY name"); |
83 QSqlQuery query("SELECT * FROM profile_water ORDER BY name"); |
45 const QStringList labels({tr("Name"), tr("Notes"), tr("Ca"), tr("Mg"), tr("Na"), tr("CaCO3"), tr("Cl"), tr("SO4"), tr("pH"), tr("Edit")}); |
84 const QStringList labels({tr("Name"), tr("Notes"), tr("Ca"), tr("Mg"), tr("Na"), tr("CaCO3"), tr("Cl"), tr("SO4"), tr("pH"), tr("Edit")}); |
46 |
85 |
47 ui->tableWaters->setColumnCount(10); |
86 this->tableWaters->setColumnCount(10); |
48 ui->tableWaters->setColumnWidth(0, 150); /* Name */ |
87 this->tableWaters->setColumnWidth(0, 150); /* Name */ |
49 ui->tableWaters->setColumnWidth(1, 375); /* Notes */ |
88 this->tableWaters->setColumnWidth(1, 375); /* Notes */ |
50 ui->tableWaters->setColumnWidth(2, 75); /* Ca */ |
89 this->tableWaters->setColumnWidth(2, 75); /* Ca */ |
51 ui->tableWaters->setColumnWidth(3, 75); /* Mg */ |
90 this->tableWaters->setColumnWidth(3, 75); /* Mg */ |
52 ui->tableWaters->setColumnWidth(4, 75); /* Na */ |
91 this->tableWaters->setColumnWidth(4, 75); /* Na */ |
53 ui->tableWaters->setColumnWidth(5, 75); /* CaCO3 */ |
92 this->tableWaters->setColumnWidth(5, 75); /* CaCO3 */ |
54 ui->tableWaters->setColumnWidth(6, 75); /* Cl */ |
93 this->tableWaters->setColumnWidth(6, 75); /* Cl */ |
55 ui->tableWaters->setColumnWidth(7, 75); /* SO4 */ |
94 this->tableWaters->setColumnWidth(7, 75); /* SO4 */ |
56 ui->tableWaters->setColumnWidth(8, 75); /* pH */ |
95 this->tableWaters->setColumnWidth(8, 75); /* pH */ |
57 ui->tableWaters->setColumnWidth(9, 80); /* Edit button */ |
96 this->tableWaters->setColumnWidth(9, 80); /* Edit button */ |
58 ui->tableWaters->setRowCount(query.size()); |
97 this->tableWaters->setRowCount(query.size()); |
59 ui->tableWaters->setHorizontalHeaderLabels(labels); |
98 this->tableWaters->setHorizontalHeaderLabels(labels); |
60 ui->tableWaters->verticalHeader()->hide(); |
99 this->tableWaters->verticalHeader()->hide(); |
61 ui->tableWaters->setFixedSize(1130 + 24, 640); /* Even if this is too large, it works */ |
|
62 |
100 |
63 QTableWidgetItem *rightitem = new QTableWidgetItem(); |
101 QTableWidgetItem *rightitem = new QTableWidgetItem(); |
64 rightitem->setTextAlignment(Qt::AlignRight); |
102 rightitem->setTextAlignment(Qt::AlignRight); |
65 |
103 |
66 query.first(); |
104 query.first(); |
67 for (int ridx = 0 ; ridx < query.size() ; ridx++ ) { |
105 for (int ridx = 0 ; ridx < query.size() ; ridx++ ) { |
68 ui->tableWaters->setItem(ridx, 0, new QTableWidgetItem(query.value(1).toString())); /* Name */ |
106 this->tableWaters->setItem(ridx, 0, new QTableWidgetItem(query.value(1).toString())); /* Name */ |
69 ui->tableWaters->setItem(ridx, 1, new QTableWidgetItem(query.value(9).toString())); /* Notes */ |
107 this->tableWaters->setItem(ridx, 1, new QTableWidgetItem(query.value(9).toString())); /* Notes */ |
70 |
108 |
71 w = QString("%1").arg(query.value(2).toDouble(), 2, 'f', 1, '0' ); /* Ca */ |
109 w = QString("%1").arg(query.value(2).toDouble(), 2, 'f', 1, '0' ); /* Ca */ |
72 QTableWidgetItem *item = new QTableWidgetItem(w); |
110 QTableWidgetItem *item = new QTableWidgetItem(w); |
73 item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter); |
111 item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter); |
74 ui->tableWaters->setItem(ridx, 2, item); |
112 this->tableWaters->setItem(ridx, 2, item); |
75 |
113 |
76 w = QString("%1").arg(query.value(7).toDouble(), 2, 'f', 1, '0' ); /* Mg */ |
114 w = QString("%1").arg(query.value(7).toDouble(), 2, 'f', 1, '0' ); /* Mg */ |
77 item = new QTableWidgetItem(w); |
115 item = new QTableWidgetItem(w); |
78 item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter); |
116 item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter); |
79 ui->tableWaters->setItem(ridx, 3, item); |
117 this->tableWaters->setItem(ridx, 3, item); |
80 |
118 |
81 w = QString("%1").arg(query.value(6).toDouble(), 2, 'f', 1, '0' ); /* Na */ |
119 w = QString("%1").arg(query.value(6).toDouble(), 2, 'f', 1, '0' ); /* Na */ |
82 item = new QTableWidgetItem(w); |
120 item = new QTableWidgetItem(w); |
83 item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter); |
121 item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter); |
84 ui->tableWaters->setItem(ridx, 4, item); |
122 this->tableWaters->setItem(ridx, 4, item); |
85 |
123 |
86 w = QString("%1").arg(query.value(10).toDouble(), 2, 'f', 1, '0' ); /* CaCO3 */ |
124 w = QString("%1").arg(query.value(10).toDouble(), 2, 'f', 1, '0' ); /* CaCO3 */ |
87 item = new QTableWidgetItem(w); |
125 item = new QTableWidgetItem(w); |
88 item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter); |
126 item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter); |
89 ui->tableWaters->setItem(ridx, 5, item); |
127 this->tableWaters->setItem(ridx, 5, item); |
90 |
128 |
91 w = QString("%1").arg(query.value(5).toDouble(), 2, 'f', 1, '0' ); /* Cl */ |
129 w = QString("%1").arg(query.value(5).toDouble(), 2, 'f', 1, '0' ); /* Cl */ |
92 item = new QTableWidgetItem(w); |
130 item = new QTableWidgetItem(w); |
93 item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter); |
131 item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter); |
94 ui->tableWaters->setItem(ridx, 6, item); |
132 this->tableWaters->setItem(ridx, 6, item); |
95 |
133 |
96 w = QString("%1").arg(query.value(4).toDouble(), 2, 'f', 1, '0' ); /* SO4 */ |
134 w = QString("%1").arg(query.value(4).toDouble(), 2, 'f', 1, '0' ); /* SO4 */ |
97 item = new QTableWidgetItem(w); |
135 item = new QTableWidgetItem(w); |
98 item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter); |
136 item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter); |
99 ui->tableWaters->setItem(ridx, 7, item); |
137 this->tableWaters->setItem(ridx, 7, item); |
100 |
138 |
101 w = QString("%1").arg(query.value(8).toDouble(), 2, 'f', 1, '0' ); /* pH */ |
139 w = QString("%1").arg(query.value(8).toDouble(), 2, 'f', 1, '0' ); /* pH */ |
102 item = new QTableWidgetItem(w); |
140 item = new QTableWidgetItem(w); |
103 item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter); |
141 item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter); |
104 ui->tableWaters->setItem(ridx, 8, item); |
142 this->tableWaters->setItem(ridx, 8, item); |
105 |
143 |
106 /* Add the Edit button */ |
144 /* Add the Edit button */ |
107 pWidget = new QWidget(); |
145 pWidget = new QWidget(); |
108 QPushButton* btn_edit = new QPushButton(); |
146 QPushButton* btn_edit = new QPushButton(); |
109 btn_edit->setObjectName(QString("%1").arg(query.value(0).toString())); /* Send record with the button */ |
147 btn_edit->setObjectName(QString("%1").arg(query.value(0).toString())); /* Send record with the button */ |
111 connect(btn_edit, SIGNAL(clicked()), this, SLOT(on_editButton_clicked())); |
149 connect(btn_edit, SIGNAL(clicked()), this, SLOT(on_editButton_clicked())); |
112 pLayout = new QHBoxLayout(pWidget); |
150 pLayout = new QHBoxLayout(pWidget); |
113 pLayout->addWidget(btn_edit); |
151 pLayout->addWidget(btn_edit); |
114 pLayout->setContentsMargins(5, 0, 5, 0); |
152 pLayout->setContentsMargins(5, 0, 5, 0); |
115 pWidget->setLayout(pLayout); |
153 pWidget->setLayout(pLayout); |
116 ui->tableWaters->setCellWidget(ridx, 9, pWidget); |
154 this->tableWaters->setCellWidget(ridx, 9, pWidget); |
117 query.next(); |
155 query.next(); |
118 } |
156 } |
119 |
|
120 setWindowTitle( QString("BMSapp - %1 - Profile Waters").arg(VERSIONSTRING) ); |
|
121 } |
157 } |
122 |
158 |
123 |
159 |
124 ProfileWaters::~ProfileWaters() |
160 ProfileWaters::~ProfileWaters() {} |
125 { |
|
126 qDebug() << "ProfileWaters done"; |
|
127 delete ui; |
|
128 } |
|
129 |
161 |
130 |
162 |
131 void ProfileWaters::edit(int recno) |
163 void ProfileWaters::edit(int recno) |
132 { |
164 { |
133 qDebug() << "ProfileWaters edit:" << recno; |
|
134 |
|
135 EditProfileWater dialog(recno, this); |
165 EditProfileWater dialog(recno, this); |
136 /* Signal from editor if a refresh is needed */ |
166 /* Signal from editor if a refresh is needed */ |
137 connect(&dialog, SIGNAL(entry_changed()), this, SLOT(refreshTable())); |
167 connect(&dialog, SIGNAL(entry_changed()), this, SLOT(refreshTable())); |
138 dialog.setModal(true); |
168 dialog.setModal(true); |
139 dialog.exec(); |
169 dialog.exec(); |