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

Reply via email to