summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>2020-11-25 16:22:11 +0100
committerVasily Melenchuk <vasily.melenchuk@cib.de>2020-12-07 13:00:24 +0300
commit97548c6bcb60b12110242fe99eec2bcacb60933d (patch)
treec0abfd4196634b6640a72cb0ce99c7a455e8b4e1
parent728f04ada4757879e2e7fa9177b7ca85f90708fe (diff)
Add 'SinglePrintJobs' to PrintOptions
So that this option can be set via UNO API Change-Id: I0b69162661a4327d59aaed82d5eff98cb50d852c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/106593 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
-rw-r--r--include/vcl/print.hxx3
-rw-r--r--offapi/com/sun/star/view/PrintOptions.idl4
-rw-r--r--sfx2/source/doc/printhelper.cxx9
-rw-r--r--vcl/osx/salprn.cxx7
-rw-r--r--vcl/source/gdi/print3.cxx16
-rw-r--r--vcl/unx/generic/print/genprnpsp.cxx8
6 files changed, 26 insertions, 21 deletions
diff --git a/include/vcl/print.hxx b/include/vcl/print.hxx
index 154ee694bd83..fbdf9c9e19cb 100644
--- a/include/vcl/print.hxx
+++ b/include/vcl/print.hxx
@@ -198,6 +198,7 @@ private:
bool mbPrintFile;
bool mbInPrintPage;
bool mbNewJobSetup;
+ bool mbSinglePrintJobs;
VCL_DLLPRIVATE void ImplInitData();
VCL_DLLPRIVATE void ImplInit( SalPrinterQueueInfo* pInfo );
@@ -335,6 +336,8 @@ public:
void SetCopyCount( sal_uInt16 nCopy, bool bCollate );
sal_uInt16 GetCopyCount() const { return mnCopyCount; }
bool IsCollateCopy() const { return mbCollateCopy; }
+ void SetSinglePrintJobs(bool bSinglePrintJobs) { mbSinglePrintJobs = bSinglePrintJobs; }
+ bool IsSinglePrintJobs() const { return mbSinglePrintJobs; }
bool IsPrinting() const { return mbPrinting; }
diff --git a/offapi/com/sun/star/view/PrintOptions.idl b/offapi/com/sun/star/view/PrintOptions.idl
index eea96f98937e..4ed8b23baaf0 100644
--- a/offapi/com/sun/star/view/PrintOptions.idl
+++ b/offapi/com/sun/star/view/PrintOptions.idl
@@ -76,6 +76,10 @@ published service PrintOptions
/** if set, specifies name of the printer to use.
*/
[optional, property] string PrinterName;
+
+ /** advises the printer to create a single print job for each copy.
+ */
+ [optional, property] boolean SinglePrintJobs;
};
diff --git a/sfx2/source/doc/printhelper.cxx b/sfx2/source/doc/printhelper.cxx
index 661074a9a102..42936e53fe99 100644
--- a/sfx2/source/doc/printhelper.cxx
+++ b/sfx2/source/doc/printhelper.cxx
@@ -702,6 +702,15 @@ void SAL_CALL SfxPrintHelper::print(const uno::Sequence< beans::PropertyValue >&
aCheckedArgs[nProps++].Value <<= bTemp;
}
+ else if ( rProp.Name == "SinglePrintJobs" )
+ {
+ bool bTemp;
+ if ( !(rProp.Value >>= bTemp) )
+ throw css::lang::IllegalArgumentException();
+ aCheckedArgs[nProps].Name = "SinglePrintJobs";
+ aCheckedArgs[nProps++].Value <<= bTemp;
+ }
+
// Pages-Property
else if ( rProp.Name == "Pages" )
{
diff --git a/vcl/osx/salprn.cxx b/vcl/osx/salprn.cxx
index c0c71de2b4b6..5538fde7c58e 100644
--- a/vcl/osx/salprn.cxx
+++ b/vcl/osx/salprn.cxx
@@ -380,12 +380,7 @@ bool AquaSalInfoPrinter::StartJob( const OUString* i_pFileName,
bShowProgressPanel = false;
// possibly create one job for collated output
- bool bSinglePrintJobs = false;
- beans::PropertyValue* pSingleValue = i_rController.getValue( OUString( "PrintCollateAsSingleJobs" ) );
- if( pSingleValue )
- {
- pSingleValue->Value >>= bSinglePrintJobs;
- }
+ bool bSinglePrintJobs = i_rController.getPrinter()->IsSinglePrintJobs();
// FIXME: jobStarted() should be done after the print dialog has ended (if there is one)
// how do I know when that might be ?
diff --git a/vcl/source/gdi/print3.cxx b/vcl/source/gdi/print3.cxx
index 50b20930cf19..0b4f71953570 100644
--- a/vcl/source/gdi/print3.cxx
+++ b/vcl/source/gdi/print3.cxx
@@ -502,8 +502,7 @@ bool Printer::PreparePrintJob(std::shared_ptr<PrinterController> xController,
}
else if (aDlg.isSingleJobs())
{
- xController->setValue( "PrintCollateAsSingleJobs",
- css::uno::makeAny( true ) );
+ xController->getPrinter()->SetSinglePrintJobs(true);
}
}
catch (const std::bad_alloc&)
@@ -578,12 +577,7 @@ bool Printer::StartJob( const OUString& i_rJobName, std::shared_ptr<vcl::Printer
if (!mpPrinter)
return false;
- bool bSinglePrintJobs = false;
- css::beans::PropertyValue* pSingleValue = i_xController->getValue("PrintCollateAsSingleJobs");
- if( pSingleValue )
- {
- pSingleValue->Value >>= bSinglePrintJobs;
- }
+ bool bSinglePrintJobs = i_xController->getPrinter()->IsSinglePrintJobs();
css::beans::PropertyValue* pFileValue = i_xController->getValue("LocalFileName");
if( pFileValue )
@@ -1735,6 +1729,12 @@ void PrinterController::pushPropertiesToPrinter()
pVal->Value >>= bCollate;
mpImplData->mxPrinter->SetCopyCount( static_cast<sal_uInt16>(nCopyCount), bCollate );
+ pVal = getValue("SinglePrintJobs");
+ bool bSinglePrintJobs = false;
+ if (pVal)
+ pVal->Value >>= bSinglePrintJobs;
+ mpImplData->mxPrinter->SetSinglePrintJobs(bSinglePrintJobs);
+
// duplex mode
pVal = getValue( "DuplexMode" );
if( pVal )
diff --git a/vcl/unx/generic/print/genprnpsp.cxx b/vcl/unx/generic/print/genprnpsp.cxx
index 7b479816e1ec..7b1ed8a344f1 100644
--- a/vcl/unx/generic/print/genprnpsp.cxx
+++ b/vcl/unx/generic/print/genprnpsp.cxx
@@ -962,15 +962,9 @@ bool PspSalPrinter::StartJob( const OUString* i_pFileName, const OUString& i_rJo
m_aJobData.m_nPDFDevice = 1;
// possibly create one job for collated output
- bool bSinglePrintJobs = false;
- beans::PropertyValue* pSingleValue = i_rController.getValue( "PrintCollateAsSingleJobs" );
- if( pSingleValue )
- {
- pSingleValue->Value >>= bSinglePrintJobs;
- }
-
int nCopies = i_rController.getPrinter()->GetCopyCount();
bool bCollate = i_rController.getPrinter()->IsCollateCopy();
+ bool bSinglePrintJobs = i_rController.getPrinter()->IsSinglePrintJobs();
// notify start of real print job
i_rController.jobStarted();