diff options
author | Lubomir I. Ivanov <neolit123@gmail.com> | 2013-07-09 23:43:21 +0300 |
---|---|---|
committer | Lubomir I. Ivanov <neolit123@gmail.com> | 2013-07-10 09:57:24 +0300 |
commit | 2c7a208bc1500fc6b0bdcafe17e4ebfb94deb05a (patch) | |
tree | 9e1e28f6a2573a41bf551a2e0b57eb6c82d64c94 /qt-ui | |
parent | 5d81eee0da2d7dc2cb06a74fb4e7551fc76ca14d (diff) | |
download | subsurface-2c7a208bc1500fc6b0bdcafe17e4ebfb94deb05a.tar.gz |
Print: label update on height slider move
The PrintOptions widget has value labels next to the
horizontal sliders. Add slots to update these labels
when a slider moves.
Patch also makes a modification so that the PrintOptions
constructor requires a 'struct options' pointer. If
an options struct is not received we do not set predefined
values and do not connect signals to slots, where
options will be updated immediately.
Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Diffstat (limited to 'qt-ui')
-rw-r--r-- | qt-ui/printdialog.cpp | 5 | ||||
-rw-r--r-- | qt-ui/printoptions.cpp | 48 | ||||
-rw-r--r-- | qt-ui/printoptions.h | 14 |
3 files changed, 57 insertions, 10 deletions
diff --git a/qt-ui/printdialog.cpp b/qt-ui/printdialog.cpp index c1aff2a9b..e62cd718d 100644 --- a/qt-ui/printdialog.cpp +++ b/qt-ui/printdialog.cpp @@ -18,7 +18,8 @@ PrintDialog::PrintDialog(QWidget *parent, Qt::WindowFlags f) printOptions = tempOptions; /* temporary. * add the PrintOptions widget and a Print button for testing purposes. */ - optionsWidget = PrintOptions::instance(); + optionsWidget = new PrintOptions(this, &printOptions); + QVBoxLayout *layout = new QVBoxLayout(this); setLayout(layout); layout->addWidget(optionsWidget); @@ -27,7 +28,7 @@ PrintDialog::PrintDialog(QWidget *parent, Qt::WindowFlags f) connect(printButton, SIGNAL(clicked(bool)), this, SLOT(printClicked())); layout->addWidget(printButton); - setFixedSize(600, 400); + setFixedSize(520, 500); setWindowTitle("Print"); } diff --git a/qt-ui/printoptions.cpp b/qt-ui/printoptions.cpp index 6d1910303..75218e96d 100644 --- a/qt-ui/printoptions.cpp +++ b/qt-ui/printoptions.cpp @@ -1,14 +1,50 @@ #include "printoptions.h" #include "ui_printoptions.h" -PrintOptions *PrintOptions::instance() +PrintOptions::PrintOptions(QWidget *parent, struct options *printOpt) +: ui( new Ui::PrintOptions()) { - static PrintOptions *self = new PrintOptions(); - return self; + if (parent) + setParent(parent); + if (!printOpt) + return; + printOptions = printOpt; + ui->setupUi(this); + // make height sliders update the labels next to them + connect(ui->sliderPHeight, SIGNAL(sliderMoved(int)), this, SLOT(sliderPHeightMoved(int))); + connect(ui->sliderOHeight, SIGNAL(sliderMoved(int)), this, SLOT(sliderOHeightMoved(int))); + connect(ui->sliderNHeight, SIGNAL(sliderMoved(int)), this, SLOT(sliderNHeightMoved(int))); + initSliderWithLabel(ui->sliderPHeight, ui->valuePHeight, printOptions->profile_height); + initSliderWithLabel(ui->sliderOHeight, ui->valueOHeight, printOptions->notes_height); + initSliderWithLabel(ui->sliderNHeight, ui->valueNHeight, printOptions->tanks_height); } -PrintOptions::PrintOptions(QWidget *parent, Qt::WindowFlags f) -: ui( new Ui::PrintOptions()) +void PrintOptions::initSliderWithLabel(QSlider *slider, QLabel *label, int value) { - ui->setupUi(this); + slider->setValue(value); + label->setText(formatSliderValueText(value)); +} + +QString PrintOptions::formatSliderValueText(int value) +{ + QString str = QString("%1%").arg(QString::number(value)); + return str; +} + +void PrintOptions::sliderPHeightMoved(int value) +{ + ui->valuePHeight->setText(formatSliderValueText(value)); + printOptions->profile_height = value; +} + +void PrintOptions::sliderOHeightMoved(int value) +{ + ui->valueOHeight->setText(formatSliderValueText(value)); + printOptions->notes_height = value; +} + +void PrintOptions::sliderNHeightMoved(int value) +{ + ui->valueNHeight->setText(formatSliderValueText(value)); + printOptions->tanks_height = value; } diff --git a/qt-ui/printoptions.h b/qt-ui/printoptions.h index 8d8fb4605..a1ad1d652 100644 --- a/qt-ui/printoptions.h +++ b/qt-ui/printoptions.h @@ -2,6 +2,8 @@ #define PRINTOPTIONS_H #include <QWidget> +#include <QSlider> +#include <QLabel> #include "../display.h" namespace Ui { @@ -13,11 +15,19 @@ class PrintOptions : public QWidget { Q_OBJECT public: - static PrintOptions *instance(); + explicit PrintOptions(QWidget *parent = 0, struct options *printOpt = 0); private: - explicit PrintOptions(QWidget *parent = 0, Qt::WindowFlags f = 0); Ui::PrintOptions *ui; + void setLabelFromSlider(QSlider *slider, QLabel *label); + void initSliderWithLabel(QSlider *slider, QLabel *label, int value); + QString formatSliderValueText(int value); + struct options *printOptions; + +private slots: + void sliderPHeightMoved(int value); + void sliderOHeightMoved(int value); + void sliderNHeightMoved(int value); }; #endif |