diff options
author | Daniel Silva <danielfaleirosilva@gmail.com> | 2018-07-12 23:00:45 -0300 |
---|---|---|
committer | Daniel Silva <danielfaleirosilva@gmail.com> | 2018-11-29 13:02:16 -0200 |
commit | faf2b0f165e9d9e3160e5d54e3d2e9973facf0b8 (patch) | |
tree | 4d677f1ddd3c784a2c75ce1c622c76abf930878e /sd | |
parent | 07e4261ceaea31a20ab2bc1a76df722ed0bd54c4 (diff) |
Adds print even pages/print odd pages options in print dialog
Change-Id: I17733d83cc652be8c5abaf20cd4b5e23d3a577a1
Reviewed-on: https://gerrit.libreoffice.org/57380
Tested-by: Jenkins
Reviewed-by: Daniel Silva <danielfaleirosilva@gmail.com>
Diffstat (limited to 'sd')
-rw-r--r-- | sd/inc/DocumentRenderer.hrc | 4 | ||||
-rw-r--r-- | sd/source/ui/view/DocumentRenderer.cxx | 74 |
2 files changed, 51 insertions, 27 deletions
diff --git a/sd/inc/DocumentRenderer.hrc b/sd/inc/DocumentRenderer.hrc index 73e7c2f50b9e..c47c6fd82797 100644 --- a/sd/inc/DocumentRenderer.hrc +++ b/sd/inc/DocumentRenderer.hrc @@ -81,6 +81,8 @@ const char* STR_IMPRESS_PRINT_UI_PAGE_RANGE_CHOICE[] = { NC_("STR_IMPRESS_PRINT_UI_PAGE_RANGE_CHOICE", "Print all slides"), NC_("STR_IMPRESS_PRINT_UI_PAGE_RANGE_CHOICE", "Print slides"), + NC_("STR_IMPRESS_PRINT_UI_PAGE_RANGE_CHOICE", "Print even slides"), + NC_("STR_IMPRESS_PRINT_UI_PAGE_RANGE_CHOICE", "Print odd slides"), NC_("STR_IMPRESS_PRINT_UI_PAGE_RANGE_CHOICE", "Print selection") }; @@ -88,6 +90,8 @@ const char* STR_DRAW_PRINT_UI_PAGE_RANGE_CHOICE[] = { NC_("STR_DRAW_PRINT_UI_PAGE_RANGE_CHOICE", "Print all pages"), NC_("STR_DRAW_PRINT_UI_PAGE_RANGE_CHOICE", "Print pages"), + NC_("STR_IMPRESS_PRINT_UI_PAGE_RANGE_CHOICE", "Print even pages"), + NC_("STR_IMPRESS_PRINT_UI_PAGE_RANGE_CHOICE", "Print odd pages"), NC_("STR_DRAW_PRINT_UI_PAGE_RANGE_CHOICE", "Print selection") }; diff --git a/sd/source/ui/view/DocumentRenderer.cxx b/sd/source/ui/view/DocumentRenderer.cxx index 81f447cf9e83..717ea0815d81 100644 --- a/sd/source/ui/view/DocumentRenderer.cxx +++ b/sd/source/ui/view/DocumentRenderer.cxx @@ -183,14 +183,14 @@ namespace { bool IsPrintFrontPage() const { - sal_Int32 nInclude = static_cast<sal_Int32>(mrProperties.getIntValue( "PrintProspectInclude", 0 )); - return nInclude == 0 || nInclude == 1; + sal_Int32 nInclude = static_cast<sal_Int32>(mrProperties.getIntValue( "PrintContent", 0 )); + return nInclude != 2; } bool IsPrintBackPage() const { - sal_Int32 nInclude = static_cast<sal_Int32>(mrProperties.getIntValue( "PrintProspectInclude", 0 )); - return nInclude == 0 || nInclude == 2; + sal_Int32 nInclude = static_cast<sal_Int32>(mrProperties.getIntValue( "PrintContent", 0 )); + return nInclude != 3; } bool IsPaperBin() const @@ -200,7 +200,7 @@ namespace { bool IsPrintMarkedOnly() const { - return GetBoolValue("PrintContent", sal_Int32(2)); + return GetBoolValue("PrintContent", sal_Int32(4)); } OUString GetPrinterSelection (sal_Int32 nPageCount, sal_Int32 nCurrentPageIndex) const @@ -208,7 +208,7 @@ namespace { sal_Int32 nContent = static_cast<sal_Int32>(mrProperties.getIntValue( "PrintContent", 0 )); OUString sFullRange = "1-" + OUString::number(nPageCount); - if (nContent == 0) // all pages/slides + if (nContent == 0 || nContent == 2 || nContent == 3 ) // all pages/slides || even pages/slides || odd pages/slides { return sFullRange; } @@ -219,7 +219,7 @@ namespace { return sValue.isEmpty() ? sFullRange : sValue; } - if (nContent == 2 && // selection + if (nContent == 4 && // selection nCurrentPageIndex >= 0) { return OUString::number(nCurrentPageIndex + 1); @@ -1699,7 +1699,9 @@ private: } } - maPrinterPages.push_back( + if ( CheckForFrontBackPages( nIndex ) ) + { + maPrinterPages.push_back( std::shared_ptr<PrinterPage>( new OutlinerPrinterPage( pOutliner->CreateParaObject(), @@ -1709,6 +1711,7 @@ private: rInfo.mnDrawMode, rInfo.meOrientation, rInfo.mpPrinter->GetPaperBin()))); + } } pOutliner->SetRefMapMode(aSavedMapMode); @@ -1813,7 +1816,8 @@ private: // Create a printer page when we have found one page for each // placeholder or when this is the last (and special) loop. - if (!aPageIndices.empty() && (aPageIndices.size() == nShapeCount || bLastLoop)) + if ( !aPageIndices.empty() && CheckForFrontBackPages( nPageIndex ) + && (aPageIndices.size() == nShapeCount || bLastLoop) ) { maPrinterPages.push_back( std::shared_ptr<PrinterPage>( @@ -2034,9 +2038,7 @@ private: nIndex < nCount; ++nIndex) { - const bool bIsIndexOdd (nIndex & 1); - if ((!bIsIndexOdd && mpOptions->IsPrintFrontPage()) - || (bIsIndexOdd && mpOptions->IsPrintBackPage())) + if ( CheckForFrontBackPages( nIndex ) ) { const std::pair<sal_uInt16, sal_uInt16> aPair (aPairVector[nIndex]); Point aSecondOffset (aOffset); @@ -2077,7 +2079,9 @@ private: else nPaperBin = rInfo.mpPrinter->GetPaperBin(); - maPrinterPages.push_back( + if ( CheckForFrontBackPages( nPageIndex ) ) + { + maPrinterPages.push_back( std::shared_ptr<PrinterPage>( new TiledPrinterPage( sal::static_int_cast<sal_uInt16>(nPageIndex), @@ -2088,6 +2092,7 @@ private: rInfo.mnDrawMode, rInfo.meOrientation, nPaperBin))); + } } /** Print one standard slide or notes page on one to many printer @@ -2118,7 +2123,7 @@ private: const bool bScalePage (mpOptions->IsPaperSize()); const bool bCutPage (mpOptions->IsCutPage()); MapMode aMap (rInfo.maMap); - if (bScalePage || bCutPage) + if ( (bScalePage || bCutPage) && CheckForFrontBackPages( nPageIndex ) ) { // Handle 1 and 2. @@ -2159,23 +2164,38 @@ private: -aPageOrigin.X()<nPageWidth; aPageOrigin.AdjustX(-rInfo.maPrintSize.Width())) { - aMap.SetOrigin(aPageOrigin); - maPrinterPages.push_back( - std::shared_ptr<PrinterPage>( - new RegularPrinterPage( - sal::static_int_cast<sal_uInt16>(nPageIndex), - ePageKind, - aMap, - rInfo.mbPrintMarkedOnly, - rInfo.msPageString, - aPageOffset, - rInfo.mnDrawMode, - rInfo.meOrientation, - nPaperBin))); + if ( CheckForFrontBackPages( nPageIndex ) ) + { + aMap.SetOrigin(aPageOrigin); + maPrinterPages.push_back( + std::shared_ptr<PrinterPage>( + new RegularPrinterPage( + sal::static_int_cast<sal_uInt16>(nPageIndex), + ePageKind, + aMap, + rInfo.mbPrintMarkedOnly, + rInfo.msPageString, + aPageOffset, + rInfo.mnDrawMode, + rInfo.meOrientation, + nPaperBin))); + } } } } } + +bool CheckForFrontBackPages( sal_Int32 nPage ) +{ + const bool bIsIndexOdd(nPage & 1); + if ((!bIsIndexOdd && mpOptions->IsPrintFrontPage()) + || (bIsIndexOdd && mpOptions->IsPrintBackPage())) + { + return true; + } + else + return false; +} }; //===== DocumentRenderer ====================================================== |