~scottydelicious666/brewtarget/brewtarget

« back to all changes in this revision

Viewing changes to EquipmentEditor.cpp

  • Committer: Philip Greggory Lee
  • Date: 2009-08-23 16:53:43 UTC
  • Revision ID: git-v1:f8d1a25135bd92f06c46c562293800e4faa42c61
Made a src/ and ui/ directory and moved everything.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * EquipmentEditor.cpp is part of Brewtarget, and is Copyright Philip G. Lee
3
 
 * (rocketman768@gmail.com), 2009.
4
 
 *
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.
9
 
 
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.
14
 
 
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/>.
17
 
 */
18
 
 
19
 
#include <QInputDialog>
20
 
#include <string>
21
 
#include <iostream>
22
 
#include <QIcon>
23
 
 
24
 
#include "equipment.h"
25
 
#include "EquipmentEditor.h"
26
 
#include "EquipmentComboBox.h"
27
 
#include "stringparsing.h"
28
 
#include "config.h"
29
 
#include "unit.h"
30
 
#include "brewtarget.h"
31
 
 
32
 
EquipmentEditor::EquipmentEditor(QWidget* parent)
33
 
        : QDialog(parent)
34
 
{
35
 
   setupUi(this);
36
 
 
37
 
   setWindowIcon(QIcon(SMALLKETTLE));
38
 
 
39
 
   equipmentComboBox->startObservingDB();
40
 
   obsEquip = 0;
41
 
 
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&) ) );
47
 
}
48
 
 
49
 
void EquipmentEditor::setEquipment( Equipment* e )
50
 
{
51
 
   if( e && e != obsEquip )
52
 
   {
53
 
      obsEquip = e;
54
 
      setObserved(obsEquip);
55
 
      showChanges();
56
 
   }
57
 
}
58
 
 
59
 
void EquipmentEditor::removeEquipment()
60
 
{
61
 
   if( obsEquip )
62
 
      Database::getDatabase()->removeEquipment(obsEquip);
63
 
 
64
 
   obsEquip = 0;
65
 
   setObserved(obsEquip);
66
 
 
67
 
   equipmentComboBox->setIndexByEquipmentName("");
68
 
   showChanges();
69
 
}
70
 
 
71
 
void EquipmentEditor::clear()
72
 
{
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(""));
78
 
 
79
 
   lineEdit_tunVolume->setText(QString(""));
80
 
   lineEdit_tunWeight->setText(QString(""));
81
 
   lineEdit_tunSpecificHeat->setText(QString(""));
82
 
 
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(""));
88
 
 
89
 
   lineEdit_trubChillerLoss->setText(QString(""));
90
 
   lineEdit_lauterDeadspace->setText(QString(""));
91
 
 
92
 
   textEdit_notes->setText("");
93
 
}
94
 
 
95
 
void EquipmentEditor::equipmentSelected( const QString& /*text*/ )
96
 
{
97
 
   setEquipment( equipmentComboBox->getSelected() );
98
 
}
99
 
 
100
 
void EquipmentEditor::save()
101
 
{
102
 
   if( obsEquip == 0 )
103
 
   {
104
 
      setVisible(false);
105
 
      return;
106
 
   }
107
 
 
108
 
   obsEquip->disableNotification();
109
 
 
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()) );
113
 
   
114
 
   obsEquip->setCalcBoilVolume( (checkBox_calcBoilVolume->checkState() == Qt::Checked)? true : false );
115
 
   obsEquip->setBatchSize_l( Unit::qstringToSI(lineEdit_batchSize->text()) );
116
 
 
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()) );
120
 
 
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()) );
126
 
 
127
 
   obsEquip->setTrubChillerLoss_l( Unit::qstringToSI(lineEdit_trubChillerLoss->text()) );
128
 
   obsEquip->setLauterDeadspace_l( Unit::qstringToSI(lineEdit_lauterDeadspace->text()) );
129
 
 
130
 
   obsEquip->setNotes(textEdit_notes->toPlainText().toStdString());
131
 
 
132
 
   obsEquip->reenableNotification();
133
 
   obsEquip->forceNotify();
134
 
 
135
 
   Database::getDatabase()->resortEquipments(); // If the name changed, need to resort.
136
 
 
137
 
   setVisible(false);
138
 
   return;
139
 
}
140
 
 
141
 
void EquipmentEditor::newEquipment()
142
 
{
143
 
   QString name = QInputDialog::getText(this, tr("Equipment name"),
144
 
                                          tr("Equipment name:"));
145
 
   if( name.isEmpty() )
146
 
      return;
147
 
 
148
 
   Equipment *e = new Equipment();
149
 
   e->setName( name.toStdString() );
150
 
 
151
 
   Database::getDatabase()->addEquipment(e);
152
 
 
153
 
   setEquipment(e);
154
 
}
155
 
 
156
 
void EquipmentEditor::clearAndClose()
157
 
{
158
 
   setVisible(false);
159
 
}
160
 
 
161
 
void EquipmentEditor::notify(Observable* /*notifier*/, QVariant info)
162
 
{
163
 
   showChanges();
164
 
}
165
 
 
166
 
void EquipmentEditor::showChanges()
167
 
{
168
 
   Equipment *e = obsEquip;
169
 
   if( e == 0 )
170
 
   {
171
 
      clear();
172
 
      return;
173
 
   }
174
 
 
175
 
   equipmentComboBox->setIndexByEquipmentName(e->getName());
176
 
 
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) );
182
 
 
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) );
186
 
 
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) );
192
 
 
193
 
   lineEdit_trubChillerLoss->setText(Brewtarget::displayAmount(e->getTrubChillerLoss_l(), Units::liters) );
194
 
   lineEdit_lauterDeadspace->setText(Brewtarget::displayAmount(e->getLauterDeadspace_l(), Units::liters) );
195
 
 
196
 
   textEdit_notes->setText(e->getNotes().c_str());
197
 
}