2
* EquipmentEditor.cpp is part of Brewtarget, and is Copyright Philip G. Lee
3
* (rocketman768@gmail.com), 2009.
5
* Brewtarget is free software: you can redistribute it and/or modify
6
* it under the terms of the GNU General Public License as published by
7
* the Free Software Foundation, either version 3 of the License, or
8
* (at your option) any later version.
10
* Brewtarget is distributed in the hope that it will be useful,
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
* GNU General Public License for more details.
15
* You should have received a copy of the GNU General Public License
16
* along with this program. If not, see <http://www.gnu.org/licenses/>.
19
#include <QInputDialog>
24
#include "equipment.h"
25
#include "EquipmentEditor.h"
26
#include "EquipmentComboBox.h"
27
#include "stringparsing.h"
30
#include "brewtarget.h"
32
EquipmentEditor::EquipmentEditor(QWidget* parent)
37
setWindowIcon(QIcon(SMALLKETTLE));
39
equipmentComboBox->startObservingDB();
42
connect( pushButton_save, SIGNAL( clicked() ), this, SLOT( save() ) );
43
connect( pushButton_new, SIGNAL( clicked() ), this, SLOT( newEquipment() ) );
44
connect( pushButton_cancel, SIGNAL( clicked() ), this, SLOT( clearAndClose() ) );
45
connect( pushButton_remove, SIGNAL( clicked() ), this, SLOT( removeEquipment() ) );
46
connect( equipmentComboBox, SIGNAL(currentIndexChanged ( const QString& )), this, SLOT( equipmentSelected(const QString&) ) );
49
void EquipmentEditor::setEquipment( Equipment* e )
51
if( e && e != obsEquip )
54
setObserved(obsEquip);
59
void EquipmentEditor::removeEquipment()
62
Database::getDatabase()->removeEquipment(obsEquip);
65
setObserved(obsEquip);
67
equipmentComboBox->setIndexByEquipmentName("");
71
void EquipmentEditor::clear()
73
lineEdit_name->setText(QString(""));
74
lineEdit_name->setCursorPosition(0);
75
lineEdit_boilSize->setText(QString(""));
76
checkBox_calcBoilVolume->setCheckState( Qt::Unchecked );
77
lineEdit_batchSize->setText(QString(""));
79
lineEdit_tunVolume->setText(QString(""));
80
lineEdit_tunWeight->setText(QString(""));
81
lineEdit_tunSpecificHeat->setText(QString(""));
83
lineEdit_boilTime->setText(QString(""));
84
lineEdit_evaporationRate->setText(QString(""));
85
lineEdit_topUpKettle->setText(QString(""));
86
lineEdit_topUpWater->setText(QString(""));
87
lineEdit_hopUtilization->setText(QString(""));
89
lineEdit_trubChillerLoss->setText(QString(""));
90
lineEdit_lauterDeadspace->setText(QString(""));
92
textEdit_notes->setText("");
95
void EquipmentEditor::equipmentSelected( const QString& /*text*/ )
97
setEquipment( equipmentComboBox->getSelected() );
100
void EquipmentEditor::save()
108
obsEquip->disableNotification();
110
obsEquip->setName( lineEdit_name->text().toStdString() );
111
//obsEquip->setBoilSize_l( Unit::qstringToSI((lineEdit_boilSize->text()) );
112
obsEquip->setBoilSize_l( Unit::qstringToSI(lineEdit_boilSize->text()) );
114
obsEquip->setCalcBoilVolume( (checkBox_calcBoilVolume->checkState() == Qt::Checked)? true : false );
115
obsEquip->setBatchSize_l( Unit::qstringToSI(lineEdit_batchSize->text()) );
117
obsEquip->setTunVolume_l( Unit::qstringToSI(lineEdit_tunVolume->text()) );
118
obsEquip->setTunWeight_kg( Unit::qstringToSI(lineEdit_tunWeight->text()) );
119
obsEquip->setTunSpecificHeat_calGC( Unit::qstringToSI(lineEdit_tunSpecificHeat->text()) );
121
obsEquip->setBoilTime_min( Unit::qstringToSI(lineEdit_boilTime->text()) );
122
obsEquip->setEvapRate_pctHr( Unit::qstringToSI(lineEdit_evaporationRate->text()) );
123
obsEquip->setTopUpKettle_l( Unit::qstringToSI(lineEdit_topUpKettle->text()) );
124
obsEquip->setTopUpWater_l( Unit::qstringToSI(lineEdit_topUpWater->text()) );
125
obsEquip->setHopUtilization_pct( Unit::qstringToSI(lineEdit_hopUtilization->text()) );
127
obsEquip->setTrubChillerLoss_l( Unit::qstringToSI(lineEdit_trubChillerLoss->text()) );
128
obsEquip->setLauterDeadspace_l( Unit::qstringToSI(lineEdit_lauterDeadspace->text()) );
130
obsEquip->setNotes(textEdit_notes->toPlainText().toStdString());
132
obsEquip->reenableNotification();
133
obsEquip->forceNotify();
135
Database::getDatabase()->resortEquipments(); // If the name changed, need to resort.
141
void EquipmentEditor::newEquipment()
143
QString name = QInputDialog::getText(this, tr("Equipment name"),
144
tr("Equipment name:"));
148
Equipment *e = new Equipment();
149
e->setName( name.toStdString() );
151
Database::getDatabase()->addEquipment(e);
156
void EquipmentEditor::clearAndClose()
161
void EquipmentEditor::notify(Observable* /*notifier*/, QVariant info)
166
void EquipmentEditor::showChanges()
168
Equipment *e = obsEquip;
175
equipmentComboBox->setIndexByEquipmentName(e->getName());
177
lineEdit_name->setText(e->getName().c_str());
178
lineEdit_name->setCursorPosition(0);
179
lineEdit_boilSize->setText( Brewtarget::displayAmount(e->getBoilSize_l(), Units::liters) );
180
checkBox_calcBoilVolume->setCheckState( (e->getCalcBoilVolume())? Qt::Checked : Qt::Unchecked );
181
lineEdit_batchSize->setText( Brewtarget::displayAmount(e->getBatchSize_l(), Units::liters) );
183
lineEdit_tunVolume->setText( Brewtarget::displayAmount(e->getTunVolume_l(), Units::liters) );
184
lineEdit_tunWeight->setText(Brewtarget::displayAmount(e->getTunWeight_kg(), Units::kilograms));
185
lineEdit_tunSpecificHeat->setText(Brewtarget::displayAmount(e->getTunSpecificHeat_calGC(), 0) );
187
lineEdit_boilTime->setText(Brewtarget::displayAmount(e->getBoilTime_min(), Units::minutes) );
188
lineEdit_evaporationRate->setText(Brewtarget::displayAmount(e->getEvapRate_pctHr(), 0) );
189
lineEdit_topUpKettle->setText(Brewtarget::displayAmount(e->getTopUpKettle_l(), Units::liters) );
190
lineEdit_topUpWater->setText(Brewtarget::displayAmount(e->getTopUpWater_l(), Units::liters) );
191
lineEdit_hopUtilization->setText(Brewtarget::displayAmount(e->getHopUtilization_pct(), 0) );
193
lineEdit_trubChillerLoss->setText(Brewtarget::displayAmount(e->getTrubChillerLoss_l(), Units::liters) );
194
lineEdit_lauterDeadspace->setText(Brewtarget::displayAmount(e->getLauterDeadspace_l(), Units::liters) );
196
textEdit_notes->setText(e->getNotes().c_str());