diff options
author | Daniel Silva <danielfaleirosilva@gmail.com> | 2018-07-22 21:05:56 -0300 |
---|---|---|
committer | Daniel Silva <danielfaleirosilva@gmail.com> | 2018-11-28 09:36:56 -0200 |
commit | 48493f35132f043254ce69abcfd8d96179d4074b (patch) | |
tree | 8fce660c258bf6dbd66a5fd5642acfb3d88c5ebb | |
parent | bca2fc035d9832b74a4d601c2ca977504b93d6aa (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.hxx | 1 | ||||
-rw-r--r-- | vcl/inc/printdlg.hxx | 2 | ||||
-rw-r--r-- | vcl/source/gdi/print.cxx | 5 | ||||
-rw-r--r-- | vcl/source/window/printdlg.cxx | 29 | ||||
-rw-r--r-- | vcl/uiconfig/ui/printdialog.ui | 18 |
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> |