1*ebfcd9afSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*ebfcd9afSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*ebfcd9afSAndrew Rist * or more contributor license agreements. See the NOTICE file 5*ebfcd9afSAndrew Rist * distributed with this work for additional information 6*ebfcd9afSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*ebfcd9afSAndrew Rist * to you under the Apache License, Version 2.0 (the 8*ebfcd9afSAndrew Rist * "License"); you may not use this file except in compliance 9*ebfcd9afSAndrew Rist * with the License. You may obtain a copy of the License at 10*ebfcd9afSAndrew Rist * 11*ebfcd9afSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*ebfcd9afSAndrew Rist * 13*ebfcd9afSAndrew Rist * Unless required by applicable law or agreed to in writing, 14*ebfcd9afSAndrew Rist * software distributed under the License is distributed on an 15*ebfcd9afSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*ebfcd9afSAndrew Rist * KIND, either express or implied. See the License for the 17*ebfcd9afSAndrew Rist * specific language governing permissions and limitations 18*ebfcd9afSAndrew Rist * under the License. 19*ebfcd9afSAndrew Rist * 20*ebfcd9afSAndrew Rist *************************************************************/ 21*ebfcd9afSAndrew Rist 22*ebfcd9afSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir #ifndef _SV_PRNDLG_HXX 25cdf0e10cSrcweir #define _SV_PRNDLG_HXX 26cdf0e10cSrcweir 27cdf0e10cSrcweir #include <vcl/dllapi.h> 28cdf0e10cSrcweir 29cdf0e10cSrcweir #include "print.h" 30cdf0e10cSrcweir 31cdf0e10cSrcweir #include "vcl/print.hxx" 32cdf0e10cSrcweir #include "vcl/dialog.hxx" 33cdf0e10cSrcweir #include "vcl/fixed.hxx" 34cdf0e10cSrcweir #include "vcl/button.hxx" 35cdf0e10cSrcweir #include "vcl/gdimtf.hxx" 36cdf0e10cSrcweir #include "vcl/lstbox.hxx" 37cdf0e10cSrcweir #include "vcl/field.hxx" 38cdf0e10cSrcweir #include "vcl/tabctrl.hxx" 39cdf0e10cSrcweir #include "vcl/tabpage.hxx" 40cdf0e10cSrcweir #include "vcl/arrange.hxx" 41cdf0e10cSrcweir #include "vcl/virdev.hxx" 42cdf0e10cSrcweir 43cdf0e10cSrcweir #include <boost/shared_ptr.hpp> 44cdf0e10cSrcweir #include <map> 45cdf0e10cSrcweir 46cdf0e10cSrcweir namespace vcl 47cdf0e10cSrcweir { 48cdf0e10cSrcweir class PrintDialog : public ModalDialog 49cdf0e10cSrcweir { 50cdf0e10cSrcweir class PrintPreviewWindow : public Window 51cdf0e10cSrcweir { 52cdf0e10cSrcweir GDIMetaFile maMtf; 53cdf0e10cSrcweir Size maOrigSize; 54cdf0e10cSrcweir Size maPreviewSize; 55cdf0e10cSrcweir VirtualDevice maPageVDev; 56cdf0e10cSrcweir rtl::OUString maReplacementString; 57cdf0e10cSrcweir rtl::OUString maToolTipString; 58cdf0e10cSrcweir bool mbGreyscale; 59cdf0e10cSrcweir FixedLine maHorzDim; 60cdf0e10cSrcweir FixedLine maVertDim; 61cdf0e10cSrcweir 62cdf0e10cSrcweir bool useHCColorReplacement() const; 63cdf0e10cSrcweir public: 64cdf0e10cSrcweir PrintPreviewWindow( Window* pParent, const ResId& ); 65cdf0e10cSrcweir virtual ~PrintPreviewWindow(); 66cdf0e10cSrcweir 67cdf0e10cSrcweir virtual void Paint( const Rectangle& rRect ); 68cdf0e10cSrcweir virtual void Command( const CommandEvent& ); 69cdf0e10cSrcweir virtual void Resize(); 70cdf0e10cSrcweir virtual void DataChanged( const DataChangedEvent& ); 71cdf0e10cSrcweir 72cdf0e10cSrcweir void setPreview( const GDIMetaFile&, const Size& i_rPaperSize, 73cdf0e10cSrcweir const rtl::OUString& i_rPaperName, 74cdf0e10cSrcweir const rtl::OUString& i_rNoPageString, 75cdf0e10cSrcweir sal_Int32 i_nDPIX, sal_Int32 i_nDPIY, 76cdf0e10cSrcweir bool i_bGreyscale 77cdf0e10cSrcweir ); 78cdf0e10cSrcweir }; 79cdf0e10cSrcweir 80cdf0e10cSrcweir class ShowNupOrderWindow : public Window 81cdf0e10cSrcweir { 82cdf0e10cSrcweir int mnOrderMode; 83cdf0e10cSrcweir int mnRows; 84cdf0e10cSrcweir int mnColumns; 85cdf0e10cSrcweir void ImplInitSettings(); 86cdf0e10cSrcweir public: 87cdf0e10cSrcweir ShowNupOrderWindow( Window* pParent ); 88cdf0e10cSrcweir virtual ~ShowNupOrderWindow(); 89cdf0e10cSrcweir 90cdf0e10cSrcweir virtual void Paint( const Rectangle& ); 91cdf0e10cSrcweir setValues(int i_nOrderMode,int i_nColumns,int i_nRows)92cdf0e10cSrcweir void setValues( int i_nOrderMode, int i_nColumns, int i_nRows ) 93cdf0e10cSrcweir { 94cdf0e10cSrcweir mnOrderMode = i_nOrderMode; 95cdf0e10cSrcweir mnRows = i_nRows; 96cdf0e10cSrcweir mnColumns = i_nColumns; 97cdf0e10cSrcweir Invalidate(); 98cdf0e10cSrcweir } 99cdf0e10cSrcweir }; 100cdf0e10cSrcweir 101cdf0e10cSrcweir class NUpTabPage : public TabPage 102cdf0e10cSrcweir { 103cdf0e10cSrcweir public: 104cdf0e10cSrcweir FixedLine maNupLine; 105cdf0e10cSrcweir RadioButton maPagesBtn; 106cdf0e10cSrcweir RadioButton maBrochureBtn; 107cdf0e10cSrcweir FixedText maPagesBoxTitleTxt; 108cdf0e10cSrcweir ListBox maNupPagesBox; 109cdf0e10cSrcweir 110cdf0e10cSrcweir // controls for "Custom" page mode 111cdf0e10cSrcweir FixedText maNupNumPagesTxt; 112cdf0e10cSrcweir NumericField maNupColEdt; 113cdf0e10cSrcweir FixedText maNupTimesTxt; 114cdf0e10cSrcweir NumericField maNupRowsEdt; 115cdf0e10cSrcweir FixedText maPageMarginTxt1; 116cdf0e10cSrcweir MetricField maPageMarginEdt; 117cdf0e10cSrcweir FixedText maPageMarginTxt2; 118cdf0e10cSrcweir FixedText maSheetMarginTxt1; 119cdf0e10cSrcweir MetricField maSheetMarginEdt; 120cdf0e10cSrcweir FixedText maSheetMarginTxt2; 121cdf0e10cSrcweir FixedText maNupOrientationTxt; 122cdf0e10cSrcweir ListBox maNupOrientationBox; 123cdf0e10cSrcweir 124cdf0e10cSrcweir // page order ("left to right, then down") 125cdf0e10cSrcweir FixedText maNupOrderTxt; 126cdf0e10cSrcweir ListBox maNupOrderBox; 127cdf0e10cSrcweir ShowNupOrderWindow maNupOrderWin; 128cdf0e10cSrcweir // border around each page 129cdf0e10cSrcweir CheckBox maBorderCB; 130cdf0e10cSrcweir 131cdf0e10cSrcweir boost::shared_ptr< vcl::RowOrColumn > mxBrochureDep; 132cdf0e10cSrcweir boost::shared_ptr< vcl::LabeledElement >mxPagesBtnLabel; 133cdf0e10cSrcweir 134cdf0e10cSrcweir void setupLayout(); 135cdf0e10cSrcweir 136cdf0e10cSrcweir NUpTabPage( Window*, const ResId& ); 137cdf0e10cSrcweir virtual ~NUpTabPage(); 138cdf0e10cSrcweir 139cdf0e10cSrcweir void readFromSettings(); 140cdf0e10cSrcweir void storeToSettings(); 141cdf0e10cSrcweir void initFromMultiPageSetup( const vcl::PrinterController::MultiPageSetup& ); 142cdf0e10cSrcweir void enableNupControls( bool bEnable ); 143cdf0e10cSrcweir 144cdf0e10cSrcweir void showAdvancedControls( bool ); 145cdf0e10cSrcweir 146cdf0e10cSrcweir // virtual void Resize(); 147cdf0e10cSrcweir }; 148cdf0e10cSrcweir 149cdf0e10cSrcweir class JobTabPage : public TabPage 150cdf0e10cSrcweir { 151cdf0e10cSrcweir public: 152cdf0e10cSrcweir FixedLine maPrinterFL; 153cdf0e10cSrcweir ListBox maPrinters; 154cdf0e10cSrcweir DisclosureButton maDetailsBtn; 155cdf0e10cSrcweir FixedText maStatusLabel; 156cdf0e10cSrcweir FixedText maStatusTxt; 157cdf0e10cSrcweir FixedText maLocationLabel; 158cdf0e10cSrcweir FixedText maLocationTxt; 159cdf0e10cSrcweir FixedText maCommentLabel; 160cdf0e10cSrcweir FixedText maCommentTxt; 161cdf0e10cSrcweir 162cdf0e10cSrcweir PushButton maSetupButton; 163cdf0e10cSrcweir 164cdf0e10cSrcweir FixedLine maCopies; 165cdf0e10cSrcweir FixedLine maCopySpacer; 166cdf0e10cSrcweir FixedText maCopyCount; 167cdf0e10cSrcweir NumericField maCopyCountField; 168cdf0e10cSrcweir CheckBox maCollateBox; 169cdf0e10cSrcweir FixedImage maCollateImage; 170cdf0e10cSrcweir CheckBox maReverseOrderBox; 171cdf0e10cSrcweir 172cdf0e10cSrcweir Image maCollateImg; 173cdf0e10cSrcweir Image maCollateHCImg; 174cdf0e10cSrcweir Image maNoCollateImg; 175cdf0e10cSrcweir Image maNoCollateHCImg; 176cdf0e10cSrcweir 177cdf0e10cSrcweir long mnCollateUIMode; 178cdf0e10cSrcweir 179cdf0e10cSrcweir boost::shared_ptr<vcl::RowOrColumn> mxPrintRange; 180cdf0e10cSrcweir boost::shared_ptr<vcl::WindowArranger> mxDetails; 181cdf0e10cSrcweir 182cdf0e10cSrcweir JobTabPage( Window*, const ResId& ); 183cdf0e10cSrcweir virtual ~JobTabPage(); 184cdf0e10cSrcweir 185cdf0e10cSrcweir void readFromSettings(); 186cdf0e10cSrcweir void storeToSettings(); 187cdf0e10cSrcweir 188cdf0e10cSrcweir // virtual void Resize(); 189cdf0e10cSrcweir 190cdf0e10cSrcweir void setupLayout(); 191cdf0e10cSrcweir }; 192cdf0e10cSrcweir 193cdf0e10cSrcweir class OutputOptPage : public TabPage 194cdf0e10cSrcweir { 195cdf0e10cSrcweir public: 196cdf0e10cSrcweir FixedLine maOptionsLine; 197cdf0e10cSrcweir CheckBox maToFileBox; 198cdf0e10cSrcweir CheckBox maCollateSingleJobsBox; 199cdf0e10cSrcweir 200cdf0e10cSrcweir boost::shared_ptr<vcl::RowOrColumn> mxOptGroup; 201cdf0e10cSrcweir 202cdf0e10cSrcweir OutputOptPage( Window*, const ResId& ); 203cdf0e10cSrcweir virtual ~OutputOptPage(); 204cdf0e10cSrcweir 205cdf0e10cSrcweir void readFromSettings(); 206cdf0e10cSrcweir void storeToSettings(); 207cdf0e10cSrcweir 208cdf0e10cSrcweir // virtual void Resize(); 209cdf0e10cSrcweir 210cdf0e10cSrcweir void setupLayout(); 211cdf0e10cSrcweir }; 212cdf0e10cSrcweir 213cdf0e10cSrcweir OKButton maOKButton; 214cdf0e10cSrcweir CancelButton maCancelButton; 215cdf0e10cSrcweir HelpButton maHelpButton; 216cdf0e10cSrcweir PrintPreviewWindow maPreviewWindow; 217cdf0e10cSrcweir NumericField maPageEdit; 218cdf0e10cSrcweir FixedText maNumPagesText; 219cdf0e10cSrcweir PushButton maBackwardBtn; 220cdf0e10cSrcweir PushButton maForwardBtn; 221cdf0e10cSrcweir 222cdf0e10cSrcweir TabControl maTabCtrl; 223cdf0e10cSrcweir NUpTabPage maNUpPage; 224cdf0e10cSrcweir JobTabPage maJobPage; 225cdf0e10cSrcweir OutputOptPage maOptionsPage; 226cdf0e10cSrcweir 227cdf0e10cSrcweir FixedLine maButtonLine; 228cdf0e10cSrcweir 229cdf0e10cSrcweir boost::shared_ptr< PrinterController > maPController; 230cdf0e10cSrcweir 231cdf0e10cSrcweir rtl::OUString maPageStr; 232cdf0e10cSrcweir rtl::OUString maNoPageStr; 233cdf0e10cSrcweir sal_Int32 mnCurPage; 234cdf0e10cSrcweir sal_Int32 mnCachedPages; 235cdf0e10cSrcweir 236cdf0e10cSrcweir std::list< Window* > maControls; 237cdf0e10cSrcweir std::map< Window*, rtl::OUString > maControlToPropertyMap; 238cdf0e10cSrcweir std::map< rtl::OUString, std::vector< Window* > > 239cdf0e10cSrcweir maPropertyToWindowMap; 240cdf0e10cSrcweir std::map< Window*, sal_Int32 > maControlToNumValMap; 241cdf0e10cSrcweir std::set< rtl::OUString > maReverseDependencySet; 242cdf0e10cSrcweir 243cdf0e10cSrcweir Size maNupPortraitSize; 244cdf0e10cSrcweir Size maNupLandscapeSize; 245cdf0e10cSrcweir 246cdf0e10cSrcweir // internal, used for automatic Nup-Portrait/landscape 247cdf0e10cSrcweir Size maFirstPageSize; 248cdf0e10cSrcweir 249cdf0e10cSrcweir rtl::OUString maPrintToFileText; 250cdf0e10cSrcweir rtl::OUString maPrintText; 251cdf0e10cSrcweir rtl::OUString maDefPrtText; 252cdf0e10cSrcweir 253cdf0e10cSrcweir boost::shared_ptr<vcl::RowOrColumn> mxPreviewCtrls; 254cdf0e10cSrcweir 255cdf0e10cSrcweir Size maDetailsCollapsedSize; 256cdf0e10cSrcweir Size maDetailsExpandedSize; 257cdf0e10cSrcweir 258cdf0e10cSrcweir sal_Bool mbShowLayoutPage; 259cdf0e10cSrcweir 260cdf0e10cSrcweir Size getJobPageSize(); 261cdf0e10cSrcweir void updateNup(); 262cdf0e10cSrcweir void updateNupFromPages(); 263cdf0e10cSrcweir void preparePreview( bool i_bPrintChanged = true, bool i_bMayUseCache = false ); 264cdf0e10cSrcweir void setPreviewText( sal_Int32 ); 265cdf0e10cSrcweir void updatePrinterText(); 266cdf0e10cSrcweir void checkControlDependencies(); 267cdf0e10cSrcweir void checkOptionalControlDependencies(); 268cdf0e10cSrcweir void makeEnabled( Window* ); 269cdf0e10cSrcweir void updateWindowFromProperty( const rtl::OUString& ); 270cdf0e10cSrcweir void setupOptionalUI(); 271cdf0e10cSrcweir void readFromSettings(); 272cdf0e10cSrcweir void storeToSettings(); 273cdf0e10cSrcweir com::sun::star::beans::PropertyValue* getValueForWindow( Window* ) const; 274cdf0e10cSrcweir 275cdf0e10cSrcweir virtual void Resize(); 276cdf0e10cSrcweir virtual void Command( const CommandEvent& ); 277cdf0e10cSrcweir virtual void DataChanged( const DataChangedEvent& ); 278cdf0e10cSrcweir 279cdf0e10cSrcweir DECL_LINK( SelectHdl, ListBox* ); 280cdf0e10cSrcweir DECL_LINK( ClickHdl, Button* ); 281cdf0e10cSrcweir DECL_LINK( ModifyHdl, Edit* ); 282cdf0e10cSrcweir DECL_LINK( UIOptionsChanged, void* ); 283cdf0e10cSrcweir 284cdf0e10cSrcweir DECL_LINK( UIOption_CheckHdl, CheckBox* ); 285cdf0e10cSrcweir DECL_LINK( UIOption_RadioHdl, RadioButton* ); 286cdf0e10cSrcweir DECL_LINK( UIOption_SelectHdl, ListBox* ); 287cdf0e10cSrcweir DECL_LINK( UIOption_ModifyHdl, Edit* ); 288cdf0e10cSrcweir 289cdf0e10cSrcweir void setupLayout(); 290cdf0e10cSrcweir public: 291cdf0e10cSrcweir PrintDialog( Window*, const boost::shared_ptr< PrinterController >& ); 292cdf0e10cSrcweir virtual ~PrintDialog(); 293cdf0e10cSrcweir 294cdf0e10cSrcweir bool isPrintToFile(); 295cdf0e10cSrcweir int getCopyCount(); 296cdf0e10cSrcweir bool isCollate(); 297cdf0e10cSrcweir bool isSingleJobs(); 298cdf0e10cSrcweir 299cdf0e10cSrcweir void previewForward(); 300cdf0e10cSrcweir void previewBackward(); 301cdf0e10cSrcweir }; 302cdf0e10cSrcweir 303cdf0e10cSrcweir class PrintProgressDialog : public ModelessDialog 304cdf0e10cSrcweir { 305cdf0e10cSrcweir String maStr; 306cdf0e10cSrcweir FixedText maText; 307cdf0e10cSrcweir CancelButton maButton; 308cdf0e10cSrcweir 309cdf0e10cSrcweir bool mbCanceled; 310cdf0e10cSrcweir sal_Int32 mnCur; 311cdf0e10cSrcweir sal_Int32 mnMax; 312cdf0e10cSrcweir long mnProgressHeight; 313cdf0e10cSrcweir Rectangle maProgressRect; 314cdf0e10cSrcweir bool mbNativeProgress; 315cdf0e10cSrcweir 316cdf0e10cSrcweir DECL_LINK( ClickHdl, Button* ); 317cdf0e10cSrcweir 318cdf0e10cSrcweir void implCalcProgressRect(); 319cdf0e10cSrcweir public: 320cdf0e10cSrcweir PrintProgressDialog( Window* i_pParent, int i_nMax ); 321cdf0e10cSrcweir ~PrintProgressDialog(); 322cdf0e10cSrcweir isCanceled() const323cdf0e10cSrcweir bool isCanceled() const { return mbCanceled; } 324cdf0e10cSrcweir void setProgress( int i_nCurrent, int i_nMax = -1 ); 325cdf0e10cSrcweir void tick(); 326cdf0e10cSrcweir void reset(); 327cdf0e10cSrcweir 328cdf0e10cSrcweir virtual void Paint( const Rectangle& ); 329cdf0e10cSrcweir }; 330cdf0e10cSrcweir } 331cdf0e10cSrcweir 332cdf0e10cSrcweir 333cdf0e10cSrcweir #endif // _SV_PRNDLG_HXX 334