From 6b54c5bb7d5cb81193b8d5debdb2c94508fd46ed Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Wed, 4 Nov 2015 17:22:49 +0200 Subject: [PATCH] Set default printing color mode. Known issue: program doesn't print in grayscale color mode. --HG-- branch : develop --- src/app/valentina/mainwindowsnogui.cpp | 33 +++++++++++++++----- src/app/valentina/mainwindowsnogui.h | 4 +-- src/libs/vpatterndb/variables/vmeasurement.h | 1 + 3 files changed, 29 insertions(+), 9 deletions(-) diff --git a/src/app/valentina/mainwindowsnogui.cpp b/src/app/valentina/mainwindowsnogui.cpp index 003190811..98947e9ee 100644 --- a/src/app/valentina/mainwindowsnogui.cpp +++ b/src/app/valentina/mainwindowsnogui.cpp @@ -705,7 +705,7 @@ void MainWindowsNoGUI::DxfFile(const QString &name, int i) const } //--------------------------------------------------------------------------------------------------------------------- -QVector MainWindowsNoGUI::AllSheets() +QVector MainWindowsNoGUI::AllSheets() const { QVector images; for (int i=0; i < scenes.size(); ++i) @@ -842,14 +842,14 @@ void MainWindowsNoGUI::LayoutPrint() void MainWindowsNoGUI::SetPrinterSettings(QPrinter *printer) { SCASSERT(printer != nullptr) - printer->setCreator(qApp->applicationDisplayName()+" "+qApp->applicationVersion()); + printer->setCreator(qApp->applicationDisplayName()+" "+qApp->applicationVersion()); // Set orientation if (papers.size() > 0) { QGraphicsRectItem *paper = qgraphicsitem_cast(papers.at(0)); SCASSERT(paper != nullptr) - if (paper->rect().height()>= paper->rect().width()) + if (paper->rect().height()>= paper->rect().width()) { printer->setOrientation(QPrinter::Portrait); } @@ -863,11 +863,30 @@ void MainWindowsNoGUI::SetPrinterSettings(QPrinter *printer) { QGraphicsRectItem *paper = qgraphicsitem_cast(papers.at(0)); SCASSERT(paper != nullptr) - printer->setPaperSize ( QSizeF(FromPixel(paper->rect().width(), Unit::Mm), - FromPixel(paper->rect().height(), Unit::Mm)), QPrinter::Millimeter ); + printer->setPaperSize ( QSizeF(FromPixel(paper->rect().width(), Unit::Mm), + FromPixel(paper->rect().height(), Unit::Mm)), QPrinter::Millimeter ); } + printer->setOutputFileName(QDir::homePath() + QDir::separator() + FileName() + QLatin1Literal(".pdf")); printer->setDocName(FileName()); + + IsLayoutGrayscale() ? printer->setColorMode(QPrinter::GrayScale) : printer->setColorMode(QPrinter::Color); +} + +//--------------------------------------------------------------------------------------------------------------------- +bool MainWindowsNoGUI::IsLayoutGrayscale() const +{ + const QVector images = AllSheets(); + + for(int i=0; i < images.size(); ++i) + { + if (not images.at(i).isGrayscale()) + { + return false; + } + } + + return true; } //--------------------------------------------------------------------------------------------------------------------- @@ -881,11 +900,11 @@ bool MainWindowsNoGUI::isPagesUniform() const { QGraphicsRectItem *paper = qgraphicsitem_cast(papers.at(0)); SCASSERT(paper != nullptr) - for (int i=1; i < papers.size(); ++i) + for (int i=1; i < papers.size(); ++i) { QGraphicsRectItem *p = qgraphicsitem_cast(papers.at(i)); SCASSERT(p != nullptr) - if (paper->rect() != p->rect()) + if (paper->rect() != p->rect()) { return false; } diff --git a/src/app/valentina/mainwindowsnogui.h b/src/app/valentina/mainwindowsnogui.h index 5029db74d..05a514eec 100644 --- a/src/app/valentina/mainwindowsnogui.h +++ b/src/app/valentina/mainwindowsnogui.h @@ -104,7 +104,6 @@ private: void CreateShadows(); void CreateScenes(); - void SvgFile(const QString &name, int i)const; void PngFile(const QString &name, int i)const; void PdfFile(const QString &name, int i)const; @@ -114,13 +113,14 @@ private: void ObjFile(const QString &name, int i)const; void DxfFile(const QString &name, int i)const; - QVector AllSheets(); + QVector AllSheets() const; void SaveLayoutAs(); void PrintPreview(); void LayoutPrint(); void SetPrinterSettings(QPrinter *printer); + bool IsLayoutGrayscale() const; bool isPagesUniform() const; QString FileName() const; diff --git a/src/libs/vpatterndb/variables/vmeasurement.h b/src/libs/vpatterndb/variables/vmeasurement.h index c6e08688f..206dc1a9a 100644 --- a/src/libs/vpatterndb/variables/vmeasurement.h +++ b/src/libs/vpatterndb/variables/vmeasurement.h @@ -33,6 +33,7 @@ #include "../ifc/ifcdef.h" #include +#include class VMeasurementData; class VContainer;