[Libreoffice-commits] core.git: Branch 'feature/print_revamp' - include/vcl vcl/inc vcl/source vcl/uiconfig
Libreoffice Gerrit user
logerrit at kemper.freedesktop.org
Tue Aug 7 09:38:59 UTC 2018
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 <danielfaleirosilva at gmail.com>
AuthorDate: Sun Jul 22 21:05:56 2018 -0300
Commit: Katarina Behrens <Katarina.Behrens at 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.Behrens at 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>
More information about the Libreoffice-commits
mailing list