summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Silva <danielfaleirosilva@gmail.com>2018-07-22 21:05:56 -0300
committerDaniel Silva <danielfaleirosilva@gmail.com>2018-11-28 09:36:56 -0200
commit48493f35132f043254ce69abcfd8d96179d4074b (patch)
tree8fce660c258bf6dbd66a5fd5642acfb3d88c5ebb
parentbca2fc035d9832b74a4d601c2ca977504b93d6aa (diff)
Sets duplex (paper sides) box in print dialog
Change-Id: I223335dd9e02f8b09947a7b97ef4d718716a464b Reviewed-on: https://gerrit.libreoffice.org/57833 Tested-by: Jenkins Reviewed-by: Katarina Behrens <Katarina.Behrens@cib.de>
-rw-r--r--include/vcl/print.hxx1
-rw-r--r--vcl/inc/printdlg.hxx2
-rw-r--r--vcl/source/gdi/print.cxx5
-rw-r--r--vcl/source/window/printdlg.cxx29
-rw-r--r--vcl/uiconfig/ui/printdialog.ui18
5 files changed, 55 insertions, 0 deletions
diff --git a/include/vcl/print.hxx b/include/vcl/print.hxx
index bb9f7d22becb..d67073ea3dcd 100644
--- a/include/vcl/print.hxx
+++ b/include/vcl/print.hxx
@@ -305,6 +305,7 @@ public:
bool SetOrientation( Orientation eOrient );
Orientation GetOrientation() const;
void SetDuplexMode( DuplexMode );
+ DuplexMode GetDuplexMode() const;
bool SetPaperBin( sal_uInt16 nPaperBin );
sal_uInt16 GetPaperBin() const;
diff --git a/vcl/inc/printdlg.hxx b/vcl/inc/printdlg.hxx
index 701a5fa9598e..e479b26a4dbc 100644
--- a/vcl/inc/printdlg.hxx
+++ b/vcl/inc/printdlg.hxx
@@ -143,6 +143,7 @@ namespace vcl
VclPtr<NumericField> mpCopyCountField;
VclPtr<CheckBox> mpCollateBox;
VclPtr<FixedImage> mpCollateImage;
+ VclPtr<ListBox> mpPaperSidesBox;
VclPtr<CheckBox> mpReverseOrderBox;
VclPtr<OKButton> mpOKButton;
@@ -226,6 +227,7 @@ namespace vcl
css::beans::PropertyValue* getValueForWindow( vcl::Window* ) const;
void preparePreview( bool i_bPrintChanged = true, bool i_bMayUseCache = false );
+ void setupPaperSidesBox();
void setPreviewText();
void updatePrinterText();
void checkControlDependencies();
diff --git a/vcl/source/gdi/print.cxx b/vcl/source/gdi/print.cxx
index 7fb990a04700..a651fb6a5d99 100644
--- a/vcl/source/gdi/print.cxx
+++ b/vcl/source/gdi/print.cxx
@@ -1511,6 +1511,11 @@ void Printer::SetDuplexMode( DuplexMode eDuplex )
}
}
+DuplexMode Printer::GetDuplexMode() const
+{
+ return maJobSetup.ImplGetConstData().GetDuplexMode();
+}
+
Paper Printer::GetPaper() const
{
return maJobSetup.ImplGetConstData().GetPaperFormat();
diff --git a/vcl/source/window/printdlg.cxx b/vcl/source/window/printdlg.cxx
index 80df9a54475d..5951c8aff4c2 100644
--- a/vcl/source/window/printdlg.cxx
+++ b/vcl/source/window/printdlg.cxx
@@ -558,6 +558,7 @@ PrintDialog::PrintDialog(vcl::Window* i_pWindow, const std::shared_ptr<PrinterCo
get(mpStatusTxt, "status");
get(mpCollateBox, "collate");
get(mpCollateImage, "collateimage");
+ get(mpPaperSidesBox, "sidesbox");
get(mpReverseOrderBox, "reverseorder");
get(mpCopyCountField, "copycount");
get(mpNupOrderWin, "orderpreview");
@@ -636,6 +637,9 @@ PrintDialog::PrintDialog(vcl::Window* i_pWindow, const std::shared_ptr<PrinterCo
// setup dependencies
checkControlDependencies();
+ // setup paper sides box
+ setupPaperSidesBox();
+
// set initial focus to "Number of copies"
mpCopyCountField->GrabFocus();
mpCopyCountField->SetSelection( Selection(0, 0xFFFF) );
@@ -680,6 +684,7 @@ PrintDialog::PrintDialog(vcl::Window* i_pWindow, const std::shared_ptr<PrinterCo
// setup select hdl
mpPrinters->SetSelectHdl( LINK( this, PrintDialog, SelectHdl ) );
+ mpPaperSidesBox->SetSelectHdl( LINK( this, PrintDialog, SelectHdl ) );
mpNupPagesBox->SetSelectHdl( LINK( this, PrintDialog, SelectHdl ) );
mpNupOrientationBox->SetSelectHdl( LINK( this, PrintDialog, SelectHdl ) );
mpNupOrderBox->SetSelectHdl( LINK( this, PrintDialog, SelectHdl ) );
@@ -726,6 +731,7 @@ void PrintDialog::dispose()
mpCopyCountField.clear();
mpCollateBox.clear();
mpCollateImage.clear();
+ mpPaperSidesBox.clear();
mpReverseOrderBox.clear();
mpPagesBtn.clear();
mpBrochureBtn.clear();
@@ -751,6 +757,22 @@ void PrintDialog::dispose()
ModalDialog::dispose();
}
+void PrintDialog::setupPaperSidesBox()
+{
+ DuplexMode eDuplex = maPController->getPrinter()->GetDuplexMode();
+
+ if ( eDuplex == DuplexMode::Unknown || isPrintToFile() )
+ {
+ mpPaperSidesBox->SelectEntryPos( 0 );
+ mpPaperSidesBox->Enable( false );
+ }
+ else
+ {
+ mpPaperSidesBox->SelectEntryPos( static_cast<sal_Int32>(eDuplex) - 1 );
+ mpPaperSidesBox->Enable( true );
+ }
+}
+
void PrintDialog::setPaperSizes()
{
mpPaperSizeBox->Clear();
@@ -1789,6 +1811,13 @@ IMPL_LINK( PrintDialog, SelectHdl, ListBox&, rBox, void )
setPaperSizes();
preparePreview( true, true );
}
+
+ setupPaperSidesBox();
+ }
+ else if ( &rBox == mpPaperSidesBox )
+ {
+ DuplexMode eDuplex = static_cast<DuplexMode>(mpPaperSidesBox->GetSelectedEntryPos() + 1);
+ maPController->getPrinter()->SetDuplexMode( eDuplex );
}
else if( &rBox == mpNupOrientationBox || &rBox == mpNupOrderBox )
{
diff --git a/vcl/uiconfig/ui/printdialog.ui b/vcl/uiconfig/ui/printdialog.ui
index 0073dbf1e5f4..2e5118c24cd4 100644
--- a/vcl/uiconfig/ui/printdialog.ui
+++ b/vcl/uiconfig/ui/printdialog.ui
@@ -87,6 +87,23 @@
</row>
</data>
</object>
+ <object class="GtkListStore" id="liststore4">
+ <columns>
+ <!-- column-name gchararray -->
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0" translatable="yes" context="printdialog|liststore4">Print only in one side</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes" context="printdialog|liststore4">Print in both sides (long edge)</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes" context="printdialog|liststore4">Print in both sides (short edge)</col>
+ </row>
+ </data>
+ </object>
<object class="GtkDialog" id="PrintDialog">
<property name="can_focus">False</property>
<property name="border_width">6</property>
@@ -690,6 +707,7 @@
<object class="GtkComboBox" id="sidesbox">
<property name="visible">True</property>
<property name="can_focus">False</property>
+ <property name="model">liststore4</property>
</object>
<packing>
<property name="left_attach">1</property>