LCOV - code coverage report
Current view: top level - sd/source/ui/unoidl - UnoDocumentSettings.cxx (source / functions) Hit Total Coverage
Test: commit c8344322a7af75b84dd3ca8f78b05543a976dfd5 Lines: 455 609 74.7 %
Date: 2015-06-13 12:38:46 Functions: 23 37 62.2 %
Legend: Lines: hit not hit

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

Generated by: LCOV version 1.11