include/vcl/print.hxx | 1 + vcl/inc/printdlg.hxx | 2 ++ vcl/source/gdi/print.cxx | 5 +++++ vcl/source/window/printdlg.cxx | 29 +++++++++++++++++++++++++++++ vcl/uiconfig/ui/printdialog.ui | 18 ++++++++++++++++++ 5 files changed, 55 insertions(+)
New commits: commit e5f94bcb3d54e956749401ba714cb528bc99e3e6 Author: Daniel Silva <danielfaleirosi...@gmail.com> AuthorDate: Sun Jul 22 21:05:56 2018 -0300 Commit: Katarina Behrens <katarina.behr...@cib.de> CommitDate: Tue Aug 7 11:38:37 2018 +0200 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.behr...@cib.de> diff --git a/include/vcl/print.hxx b/include/vcl/print.hxx index f219087c2f2b..21117df0a5fe 100644 --- a/include/vcl/print.hxx +++ b/include/vcl/print.hxx @@ -309,6 +309,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 659e28c275fe..86b6cf6d1a07 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 bc7716496e13..e285d93007d2 100644 --- a/vcl/source/gdi/print.cxx +++ b/vcl/source/gdi/print.cxx @@ -1550,6 +1550,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 1ef167a9e0c7..7b9ff7f7cd80 100644 --- a/vcl/source/window/printdlg.cxx +++ b/vcl/source/window/printdlg.cxx @@ -556,6 +556,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"); @@ -635,6 +636,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) ); @@ -679,6 +683,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 ) ); @@ -725,6 +730,7 @@ void PrintDialog::dispose() mpCopyCountField.clear(); mpCollateBox.clear(); mpCollateImage.clear(); + mpPaperSidesBox.clear(); mpReverseOrderBox.clear(); mpPagesBtn.clear(); mpBrochureBtn.clear(); @@ -750,6 +756,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(); @@ -1788,6 +1810,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> _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits