From 52534bfb686ade48938768bb137d82c0bb849efc Mon Sep 17 00:00:00 2001 From: "Lubomir I. Ivanov" Date: Tue, 9 Jul 2013 15:37:53 +0300 Subject: Print: add UI for a print dialog PrintOptions is a QWidget class to be used as an addition to a future print dialog (possibly based on QPrintDialog). Currently only contains a couple of radio buttons. PrintDialog (printdialog.cpp/h) which is a basic QDialog is currently added for testing only and it holds an instance of PrintOptions. Calling File->Print opens this test dialog for now. Signed-off-by: Lubomir I. Ivanov --- Makefile | 4 ++++ qt-ui/mainwindow.cpp | 3 ++- qt-ui/printdialog.cpp | 42 ++++++++++++++++++++++++++++++++++++++++++ qt-ui/printdialog.h | 25 +++++++++++++++++++++++++ qt-ui/printoptions.cpp | 14 ++++++++++++++ qt-ui/printoptions.h | 23 +++++++++++++++++++++++ 6 files changed, 110 insertions(+), 1 deletion(-) create mode 100644 qt-ui/printdialog.cpp create mode 100644 qt-ui/printdialog.h create mode 100644 qt-ui/printoptions.cpp create mode 100644 qt-ui/printoptions.h diff --git a/Makefile b/Makefile index 056c1ee96..a9f61058a 100644 --- a/Makefile +++ b/Makefile @@ -53,6 +53,8 @@ HEADERS = \ qt-ui/diveplanner.h \ qt-ui/about.h \ qt-ui/graphicsview-common.h \ + qt-ui/printdialog.h \ + qt-ui/printoptions.h \ SOURCES = \ @@ -94,6 +96,8 @@ SOURCES = \ qt-ui/diveplanner.cpp \ qt-ui/about.cpp \ qt-ui/graphicsview-common.cpp \ + qt-ui/printdialog.cpp \ + qt-ui/printoptions.cpp \ $(RESFILE) diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp index c0cdc9eb5..a78b84565 100644 --- a/qt-ui/mainwindow.cpp +++ b/qt-ui/mainwindow.cpp @@ -34,6 +34,7 @@ #include "simplewidgets.h" #include "diveplanner.h" #include "about.h" +#include "printdialog.h" static MainWindow* instance = 0; @@ -218,7 +219,7 @@ void MainWindow::on_actionExportUDDF_triggered() void MainWindow::on_actionPrint_triggered() { - qDebug("actionPrint"); + PrintDialog::instance()->runDialog(); } void MainWindow::disableDcShortcuts() diff --git a/qt-ui/printdialog.cpp b/qt-ui/printdialog.cpp new file mode 100644 index 000000000..c1aff2a9b --- /dev/null +++ b/qt-ui/printdialog.cpp @@ -0,0 +1,42 @@ +#include "printdialog.h" + +#include +#include +#include + +PrintDialog *PrintDialog::instance() +{ + static PrintDialog *self = new PrintDialog(); + self->setAttribute(Qt::WA_QuitOnClose, false); + return self; +} + +PrintDialog::PrintDialog(QWidget *parent, Qt::WindowFlags f) +{ + // options template (are we storing these in the settings?) + struct options tempOptions = {options::PRETTY, 0, 2, false, 65, 15, 12}; + printOptions = tempOptions; + /* temporary. + * add the PrintOptions widget and a Print button for testing purposes. */ + optionsWidget = PrintOptions::instance(); + QVBoxLayout *layout = new QVBoxLayout(this); + setLayout(layout); + layout->addWidget(optionsWidget); + + QPushButton *printButton = new QPushButton(tr("&Print")); + connect(printButton, SIGNAL(clicked(bool)), this, SLOT(printClicked())); + layout->addWidget(printButton); + + setFixedSize(600, 400); + setWindowTitle("Print"); +} + +void PrintDialog::runDialog() +{ + exec(); +} + +void PrintDialog::printClicked(void) +{ + // nop for now +} diff --git a/qt-ui/printdialog.h b/qt-ui/printdialog.h new file mode 100644 index 000000000..b3dcfa826 --- /dev/null +++ b/qt-ui/printdialog.h @@ -0,0 +1,25 @@ +#ifndef PRINTDIALOG_H +#define PRINTDIALOG_H + +#include +#include "../display.h" +#include "printoptions.h" + +// should be based on a custom QPrintDialog class +class PrintDialog : public QDialog { +Q_OBJECT + +public: + static PrintDialog *instance(); + void runDialog(); + struct options printOptions; + +private: + explicit PrintDialog(QWidget *parent = 0, Qt::WindowFlags f = 0); + PrintOptions *optionsWidget; + +private slots: + void printClicked(); +}; + +#endif diff --git a/qt-ui/printoptions.cpp b/qt-ui/printoptions.cpp new file mode 100644 index 000000000..6d1910303 --- /dev/null +++ b/qt-ui/printoptions.cpp @@ -0,0 +1,14 @@ +#include "printoptions.h" +#include "ui_printoptions.h" + +PrintOptions *PrintOptions::instance() +{ + static PrintOptions *self = new PrintOptions(); + return self; +} + +PrintOptions::PrintOptions(QWidget *parent, Qt::WindowFlags f) +: ui( new Ui::PrintOptions()) +{ + ui->setupUi(this); +} diff --git a/qt-ui/printoptions.h b/qt-ui/printoptions.h new file mode 100644 index 000000000..8d8fb4605 --- /dev/null +++ b/qt-ui/printoptions.h @@ -0,0 +1,23 @@ +#ifndef PRINTOPTIONS_H +#define PRINTOPTIONS_H + +#include +#include "../display.h" + +namespace Ui { + class PrintOptions; +}; + +// should be based on a custom QPrintDialog class +class PrintOptions : public QWidget { +Q_OBJECT + +public: + static PrintOptions *instance(); + +private: + explicit PrintOptions(QWidget *parent = 0, Qt::WindowFlags f = 0); + Ui::PrintOptions *ui; +}; + +#endif -- cgit v1.2.3-70-g09d2