From 08d46c18097c5aa3d7e6b683ea7df3cc6c259fd5 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Tue, 21 Jul 2015 16:18:10 +0300 Subject: [PATCH] Gradation fields. --HG-- branch : feature --- src/app/tape/tmainwindow.cpp | 85 +++++++++++++++++++++++++++++++++++- src/app/tape/tmainwindow.h | 13 ++++++ src/app/tape/tmainwindow.ui | 23 ++++++++++ 3 files changed, 120 insertions(+), 1 deletion(-) diff --git a/src/app/tape/tmainwindow.cpp b/src/app/tape/tmainwindow.cpp index bc3d02189..caed092f6 100644 --- a/src/app/tape/tmainwindow.cpp +++ b/src/app/tape/tmainwindow.cpp @@ -35,6 +35,7 @@ #include #include #include +#include //--------------------------------------------------------------------------------------------------------------------- TMainWindow::TMainWindow(QWidget *parent) @@ -44,11 +45,17 @@ TMainWindow::TMainWindow(QWidget *parent) data(nullptr), mUnit(Unit::Cm), mType(MeasurementsType::Individual), - curFile() + curFile(), + gradationHeights(nullptr), + gradationSizes(nullptr) { ui->setupUi(this); ui->tabWidget->setVisible(false); + ui->mainToolBar->setContextMenuPolicy(Qt::PreventContextMenu); + ui->toolBarGradation->setContextMenuPolicy(Qt::PreventContextMenu); + ui->toolBarGradation->setVisible(false); + SetupMenu(); setWindowTitle(tr("untitled")); @@ -84,6 +91,8 @@ void TMainWindow::FileNew() mType = measurements.Type(); data = new VContainer(qApp->TrVars(), &mUnit); + data->SetHeight(measurements.BaseHeight()); + data->SetSize(measurements.BaseSize()); if (mType == MeasurementsType::Standard) { @@ -397,6 +406,20 @@ void TMainWindow::AddKnown() } +//--------------------------------------------------------------------------------------------------------------------- +void TMainWindow::ChangedSize(const QString &text) +{ + data->SetSize(text.toInt()); + RefreshData(); +} + +//--------------------------------------------------------------------------------------------------------------------- +void TMainWindow::ChangedHeight(const QString &text) +{ + data->SetHeight(text.toInt()); + RefreshData(); +} + //--------------------------------------------------------------------------------------------------------------------- void TMainWindow::SetupMenu() { @@ -468,6 +491,20 @@ void TMainWindow::InitWindow() delete ui->comboBoxSex; delete ui->labelEmail; delete ui->lineEditEmail; + + ui->toolBarGradation->setVisible(true); + const QStringList listHeights = VMeasurement::WholeListHeights(mUnit); + const QStringList listSizes = VMeasurement::WholeListSizes(mUnit); + + gradationHeights = SetGradationList(tr("Height: "), listHeights); + SetDefaultHeight(static_cast(data->height())); + connect(gradationHeights, static_cast(&QComboBox::currentIndexChanged), + this, &TMainWindow::ChangedHeight); + + gradationSizes = SetGradationList(tr("Size: "), listSizes); + SetDefaultSize(static_cast(data->size())); + connect(gradationSizes, static_cast(&QComboBox::currentIndexChanged), + this, &TMainWindow::ChangedSize); } else { @@ -623,3 +660,49 @@ void TMainWindow::AddCell(const QString &text, int row, int column, int id) ui->tableWidget->setItem(row, column, item); } + +//--------------------------------------------------------------------------------------------------------------------- +QComboBox *TMainWindow::SetGradationList(const QString &label, const QStringList &list) +{ + ui->toolBarGradation->addWidget(new QLabel(label)); + + QComboBox *comboBox = new QComboBox; + comboBox->addItems(list); + ui->toolBarGradation->addWidget(comboBox); + + return comboBox; +} + +//--------------------------------------------------------------------------------------------------------------------- +void TMainWindow::SetDefaultHeight(int value) +{ + const qint32 index = gradationHeights->findText(QString("%1").arg(value)); + if (index != -1) + { + gradationHeights->setCurrentIndex(index); + } + else + { + data->SetHeight(gradationHeights->currentText().toInt()); + } +} + +//--------------------------------------------------------------------------------------------------------------------- +void TMainWindow::SetDefaultSize(int value) +{ + const qint32 index = gradationSizes->findText(QString("%1").arg(value)); + if (index != -1) + { + gradationSizes->setCurrentIndex(index); + } + else + { + data->SetSize(gradationSizes->currentText().toInt()); + } +} + +//--------------------------------------------------------------------------------------------------------------------- +void TMainWindow::RefreshData() +{ + +} diff --git a/src/app/tape/tmainwindow.h b/src/app/tape/tmainwindow.h index bda635234..7b808a12f 100644 --- a/src/app/tape/tmainwindow.h +++ b/src/app/tape/tmainwindow.h @@ -39,6 +39,8 @@ namespace Ui class TMainWindow; } +class QComboBox; + class TMainWindow : public QMainWindow { Q_OBJECT @@ -71,6 +73,9 @@ private slots: void AddCustom(); void AddKnown(); + void ChangedSize(const QString &text); + void ChangedHeight(const QString & text); + private: Q_DISABLE_COPY(TMainWindow) Ui::TMainWindow *ui; @@ -79,6 +84,8 @@ private: Unit mUnit; MeasurementsType mType; QString curFile; + QComboBox *gradationHeights; + QComboBox *gradationSizes; void SetupMenu(); void InitWindow(); @@ -91,6 +98,12 @@ private: bool MaybeSave(); void AddCell(const QString &text, int row, int column, int id = -1); + + QComboBox *SetGradationList(const QString &label, const QStringList &list); + void SetDefaultHeight(int value); + void SetDefaultSize(int value); + + void RefreshData(); }; #endif // TMAINWINDOW_H diff --git a/src/app/tape/tmainwindow.ui b/src/app/tape/tmainwindow.ui index 0bf119e3d..51dd30335 100644 --- a/src/app/tape/tmainwindow.ui +++ b/src/app/tape/tmainwindow.ui @@ -602,6 +602,9 @@ true + + Menu + Qt::ToolButtonTextUnderIcon @@ -619,6 +622,26 @@ + + + Gradation + + + false + + + Qt::AllToolBarAreas + + + false + + + BottomToolBarArea + + + false + +