Skip to content

Commit

Permalink
Printing: check for different printing modes
Browse files Browse the repository at this point in the history
Add PRINT/PREVIEW print modes, check for printing modes before
casting.

We must pass a QPaintDevice with type QPixmap for previewing and
with type QPrinter for actual printing.

Signed-off-by: Gehad elrobey <gehadelrobey@gmail.com>
  • Loading branch information
Gehadelrobey committed Jul 13, 2015
1 parent 1fd0cf1 commit d5b9e84
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 4 deletions.
10 changes: 8 additions & 2 deletions printer.cpp
Expand Up @@ -6,11 +6,12 @@
#include <QWebElementCollection>
#include <QWebElement>

Printer::Printer(QPaintDevice *paintDevice, print_options *printOptions, template_options *templateOptions)
Printer::Printer(QPaintDevice *paintDevice, print_options *printOptions, template_options *templateOptions, PrintMode printMode)
{
this->paintDevice = paintDevice;
this->printOptions = printOptions;
this->templateOptions = templateOptions;
this->printMode = printMode;
dpi = 0;
done = 0;
webView = new QWebView();
Expand Down Expand Up @@ -80,7 +81,7 @@ void Printer::render(int Pages = 0)

// rendering progress is 4/5 of total work
emit(progessUpdated((i * 80.0 / Pages) + done));
if (i < Pages - 1)
if (i < Pages - 1 && printMode == Printer::PRINT)
static_cast<QPrinter*>(paintDevice)->newPage();
}
painter.end();
Expand All @@ -106,6 +107,11 @@ void Printer::templateProgessUpdated(int value)

void Printer::print()
{
// we can only print if "PRINT" mode is selected
if (printMode != Printer::PRINT) {
return;
}

QPrinter *printerPtr;
printerPtr = static_cast<QPrinter*>(paintDevice);

Expand Down
9 changes: 8 additions & 1 deletion printer.h
Expand Up @@ -13,12 +13,19 @@
class Printer : public QObject {
Q_OBJECT

public:
enum PrintMode {
PRINT,
PREVIEW
};

private:
QPaintDevice *paintDevice;
QWebView *webView;
print_options *printOptions;
template_options *templateOptions;
QSize pageSize;
PrintMode printMode;
int done;
int dpi;
void render(int Pages);
Expand All @@ -28,7 +35,7 @@ private slots:
void templateProgessUpdated(int value);

public:
Printer(QPaintDevice *paintDevice, print_options *printOptions, template_options *templateOptions);
Printer(QPaintDevice *paintDevice, print_options *printOptions, template_options *templateOptions, PrintMode printMode);
~Printer();
void print();

Expand Down
2 changes: 1 addition & 1 deletion qt-ui/printdialog.cpp
Expand Up @@ -45,7 +45,7 @@ PrintDialog::PrintDialog(QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f
optionsWidget = new PrintOptions(this, &printOptions, &templateOptions);

// create a new printer object
printer = new Printer(&qprinter, &printOptions, &templateOptions);
printer = new Printer(&qprinter, &printOptions, &templateOptions, Printer::PRINT);

QVBoxLayout *layout = new QVBoxLayout(this);
setLayout(layout);
Expand Down

0 comments on commit d5b9e84

Please sign in to comment.