From 2ecce5535e89ab84cc34d054520fa1cf8d05987c Mon Sep 17 00:00:00 2001
From: Jens-Heiner Rechtien
Date: Wed, 27 Jun 2007 14:45:34 +0000
Subject: [PATCH] INTEGRATION: CWS impress122 (1.33.74); FILE MERGED 2007/06/08
14:52:07 cl 1.33.74.1: #i75609# create printer only on demand
---
sd/source/ui/unoidl/UnoDocumentSettings.cxx | 257 ++++++++++++--------
1 file changed, 162 insertions(+), 95 deletions(-)
diff --git a/sd/source/ui/unoidl/UnoDocumentSettings.cxx b/sd/source/ui/unoidl/UnoDocumentSettings.cxx
index 8483293ba2fc..75da6e2848d7 100644
--- a/sd/source/ui/unoidl/UnoDocumentSettings.cxx
+++ b/sd/source/ui/unoidl/UnoDocumentSettings.cxx
@@ -4,9 +4,9 @@
*
* $RCSfile: UnoDocumentSettings.cxx,v $
*
- * $Revision: 1.33 $
+ * $Revision: 1.34 $
*
- * last change: $Author: vg $ $Date: 2007-01-09 11:34:17 $
+ * last change: $Author: hr $ $Date: 2007-06-27 15:45:34 $
*
* The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1.
@@ -311,25 +311,26 @@ void DocumentSettings::_setPropertyValues( const PropertyMapEntry** ppEntries, c
if( NULL == pDoc || NULL == pDocSh )
throw UnknownPropertyException();
- sal_Bool bOk, bChanged = sal_False, bValue = sal_False;
+ sal_Bool bOk, bChanged = sal_False, bValue = sal_False, bOptionsChanged = false;
- SfxPrinter* pPrinter = NULL;
- SdOptionsPrintItem* pPrinterOptions = NULL;
+ SdOptionsPrintItem aOptionsPrintItem( ATTR_OPTIONS_PRINT );
+
+ SfxPrinter* pPrinter = pDocSh->GetPrinter( FALSE );
+ if( pPrinter )
+ {
+ SdOptionsPrintItem* pPrinterOptions = NULL;
+ if(pPrinter->GetOptions().GetItemState( ATTR_OPTIONS_PRINT, FALSE, (const SfxPoolItem**) &pPrinterOptions) == SFX_ITEM_SET)
+ aOptionsPrintItem.GetOptionsPrint() = pPrinterOptions->GetOptionsPrint();
+ }
+ else
+ {
+ aOptionsPrintItem.SetOptions( SD_MOD()->GetSdOptions(pDoc->GetDocumentType()) );
+ }
+ SdOptionsPrint& aPrintOpts = aOptionsPrintItem.GetOptionsPrint();
for( ; *ppEntries; ppEntries++, pValues++ )
{
bOk = sal_False;
- if( ((*ppEntries)->mnMemberId == MID_PRINTER) && (pPrinter == NULL) )
- {
- pPrinter = pDocSh->GetPrinter( sal_True );
- if(pPrinter->GetOptions().GetItemState( ATTR_OPTIONS_PRINT, FALSE, (const SfxPoolItem**) &pPrinterOptions) != SFX_ITEM_SET)
- {
- DBG_ERROR( "could not get printer options!" );
- pPrinter = NULL;
- pPrinterOptions = NULL;
- continue;
- }
- }
switch( (*ppEntries)->mnHandle )
{
@@ -488,91 +489,146 @@ void DocumentSettings::_setPropertyValues( const PropertyMapEntry** ppEntries, c
case HANDLE_PRINTDRAWING:
if( *pValues >>= bValue )
{
- pPrinterOptions->GetOptionsPrint().SetDraw( bValue );
+ if( aPrintOpts.IsDraw() != bValue )
+ {
+ aPrintOpts.SetDraw( bValue );
+ bOptionsChanged = true;
+ }
+
bOk = sal_True;
}
break;
case HANDLE_PRINTNOTES:
if( *pValues >>= bValue )
{
- pPrinterOptions->GetOptionsPrint().SetNotes( bValue );
+ if( aPrintOpts.IsNotes() != bValue )
+ {
+ aPrintOpts.SetNotes( bValue );
+ bOptionsChanged = true;
+ }
+
bOk = sal_True;
}
break;
case HANDLE_PRINTHANDOUT:
if( *pValues >>= bValue )
{
- pPrinterOptions->GetOptionsPrint().SetHandout( bValue );
+ if( aPrintOpts.IsHandout() != bValue)
+ {
+ aPrintOpts.SetHandout( bValue );
+ bOptionsChanged = true;
+ }
+
bOk = sal_True;
}
break;
case HANDLE_PRINTOUTLINE:
if( *pValues >>= bValue )
{
- pPrinterOptions->GetOptionsPrint().SetOutline( bValue );
+ if( aPrintOpts.IsOutline() != bValue)
+ {
+ aPrintOpts.SetOutline( bValue );
+ bOptionsChanged = true;
+ }
bOk = sal_True;
}
break;
case HANDLE_PRINTPAGENAME:
if( *pValues >>= bValue )
{
- pPrinterOptions->GetOptionsPrint().SetPagename( bValue );
+ if( aPrintOpts.IsPagename() != bValue)
+ {
+ aPrintOpts.SetPagename( bValue );
+ bOptionsChanged = true;
+ }
bOk = sal_True;
}
break;
case HANDLE_PRINTDATE:
if( *pValues >>= bValue )
{
- pPrinterOptions->GetOptionsPrint().SetDate( bValue );
+ if( aPrintOpts.IsDate() != bValue)
+ {
+ aPrintOpts.SetDate( bValue );
+ bOptionsChanged = true;
+ }
bOk = sal_True;
}
break;
case HANDLE_PRINTTIME:
if( *pValues >>= bValue )
{
- pPrinterOptions->GetOptionsPrint().SetTime( bValue );
+ if( aPrintOpts.IsDate() != bValue)
+ {
+ aPrintOpts.SetTime( bValue );
+ bOptionsChanged = true;
+ }
bOk = sal_True;
}
break;
case HANDLE_PRINTHIDENPAGES:
if( *pValues >>= bValue )
{
- pPrinterOptions->GetOptionsPrint().SetHiddenPages( bValue );
+ if( aPrintOpts.IsHiddenPages() != bValue)
+ {
+ aPrintOpts.SetHiddenPages( bValue );
+ bOptionsChanged = true;
+ }
bOk = sal_True;
}
break;
case HANDLE_PRINTFITPAGE:
if( *pValues >>= bValue )
{
- pPrinterOptions->GetOptionsPrint().SetPagesize( bValue );
+ if( aPrintOpts.IsPagesize() != bValue)
+ {
+ aPrintOpts.SetPagesize( bValue );
+ bOptionsChanged = true;
+ }
bOk = sal_True;
}
break;
case HANDLE_PRINTTILEPAGE:
if( *pValues >>= bValue )
{
- pPrinterOptions->GetOptionsPrint().SetPagetile( bValue );
+ if( aPrintOpts.IsPagetile() != bValue)
+ {
+ aPrintOpts.SetPagetile( bValue );
+ bOptionsChanged = true;
+ }
bOk = sal_True;
}
break;
case HANDLE_PRINTBOOKLET:
if( *pValues >>= bValue )
{
- pPrinterOptions->GetOptionsPrint().SetBooklet( bValue );
+ if( aPrintOpts.IsBooklet() != bValue)
+ {
+ aPrintOpts.SetBooklet( bValue );
+ bOptionsChanged = true;
+ }
bOk = sal_True;
}
break;
case HANDLE_PRINTBOOKLETFRONT:
if( *pValues >>= bValue )
{
- pPrinterOptions->GetOptionsPrint().SetFrontPage( bValue );
+ if( aPrintOpts.IsFrontPage() != bValue)
+ {
+ aPrintOpts.SetFrontPage( bValue );
+ bOptionsChanged = true;
+ }
bOk = sal_True;
}
break;
case HANDLE_PRINTBOOKLETBACK:
if( *pValues >>= bValue )
{
- pPrinterOptions->GetOptionsPrint().SetBackPage( bValue );
+ if( aPrintOpts.IsBackPage() != bValue)
+ {
+ aPrintOpts.SetBackPage( bValue );
+ bOptionsChanged = true;
+ }
bOk = sal_True;
}
break;
@@ -581,7 +637,11 @@ void DocumentSettings::_setPropertyValues( const PropertyMapEntry** ppEntries, c
sal_Int32 nValue = 0;
if( *pValues >>= nValue )
{
- pPrinterOptions->GetOptionsPrint().SetOutputQuality( (sal_uInt16)nValue );
+ if( aPrintOpts.GetOutputQuality() != nValue)
+ {
+ aPrintOpts.SetOutputQuality( (sal_uInt16)nValue );
+ bOptionsChanged = true;
+ }
bOk = sal_True;
}
}
@@ -653,11 +713,14 @@ void DocumentSettings::_setPropertyValues( const PropertyMapEntry** ppEntries, c
if( *pValues >>= aPrinterName )
{
bOk = sal_True;
- SfxPrinter *pTempPrinter = pDocSh->GetPrinter( sal_True );
- if (pTempPrinter)
+ if( aPrinterName.getLength() )
{
- SfxPrinter *pNewPrinter = new SfxPrinter ( pTempPrinter->GetOptions().Clone(), aPrinterName );
- pDocSh->SetPrinter( pNewPrinter );
+ SfxPrinter *pTempPrinter = pDocSh->GetPrinter( sal_True );
+ if (pTempPrinter)
+ {
+ SfxPrinter *pNewPrinter = new SfxPrinter( pTempPrinter->GetOptions().Clone(), aPrinterName );
+ pDocSh->SetPrinter( pNewPrinter );
+ }
}
}
}
@@ -669,32 +732,35 @@ void DocumentSettings::_setPropertyValues( const PropertyMapEntry** ppEntries, c
{
bOk = sal_True;
sal_uInt32 nSize = aSequence.getLength();
- SvMemoryStream aStream (aSequence.getArray(), nSize, STREAM_READ );
- aStream.Seek ( STREAM_SEEK_TO_BEGIN );
- SfxItemSet* pItemSet;
-
- if( pPrinter )
+ if( nSize )
{
- pItemSet = pPrinter->GetOptions().Clone();
+ SvMemoryStream aStream (aSequence.getArray(), nSize, STREAM_READ );
+ aStream.Seek ( STREAM_SEEK_TO_BEGIN );
+ SfxItemSet* pItemSet;
+
+ if( pPrinter )
+ {
+ pItemSet = pPrinter->GetOptions().Clone();
+ }
+ else
+ {
+ pItemSet = new SfxItemSet(pDoc->GetPool(),
+ SID_PRINTER_NOTFOUND_WARN, SID_PRINTER_NOTFOUND_WARN,
+ SID_PRINTER_CHANGESTODOC, SID_PRINTER_CHANGESTODOC,
+ ATTR_OPTIONS_PRINT, ATTR_OPTIONS_PRINT,
+ 0 );
+ }
+
+ pPrinter = SfxPrinter::Create ( aStream, pItemSet );
+
+ MapMode aMM (pPrinter->GetMapMode());
+ aMM.SetMapUnit(MAP_100TH_MM);
+ pPrinter->SetMapMode(aMM);
+
+ pDocSh->SetPrinter( pPrinter );
+
+ pPrinter = NULL;
}
- else
- {
- pItemSet = new SfxItemSet(pDoc->GetPool(),
- SID_PRINTER_NOTFOUND_WARN, SID_PRINTER_NOTFOUND_WARN,
- SID_PRINTER_CHANGESTODOC, SID_PRINTER_CHANGESTODOC,
- ATTR_OPTIONS_PRINT, ATTR_OPTIONS_PRINT,
- 0 );
- }
-
- pPrinter = SfxPrinter::Create ( aStream, pItemSet );
-
- MapMode aMM (pPrinter->GetMapMode());
- aMM.SetMapUnit(MAP_100TH_MM);
- pPrinter->SetMapMode(aMM);
-
- pDocSh->SetPrinter( pPrinter );
-
- pPrinter = NULL;
}
}
break;
@@ -830,25 +896,22 @@ void DocumentSettings::_setPropertyValues( const PropertyMapEntry** ppEntries, c
default:
throw UnknownPropertyException();
-
}
if( !bOk )
throw IllegalArgumentException();
}
- if( pPrinter && pPrinterOptions )
+ if( bOptionsChanged )
{
+ if( !pPrinter )
+ pPrinter = pDocSh->GetPrinter( TRUE );
SfxItemSet aNewOptions( pPrinter->GetOptions() );
- SdOptionsPrintItem aOpts( *pPrinterOptions );
- aNewOptions.Put( aOpts );
+ aNewOptions.Put( aOptionsPrintItem );
pPrinter->SetOptions( aNewOptions );
-
- SdOptions* pOptions = SD_MOD()->GetSdOptions( pDoc->GetDocumentType() );
- pOptions->SetPrinterOptions( &aOpts.GetOptionsPrint() );
}
- if( bChanged )
+ if( bChanged || bOptionsChanged )
mpModel->SetModified( sal_True );
}
@@ -861,24 +924,23 @@ void DocumentSettings::_getPropertyValues( const PropertyMapEntry** ppEntries, A
if( NULL == pDoc || NULL == pDocSh )
throw UnknownPropertyException();
- SfxPrinter* pPrinter = NULL;
- SdOptionsPrintItem* pPrinterOptions = NULL;
+ SdOptionsPrintItem aOptionsPrintItem( ATTR_OPTIONS_PRINT );
+
+ SfxPrinter* pPrinter = pDocSh->GetPrinter( FALSE );
+ if( pPrinter )
+ {
+ SdOptionsPrintItem* pPrinterOptions = NULL;
+ if(pPrinter->GetOptions().GetItemState( ATTR_OPTIONS_PRINT, FALSE, (const SfxPoolItem**) &pPrinterOptions) == SFX_ITEM_SET)
+ aOptionsPrintItem.GetOptionsPrint() = pPrinterOptions->GetOptionsPrint();
+ }
+ else
+ {
+ aOptionsPrintItem.SetOptions( SD_MOD()->GetSdOptions(pDoc->GetDocumentType()) );
+ }
+ SdOptionsPrint& aPrintOpts = aOptionsPrintItem.GetOptionsPrint();
for( ; *ppEntries; ppEntries++, pValue++ )
{
-
- if( (*ppEntries)->mnMemberId == MID_PRINTER && pPrinter == NULL )
- {
- pPrinter = pDocSh->GetPrinter( sal_True );
- if(pPrinter->GetOptions().GetItemState( ATTR_OPTIONS_PRINT, FALSE, (const SfxPoolItem**) &pPrinterOptions) != SFX_ITEM_SET)
- {
- DBG_ERROR( "could not get printer options!" );
- pPrinter = NULL;
- pPrinterOptions = NULL;
- continue;
- }
- }
-
switch( (*ppEntries)->mnHandle )
{
case HANDLE_COLORTABLEURL:
@@ -950,46 +1012,46 @@ void DocumentSettings::_getPropertyValues( const PropertyMapEntry** ppEntries, A
break;
case HANDLE_PRINTDRAWING:
- *pValue <<= (sal_Bool)pPrinterOptions->GetOptionsPrint().IsDraw();
+ *pValue <<= (sal_Bool)aPrintOpts.IsDraw();
break;
case HANDLE_PRINTNOTES:
- *pValue <<= (sal_Bool)pPrinterOptions->GetOptionsPrint().IsNotes();
+ *pValue <<= (sal_Bool)aPrintOpts.IsNotes();
break;
case HANDLE_PRINTHANDOUT:
- *pValue <<= (sal_Bool)pPrinterOptions->GetOptionsPrint().IsHandout();
+ *pValue <<= (sal_Bool)aPrintOpts.IsHandout();
break;
case HANDLE_PRINTOUTLINE:
- *pValue <<= (sal_Bool)pPrinterOptions->GetOptionsPrint().IsOutline();
+ *pValue <<= (sal_Bool)aPrintOpts.IsOutline();
break;
case HANDLE_PRINTPAGENAME:
- *pValue <<= (sal_Bool)pPrinterOptions->GetOptionsPrint().IsPagename();
+ *pValue <<= (sal_Bool)aPrintOpts.IsPagename();
break;
case HANDLE_PRINTDATE:
- *pValue <<= (sal_Bool)pPrinterOptions->GetOptionsPrint().IsDate();
+ *pValue <<= (sal_Bool)aPrintOpts.IsDate();
break;
case HANDLE_PRINTTIME:
- *pValue <<= (sal_Bool)pPrinterOptions->GetOptionsPrint().IsTime();
+ *pValue <<= (sal_Bool)aPrintOpts.IsTime();
break;
case HANDLE_PRINTHIDENPAGES:
- *pValue <<= (sal_Bool)pPrinterOptions->GetOptionsPrint().IsHiddenPages();
+ *pValue <<= (sal_Bool)aPrintOpts.IsHiddenPages();
break;
case HANDLE_PRINTFITPAGE:
- *pValue <<= (sal_Bool)pPrinterOptions->GetOptionsPrint().IsPagesize();
+ *pValue <<= (sal_Bool)aPrintOpts.IsPagesize();
break;
case HANDLE_PRINTTILEPAGE:
- *pValue <<= (sal_Bool)pPrinterOptions->GetOptionsPrint().IsPagetile();
+ *pValue <<= (sal_Bool)aPrintOpts.IsPagetile();
break;
case HANDLE_PRINTBOOKLET:
- *pValue <<= (sal_Bool)pPrinterOptions->GetOptionsPrint().IsBooklet();
+ *pValue <<= (sal_Bool)aPrintOpts.IsBooklet();
break;
case HANDLE_PRINTBOOKLETFRONT:
- *pValue <<= (sal_Bool)pPrinterOptions->GetOptionsPrint().IsFrontPage();
+ *pValue <<= (sal_Bool)aPrintOpts.IsFrontPage();
break;
case HANDLE_PRINTBOOKLETBACK:
- *pValue <<= (sal_Bool)pPrinterOptions->GetOptionsPrint().IsBackPage();
+ *pValue <<= (sal_Bool)aPrintOpts.IsBackPage();
break;
case HANDLE_PRINTQUALITY:
- *pValue <<= (sal_Int32)pPrinterOptions->GetOptionsPrint().GetOutputQuality();
+ *pValue <<= (sal_Int32)aPrintOpts.GetOutputQuality();
break;
case HANDLE_MEASUREUNIT:
{
@@ -1030,6 +1092,11 @@ void DocumentSettings::_getPropertyValues( const PropertyMapEntry** ppEntries, A
memcpy ( aSequence.getArray(), aStream.GetData(), nSize );
*pValue <<= aSequence;
}
+ else
+ {
+ Sequence < sal_Int8 > aSequence;
+ *pValue <<= aSequence;
+ }
}
break;