diff options
-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 |