Show calucalted value in pattern unit.

--HG--
branch : feature
This commit is contained in:
Roman Telezhynskyi 2015-08-18 14:53:30 +03:00
parent 05acaaa8fc
commit 99a018c900
2 changed files with 72 additions and 9 deletions

View File

@ -63,10 +63,12 @@ TMainWindow::TMainWindow(QWidget *parent)
m(nullptr), m(nullptr),
data(nullptr), data(nullptr),
mUnit(Unit::Cm), mUnit(Unit::Cm),
pUnit(Unit::Cm),
mType(MeasurementsType::Individual), mType(MeasurementsType::Individual),
curFile(), curFile(),
gradationHeights(nullptr), gradationHeights(nullptr),
gradationSizes(nullptr), gradationSizes(nullptr),
comboBoxUnits(nullptr),
formulaBaseHeight(0), formulaBaseHeight(0),
lock(nullptr) lock(nullptr)
{ {
@ -75,7 +77,6 @@ TMainWindow::TMainWindow(QWidget *parent)
ui->mainToolBar->setContextMenuPolicy(Qt::PreventContextMenu); ui->mainToolBar->setContextMenuPolicy(Qt::PreventContextMenu);
ui->toolBarGradation->setContextMenuPolicy(Qt::PreventContextMenu); ui->toolBarGradation->setContextMenuPolicy(Qt::PreventContextMenu);
ui->toolBarGradation->setVisible(false);
SetupMenu(); SetupMenu();
@ -179,6 +180,7 @@ void TMainWindow::LoadFile(const QString &path)
} }
mUnit = m->MUnit(); mUnit = m->MUnit();
pUnit = mUnit;
data->SetHeight(m->BaseHeight()); data->SetHeight(m->BaseHeight());
data->SetSize(m->BaseSize()); data->SetSize(m->BaseSize());
@ -231,6 +233,7 @@ void TMainWindow::FileNew()
} }
mUnit = measurements.MUnit(); mUnit = measurements.MUnit();
pUnit = mUnit;
mType = measurements.Type(); mType = measurements.Type();
data = new VContainer(qApp->TrVars(), &mUnit); data = new VContainer(qApp->TrVars(), &mUnit);
@ -957,7 +960,10 @@ void TMainWindow::ShowMData()
ui->doubleSpinBoxInSizes->blockSignals(true); ui->doubleSpinBoxInSizes->blockSignals(true);
ui->doubleSpinBoxInHeights->blockSignals(true); ui->doubleSpinBoxInHeights->blockSignals(true);
ui->labelCalculatedValue->setText(QString().setNum(data->GetTableValue(meash->GetName(), mType))); const QString postfix = VDomDocument::UnitsToStr(pUnit);//Show unit in dialog lable (cm, mm or inch)
const qreal value = UnitConvertor(data->GetTableValue(meash->GetName(), mType), mUnit, pUnit);
ui->labelCalculatedValue->setText(qApp->LocaleToString(value) + " " +postfix);
ui->doubleSpinBoxBaseValue->setValue(static_cast<int>(meash->GetBase())); ui->doubleSpinBoxBaseValue->setValue(static_cast<int>(meash->GetBase()));
ui->doubleSpinBoxInSizes->setValue(static_cast<int>(meash->GetKsize())); ui->doubleSpinBoxInSizes->setValue(static_cast<int>(meash->GetKsize()));
ui->doubleSpinBoxInHeights->setValue(static_cast<int>(meash->GetKheight())); ui->doubleSpinBoxInHeights->setValue(static_cast<int>(meash->GetKheight()));
@ -1271,6 +1277,24 @@ void TMainWindow::Preferences()
dlg.exec(); dlg.exec();
} }
//---------------------------------------------------------------------------------------------------------------------
void TMainWindow::PatternUnitChanged(int index)
{
pUnit = static_cast<Unit>(comboBoxUnits->itemData(index).toInt());
const int row = ui->tableWidget->currentRow();
if (row == -1)
{
return;
}
ShowUnits();
RefreshTable();
ui->tableWidget->selectRow(row);
}
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void TMainWindow::SetupMenu() void TMainWindow::SetupMenu()
{ {
@ -1318,6 +1342,7 @@ void TMainWindow::InitWindow()
ui->tabWidget->setCurrentIndex(0); ui->tabWidget->setCurrentIndex(0);
ui->plainTextEditNotes->setEnabled(true); ui->plainTextEditNotes->setEnabled(true);
ui->toolBarGradation->setVisible(true);
if (mType == MeasurementsType::Standard) if (mType == MeasurementsType::Standard)
{ {
@ -1346,7 +1371,6 @@ void TMainWindow::InitWindow()
delete ui->labelEmail; delete ui->labelEmail;
delete ui->lineEditEmail; delete ui->lineEditEmail;
ui->toolBarGradation->setVisible(true);
const QStringList listHeights = VMeasurement::WholeListHeights(mUnit); const QStringList listHeights = VMeasurement::WholeListHeights(mUnit);
const QStringList listSizes = VMeasurement::WholeListSizes(mUnit); const QStringList listSizes = VMeasurement::WholeListSizes(mUnit);
@ -1442,6 +1466,8 @@ void TMainWindow::InitWindow()
connect(ui->pushButtonShowInExplorer, &QPushButton::clicked, this, &TMainWindow::ShowInGraphicalShell); connect(ui->pushButtonShowInExplorer, &QPushButton::clicked, this, &TMainWindow::ShowInGraphicalShell);
InitUnits();
InitTable(); InitTable();
} }
@ -1473,7 +1499,8 @@ void TMainWindow::ShowUnits()
{ {
const QString unit = VDomDocument::UnitsToStr(mUnit); const QString unit = VDomDocument::UnitsToStr(mUnit);
ShowHeaderUnits(ui->tableWidget, 1, unit);// calculated value ShowHeaderUnits(ui->tableWidget, 1, VDomDocument::UnitsToStr(pUnit));// calculated value
ShowHeaderUnits(ui->tableWidget, 2, unit);// formula
ShowHeaderUnits(ui->tableWidget, 3, unit);// base value ShowHeaderUnits(ui->tableWidget, 3, unit);// base value
ShowHeaderUnits(ui->tableWidget, 4, unit);// in sizes ShowHeaderUnits(ui->tableWidget, 4, unit);// in sizes
ShowHeaderUnits(ui->tableWidget, 5, unit);// in heights ShowHeaderUnits(ui->tableWidget, 5, unit);// in heights
@ -1484,7 +1511,12 @@ void TMainWindow::ShowHeaderUnits(QTableWidget *table, int column, const QString
{ {
SCASSERT(table != nullptr); SCASSERT(table != nullptr);
const QString header = table->horizontalHeaderItem(column)->text(); QString header = table->horizontalHeaderItem(column)->text();
const int index = header.indexOf("(");
if (index != -1)
{
header.remove(index-1, 100);
}
const QString unitHeader = QString("%1 (%2)").arg(header).arg(unit); const QString unitHeader = QString("%1 (%2)").arg(header).arg(unit);
table->horizontalHeaderItem(column)->setText(unitHeader); table->horizontalHeaderItem(column)->setText(unitHeader);
} }
@ -1654,7 +1686,9 @@ void TMainWindow::RefreshTable()
if (mType == MeasurementsType::Individual) if (mType == MeasurementsType::Individual)
{ {
AddCell(meash->GetName(), currentRow, 0, Qt::AlignVCenter); // name AddCell(meash->GetName(), currentRow, 0, Qt::AlignVCenter); // name
AddCell(QString().setNum(*meash->GetValue()), currentRow, 1, Qt::AlignHCenter | Qt::AlignVCenter,
const qreal value = UnitConvertor(*meash->GetValue(), mUnit, pUnit);
AddCell(QString().setNum(value), currentRow, 1, Qt::AlignHCenter | Qt::AlignVCenter,
meash->IsFormulaOk()); // calculated value meash->IsFormulaOk()); // calculated value
QString formula; QString formula;
@ -1674,7 +1708,8 @@ void TMainWindow::RefreshTable()
{ {
AddCell(meash->GetName(), currentRow, 0, Qt::AlignVCenter); // name AddCell(meash->GetName(), currentRow, 0, Qt::AlignVCenter); // name
AddCell(QString().setNum(data->GetTableValue(meash->GetName(), mType)), currentRow, 1, const qreal value = UnitConvertor(data->GetTableValue(meash->GetName(), mType), mUnit, pUnit);
AddCell(QString().setNum(value), currentRow, 1,
Qt::AlignHCenter | Qt::AlignVCenter, meash->IsFormulaOk()); // calculated value Qt::AlignHCenter | Qt::AlignVCenter, meash->IsFormulaOk()); // calculated value
AddCell(QString().setNum(meash->GetBase()), currentRow, 3, AddCell(QString().setNum(meash->GetBase()), currentRow, 3,
@ -1770,7 +1805,7 @@ QString TMainWindow::ClearCustomName(const QString &name) const
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void TMainWindow::EvalFormula(const QString &formula, VContainer *data, QLabel *label) void TMainWindow::EvalFormula(const QString &formula, VContainer *data, QLabel *label)
{ {
const QString postfix = VDomDocument::UnitsToStr(mUnit);//Show unit in dialog lable (cm, mm or inch) const QString postfix = VDomDocument::UnitsToStr(pUnit);//Show unit in dialog lable (cm, mm or inch)
if (formula.isEmpty()) if (formula.isEmpty())
{ {
label->setText(tr("Error") + " (" + postfix + ")"); label->setText(tr("Error") + " (" + postfix + ")");
@ -1784,7 +1819,7 @@ void TMainWindow::EvalFormula(const QString &formula, VContainer *data, QLabel *
QString f = formula; QString f = formula;
f.replace("\n", " "); f.replace("\n", " ");
Calculator *cal = new Calculator(data, mType); Calculator *cal = new Calculator(data, mType);
const qreal result = cal->EvalFormula(f); const qreal result = UnitConvertor(cal->EvalFormula(f), mUnit, pUnit);
delete cal; delete cal;
label->setText(qApp->LocaleToString(result) + " " +postfix); label->setText(qApp->LocaleToString(result) + " " +postfix);
@ -1926,6 +1961,29 @@ void TMainWindow::SetDecimals()
} }
} }
//---------------------------------------------------------------------------------------------------------------------
void TMainWindow::InitUnits()
{
ui->toolBarGradation->addWidget(new QLabel(tr("Pattern unit:")));
comboBoxUnits = new QComboBox(this);
comboBoxUnits->addItem(VDomDocument::UnitsToStr(Unit::Cm, true), QVariant(static_cast<int>(Unit::Cm)));
comboBoxUnits->addItem(VDomDocument::UnitsToStr(Unit::Mm, true), QVariant(static_cast<int>(Unit::Mm)));
comboBoxUnits->addItem(VDomDocument::UnitsToStr(Unit::Inch, true), QVariant(static_cast<int>(Unit::Inch)));
// set default unit
const qint32 indexUnit = comboBoxUnits->findData(static_cast<int>(pUnit));
if (indexUnit != -1)
{
comboBoxUnits->setCurrentIndex(indexUnit);
}
connect(comboBoxUnits, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,
&TMainWindow::PatternUnitChanged);
ui->toolBarGradation->addWidget(comboBoxUnits);
}
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void TMainWindow::ShowInGraphicalShell() void TMainWindow::ShowInGraphicalShell()
{ {

View File

@ -113,16 +113,20 @@ private slots:
void Preferences(); void Preferences();
void PatternUnitChanged(int index);
private: private:
Q_DISABLE_COPY(TMainWindow) Q_DISABLE_COPY(TMainWindow)
Ui::TMainWindow *ui; Ui::TMainWindow *ui;
VMeasurements *m; VMeasurements *m;
VContainer *data; VContainer *data;
Unit mUnit; Unit mUnit;
Unit pUnit;
MeasurementsType mType; MeasurementsType mType;
QString curFile; QString curFile;
QComboBox *gradationHeights; QComboBox *gradationHeights;
QComboBox *gradationSizes; QComboBox *gradationSizes;
QComboBox *comboBoxUnits;
int formulaBaseHeight; int formulaBaseHeight;
#if QT_VERSION >= QT_VERSION_CHECK(5, 1, 0) #if QT_VERSION >= QT_VERSION_CHECK(5, 1, 0)
@ -133,6 +137,7 @@ private:
void InitWindow(); void InitWindow();
void InitTable(); void InitTable();
void SetDecimals(); void SetDecimals();
void InitUnits();
void ShowUnits(); void ShowUnits();
void ShowHeaderUnits(QTableWidget *table, int column, const QString &unit); void ShowHeaderUnits(QTableWidget *table, int column, const QString &unit);