diff options
Diffstat (limited to 'svtools/inc/svtools/printdlg.hxx')
-rw-r--r-- | svtools/inc/svtools/printdlg.hxx | 297 |
1 files changed, 297 insertions, 0 deletions
diff --git a/svtools/inc/svtools/printdlg.hxx b/svtools/inc/svtools/printdlg.hxx new file mode 100644 index 000000000000..8c455b910b41 --- /dev/null +++ b/svtools/inc/svtools/printdlg.hxx @@ -0,0 +1,297 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SV_PRINTDLG_HXX_ +#define _SV_PRINTDLG_HXX_ + +#include "svtools/svtdllapi.h" + +#ifndef _VCL_DIALOG_HXX +#include <vcl/dialog.hxx> +#endif +#ifndef _VCL_FIXED_HXX +#include <vcl/fixed.hxx> +#endif +#ifndef _VCL_BUTTON_HXX +#include <vcl/button.hxx> +#endif +#ifndef _VCL_GROUP_HXX +#include <vcl/group.hxx> +#endif +#ifndef _VCL_FIELD_HXX +#include <vcl/field.hxx> +#endif +#ifndef _VCL_EDIT_HXX +#include <vcl/edit.hxx> +#endif +#ifndef _VCL_LSTBOX_HXX +#include <vcl/lstbox.hxx> +#endif +#include <svtools/stdctrl.hxx> + +class Printer; +class QueueInfo; +struct SvtPrinterImpl; + +// --------------------- +// - PrintDialog-Types - +// --------------------- + +enum PrintDialogRange{ + PRINTDIALOG_ALL, PRINTDIALOG_SELECTION, PRINTDIALOG_FROMTO, PRINTDIALOG_RANGE }; + +enum PrintSheetRange +{ + PRINTSHEETS_ALL, + PRINTSHEETS_SELECTED_SHEETS, + PRINTSHEETS_SELECTED_CELLS +}; + + +// --------------- +// - PrintDialog - +// --------------- + +class SVT_DLLPUBLIC PrintDialog : public ModalDialog +{ +private: + FixedLine maFlPrinter; + FixedText maFtName; + ListBox maLbName; + PushButton maBtnProperties; + FixedText maFtStatus; + FixedInfo maFiStatus; + FixedText maFtType; + FixedInfo maFiType; + FixedText maFtLocation; + FixedInfo maFiLocation; + FixedText maFtComment; + FixedInfo maFiComment; + + // "Print to file" or "Fax number" + CheckBox maCbxFilePrint; + FixedInfo maFiPrintFile; + FixedText maFiFaxNo; + Edit maEdtFaxNo; + //PushButton maBtnBrowse_nomore; + + // "Print" + FixedLine maFlPrint; + RadioButton maRbtAllSheets; + RadioButton maRbtSelectedSheets; + RadioButton maRbtSelectedCells; + + // "Print range" + FixedLine maFlPrintRange; + RadioButton maRbtAll; + RadioButton maRbtPages; + RadioButton maRbtSelection; + Edit maEdtPages; + + FixedLine maFlSepCopiesRange; + + // "Copies" + FixedLine maFlCopies; + FixedText maFtCopies; + NumericField maNumCopies; + FixedImage maImgCollate; + FixedImage maImgNotCollate; + CheckBox maCbxCollate; + + FixedLine maFlSepButtonLine; + PushButton maBtnOptions; + OKButton maBtnOK; + CancelButton maBtnCancel; + HelpButton maBtnHelp; + + AutoTimer maStatusTimer; + Printer* mpPrinter; + SvtPrinterImpl* mpPrinterImpl; + + XubString maRangeText; + USHORT mnCopyCount; + USHORT mnFirstPage; + USHORT mnLastPage; + USHORT mnMinPage; + USHORT mnMaxPage; + PrintDialogRange meCheckRange; + BOOL mbAll; + BOOL mbSelection; + BOOL mbFromTo; + BOOL mbRange; + BOOL mbCollate; + BOOL mbCollateCheck; + BOOL mbOptions; + bool mbWithSheetsAndCells; + Link maOptionsHdlLink; // Link zum Options-Handler + Link maOKHdlLink; // Link zum OK-Handler + + String maAllFilterStr; + + SVT_DLLPRIVATE void ImplCheckOK(); + SVT_DLLPRIVATE void ImplInitControls(); + SVT_DLLPRIVATE void ImplFillDialogData(); + SVT_DLLPRIVATE void ImplSetInfo(); + SVT_DLLPRIVATE void ImplSetImages(); + SVT_DLLPRIVATE bool ImplGetFilename(); + + DECL_DLLPRIVATE_LINK( ImplPropertiesHdl, void* ); + DECL_DLLPRIVATE_LINK( ImplChangePrinterHdl, void* ); + DECL_DLLPRIVATE_LINK( ImplModifyControlHdl, void* ); + DECL_DLLPRIVATE_LINK( ImplStatusHdl, Timer* ); + +public: + PrintDialog( Window* pWindow, bool bWithSheetsAndCells ); + ~PrintDialog(); + + virtual long OK(); + virtual long ClickOptionsHdl(); + + void SetPrinter( Printer* pNewPrinter ) { mpPrinter = pNewPrinter; } + Printer* GetPrinter() const { return mpPrinter; } + + inline bool IsSheetRangeAvailable() const { return mbWithSheetsAndCells; } + void EnableSheetRange( bool bEnable, PrintSheetRange eRange ); + bool IsSheetRangeEnabled( PrintSheetRange eRange ) const; + void CheckSheetRange( PrintSheetRange eRange ); + PrintSheetRange GetCheckedSheetRange() const; + bool IsSheetRangeChecked( PrintSheetRange eRange ) const; + + void EnableRange( PrintDialogRange eRange ); + void DisableRange( PrintDialogRange eRange ); + BOOL IsRangeEnabled( PrintDialogRange eRange ) const; + + void CheckRange( PrintDialogRange eRange = PRINTDIALOG_ALL ) + { meCheckRange = eRange; } + PrintDialogRange GetCheckedRange() const { return meCheckRange; } + BOOL IsRangeChecked( PrintDialogRange eRange ) const; + + void SetRangeText( const XubString& rRange ) { maRangeText = rRange; } + const XubString& GetRangeText() const { return maRangeText; } + + void SetFirstPage( USHORT nPage = 0 ); + USHORT GetFirstPage() const { return mnFirstPage; } + void SetLastPage( USHORT nPage = 0 ); + USHORT GetLastPage() const { return mnLastPage; } + + void SetMinPage( USHORT nPage = 1 ) { mnMinPage = nPage; } + USHORT GetMinPage() const { return mnMinPage; } + void SetMaxPage( USHORT nPage = 65535 ) { mnMaxPage = nPage; } + USHORT GetMaxPage() const { return mnMaxPage; } + + void SetCopyCount( USHORT nCopies = 1 ) { mnCopyCount = nCopies; } + USHORT GetCopyCount() const { return mnCopyCount; } + + void EnableCollate( BOOL bEnable = TRUE ) + { mbCollate = bEnable; } + BOOL IsCollateEnabled() const { return mbCollate; } + void CheckCollate( BOOL bCheck = TRUE ) + { mbCollateCheck = bCheck; } + BOOL IsCollateChecked() const { return mbCollateCheck; } + + void ShowOptionsButton( BOOL bShow = TRUE ) + { mbOptions = bShow; } + BOOL IsOptionsButtonVisible() const { return mbOptions; } + + void SetOptionsHdl( const Link& rLink ) { maOptionsHdlLink = rLink; } + const Link& GetOptionsHdl() const { return maOptionsHdlLink; } + + void SetOKHdl( const Link& rLink ) { maOKHdlLink = rLink; } + const Link& GetOKHdl() const { return maOKHdlLink; } + + virtual void DataChanged( const DataChangedEvent& rDCEvt ); + virtual long Notify( NotifyEvent& rNEvt ); + + virtual short Execute(); + + void DisableHelp(); +}; + +inline void PrintDialog::EnableRange( PrintDialogRange eRange ) +{ + if ( eRange == PRINTDIALOG_ALL ) + mbAll = TRUE; + else if ( eRange == PRINTDIALOG_SELECTION ) + mbSelection = TRUE; + else if ( eRange == PRINTDIALOG_FROMTO ) + mbFromTo = TRUE; + else + mbRange = TRUE; +} + +inline void PrintDialog::DisableRange( PrintDialogRange eRange ) +{ + if ( eRange == PRINTDIALOG_ALL ) + mbAll = FALSE; + else if ( eRange == PRINTDIALOG_SELECTION ) + mbSelection = FALSE; + else if ( eRange == PRINTDIALOG_FROMTO ) + mbFromTo = FALSE; + else + mbRange = FALSE; +} + +inline BOOL PrintDialog::IsRangeEnabled( PrintDialogRange eRange ) const +{ + BOOL bRet; + + if ( eRange == PRINTDIALOG_ALL ) + bRet = mbAll; + else if ( eRange == PRINTDIALOG_SELECTION ) + bRet = mbSelection; + else if ( eRange == PRINTDIALOG_FROMTO ) + bRet = mbFromTo; + else + bRet = mbRange; + + return bRet; +} + +inline BOOL PrintDialog::IsRangeChecked( PrintDialogRange eRange ) const +{ + if ( eRange == meCheckRange ) + return TRUE; + else + return FALSE; +} + +inline void PrintDialog::SetFirstPage( USHORT nPage ) +{ + mnFirstPage = nPage; + if ( nPage && (nPage < mnMinPage) ) + mnMinPage = nPage; +} + +inline void PrintDialog::SetLastPage( USHORT nPage ) +{ + mnLastPage = nPage; + if ( nPage && (nPage > mnMaxPage) ) + mnMaxPage = nPage; +} + +#endif // _SV_PRINTDLG_HXX_ + |