summaryrefslogtreecommitdiff
path: root/sd
diff options
context:
space:
mode:
authorDaniel Silva <danielfaleirosilva@gmail.com>2018-07-12 23:00:45 -0300
committerAron Budea <aron.budea@collabora.com>2019-09-26 18:56:44 +0200
commit89dec0de22190a6c3d725b7434189006e22bde7f (patch)
treeb369fc0f0586f42cd4954df743f0bba2190f57ff /sd
parent148ff6dce686e882b7939d9835c55957d5d260f6 (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> (cherry picked from commit faf2b0f165e9d9e3160e5d54e3d2e9973facf0b8)
Diffstat (limited to 'sd')
-rw-r--r--sd/inc/DocumentRenderer.hrc4
-rw-r--r--sd/source/ui/view/DocumentRenderer.cxx74
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 ======================================================