1 /**************************************************************
2 *
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements. See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership. The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License. You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied. See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
19 *
20 *************************************************************/
21
22
23
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_sd.hxx"
26
27 #include <vector>
28 #include <com/sun/star/lang/XServiceInfo.hpp>
29 #include <com/sun/star/beans/XPropertySet.hpp>
30 #include <com/sun/star/beans/XMultiPropertySet.hpp>
31 #include <com/sun/star/i18n/XForbiddenCharacters.hpp>
32 #include <cppuhelper/implbase3.hxx>
33 #include <comphelper/propertysethelper.hxx>
34 #include <comphelper/propertysetinfo.hxx>
35 #include <tools/urlobj.hxx>
36 #include <svx/xtable.hxx>
37 #include <osl/diagnose.h>
38 #include <osl/mutex.hxx>
39 #include <vos/mutex.hxx>
40 #include <vcl/svapp.hxx>
41
42 #include "drawdoc.hxx"
43 #ifndef SVX_LIGHT
44 #ifndef SD_DRAW_DOC_SHELL_HXX
45 #include "DrawDocShell.hxx"
46 #endif
47 #endif
48 #include "unomodel.hxx"
49
50 #ifndef SVX_LIGHT
51 #ifndef _SD_OPTSITEM_HXX
52 #include "optsitem.hxx"
53 #endif
54 #include <sfx2/printer.hxx>
55 #include "sdattr.hxx"
56 #endif
57 #include "../inc/ViewShell.hxx"
58 #include "../inc/FrameView.hxx"
59 #ifndef SVX_LIGHT
60 #ifndef SD_OUTLINER_HXX
61 #include "Outliner.hxx"
62 #endif
63 #else
64 #include <svx/svdoutl.hxx>
65 #endif
66 #include <editeng/editstat.hxx>
67 #include <svx/unoapi.hxx>
68
69 #define MAP_LEN(x) x, sizeof(x)-1
70
71 using namespace ::comphelper;
72 using namespace ::osl;
73 using ::rtl::OUString;
74 using namespace ::cppu;
75 using namespace ::vos;
76 using namespace ::com::sun::star;
77 using namespace ::com::sun::star::uno;
78 using namespace ::com::sun::star::util;
79 using namespace ::com::sun::star::container;
80 using namespace ::com::sun::star::drawing;
81 using namespace ::com::sun::star::lang;
82 using namespace ::com::sun::star::document;
83 using namespace ::com::sun::star::frame;
84 using namespace ::com::sun::star::beans;
85 using namespace ::com::sun::star::i18n;
86
87 namespace sd
88 {
89 class DocumentSettings : public WeakImplHelper3< XPropertySet, XMultiPropertySet, XServiceInfo >,
90 public comphelper::PropertySetHelper
91 {
92 public:
93 DocumentSettings( SdXImpressDocument* pModel );
94 virtual ~DocumentSettings() throw();
95
96 // XInterface
97 virtual Any SAL_CALL queryInterface( const Type& aType ) throw (RuntimeException);
98 virtual void SAL_CALL acquire( ) throw ();
99 virtual void SAL_CALL release( ) throw ();
100
101 // XPropertySet
102 virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException);
103 virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
104 virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
105 virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& xListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
106 virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
107 virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
108 virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
109
110 // XMultiPropertySet
111 // virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException);
112 virtual void SAL_CALL setPropertyValues( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames, const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aValues ) throw(::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
113 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > SAL_CALL getPropertyValues( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames ) throw(::com::sun::star::uno::RuntimeException);
114 virtual void SAL_CALL addPropertiesChangeListener( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener ) throw(::com::sun::star::uno::RuntimeException);
115 virtual void SAL_CALL removePropertiesChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener ) throw(::com::sun::star::uno::RuntimeException);
116 virtual void SAL_CALL firePropertiesChangeEvent( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener ) throw(::com::sun::star::uno::RuntimeException);
117
118 // XServiceInfo
119 virtual OUString SAL_CALL getImplementationName( ) throw(RuntimeException);
120 virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) throw(RuntimeException);
121 virtual Sequence< OUString > SAL_CALL getSupportedServiceNames( ) throw(RuntimeException);
122
123 protected:
124 virtual void _setPropertyValues( const comphelper::PropertyMapEntry** ppEntries, const ::com::sun::star::uno::Any* pValues ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException );
125 virtual void _getPropertyValues( const comphelper::PropertyMapEntry** ppEntries, ::com::sun::star::uno::Any* pValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException );
126
127 private:
128 Reference< XModel > mxModel;
129 SdXImpressDocument* mpModel;
130 };
131
DocumentSettings_createInstance(SdXImpressDocument * pModel)132 Reference< XInterface > SAL_CALL DocumentSettings_createInstance( SdXImpressDocument* pModel )
133 throw( Exception )
134 {
135 DBG_ASSERT( pModel, "I need a model for the DocumentSettings!" );
136 return (XWeak*)new DocumentSettings( pModel );
137 }
138
139 enum SdDocumentSettingsPropertyHandles
140 {
141 HANDLE_PRINTDRAWING, HANDLE_PRINTNOTES, HANDLE_PRINTHANDOUT, HANDLE_PRINTOUTLINE, HANDLE_MEASUREUNIT, HANDLE_SCALE_NUM,
142 HANDLE_SCALE_DOM, HANDLE_TABSTOP, HANDLE_PRINTPAGENAME, HANDLE_PRINTDATE, HANDLE_PRINTTIME,
143 HANDLE_PRINTHIDENPAGES, HANDLE_PRINTFITPAGE, HANDLE_PRINTTILEPAGE, HANDLE_PRINTBOOKLET, HANDLE_PRINTBOOKLETFRONT,
144 HANDLE_PRINTBOOKLETBACK, HANDLE_PRINTQUALITY, HANDLE_COLORTABLEURL, HANDLE_DASHTABLEURL, HANDLE_LINEENDTABLEURL, HANDLE_HATCHTABLEURL,
145 HANDLE_GRADIENTTABLEURL, HANDLE_BITMAPTABLEURL, HANDLE_FORBIDDENCHARS, HANDLE_APPLYUSERDATA, HANDLE_PAGENUMFMT,
146 HANDLE_PRINTERNAME, HANDLE_PRINTERJOB, HANDLE_PARAGRAPHSUMMATION, HANDLE_CHARCOMPRESS, HANDLE_ASIANPUNCT, HANDLE_UPDATEFROMTEMPLATE,
147 HANDLE_PRINTER_INDEPENDENT_LAYOUT
148 // --> PB 2004-08-23 #i33095#
149 ,HANDLE_LOAD_READONLY, HANDLE_SAVE_VERSION
150 // <--
151 ,HANDLE_SLIDESPERHANDOUT, HANDLE_HANDOUTHORIZONTAL
152 };
153
154 #define MID_PRINTER 1
155
createSettingsInfoImpl(sal_Bool bIsDraw)156 PropertySetInfo* createSettingsInfoImpl( sal_Bool bIsDraw )
157 {
158 static PropertyMapEntry aImpressSettingsInfoMap[] =
159 {
160 { MAP_LEN("IsPrintDrawing"), HANDLE_PRINTDRAWING, &::getBooleanCppuType(), 0, MID_PRINTER },
161 { MAP_LEN("IsPrintNotes"), HANDLE_PRINTNOTES, &::getBooleanCppuType(), 0, MID_PRINTER },
162 { MAP_LEN("IsPrintHandout"), HANDLE_PRINTHANDOUT, &::getBooleanCppuType(), 0, MID_PRINTER },
163 { MAP_LEN("IsPrintOutline"), HANDLE_PRINTOUTLINE, &::getBooleanCppuType(), 0, MID_PRINTER },
164 { MAP_LEN("SlidesPerHandout"), HANDLE_SLIDESPERHANDOUT, &::getCppuType((const sal_Int16*)0), 0, MID_PRINTER },
165 { MAP_LEN("HandoutsHorizontal"), HANDLE_HANDOUTHORIZONTAL, &::getBooleanCppuType(), 0, MID_PRINTER },
166 { NULL, 0, 0, NULL, 0, 0 }
167 };
168
169 static PropertyMapEntry aDrawSettingsInfoMap[] =
170 {
171 { MAP_LEN("MeasureUnit"), HANDLE_MEASUREUNIT, &::getCppuType((const sal_Int16*)0), 0, 0 },
172 { MAP_LEN("ScaleNumerator"), HANDLE_SCALE_NUM, &::getCppuType((const sal_Int32*)0), 0, 0 },
173 { MAP_LEN("ScaleDenominator"), HANDLE_SCALE_DOM, &::getCppuType((const sal_Int32*)0), 0, 0 },
174 { NULL, 0, 0, NULL, 0, 0 }
175 };
176
177 static PropertyMapEntry aCommonSettingsInfoMap[] =
178 {
179 { MAP_LEN("DefaultTabStop"), HANDLE_TABSTOP, &::getCppuType((const sal_Int32*)0), 0, 0 },
180 { MAP_LEN("PrinterName"), HANDLE_PRINTERNAME, &::getCppuType((const OUString*)0), 0, 0 },
181 { MAP_LEN("PrinterSetup"), HANDLE_PRINTERJOB, &::getCppuType((const uno::Sequence < sal_Int8 > *)0), 0, MID_PRINTER },
182 #ifndef SVX_LIGHT
183
184 { MAP_LEN("IsPrintPageName"), HANDLE_PRINTPAGENAME, &::getBooleanCppuType(), 0, MID_PRINTER },
185 { MAP_LEN("IsPrintDate"), HANDLE_PRINTDATE, &::getBooleanCppuType(), 0, MID_PRINTER },
186 { MAP_LEN("IsPrintTime"), HANDLE_PRINTTIME, &::getBooleanCppuType(), 0, MID_PRINTER },
187 { MAP_LEN("IsPrintHiddenPages"), HANDLE_PRINTHIDENPAGES, &::getBooleanCppuType(), 0, MID_PRINTER },
188 { MAP_LEN("IsPrintFitPage"), HANDLE_PRINTFITPAGE, &::getBooleanCppuType(), 0, MID_PRINTER },
189 { MAP_LEN("IsPrintTilePage"), HANDLE_PRINTTILEPAGE, &::getBooleanCppuType(), 0, MID_PRINTER },
190 { MAP_LEN("IsPrintBooklet"), HANDLE_PRINTBOOKLET, &::getBooleanCppuType(), 0, MID_PRINTER },
191 { MAP_LEN("IsPrintBookletFront"), HANDLE_PRINTBOOKLETFRONT, &::getBooleanCppuType(), 0, MID_PRINTER },
192 { MAP_LEN("IsPrintBookletBack"), HANDLE_PRINTBOOKLETBACK, &::getBooleanCppuType(), 0, MID_PRINTER },
193 { MAP_LEN("PrintQuality"), HANDLE_PRINTQUALITY, &::getCppuType((const sal_Int32*)0), 0, MID_PRINTER },
194 #endif
195 { MAP_LEN("ColorTableURL"), HANDLE_COLORTABLEURL, &::getCppuType((const OUString*)0), 0, 0 },
196 { MAP_LEN("DashTableURL"), HANDLE_DASHTABLEURL, &::getCppuType((const OUString*)0), 0, 0 },
197 { MAP_LEN("LineEndTableURL"), HANDLE_LINEENDTABLEURL, &::getCppuType((const OUString*)0), 0, 0 },
198 { MAP_LEN("HatchTableURL"), HANDLE_HATCHTABLEURL, &::getCppuType((const OUString*)0), 0, 0 },
199 { MAP_LEN("GradientTableURL"), HANDLE_GRADIENTTABLEURL, &::getCppuType((const OUString*)0), 0, 0 },
200 { MAP_LEN("BitmapTableURL"), HANDLE_BITMAPTABLEURL, &::getCppuType((const OUString*)0), 0, 0 },
201
202 { MAP_LEN("ForbiddenCharacters"), HANDLE_FORBIDDENCHARS, &::getCppuType((const Reference< XForbiddenCharacters >*)0), 0, 0 },
203 { MAP_LEN("ApplyUserData"), HANDLE_APPLYUSERDATA, &::getBooleanCppuType(), 0, 0 },
204
205 { MAP_LEN("PageNumberFormat"), HANDLE_PAGENUMFMT, &::getCppuType((const sal_Int32*)0), 0, 0 },
206 { MAP_LEN("ParagraphSummation"), HANDLE_PARAGRAPHSUMMATION, &::getBooleanCppuType(), 0, 0 },
207 { MAP_LEN("CharacterCompressionType"),HANDLE_CHARCOMPRESS, &::getCppuType((sal_Int16*)0), 0, 0 },
208 { MAP_LEN("IsKernAsianPunctuation"),HANDLE_ASIANPUNCT, &::getBooleanCppuType(), 0, 0 },
209 { MAP_LEN("UpdateFromTemplate"), HANDLE_UPDATEFROMTEMPLATE, &::getBooleanCppuType(), 0, 0 },
210 { MAP_LEN("PrinterIndependentLayout"),HANDLE_PRINTER_INDEPENDENT_LAYOUT,&::getCppuType((const sal_Int16*)0), 0, 0 },
211 // --> PB 2004-08-23 #i33095#
212 { MAP_LEN("LoadReadonly"), HANDLE_LOAD_READONLY, &::getBooleanCppuType(), 0, 0 },
213 { MAP_LEN("SaveVersionOnClose"), HANDLE_SAVE_VERSION, &::getBooleanCppuType(), 0, 0 },
214 // <--
215 { NULL, 0, 0, NULL, 0, 0 }
216 };
217
218 PropertySetInfo* pInfo = new PropertySetInfo( aCommonSettingsInfoMap );
219 pInfo->add( bIsDraw ? aDrawSettingsInfoMap : aImpressSettingsInfoMap );
220
221 return pInfo;
222 }
223 }
224
225 using namespace ::sd;
226
DocumentSettings(SdXImpressDocument * pModel)227 DocumentSettings::DocumentSettings( SdXImpressDocument* pModel )
228 : PropertySetHelper( createSettingsInfoImpl( !pModel->IsImpressDocument() ) ),
229 mxModel( pModel ),
230 mpModel( pModel )
231 {
232 }
233
~DocumentSettings()234 DocumentSettings::~DocumentSettings() throw()
235 {
236 }
237
_setPropertyValues(const PropertyMapEntry ** ppEntries,const Any * pValues)238 void DocumentSettings::_setPropertyValues( const PropertyMapEntry** ppEntries, const Any* pValues ) throw(UnknownPropertyException, PropertyVetoException, IllegalArgumentException, WrappedTargetException )
239 {
240 OGuard aGuard( Application::GetSolarMutex() );
241
242 SdDrawDocument* pDoc = mpModel->GetDoc();
243 ::sd::DrawDocShell* pDocSh = mpModel->GetDocShell();
244 if( NULL == pDoc || NULL == pDocSh )
245 throw UnknownPropertyException();
246
247 sal_Bool bOk, bChanged = sal_False, bValue = sal_False, bOptionsChanged = false;
248
249 SdOptionsPrintItem aOptionsPrintItem( ATTR_OPTIONS_PRINT );
250
251 SfxPrinter* pPrinter = pDocSh->GetPrinter( sal_False );
252 if( pPrinter )
253 {
254 SdOptionsPrintItem* pPrinterOptions = NULL;
255 if(pPrinter->GetOptions().GetItemState( ATTR_OPTIONS_PRINT, sal_False, (const SfxPoolItem**) &pPrinterOptions) == SFX_ITEM_SET)
256 aOptionsPrintItem.GetOptionsPrint() = pPrinterOptions->GetOptionsPrint();
257 }
258 else
259 {
260 aOptionsPrintItem.SetOptions( SD_MOD()->GetSdOptions(pDoc->GetDocumentType()) );
261 }
262 SdOptionsPrint& aPrintOpts = aOptionsPrintItem.GetOptionsPrint();
263
264 for( ; *ppEntries; ppEntries++, pValues++ )
265 {
266 bOk = sal_False;
267
268 switch( (*ppEntries)->mnHandle )
269 {
270 case HANDLE_COLORTABLEURL:
271 {
272 OUString aURLString;
273 if( *pValues >>= aURLString )
274 {
275 INetURLObject aURL( aURLString );
276 INetURLObject aPathURL( aURL );
277
278 aPathURL.removeSegment();
279 aPathURL.removeFinalSlash();
280
281 XColorListSharedPtr aColTab(XPropertyListFactory::CreateSharedXColorList(aPathURL.GetMainURL(INetURLObject::NO_DECODE)));
282 aColTab->SetName( aURL.getName() );
283 if( aColTab->Load() )
284 {
285 pDoc->SetColorTableAtSdrModel( aColTab );
286 bOk = sal_True;
287 bChanged = sal_True;
288 }
289 }
290 }
291 break;
292 case HANDLE_DASHTABLEURL:
293 {
294 OUString aURLString;
295 if( *pValues >>= aURLString )
296 {
297 INetURLObject aURL( aURLString );
298 INetURLObject aPathURL( aURL );
299
300 aPathURL.removeSegment();
301 aPathURL.removeFinalSlash();
302
303 XDashListSharedPtr aDashTab(XPropertyListFactory::CreateSharedXDashList(aPathURL.GetMainURL(INetURLObject::NO_DECODE)));
304 aDashTab->SetName( aURL.getName() );
305 if( aDashTab->Load() )
306 {
307 pDoc->SetDashListAtSdrModel( aDashTab );
308 bOk = sal_True;
309 bChanged = sal_True;
310 }
311 }
312 }
313 break;
314 case HANDLE_LINEENDTABLEURL:
315 {
316 OUString aURLString;
317 if( *pValues >>= aURLString )
318 {
319 INetURLObject aURL( aURLString );
320 INetURLObject aPathURL( aURL );
321
322 aPathURL.removeSegment();
323 aPathURL.removeFinalSlash();
324
325 XLineEndListSharedPtr aTab(XPropertyListFactory::CreateSharedXLineEndList(aPathURL.GetMainURL(INetURLObject::NO_DECODE)));
326 aTab->SetName( aURL.getName() );
327 if( aTab->Load() )
328 {
329 pDoc->SetLineEndListAtSdrModel( aTab );
330 bOk = sal_True;
331 bChanged = sal_True;
332 }
333 }
334 }
335 break;
336 case HANDLE_HATCHTABLEURL:
337 {
338 OUString aURLString;
339 if( *pValues >>= aURLString )
340 {
341 INetURLObject aURL( aURLString );
342 INetURLObject aPathURL( aURL );
343
344 aPathURL.removeSegment();
345 aPathURL.removeFinalSlash();
346
347 XHatchListSharedPtr aTab(XPropertyListFactory::CreateSharedXHatchList(aPathURL.GetMainURL(INetURLObject::NO_DECODE)));
348 aTab->SetName( aURL.getName() );
349 if( aTab->Load() )
350 {
351 pDoc->SetHatchListAtSdrModel( aTab );
352 bOk = sal_True;
353 bChanged = sal_True;
354 }
355 }
356 }
357 break;
358 case HANDLE_GRADIENTTABLEURL:
359 {
360 OUString aURLString;
361 if( *pValues >>= aURLString )
362 {
363 INetURLObject aURL( aURLString );
364 INetURLObject aPathURL( aURL );
365
366 aPathURL.removeSegment();
367 aPathURL.removeFinalSlash();
368
369 XGradientListSharedPtr aTab(XPropertyListFactory::CreateSharedXGradientList(aPathURL.GetMainURL(INetURLObject::NO_DECODE)));
370 aTab->SetName( aURL.getName() );
371 if( aTab->Load() )
372 {
373 pDoc->SetGradientListAtSdrModel( aTab );
374 bOk = sal_True;
375 bChanged = sal_True;
376 }
377 }
378 }
379 break;
380 case HANDLE_BITMAPTABLEURL:
381 {
382 OUString aURLString;
383 if( *pValues >>= aURLString )
384 {
385 INetURLObject aURL( aURLString );
386 INetURLObject aPathURL( aURL );
387
388 aPathURL.removeSegment();
389 aPathURL.removeFinalSlash();
390
391 XBitmapListSharedPtr aTab(XPropertyListFactory::CreateSharedXBitmapList(aPathURL.GetMainURL(INetURLObject::NO_DECODE )));
392 aTab->SetName( aURL.getName() );
393 if( aTab->Load() )
394 {
395 pDoc->SetBitmapListAtSdrModel( aTab );
396 bOk = sal_True;
397 bChanged = sal_True;
398 }
399 }
400 }
401 break;
402 case HANDLE_FORBIDDENCHARS:
403 {
404 bOk = sal_True;
405 }
406 break;
407 case HANDLE_APPLYUSERDATA:
408 {
409 sal_Bool bApplyUserData = sal_False;
410 if( *pValues >>= bApplyUserData )
411 {
412 bChanged = ( bApplyUserData != pDocSh->IsUseUserData() );
413 pDocSh->SetUseUserData( bApplyUserData );
414 bOk = sal_True;
415 }
416 }
417 break;
418 case HANDLE_PRINTDRAWING:
419 if( *pValues >>= bValue )
420 {
421 if( aPrintOpts.IsDraw() != bValue )
422 {
423 aPrintOpts.SetDraw( bValue );
424 bOptionsChanged = true;
425 }
426
427 bOk = sal_True;
428 }
429 break;
430 case HANDLE_PRINTNOTES:
431 if( *pValues >>= bValue )
432 {
433 if( aPrintOpts.IsNotes() != bValue )
434 {
435 aPrintOpts.SetNotes( bValue );
436 bOptionsChanged = true;
437 }
438
439 bOk = sal_True;
440 }
441 break;
442 case HANDLE_PRINTHANDOUT:
443 if( *pValues >>= bValue )
444 {
445 if( aPrintOpts.IsHandout() != bValue)
446 {
447 aPrintOpts.SetHandout( bValue );
448 bOptionsChanged = true;
449 }
450
451 bOk = sal_True;
452 }
453 break;
454 case HANDLE_PRINTOUTLINE:
455 if( *pValues >>= bValue )
456 {
457 if( aPrintOpts.IsOutline() != bValue)
458 {
459 aPrintOpts.SetOutline( bValue );
460 bOptionsChanged = true;
461 }
462 bOk = sal_True;
463 }
464 break;
465 case HANDLE_SLIDESPERHANDOUT:
466 {
467 sal_Int16 nValue = 0;
468 if( (*pValues >>= nValue) && (nValue >= 1) && (nValue <= 9) )
469 {
470 if( static_cast<sal_Int16>( aPrintOpts.GetHandoutPages() ) != nValue )
471 {
472 aPrintOpts.SetHandoutPages( static_cast< sal_uInt16 >( nValue ) );
473 bOptionsChanged = true;
474 }
475 bOk = sal_True;
476 }
477 }
478 break;
479 case HANDLE_HANDOUTHORIZONTAL:
480 if( *pValues >>= bValue )
481 {
482 if( aPrintOpts.IsHandoutHorizontal() != bValue )
483 {
484 aPrintOpts.SetHandoutHorizontal( bValue );
485 bOptionsChanged = true;
486 }
487 bOk = sal_True;
488 }
489 break;
490
491 case HANDLE_PRINTPAGENAME:
492 if( *pValues >>= bValue )
493 {
494 if( aPrintOpts.IsPagename() != bValue)
495 {
496 aPrintOpts.SetPagename( bValue );
497 bOptionsChanged = true;
498 }
499 bOk = sal_True;
500 }
501 break;
502 case HANDLE_PRINTDATE:
503 if( *pValues >>= bValue )
504 {
505 if( aPrintOpts.IsDate() != bValue)
506 {
507 aPrintOpts.SetDate( bValue );
508 bOptionsChanged = true;
509 }
510 bOk = sal_True;
511 }
512 break;
513 case HANDLE_PRINTTIME:
514 if( *pValues >>= bValue )
515 {
516 if( aPrintOpts.IsDate() != bValue)
517 {
518 aPrintOpts.SetTime( bValue );
519 bOptionsChanged = true;
520 }
521 bOk = sal_True;
522 }
523 break;
524 case HANDLE_PRINTHIDENPAGES:
525 if( *pValues >>= bValue )
526 {
527 if( aPrintOpts.IsHiddenPages() != bValue)
528 {
529 aPrintOpts.SetHiddenPages( bValue );
530 bOptionsChanged = true;
531 }
532 bOk = sal_True;
533 }
534 break;
535 case HANDLE_PRINTFITPAGE:
536 if( *pValues >>= bValue )
537 {
538 if( aPrintOpts.IsPagesize() != bValue)
539 {
540 aPrintOpts.SetPagesize( bValue );
541 bOptionsChanged = true;
542 }
543 bOk = sal_True;
544 }
545 break;
546 case HANDLE_PRINTTILEPAGE:
547 if( *pValues >>= bValue )
548 {
549 if( aPrintOpts.IsPagetile() != bValue)
550 {
551 aPrintOpts.SetPagetile( bValue );
552 bOptionsChanged = true;
553 }
554 bOk = sal_True;
555 }
556 break;
557 case HANDLE_PRINTBOOKLET:
558 if( *pValues >>= bValue )
559 {
560 if( aPrintOpts.IsBooklet() != bValue)
561 {
562 aPrintOpts.SetBooklet( bValue );
563 bOptionsChanged = true;
564 }
565 bOk = sal_True;
566 }
567 break;
568 case HANDLE_PRINTBOOKLETFRONT:
569 if( *pValues >>= bValue )
570 {
571 if( aPrintOpts.IsFrontPage() != bValue)
572 {
573 aPrintOpts.SetFrontPage( bValue );
574 bOptionsChanged = true;
575 }
576 bOk = sal_True;
577 }
578 break;
579 case HANDLE_PRINTBOOKLETBACK:
580 if( *pValues >>= bValue )
581 {
582 if( aPrintOpts.IsBackPage() != bValue)
583 {
584 aPrintOpts.SetBackPage( bValue );
585 bOptionsChanged = true;
586 }
587 bOk = sal_True;
588 }
589 break;
590 case HANDLE_PRINTQUALITY:
591 {
592 sal_Int32 nValue = 0;
593 if( *pValues >>= nValue )
594 {
595 if( aPrintOpts.GetOutputQuality() != nValue)
596 {
597 aPrintOpts.SetOutputQuality( (sal_uInt16)nValue );
598 bOptionsChanged = true;
599 }
600 bOk = sal_True;
601 }
602 }
603 break;
604 case HANDLE_MEASUREUNIT:
605 {
606 sal_Int16 nValue = 0;
607 if( *pValues >>= nValue )
608 {
609 short nFieldUnit;
610 if( SvxMeasureUnitToFieldUnit( nValue, nFieldUnit ) )
611 {
612 pDoc->SetUIUnit((FieldUnit)nFieldUnit );
613 bOk = sal_True;
614 }
615 }
616 }
617 break;
618 case HANDLE_SCALE_NUM:
619 {
620 sal_Int32 nValue = 0;
621 if( *pValues >>= nValue )
622 {
623 Fraction aFract( nValue, pDoc->GetUIScale().GetDenominator() );
624 pDoc->SetUIScale( aFract );
625 bOk = sal_True;
626 bChanged = sal_True;
627 }
628 }
629 break;
630 case HANDLE_SCALE_DOM:
631 {
632 sal_Int32 nValue = 0;
633 if( *pValues >>= nValue )
634 {
635 Fraction aFract( pDoc->GetUIScale().GetNumerator(), nValue );
636 pDoc->SetUIScale( aFract );
637 bOk = sal_True;
638 bChanged = sal_True;
639 }
640 }
641 break;
642
643 case HANDLE_TABSTOP:
644 {
645 sal_Int32 nValue = 0;
646 if( (*pValues >>= nValue) && (nValue >= 0) )
647 {
648 pDoc->SetDefaultTabulator((sal_uInt16)nValue);
649 bOk = sal_True;
650 bChanged = sal_True;
651 }
652 }
653 break;
654 case HANDLE_PAGENUMFMT:
655 {
656 sal_Int32 nValue = 0;
657 if( (*pValues >>= nValue ) && (nValue >= SVX_CHARS_UPPER_LETTER ) && (nValue <= SVX_PAGEDESC) )
658 {
659 pDoc->SetPageNumType((SvxNumType)nValue);
660 bOk = sal_True;
661 bChanged = sal_True;
662 }
663 }
664 break;
665 case HANDLE_PRINTERNAME:
666 {
667 OUString aPrinterName;
668 if( *pValues >>= aPrinterName )
669 {
670 bOk = sal_True;
671 if( aPrinterName.getLength() && pDocSh->GetCreateMode() != SFX_CREATE_MODE_EMBEDDED )
672 {
673 SfxPrinter *pTempPrinter = pDocSh->GetPrinter( sal_True );
674 if (pTempPrinter)
675 {
676 SfxPrinter *pNewPrinter = new SfxPrinter( pTempPrinter->GetOptions().Clone(), aPrinterName );
677 pDocSh->SetPrinter( pNewPrinter );
678 }
679 }
680 }
681 }
682 break;
683 case HANDLE_PRINTERJOB:
684 {
685 Sequence < sal_Int8 > aSequence;
686 if ( *pValues >>= aSequence )
687 {
688 bOk = sal_True;
689 sal_uInt32 nSize = aSequence.getLength();
690 if( nSize )
691 {
692 SvMemoryStream aStream (aSequence.getArray(), nSize, STREAM_READ );
693 aStream.Seek ( STREAM_SEEK_TO_BEGIN );
694 SfxItemSet* pItemSet;
695
696 if( pPrinter )
697 {
698 pItemSet = pPrinter->GetOptions().Clone();
699 }
700 else
701 {
702 pItemSet = new SfxItemSet(pDoc->GetPool(),
703 SID_PRINTER_NOTFOUND_WARN, SID_PRINTER_NOTFOUND_WARN,
704 SID_PRINTER_CHANGESTODOC, SID_PRINTER_CHANGESTODOC,
705 ATTR_OPTIONS_PRINT, ATTR_OPTIONS_PRINT,
706 0 );
707 }
708
709 pPrinter = SfxPrinter::Create ( aStream, pItemSet );
710
711 MapMode aMM (pPrinter->GetMapMode());
712 aMM.SetMapUnit(MAP_100TH_MM);
713 pPrinter->SetMapMode(aMM);
714
715 pDocSh->SetPrinter( pPrinter );
716
717 pPrinter = NULL;
718 }
719 }
720 }
721 break;
722
723 case HANDLE_PARAGRAPHSUMMATION :
724 {
725 sal_Bool bIsSummationOfParagraphs = sal_False;
726 if ( *pValues >>= bIsSummationOfParagraphs )
727 {
728 bOk = sal_True;
729 bChanged = sal_True;
730 if ( pDoc->GetDocumentType() == DOCUMENT_TYPE_IMPRESS )
731 {
732 sal_uInt32 nSum = bIsSummationOfParagraphs ? EE_CNTRL_ULSPACESUMMATION : 0;
733 sal_uInt32 nCntrl;
734
735 pDoc->SetSummationOfParagraphs( bIsSummationOfParagraphs );
736 SdDrawDocument* pDocument = pDocSh->GetDoc();
737 SdrOutliner& rOutl = pDocument->GetDrawOutliner( NULL );
738 nCntrl = rOutl.GetControlWord() &~ EE_CNTRL_ULSPACESUMMATION;
739 rOutl.SetControlWord( nCntrl | nSum );
740 ::sd::Outliner* pOutl = pDocument->GetOutliner( sal_False );
741 if( pOutl )
742 {
743 nCntrl = pOutl->GetControlWord() &~ EE_CNTRL_ULSPACESUMMATION;
744 pOutl->SetControlWord( nCntrl | nSum );
745 }
746 pOutl = pDocument->GetInternalOutliner( sal_False );
747 if( pOutl )
748 {
749 nCntrl = pOutl->GetControlWord() &~ EE_CNTRL_ULSPACESUMMATION;
750 pOutl->SetControlWord( nCntrl | nSum );
751 }
752 }
753 }
754 }
755 break;
756
757 case HANDLE_CHARCOMPRESS:
758 {
759 sal_Int16 nCharCompressType = 0;
760 if( *pValues >>= nCharCompressType )
761 {
762 bOk = sal_True;
763
764 pDoc->SetCharCompressType( (sal_uInt16)nCharCompressType );
765 SdDrawDocument* pDocument = pDocSh->GetDoc();
766 SdrOutliner& rOutl = pDocument->GetDrawOutliner( NULL );
767 rOutl.SetAsianCompressionMode( (sal_uInt16)nCharCompressType );
768 ::sd::Outliner* pOutl = pDocument->GetOutliner( sal_False );
769 if( pOutl )
770 {
771 pOutl->SetAsianCompressionMode( (sal_uInt16)nCharCompressType );
772 }
773 pOutl = pDocument->GetInternalOutliner( sal_False );
774 if( pOutl )
775 {
776 pOutl->SetAsianCompressionMode( (sal_uInt16)nCharCompressType );
777 }
778 }
779 break;
780
781 }
782 case HANDLE_ASIANPUNCT:
783 {
784 sal_Bool bAsianPunct = sal_False;
785 if( *pValues >>= bAsianPunct )
786 {
787 bOk = sal_True;
788
789 pDoc->SetKernAsianPunctuation( bAsianPunct );
790 SdDrawDocument* pDocument = pDocSh->GetDoc();
791 SdrOutliner& rOutl = pDocument->GetDrawOutliner( NULL );
792 rOutl.SetKernAsianPunctuation( bAsianPunct );
793 ::sd::Outliner* pOutl = pDocument->GetOutliner( sal_False );
794 if( pOutl )
795 {
796 pOutl->SetKernAsianPunctuation( bAsianPunct );
797 }
798 pOutl = pDocument->GetInternalOutliner( sal_False );
799 if( pOutl )
800 {
801 pOutl->SetKernAsianPunctuation( bAsianPunct );
802 }
803 }
804 break;
805
806 }
807 case HANDLE_UPDATEFROMTEMPLATE:
808 {
809 sal_Bool value = sal_False;
810 if( *pValues >>= value )
811 {
812 bChanged = ( value != pDocSh->IsQueryLoadTemplate() );
813 pDocSh->SetQueryLoadTemplate( value );
814 bOk = sal_True;
815 }
816 }
817 break;
818
819 case HANDLE_PRINTER_INDEPENDENT_LAYOUT:
820 {
821 // Just propagate the new printer independent layout mode to
822 // the document and determine it really differs from the old
823 // one.
824 sal_Int16 nOldValue =
825 (sal_Int16)pDoc->GetPrinterIndependentLayout ();
826 sal_Int16 nValue = 0;
827 if (*pValues >>= nValue)
828 {
829 pDoc->SetPrinterIndependentLayout (nValue);
830 bChanged = (nValue != nOldValue);
831 bOk = sal_True;
832 }
833 }
834 break;
835
836 // --> PB 2004-08-23 #i33095#
837 case HANDLE_LOAD_READONLY:
838 {
839 sal_Bool bNewValue = sal_False;
840 if ( *pValues >>= bNewValue )
841 {
842 bChanged = ( pDocSh->IsLoadReadonly() != bNewValue );
843 pDocSh->SetLoadReadonly( bNewValue );
844 bOk = sal_True;
845 }
846 }
847 break;
848 // <--
849
850 case HANDLE_SAVE_VERSION:
851 {
852 sal_Bool bNewValue = sal_False;
853 if ( *pValues >>= bNewValue )
854 {
855 bChanged = ( pDocSh->IsSaveVersionOnClose() != bNewValue );
856 pDocSh->SetSaveVersionOnClose( bNewValue );
857 bOk = sal_True;
858 }
859 }
860 break;
861
862 default:
863 throw UnknownPropertyException();
864 }
865
866 if( !bOk )
867 throw IllegalArgumentException();
868 }
869
870 if( bOptionsChanged )
871 {
872 if( !pPrinter )
873 pPrinter = pDocSh->GetPrinter( sal_True );
874 SfxItemSet aNewOptions( pPrinter->GetOptions() );
875 aNewOptions.Put( aOptionsPrintItem );
876 pPrinter->SetOptions( aNewOptions );
877 }
878
879 if( bChanged || bOptionsChanged )
880 mpModel->SetModified( sal_True );
881 }
882
_getPropertyValues(const PropertyMapEntry ** ppEntries,Any * pValue)883 void DocumentSettings::_getPropertyValues( const PropertyMapEntry** ppEntries, Any* pValue ) throw(UnknownPropertyException, WrappedTargetException )
884 {
885 OGuard aGuard( Application::GetSolarMutex() );
886
887 SdDrawDocument* pDoc = mpModel->GetDoc();
888 ::sd::DrawDocShell* pDocSh = mpModel->GetDocShell();
889 if( NULL == pDoc || NULL == pDocSh )
890 throw UnknownPropertyException();
891
892 SdOptionsPrintItem aOptionsPrintItem( ATTR_OPTIONS_PRINT );
893
894 SfxPrinter* pPrinter = pDocSh->GetPrinter( sal_False );
895 if( pPrinter )
896 {
897 SdOptionsPrintItem* pPrinterOptions = NULL;
898 if(pPrinter->GetOptions().GetItemState( ATTR_OPTIONS_PRINT, sal_False, (const SfxPoolItem**) &pPrinterOptions) == SFX_ITEM_SET)
899 aOptionsPrintItem.GetOptionsPrint() = pPrinterOptions->GetOptionsPrint();
900 }
901 else
902 {
903 aOptionsPrintItem.SetOptions( SD_MOD()->GetSdOptions(pDoc->GetDocumentType()) );
904 }
905 SdOptionsPrint& aPrintOpts = aOptionsPrintItem.GetOptionsPrint();
906
907 for( ; *ppEntries; ppEntries++, pValue++ )
908 {
909 switch( (*ppEntries)->mnHandle )
910 {
911 case HANDLE_COLORTABLEURL:
912 {
913 INetURLObject aPathURL( pDoc->GetColorTableFromSdrModel()->GetPath() );
914 aPathURL.insertName( pDoc->GetColorTableFromSdrModel()->GetName() );
915 String aExt( RTL_CONSTASCII_USTRINGPARAM("soc") );
916 aPathURL.setExtension( aExt );
917 OUString aPath( aPathURL.GetMainURL( INetURLObject::NO_DECODE ) );
918 *pValue <<= aPath;
919 }
920 break;
921 case HANDLE_DASHTABLEURL:
922 {
923 INetURLObject aPathURL( pDoc->GetDashListFromSdrModel()->GetPath() );
924 aPathURL.insertName( pDoc->GetDashListFromSdrModel()->GetName() );
925 String aExt( RTL_CONSTASCII_USTRINGPARAM("sod") );
926 aPathURL.setExtension( aExt );
927 OUString aPath( aPathURL.GetMainURL( INetURLObject::NO_DECODE ) );
928 *pValue <<= aPath;
929 }
930 break;
931 case HANDLE_LINEENDTABLEURL:
932 {
933 INetURLObject aPathURL( pDoc->GetLineEndListFromSdrModel()->GetPath() );
934 aPathURL.insertName( pDoc->GetLineEndListFromSdrModel()->GetName() );
935 String aExt( RTL_CONSTASCII_USTRINGPARAM("soe") );
936 aPathURL.setExtension( aExt );
937 OUString aPath( aPathURL.GetMainURL( INetURLObject::NO_DECODE ) );
938 *pValue <<= aPath;
939 }
940 break;
941 case HANDLE_HATCHTABLEURL:
942 {
943 INetURLObject aPathURL( pDoc->GetHatchListFromSdrModel()->GetPath() );
944 aPathURL.insertName( pDoc->GetHatchListFromSdrModel()->GetName() );
945 String aExt( RTL_CONSTASCII_USTRINGPARAM("soh") );
946 aPathURL.setExtension( aExt );
947 OUString aPath( aPathURL.GetMainURL( INetURLObject::NO_DECODE ) );
948 *pValue <<= aPath;
949 }
950 break;
951 case HANDLE_GRADIENTTABLEURL:
952 {
953 INetURLObject aPathURL( pDoc->GetGradientListFromSdrModel()->GetPath() );
954 aPathURL.insertName( pDoc->GetGradientListFromSdrModel()->GetName() );
955 String aExt( RTL_CONSTASCII_USTRINGPARAM("sog") );
956 aPathURL.setExtension( aExt );
957 OUString aPath( aPathURL.GetMainURL( INetURLObject::NO_DECODE ) );
958 *pValue <<= aPath;
959 }
960 break;
961 case HANDLE_BITMAPTABLEURL:
962 {
963 INetURLObject aPathURL( pDoc->GetBitmapListFromSdrModel()->GetPath() );
964 aPathURL.insertName( pDoc->GetBitmapListFromSdrModel()->GetName() );
965 String aExt( RTL_CONSTASCII_USTRINGPARAM("sob") );
966 aPathURL.setExtension( aExt );
967 OUString aPath( aPathURL.GetMainURL( INetURLObject::NO_DECODE ) );
968 *pValue <<= aPath;
969 }
970 break;
971 case HANDLE_FORBIDDENCHARS:
972 *pValue <<= mpModel->getForbiddenCharsTable();
973 break;
974
975 case HANDLE_APPLYUSERDATA:
976 *pValue <<= pDocSh->IsUseUserData();
977 break;
978
979 case HANDLE_PRINTDRAWING:
980 *pValue <<= (sal_Bool)aPrintOpts.IsDraw();
981 break;
982 case HANDLE_PRINTNOTES:
983 *pValue <<= (sal_Bool)aPrintOpts.IsNotes();
984 break;
985 case HANDLE_PRINTHANDOUT:
986 *pValue <<= (sal_Bool)aPrintOpts.IsHandout();
987 break;
988 case HANDLE_PRINTOUTLINE:
989 *pValue <<= (sal_Bool)aPrintOpts.IsOutline();
990 break;
991 case HANDLE_SLIDESPERHANDOUT:
992 *pValue <<= (sal_Int16)aPrintOpts.GetHandoutPages();
993 break;
994 case HANDLE_HANDOUTHORIZONTAL:
995 *pValue <<= (sal_Bool)aPrintOpts.IsHandoutHorizontal();
996 break;
997 case HANDLE_PRINTPAGENAME:
998 *pValue <<= (sal_Bool)aPrintOpts.IsPagename();
999 break;
1000 case HANDLE_PRINTDATE:
1001 *pValue <<= (sal_Bool)aPrintOpts.IsDate();
1002 break;
1003 case HANDLE_PRINTTIME:
1004 *pValue <<= (sal_Bool)aPrintOpts.IsTime();
1005 break;
1006 case HANDLE_PRINTHIDENPAGES:
1007 *pValue <<= (sal_Bool)aPrintOpts.IsHiddenPages();
1008 break;
1009 case HANDLE_PRINTFITPAGE:
1010 *pValue <<= (sal_Bool)aPrintOpts.IsPagesize();
1011 break;
1012 case HANDLE_PRINTTILEPAGE:
1013 *pValue <<= (sal_Bool)aPrintOpts.IsPagetile();
1014 break;
1015 case HANDLE_PRINTBOOKLET:
1016 *pValue <<= (sal_Bool)aPrintOpts.IsBooklet();
1017 break;
1018 case HANDLE_PRINTBOOKLETFRONT:
1019 *pValue <<= (sal_Bool)aPrintOpts.IsFrontPage();
1020 break;
1021 case HANDLE_PRINTBOOKLETBACK:
1022 *pValue <<= (sal_Bool)aPrintOpts.IsBackPage();
1023 break;
1024 case HANDLE_PRINTQUALITY:
1025 *pValue <<= (sal_Int32)aPrintOpts.GetOutputQuality();
1026 break;
1027 case HANDLE_MEASUREUNIT:
1028 {
1029 short nMeasure;
1030 SvxFieldUnitToMeasureUnit( (const short)pDoc->GetUIUnit(), nMeasure );
1031 *pValue <<= (sal_Int16)nMeasure;
1032 }
1033 break;
1034 case HANDLE_SCALE_NUM:
1035 *pValue <<= (sal_Int32)pDoc->GetUIScale().GetNumerator();
1036 break;
1037 case HANDLE_SCALE_DOM:
1038 *pValue <<= (sal_Int32)pDoc->GetUIScale().GetDenominator();
1039 break;
1040 case HANDLE_TABSTOP:
1041 *pValue <<= (sal_Int32)pDoc->GetDefaultTabulator();
1042 break;
1043 case HANDLE_PAGENUMFMT:
1044 *pValue <<= (sal_Int32)pDoc->GetPageNumType();
1045 break;
1046 case HANDLE_PRINTERNAME:
1047 {
1048 SfxPrinter *pTempPrinter = pDocSh->GetPrinter( sal_False );
1049 *pValue <<= pTempPrinter ? OUString ( pTempPrinter->GetName()) : OUString();
1050 }
1051 break;
1052 case HANDLE_PRINTERJOB:
1053 {
1054 SfxPrinter *pTempPrinter = pDocSh->GetPrinter( sal_False );
1055 if (pTempPrinter)
1056 {
1057 SvMemoryStream aStream;
1058 pTempPrinter->Store( aStream );
1059 aStream.Seek ( STREAM_SEEK_TO_END );
1060 sal_uInt32 nSize = aStream.Tell();
1061 aStream.Seek ( STREAM_SEEK_TO_BEGIN );
1062 Sequence < sal_Int8 > aSequence ( nSize );
1063 memcpy ( aSequence.getArray(), aStream.GetData(), nSize );
1064 *pValue <<= aSequence;
1065 }
1066 else
1067 {
1068 Sequence < sal_Int8 > aSequence;
1069 *pValue <<= aSequence;
1070 }
1071 }
1072 break;
1073
1074 case HANDLE_PARAGRAPHSUMMATION :
1075 {
1076 sal_Bool bIsSummationOfParagraphs = pDoc->IsSummationOfParagraphs();
1077 *pValue <<= bIsSummationOfParagraphs;
1078 }
1079 break;
1080
1081 case HANDLE_CHARCOMPRESS:
1082 {
1083 *pValue <<= (sal_Int16)pDoc->GetCharCompressType();
1084 break;
1085 }
1086
1087 case HANDLE_ASIANPUNCT:
1088 {
1089 *pValue <<= (sal_Bool)pDoc->IsKernAsianPunctuation();
1090 break;
1091 }
1092
1093 case HANDLE_UPDATEFROMTEMPLATE:
1094 {
1095 *pValue <<= pDocSh->IsQueryLoadTemplate();
1096 }
1097 break;
1098
1099 case HANDLE_PRINTER_INDEPENDENT_LAYOUT:
1100 {
1101 sal_Int16 nPrinterIndependentLayout =
1102 (sal_Int16)pDoc->GetPrinterIndependentLayout();
1103 *pValue <<= nPrinterIndependentLayout;
1104 }
1105 break;
1106
1107 // --> PB 2004-08-23 #i33095#
1108 case HANDLE_LOAD_READONLY:
1109 {
1110 *pValue <<= pDocSh->IsLoadReadonly();
1111 }
1112 break;
1113 // <--
1114
1115 case HANDLE_SAVE_VERSION:
1116 {
1117 *pValue <<= pDocSh->IsSaveVersionOnClose();
1118 }
1119 break;
1120
1121 default:
1122 throw UnknownPropertyException();
1123 }
1124 }
1125 }
1126
1127 // XInterface
queryInterface(const Type & aType)1128 Any SAL_CALL DocumentSettings::queryInterface( const Type& aType ) throw (RuntimeException)
1129 {
1130 return WeakImplHelper3< XPropertySet, XMultiPropertySet, XServiceInfo >::queryInterface( aType );
1131 }
1132
acquire()1133 void SAL_CALL DocumentSettings::acquire( ) throw ()
1134 {
1135 WeakImplHelper3< XPropertySet, XMultiPropertySet, XServiceInfo >::acquire();
1136 }
1137
release()1138 void SAL_CALL DocumentSettings::release( ) throw ()
1139 {
1140 WeakImplHelper3< XPropertySet, XMultiPropertySet, XServiceInfo >::release();
1141 }
1142
1143
1144 // XPropertySet
getPropertySetInfo()1145 Reference< XPropertySetInfo > SAL_CALL DocumentSettings::getPropertySetInfo( ) throw(RuntimeException)
1146 {
1147 return PropertySetHelper::getPropertySetInfo();
1148 }
1149
setPropertyValue(const OUString & aPropertyName,const Any & aValue)1150 void SAL_CALL DocumentSettings::setPropertyValue( const OUString& aPropertyName, const Any& aValue ) throw(UnknownPropertyException, PropertyVetoException, IllegalArgumentException, WrappedTargetException, RuntimeException)
1151 {
1152 PropertySetHelper::setPropertyValue( aPropertyName, aValue );
1153 }
1154
getPropertyValue(const OUString & PropertyName)1155 Any SAL_CALL DocumentSettings::getPropertyValue( const OUString& PropertyName ) throw(UnknownPropertyException, WrappedTargetException, RuntimeException)
1156 {
1157 return PropertySetHelper::getPropertyValue( PropertyName );
1158 }
1159
addPropertyChangeListener(const OUString & aPropertyName,const Reference<XPropertyChangeListener> & xListener)1160 void SAL_CALL DocumentSettings::addPropertyChangeListener( const OUString& aPropertyName, const Reference< XPropertyChangeListener >& xListener ) throw(UnknownPropertyException, WrappedTargetException, RuntimeException)
1161 {
1162 PropertySetHelper::addPropertyChangeListener( aPropertyName, xListener );
1163 }
1164
removePropertyChangeListener(const OUString & aPropertyName,const Reference<XPropertyChangeListener> & aListener)1165 void SAL_CALL DocumentSettings::removePropertyChangeListener( const OUString& aPropertyName, const Reference< XPropertyChangeListener >& aListener ) throw(UnknownPropertyException, WrappedTargetException, RuntimeException)
1166 {
1167 PropertySetHelper::removePropertyChangeListener( aPropertyName, aListener );
1168 }
1169
addVetoableChangeListener(const OUString & PropertyName,const Reference<XVetoableChangeListener> & aListener)1170 void SAL_CALL DocumentSettings::addVetoableChangeListener( const OUString& PropertyName, const Reference< XVetoableChangeListener >& aListener ) throw(UnknownPropertyException, WrappedTargetException, RuntimeException)
1171 {
1172 PropertySetHelper::addVetoableChangeListener( PropertyName, aListener );
1173 }
1174
removeVetoableChangeListener(const OUString & PropertyName,const Reference<XVetoableChangeListener> & aListener)1175 void SAL_CALL DocumentSettings::removeVetoableChangeListener( const OUString& PropertyName, const Reference< XVetoableChangeListener >& aListener ) throw(UnknownPropertyException, WrappedTargetException, RuntimeException)
1176 {
1177 PropertySetHelper::removeVetoableChangeListener( PropertyName, aListener );
1178 }
1179
1180 // XMultiPropertySet
setPropertyValues(const Sequence<OUString> & aPropertyNames,const Sequence<Any> & aValues)1181 void SAL_CALL DocumentSettings::setPropertyValues( const Sequence< OUString >& aPropertyNames, const Sequence< Any >& aValues ) throw(PropertyVetoException, IllegalArgumentException, WrappedTargetException, RuntimeException)
1182 {
1183 PropertySetHelper::setPropertyValues( aPropertyNames, aValues );
1184 }
1185
getPropertyValues(const Sequence<OUString> & aPropertyNames)1186 Sequence< Any > SAL_CALL DocumentSettings::getPropertyValues( const Sequence< OUString >& aPropertyNames ) throw(RuntimeException)
1187 {
1188 return PropertySetHelper::getPropertyValues( aPropertyNames );
1189 }
1190
addPropertiesChangeListener(const Sequence<OUString> & aPropertyNames,const Reference<XPropertiesChangeListener> & xListener)1191 void SAL_CALL DocumentSettings::addPropertiesChangeListener( const Sequence< OUString >& aPropertyNames, const Reference< XPropertiesChangeListener >& xListener ) throw(RuntimeException)
1192 {
1193 PropertySetHelper::addPropertiesChangeListener( aPropertyNames, xListener );
1194 }
1195
removePropertiesChangeListener(const Reference<XPropertiesChangeListener> & xListener)1196 void SAL_CALL DocumentSettings::removePropertiesChangeListener( const Reference< XPropertiesChangeListener >& xListener ) throw(RuntimeException)
1197 {
1198 PropertySetHelper::removePropertiesChangeListener( xListener );
1199 }
1200
firePropertiesChangeEvent(const Sequence<OUString> & aPropertyNames,const Reference<XPropertiesChangeListener> & xListener)1201 void SAL_CALL DocumentSettings::firePropertiesChangeEvent( const Sequence< OUString >& aPropertyNames, const Reference< XPropertiesChangeListener >& xListener ) throw(RuntimeException)
1202 {
1203 PropertySetHelper::firePropertiesChangeEvent( aPropertyNames, xListener );
1204 }
1205
1206 // XServiceInfo
getImplementationName()1207 OUString SAL_CALL DocumentSettings::getImplementationName( )
1208 throw(RuntimeException)
1209 {
1210 return OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.Draw.DocumentSettings"));
1211 }
1212
supportsService(const OUString & ServiceName)1213 sal_Bool SAL_CALL DocumentSettings::supportsService( const OUString& ServiceName )
1214 throw(RuntimeException)
1215 {
1216 const Sequence< OUString > aSeq( getSupportedServiceNames() );
1217 sal_Int32 nCount = aSeq.getLength();
1218 const OUString* pServices = aSeq.getConstArray();
1219 while( nCount-- )
1220 {
1221 if( *pServices++ == ServiceName )
1222 return sal_True;
1223 }
1224
1225 return sal_True;
1226 }
1227
getSupportedServiceNames()1228 Sequence< OUString > SAL_CALL DocumentSettings::getSupportedServiceNames( )
1229 throw(RuntimeException)
1230 {
1231 Sequence< OUString > aSeq( 2 );
1232 aSeq[0] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.document.Settings") );
1233 if( mpModel->IsImpressDocument() )
1234 {
1235 aSeq[1] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.DocumentSettings") );
1236 }
1237 else
1238 {
1239 aSeq[1] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.DocumentSettings") );
1240 }
1241
1242 return aSeq;
1243 }
1244
1245