diff options
Diffstat (limited to 'sd/source/ui/dlg/prntopts.cxx')
-rw-r--r-- | sd/source/ui/dlg/prntopts.cxx | 327 |
1 files changed, 327 insertions, 0 deletions
diff --git a/sd/source/ui/dlg/prntopts.cxx b/sd/source/ui/dlg/prntopts.cxx new file mode 100644 index 000000000000..ea7a702e539e --- /dev/null +++ b/sd/source/ui/dlg/prntopts.cxx @@ -0,0 +1,327 @@ +/************************************************************************* + * + * 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. + * + ************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_sd.hxx" + +#ifdef SD_DLLIMPLEMENTATION +#undef SD_DLLIMPLEMENTATION +#endif + + +#include "sdattr.hxx" +#include "optsitem.hxx" +#include "prntopts.hrc" +#include "sdresid.hxx" +#include "prntopts.hxx" +#include "app.hrc" +#include <svl/intitem.hxx> +#include <sfx2/request.hxx> +// STATIC DATA ----------------------------------------------------------- + +static USHORT pPrintOptRanges[] = +{ + ATTR_OPTIONS_PRINT, + ATTR_OPTIONS_PRINT, + 0 +}; + + +/************************************************************************* +|* +|* Dialog zum Aendern der Print-Optionen +|* +\************************************************************************/ + +SdPrintOptions::SdPrintOptions( Window* pParent, const SfxItemSet& rInAttrs ) : + SfxTabPage ( pParent, SdResId( TP_PRINT_OPTIONS ), rInAttrs ), + + aGrpPrint ( this, SdResId( GRP_PRINT ) ), + aCbxDraw ( this, SdResId( CBX_DRAW ) ), + aCbxNotes ( this, SdResId( CBX_NOTES ) ), + aCbxHandout ( this, SdResId( CBX_HANDOUTS ) ), + aCbxOutline ( this, SdResId( CBX_OUTLINE ) ), + + aSeparator1FL ( this, SdResId( FL_SEPARATOR1 ) ), + aGrpOutput ( this, SdResId( GRP_OUTPUT ) ), + aRbtColor ( this, SdResId( RBT_COLOR ) ), + aRbtGrayscale ( this, SdResId( RBT_GRAYSCALE ) ), + aRbtBlackWhite ( this, SdResId( RBT_BLACKWHITE ) ), + + aGrpPrintExt ( this, SdResId( GRP_PRINT_EXT ) ), + aCbxPagename ( this, SdResId( CBX_PAGENAME ) ), + aCbxDate ( this, SdResId( CBX_DATE ) ), + aCbxTime ( this, SdResId( CBX_TIME ) ), + aCbxHiddenPages ( this, SdResId( CBX_HIDDEN_PAGES ) ), + + aSeparator2FL ( this, SdResId( FL_SEPARATOR2 ) ), + aGrpPageoptions ( this, SdResId( GRP_PAGE ) ), + aRbtDefault ( this, SdResId( RBT_DEFAULT ) ), + aRbtPagesize ( this, SdResId( RBT_PAGESIZE ) ), + aRbtPagetile ( this, SdResId( RBT_PAGETILE ) ), + aRbtBooklet ( this, SdResId( RBT_BOOKLET ) ), + aCbxFront ( this, SdResId( CBX_FRONT ) ), + aCbxBack ( this, SdResId( CBX_BACK ) ), + + aCbxPaperbin ( this, SdResId( CBX_PAPERBIN ) ), + + rOutAttrs ( rInAttrs ) +{ + FreeResource(); + + Link aLink = LINK( this, SdPrintOptions, ClickBookletHdl ); + aRbtDefault.SetClickHdl( aLink ); + aRbtPagesize.SetClickHdl( aLink ); + aRbtPagetile.SetClickHdl( aLink ); + aRbtBooklet.SetClickHdl( aLink ); + + aLink = LINK( this, SdPrintOptions, ClickCheckboxHdl ); + aCbxDraw.SetClickHdl( aLink ); + aCbxNotes.SetClickHdl( aLink ); + aCbxHandout.SetClickHdl( aLink ); + aCbxOutline.SetClickHdl( aLink ); + +#ifndef QUARTZ + SetDrawMode(); +#endif +} + +// ----------------------------------------------------------------------- + +SdPrintOptions::~SdPrintOptions() +{ +} + +// ----------------------------------------------------------------------- + +BOOL SdPrintOptions::FillItemSet( SfxItemSet& rAttrs ) +{ + if( aCbxDraw.GetSavedValue() != aCbxDraw.IsChecked() || + aCbxNotes.GetSavedValue() != aCbxNotes.IsChecked() || + aCbxHandout.GetSavedValue() != aCbxHandout.IsChecked() || + aCbxOutline.GetSavedValue() != aCbxOutline.IsChecked() || + aCbxDate.GetSavedValue() != aCbxDate.IsChecked() || + aCbxTime.GetSavedValue() != aCbxTime.IsChecked() || + aCbxPagename.GetSavedValue() != aCbxPagename.IsChecked() || + aCbxHiddenPages.GetSavedValue() != aCbxHiddenPages.IsChecked() || + aRbtPagesize.GetSavedValue() != aRbtPagesize.IsChecked() || + aRbtPagetile.GetSavedValue() != aRbtPagetile.IsChecked() || + aRbtBooklet.GetSavedValue() != aRbtBooklet.IsChecked() || + aCbxFront.GetSavedValue() != aCbxFront.IsChecked() || + aCbxBack.GetSavedValue() != aCbxBack.IsChecked() || + aCbxPaperbin.GetSavedValue() != aCbxPaperbin.IsChecked() || + aRbtColor.GetSavedValue() != aRbtColor.IsChecked() || + aRbtGrayscale.GetSavedValue() != aRbtGrayscale.IsChecked() || + aRbtBlackWhite.GetSavedValue() != aRbtBlackWhite.IsChecked() ) + { + SdOptionsPrintItem aOptions( ATTR_OPTIONS_PRINT ); + + aOptions.GetOptionsPrint().SetDraw( aCbxDraw.IsChecked() ); + aOptions.GetOptionsPrint().SetNotes( aCbxNotes.IsChecked() ); + aOptions.GetOptionsPrint().SetHandout( aCbxHandout.IsChecked() ); + aOptions.GetOptionsPrint().SetOutline( aCbxOutline.IsChecked() ); + aOptions.GetOptionsPrint().SetDate( aCbxDate.IsChecked() ); + aOptions.GetOptionsPrint().SetTime( aCbxTime.IsChecked() ); + aOptions.GetOptionsPrint().SetPagename( aCbxPagename.IsChecked() ); + aOptions.GetOptionsPrint().SetHiddenPages( aCbxHiddenPages.IsChecked() ); + aOptions.GetOptionsPrint().SetPagesize( aRbtPagesize.IsChecked() ); + aOptions.GetOptionsPrint().SetPagetile( aRbtPagetile.IsChecked() ); + aOptions.GetOptionsPrint().SetBooklet( aRbtBooklet.IsChecked() ); + aOptions.GetOptionsPrint().SetFrontPage( aCbxFront.IsChecked() ); + aOptions.GetOptionsPrint().SetBackPage( aCbxBack.IsChecked() ); + aOptions.GetOptionsPrint().SetPaperbin( aCbxPaperbin.IsChecked() ); + + UINT16 nQuality = 0; // Standard, also Color + if( aRbtGrayscale.IsChecked() ) + nQuality = 1; + if( aRbtBlackWhite.IsChecked() ) + nQuality = 2; + aOptions.GetOptionsPrint().SetOutputQuality( nQuality ); + + rAttrs.Put( aOptions ); + + return( TRUE ); + } + return( FALSE ); +} + +// ----------------------------------------------------------------------- + +void SdPrintOptions::Reset( const SfxItemSet& rAttrs ) +{ + const SdOptionsPrintItem* pPrintOpts = NULL; + if( SFX_ITEM_SET == rAttrs.GetItemState( ATTR_OPTIONS_PRINT, FALSE, + (const SfxPoolItem**) &pPrintOpts ) ) + { + aCbxDraw.Check( pPrintOpts->GetOptionsPrint().IsDraw() ); + aCbxNotes.Check( pPrintOpts->GetOptionsPrint().IsNotes() ); + aCbxHandout.Check( pPrintOpts->GetOptionsPrint().IsHandout() ); + aCbxOutline.Check( pPrintOpts->GetOptionsPrint().IsOutline() ); + aCbxDate.Check( pPrintOpts->GetOptionsPrint().IsDate() ); + aCbxTime.Check( pPrintOpts->GetOptionsPrint().IsTime() ); + aCbxPagename.Check( pPrintOpts->GetOptionsPrint().IsPagename() ); + aCbxHiddenPages.Check( pPrintOpts->GetOptionsPrint().IsHiddenPages() ); + aRbtPagesize.Check( pPrintOpts->GetOptionsPrint().IsPagesize() ); + aRbtPagetile.Check( pPrintOpts->GetOptionsPrint().IsPagetile() ); + aRbtBooklet.Check( pPrintOpts->GetOptionsPrint().IsBooklet() ); + aCbxFront.Check( pPrintOpts->GetOptionsPrint().IsFrontPage() ); + aCbxBack.Check( pPrintOpts->GetOptionsPrint().IsBackPage() ); + aCbxPaperbin.Check( pPrintOpts->GetOptionsPrint().IsPaperbin() ); + + if( !aRbtPagesize.IsChecked() && + !aRbtPagetile.IsChecked() && + !aRbtBooklet.IsChecked() ) + { + aRbtDefault.Check(); + } + + UINT16 nQuality = pPrintOpts->GetOptionsPrint().GetOutputQuality(); + if( nQuality == 0 ) + aRbtColor.Check(); + else if( nQuality == 1 ) + aRbtGrayscale.Check(); + else + aRbtBlackWhite.Check(); + } + aCbxDraw.SaveValue(); + aCbxNotes.SaveValue(); + aCbxHandout.SaveValue(); + aCbxOutline.SaveValue(); + aCbxDate.SaveValue(); + aCbxTime.SaveValue(); + aCbxPagename.SaveValue(); + aCbxHiddenPages.SaveValue(); + aRbtPagesize.SaveValue(); + aRbtPagetile.SaveValue(); + aRbtBooklet.SaveValue(); + aCbxPaperbin.SaveValue(); + aRbtColor.SaveValue(); + aRbtGrayscale.SaveValue(); + aRbtBlackWhite.SaveValue(); + + ClickBookletHdl( NULL ); +} + +// ----------------------------------------------------------------------- + +SfxTabPage* SdPrintOptions::Create( Window* pWindow, + const SfxItemSet& rOutAttrs ) +{ + return( new SdPrintOptions( pWindow, rOutAttrs ) ); +} + +//----------------------------------------------------------------------- + +USHORT* SdPrintOptions::GetRanges() +{ + return pPrintOptRanges; +} + +//----------------------------------------------------------------------- + +IMPL_LINK( SdPrintOptions, ClickCheckboxHdl, CheckBox *, pCbx ) +{ + // there must be at least one of them checked + if( !aCbxDraw.IsChecked() && !aCbxNotes.IsChecked() && !aCbxOutline.IsChecked() && !aCbxHandout.IsChecked() ) + pCbx->Check(); + + updateControls(); + return 0; +} + +//----------------------------------------------------------------------- + +IMPL_LINK( SdPrintOptions, ClickBookletHdl, CheckBox *, EMPTYARG ) +{ + updateControls(); + return 0; +} + +void SdPrintOptions::updateControls() +{ + aCbxFront.Enable(aRbtBooklet.IsChecked()); + aCbxBack.Enable(aRbtBooklet.IsChecked()); + + aCbxDate.Enable( !aRbtBooklet.IsChecked() ); + aCbxTime.Enable( !aRbtBooklet.IsChecked() ); + + aCbxPagename.Enable( !aRbtBooklet.IsChecked() && (aCbxDraw.IsChecked() || aCbxNotes.IsChecked() || aCbxOutline.IsChecked()) ); +} + +/* -----------------------------04.05.01 10:53-------------------------------- + + ---------------------------------------------------------------------------*/ +void lcl_MoveRB_Impl(Window& rBtn, long nXDiff) +{ + Point aPos(rBtn.GetPosPixel()); + aPos.X() -= nXDiff; + rBtn.SetPosPixel(aPos); +} + +void SdPrintOptions::SetDrawMode() +{ + if(aCbxNotes.IsVisible()) + { + aCbxNotes.Hide(); + aCbxHandout.Hide(); + aCbxOutline.Hide(); + aCbxDraw.Hide(); + aGrpPrint.Hide(); + + aSeparator1FL.Hide(); + long nXDiff = aGrpOutput.GetPosPixel().X() - aGrpPrint.GetPosPixel().X(); + lcl_MoveRB_Impl(aRbtColor, nXDiff); + lcl_MoveRB_Impl(aRbtGrayscale, nXDiff); + lcl_MoveRB_Impl(aRbtBlackWhite, nXDiff); + lcl_MoveRB_Impl(aGrpOutput, nXDiff); + + long nWidth = aGrpOutput.GetSizePixel().Width() + nXDiff; + Size aSize(aGrpOutput.GetSizePixel()); + aSize.Width() = nWidth; + aGrpOutput.SetSizePixel(aSize); + } +} + +void SdPrintOptions::PageCreated (SfxAllItemSet +#ifdef QUARTZ + aSet +#endif + ) +{ +#ifdef QUARTZ + SFX_ITEMSET_ARG (&aSet,pFlagItem,SfxUInt32Item,SID_SDMODE_FLAG,sal_False); + if (pFlagItem) + { + UINT32 nFlags=pFlagItem->GetValue(); + if ( ( nFlags & SD_DRAW_MODE ) == SD_DRAW_MODE ) + SetDrawMode(); + } +#else + SetDrawMode(); +#endif +} + |