blob: 5a149f0fad7acebdd75298f653fb0b59b121b101 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_sc.hxx"
#include "confuno.hxx"
#include "unonames.hxx"
#include "unoguard.hxx"
#include "scdll.hxx"
#include "docsh.hxx"
#include "miscuno.hxx"
#include "forbiuno.hxx"
#include "viewopti.hxx"
#include "docpool.hxx"
#include "sc.hrc"
#include <com/sun/star/beans/PropertyAttribute.hpp>
#include <sfx2/printer.hxx>
#include <xmloff/xmluconv.hxx>
#include <rtl/ustrbuf.hxx>
using namespace com::sun::star;
#define SCCOMPSCPREADSHEETSETTINGS_SERVICE "com.sun.star.comp.SpreadsheetSettings"
#define SCDOCUMENTSETTINGS_SERVICE "com.sun.star.document.Settings"
#define SCSAVEVERSION "SaveVersionOnClose"
const SfxItemPropertyMapEntry* lcl_GetConfigPropertyMap()
{
static SfxItemPropertyMapEntry aConfigPropertyMap_Impl[] =
{
{MAP_CHAR_LEN(SC_UNO_SHOWZERO), 0, &getBooleanCppuType(), 0, 0},
{MAP_CHAR_LEN(SC_UNO_SHOWNOTES), 0, &getBooleanCppuType(), 0, 0},
{MAP_CHAR_LEN(SC_UNO_SHOWGRID), 0, &getBooleanCppuType(), 0, 0},
{MAP_CHAR_LEN(SC_UNO_GRIDCOLOR), 0, &getCppuType((sal_Int32*)0), 0, 0},
{MAP_CHAR_LEN(SC_UNO_SHOWPAGEBR), 0, &getBooleanCppuType(), 0, 0},
{MAP_CHAR_LEN(SC_UNONAME_LINKUPD), 0, &getCppuType((sal_Int16*)0), 0, 0},
{MAP_CHAR_LEN(SC_UNO_COLROWHDR), 0, &getBooleanCppuType(), 0, 0},
{MAP_CHAR_LEN(SC_UNO_SHEETTABS), 0, &getBooleanCppuType(), 0, 0},
{MAP_CHAR_LEN(SC_UNO_OUTLSYMB), 0, &getBooleanCppuType(), 0, 0},
{MAP_CHAR_LEN(SC_UNO_SNAPTORASTER), 0, &getBooleanCppuType(), 0, 0},
{MAP_CHAR_LEN(SC_UNO_RASTERVIS), 0, &getBooleanCppuType(), 0, 0},
{MAP_CHAR_LEN(SC_UNO_RASTERRESX), 0, &getCppuType((sal_Int32*)0), 0, 0},
{MAP_CHAR_LEN(SC_UNO_RASTERRESY), 0, &getCppuType((sal_Int32*)0), 0, 0},
{MAP_CHAR_LEN(SC_UNO_RASTERSUBX), 0, &getCppuType((sal_Int32*)0), 0, 0},
{MAP_CHAR_LEN(SC_UNO_RASTERSUBY), 0, &getCppuType((sal_Int32*)0), 0, 0},
{MAP_CHAR_LEN(SC_UNO_RASTERSYNC), 0, &getBooleanCppuType(), 0, 0},
{MAP_CHAR_LEN(SC_UNO_AUTOCALC), 0, &getBooleanCppuType(), 0, 0},
{MAP_CHAR_LEN(SC_UNO_PRINTERNAME), 0, &getCppuType((rtl::OUString*)0), 0, 0},
{MAP_CHAR_LEN(SC_UNO_PRINTERSETUP), 0, &getCppuType((uno::Sequence<sal_Int8>*)0), 0, 0},
{MAP_CHAR_LEN(SC_UNO_APPLYDOCINF), 0, &getBooleanCppuType(), 0, 0},
{MAP_CHAR_LEN(SC_UNO_FORBIDDEN), 0, &getCppuType((uno::Reference<i18n::XForbiddenCharacters>*)0), beans::PropertyAttribute::READONLY, 0},
{MAP_CHAR_LEN(SC_UNO_CHARCOMP), 0, &getCppuType((sal_Int16*)0), 0, 0},
{MAP_CHAR_LEN(SC_UNO_ASIANKERN), 0, &getBooleanCppuType(), 0, 0},
{MAP_CHAR_LEN(SCSAVEVERSION), 0, &getBooleanCppuType(), 0, 0},
{MAP_CHAR_LEN(SC_UNO_UPDTEMPL), 0, &getBooleanCppuType(), 0, 0},
/*Stampit enable/disable print cancel */
{MAP_CHAR_LEN(SC_UNO_ALLOWPRINTJOBCANCEL), 0, &getBooleanCppuType(), 0, 0},
// --> PB 2004-08-25 #i33095# Security Options
{MAP_CHAR_LEN(SC_UNO_LOADREADONLY), 0, &getBooleanCppuType(), 0, 0},
// <--
{MAP_CHAR_LEN(SC_UNO_SHAREDOC), 0, &getBooleanCppuType(), 0, 0},
{MAP_CHAR_LEN(SC_UNO_MODIFYPASSWORDINFO), 0, &getCppuType((uno::Sequence< beans::PropertyValue >*)0), 0, 0},
{0,0,0,0,0,0}
};
return aConfigPropertyMap_Impl;
}
//------------------------------------------------------------------------
ScDocumentConfiguration::ScDocumentConfiguration(ScDocShell* pDocSh)
: pDocShell(pDocSh) ,
aPropSet ( lcl_GetConfigPropertyMap() )
{
pDocShell->GetDocument()->AddUnoObject(*this);
}
ScDocumentConfiguration::~ScDocumentConfiguration()
{
if (pDocShell)
pDocShell->GetDocument()->RemoveUnoObject(*this);
}
void ScDocumentConfiguration::Notify( SfxBroadcaster&, const SfxHint& rHint )
{
// Referenz-Update interessiert hier nicht
if ( rHint.ISA( SfxSimpleHint ) &&
((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
{
pDocShell = NULL; // ungueltig geworden
}
}
// XPropertySet
uno::Reference<beans::XPropertySetInfo> SAL_CALL ScDocumentConfiguration::getPropertySetInfo()
throw(uno::RuntimeException)
{
ScUnoGuard aGuard;
static uno::Reference<beans::XPropertySetInfo> aRef(
new SfxItemPropertySetInfo( aPropSet.getPropertyMap() ));
return aRef;
}
void SAL_CALL ScDocumentConfiguration::setPropertyValue(
const rtl::OUString& aPropertyName, const uno::Any& aValue )
throw(beans::UnknownPropertyException, beans::PropertyVetoException,
lang::IllegalArgumentException, lang::WrappedTargetException,
uno::RuntimeException)
{
ScUnoGuard aGuard;
if(pDocShell)
{
ScDocument* pDoc = pDocShell->GetDocument();
if (pDoc)
{
sal_Bool bUpdateHeights = sal_False;
ScViewOptions aViewOpt(pDoc->GetViewOptions());
/*Stampit enable/disable print cancel */
if ( aPropertyName.compareToAscii( SC_UNO_ALLOWPRINTJOBCANCEL ) == 0 )
pDocShell->Stamp_SetPrintCancelState( ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
/*Stampit enable/disable print cancel */
else if ( aPropertyName.compareToAscii( SC_UNO_SHOWZERO ) == 0 )
aViewOpt.SetOption(VOPT_NULLVALS, ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
else if ( aPropertyName.compareToAscii( SC_UNO_SHOWNOTES ) == 0 )
aViewOpt.SetOption(VOPT_NOTES, ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
else if ( aPropertyName.compareToAscii( SC_UNO_SHOWGRID ) == 0 )
aViewOpt.SetOption(VOPT_GRID, ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
else if ( aPropertyName.compareToAscii( SC_UNO_GRIDCOLOR ) == 0 )
{
sal_Int64 nColor = 0;
if (aValue >>= nColor)
{
String aColorName;
Color aColor(static_cast<sal_uInt32>(nColor));
aViewOpt.SetGridColor(aColor, aColorName);
}
}
else if ( aPropertyName.compareToAscii( SC_UNO_SHOWPAGEBR ) == 0 )
aViewOpt.SetOption(VOPT_PAGEBREAKS, ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
else if ( aPropertyName.compareToAscii( SC_UNONAME_LINKUPD ) == 0 )
pDoc->SetLinkMode( static_cast<ScLkUpdMode> ( ScUnoHelpFunctions::GetInt16FromAny( aValue ) ) );
else if ( aPropertyName.compareToAscii( SC_UNO_COLROWHDR ) == 0 )
aViewOpt.SetOption(VOPT_HEADER, ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
else if ( aPropertyName.compareToAscii( SC_UNO_SHEETTABS ) == 0 )
aViewOpt.SetOption(VOPT_TABCONTROLS, ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
else if ( aPropertyName.compareToAscii( SC_UNO_OUTLSYMB ) == 0 )
aViewOpt.SetOption(VOPT_OUTLINER, ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
else if ( aPropertyName.compareToAscii( SC_UNO_AUTOCALC ) == 0 )
pDoc->SetAutoCalc( ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
else if ( aPropertyName.compareToAscii( SC_UNO_PRINTERNAME ) == 0 )
{
rtl::OUString sPrinterName;
if ( aValue >>= sPrinterName )
{
// #i75610# if the name is empty, do nothing (don't create any printer)
if ( sPrinterName.getLength() != 0 && pDocShell->GetCreateMode() != SFX_CREATE_MODE_EMBEDDED )
{
SfxPrinter* pPrinter = pDocShell->GetPrinter();
if (pPrinter)
{
String aString(sPrinterName);
if (pPrinter->GetName() != aString)
{
SfxPrinter* pNewPrinter = new SfxPrinter( pPrinter->GetOptions().Clone(), aString );
if (pNewPrinter->IsKnown())
pDocShell->SetPrinter( pNewPrinter, SFX_PRINTER_PRINTER );
else
delete pNewPrinter;
}
}
else
throw uno::RuntimeException();
}
}
else
throw lang::IllegalArgumentException();
}
else if ( aPropertyName.compareToAscii( SC_UNO_PRINTERSETUP ) == 0 )
{
uno::Sequence<sal_Int8> aSequence;
if ( aValue >>= aSequence )
{
sal_uInt32 nSize = aSequence.getLength();
// #i75610# if the sequence is empty, do nothing (don't create any printer)
if ( nSize != 0 )
{
SvMemoryStream aStream (aSequence.getArray(), nSize, STREAM_READ );
aStream.Seek ( STREAM_SEEK_TO_BEGIN );
SfxItemSet* pSet = new SfxItemSet( *pDoc->GetPool(),
SID_PRINTER_NOTFOUND_WARN, SID_PRINTER_NOTFOUND_WARN,
SID_PRINTER_CHANGESTODOC, SID_PRINTER_CHANGESTODOC,
SID_PRINT_SELECTEDSHEET, SID_PRINT_SELECTEDSHEET,
SID_SCPRINTOPTIONS, SID_SCPRINTOPTIONS,
NULL );
pDocShell->SetPrinter( SfxPrinter::Create( aStream, pSet ) );
}
}
}
else if ( aPropertyName.compareToAscii( SC_UNO_APPLYDOCINF ) == 0 )
{
sal_Bool bTmp=sal_True;
if ( aValue >>= bTmp )
pDocShell->SetUseUserData( bTmp );
}
else if ( aPropertyName.compareToAscii( SC_UNO_FORBIDDEN ) == 0 )
{
// read-only - should not be set
}
else if ( aPropertyName.compareToAscii( SC_UNO_CHARCOMP ) == 0 )
{
// Int16 contains CharacterCompressionType values
sal_Int16 nUno = ScUnoHelpFunctions::GetInt16FromAny( aValue );
pDoc->SetAsianCompression( (sal_uInt8) nUno );
bUpdateHeights = sal_True;
}
else if ( aPropertyName.compareToAscii( SC_UNO_ASIANKERN ) == 0 )
{
pDoc->SetAsianKerning( ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
bUpdateHeights = sal_True;
}
else if ( aPropertyName.compareToAscii( SCSAVEVERSION ) == 0)
{
sal_Bool bTmp=sal_False;
if ( aValue >>= bTmp )
pDocShell->SetSaveVersionOnClose( bTmp );
}
else if ( aPropertyName.compareToAscii( SC_UNO_UPDTEMPL ) == 0 )
{
sal_Bool bTmp=sal_True;
if ( aValue >>= bTmp )
pDocShell->SetQueryLoadTemplate( bTmp );
}
else if ( aPropertyName.compareToAscii( SC_UNO_LOADREADONLY ) == 0 )
{
sal_Bool bTmp=sal_False;
if ( aValue >>= bTmp )
pDocShell->SetLoadReadonly( bTmp );
}
else if ( aPropertyName.compareToAscii( SC_UNO_SHAREDOC ) == 0 )
{
sal_Bool bDocShared = sal_False;
if ( aValue >>= bDocShared )
{
pDocShell->SetSharedXMLFlag( bDocShared );
}
}
else if ( aPropertyName.compareToAscii( SC_UNO_MODIFYPASSWORDINFO ) == 0 )
{
uno::Sequence< beans::PropertyValue > aInfo;
if ( !( aValue >>= aInfo ) )
throw lang::IllegalArgumentException(
::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Value of type Sequence<PropertyValue> expected!" ) ),
uno::Reference< uno::XInterface >(),
2 );
if ( !pDocShell->SetModifyPasswordInfo( aInfo ) )
throw beans::PropertyVetoException(
::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "The hash is not allowed to be changed now!" ) ),
uno::Reference< uno::XInterface >() );
}
else
{
ScGridOptions aGridOpt(aViewOpt.GetGridOptions());
if ( aPropertyName.compareToAscii( SC_UNO_SNAPTORASTER ) == 0 )
aGridOpt.SetUseGridSnap( ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
else if ( aPropertyName.compareToAscii( SC_UNO_RASTERVIS ) == 0 )
aGridOpt.SetGridVisible( ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
else if ( aPropertyName.compareToAscii( SC_UNO_RASTERRESX ) == 0 )
aGridOpt.SetFldDrawX( static_cast <sal_uInt32> ( ScUnoHelpFunctions::GetInt32FromAny( aValue ) ) );
else if ( aPropertyName.compareToAscii( SC_UNO_RASTERRESY ) == 0 )
aGridOpt.SetFldDrawY( static_cast <sal_uInt32> ( ScUnoHelpFunctions::GetInt32FromAny( aValue ) ) );
else if ( aPropertyName.compareToAscii( SC_UNO_RASTERSUBX ) == 0 )
aGridOpt.SetFldDivisionX( static_cast <sal_uInt32> ( ScUnoHelpFunctions::GetInt32FromAny( aValue ) ) );
else if ( aPropertyName.compareToAscii( SC_UNO_RASTERSUBY ) == 0 )
aGridOpt.SetFldDivisionY( static_cast <sal_uInt32> ( ScUnoHelpFunctions::GetInt32FromAny( aValue ) ) );
else if ( aPropertyName.compareToAscii( SC_UNO_RASTERSYNC ) == 0 )
aGridOpt.SetSynchronize( ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
else
throw beans::UnknownPropertyException();
aViewOpt.SetGridOptions(aGridOpt);
}
pDoc->SetViewOptions(aViewOpt);
if ( bUpdateHeights && !pDoc->IsImportingXML() )
{
// update automatic row heights and repaint
SCTAB nTabCount = pDoc->GetTableCount();
for (SCTAB nTab=0; nTab<nTabCount; nTab++)
if ( !pDocShell->AdjustRowHeight( 0, MAXROW, nTab ) )
pDocShell->PostPaint( 0,0,nTab, MAXCOL,MAXROW,nTab, PAINT_GRID );
pDocShell->SetDocumentModified();
}
}
else
throw uno::RuntimeException();
}
else
throw uno::RuntimeException();
}
uno::Any SAL_CALL ScDocumentConfiguration::getPropertyValue( const rtl::OUString& aPropertyName )
throw(beans::UnknownPropertyException, lang::WrappedTargetException,
uno::RuntimeException)
{
ScUnoGuard aGuard;
uno::Any aRet;
if(pDocShell)
{
ScDocument* pDoc = pDocShell->GetDocument();
if (pDoc)
{
const ScViewOptions& aViewOpt = pDoc->GetViewOptions();
/*Stampit enable/disable print cancel */
if ( aPropertyName.compareToAscii( SC_UNO_ALLOWPRINTJOBCANCEL ) == 0 )
ScUnoHelpFunctions::SetBoolInAny( aRet, pDocShell->Stamp_GetPrintCancelState() );
/*Stampit enable/disable print cancel */
else if ( aPropertyName.compareToAscii( SC_UNO_SHOWZERO ) == 0 )
ScUnoHelpFunctions::SetBoolInAny( aRet, aViewOpt.GetOption( VOPT_NULLVALS ) );
else if ( aPropertyName.compareToAscii( SC_UNO_SHOWNOTES ) == 0 )
ScUnoHelpFunctions::SetBoolInAny( aRet, aViewOpt.GetOption( VOPT_NOTES ) );
else if ( aPropertyName.compareToAscii( SC_UNO_SHOWGRID ) == 0 )
ScUnoHelpFunctions::SetBoolInAny( aRet, aViewOpt.GetOption( VOPT_GRID ) );
else if ( aPropertyName.compareToAscii( SC_UNO_GRIDCOLOR ) == 0 )
{
String aColorName;
Color aColor = aViewOpt.GetGridColor(&aColorName);
aRet <<= static_cast<sal_Int64>(aColor.GetColor());
}
else if ( aPropertyName.compareToAscii( SC_UNO_SHOWPAGEBR ) == 0 )
ScUnoHelpFunctions::SetBoolInAny( aRet, aViewOpt.GetOption( VOPT_PAGEBREAKS ) );
else if ( aPropertyName.compareToAscii( SC_UNONAME_LINKUPD ) == 0 )
aRet <<= static_cast<sal_Int16> ( pDoc->GetLinkMode() );
else if ( aPropertyName.compareToAscii( SC_UNO_COLROWHDR ) == 0 )
ScUnoHelpFunctions::SetBoolInAny( aRet, aViewOpt.GetOption( VOPT_HEADER ) );
else if ( aPropertyName.compareToAscii( SC_UNO_SHEETTABS ) == 0 )
ScUnoHelpFunctions::SetBoolInAny( aRet, aViewOpt.GetOption( VOPT_TABCONTROLS ) );
else if ( aPropertyName.compareToAscii( SC_UNO_OUTLSYMB ) == 0 )
ScUnoHelpFunctions::SetBoolInAny( aRet, aViewOpt.GetOption( VOPT_OUTLINER ) );
else if ( aPropertyName.compareToAscii( SC_UNO_AUTOCALC ) == 0 )
ScUnoHelpFunctions::SetBoolInAny( aRet, pDoc->GetAutoCalc() );
else if ( aPropertyName.compareToAscii( SC_UNO_PRINTERNAME ) == 0 )
{
// #i75610# don't create the printer, return empty string if no printer created yet
// (as in SwXDocumentSettings)
SfxPrinter* pPrinter = pDoc->GetPrinter( sal_False );
if (pPrinter)
aRet <<= rtl::OUString ( pPrinter->GetName());
else
aRet <<= rtl::OUString();
}
else if ( aPropertyName.compareToAscii( SC_UNO_PRINTERSETUP ) == 0 )
{
// #i75610# don't create the printer, return empty sequence if no printer created yet
// (as in SwXDocumentSettings)
SfxPrinter* pPrinter = pDoc->GetPrinter( sal_False );
if (pPrinter)
{
SvMemoryStream aStream;
pPrinter->Store( aStream );
aStream.Seek ( STREAM_SEEK_TO_END );
sal_uInt32 nSize = aStream.Tell();
aStream.Seek ( STREAM_SEEK_TO_BEGIN );
uno::Sequence < sal_Int8 > aSequence( nSize );
aStream.Read ( aSequence.getArray(), nSize );
aRet <<= aSequence;
}
else
aRet <<= uno::Sequence<sal_Int8>();
}
else if ( aPropertyName.compareToAscii( SC_UNO_APPLYDOCINF ) == 0 )
aRet <<= pDocShell->IsUseUserData();
else if ( aPropertyName.compareToAscii( SC_UNO_FORBIDDEN ) == 0 )
{
aRet <<= uno::Reference<i18n::XForbiddenCharacters>(new ScForbiddenCharsObj( pDocShell ));
}
else if ( aPropertyName.compareToAscii( SC_UNO_CHARCOMP ) == 0 )
aRet <<= static_cast<sal_Int16> ( pDoc->GetAsianCompression() );
else if ( aPropertyName.compareToAscii( SC_UNO_ASIANKERN ) == 0 )
ScUnoHelpFunctions::SetBoolInAny( aRet, pDoc->GetAsianKerning() );
else if ( aPropertyName.compareToAscii( SCSAVEVERSION ) == 0)
aRet <<= pDocShell->IsSaveVersionOnClose();
else if ( aPropertyName.compareToAscii( SC_UNO_UPDTEMPL ) == 0 )
aRet <<= pDocShell->IsQueryLoadTemplate();
else if ( aPropertyName.compareToAscii( SC_UNO_LOADREADONLY ) == 0 )
aRet <<= pDocShell->IsLoadReadonly();
// <--
else if ( aPropertyName.compareToAscii( SC_UNO_SHAREDOC ) == 0 )
{
ScUnoHelpFunctions::SetBoolInAny( aRet, pDocShell->HasSharedXMLFlagSet() );
}
else if ( aPropertyName.compareToAscii( SC_UNO_MODIFYPASSWORDINFO ) == 0 )
aRet <<= pDocShell->GetModifyPasswordInfo();
else
{
const ScGridOptions& aGridOpt = aViewOpt.GetGridOptions();
if ( aPropertyName.compareToAscii( SC_UNO_SNAPTORASTER ) == 0 )
ScUnoHelpFunctions::SetBoolInAny( aRet, aGridOpt.GetUseGridSnap() );
else if ( aPropertyName.compareToAscii( SC_UNO_RASTERVIS ) == 0 )
ScUnoHelpFunctions::SetBoolInAny( aRet, aGridOpt.GetGridVisible() );
else if ( aPropertyName.compareToAscii( SC_UNO_RASTERRESX ) == 0 )
aRet <<= static_cast<sal_Int32> ( aGridOpt.GetFldDrawX() );
else if ( aPropertyName.compareToAscii( SC_UNO_RASTERRESY ) == 0 )
aRet <<= static_cast<sal_Int32> ( aGridOpt.GetFldDrawY() );
else if ( aPropertyName.compareToAscii( SC_UNO_RASTERSUBX ) == 0 )
aRet <<= static_cast<sal_Int32> ( aGridOpt.GetFldDivisionX() );
else if ( aPropertyName.compareToAscii( SC_UNO_RASTERSUBY ) == 0 )
aRet <<= static_cast<sal_Int32> ( aGridOpt.GetFldDivisionY() );
else if ( aPropertyName.compareToAscii( SC_UNO_RASTERSYNC ) == 0 )
ScUnoHelpFunctions::SetBoolInAny( aRet, aGridOpt.GetSynchronize() );
else
throw beans::UnknownPropertyException();
}
}
else
throw uno::RuntimeException();
}
else
throw uno::RuntimeException();
return aRet;
}
SC_IMPL_DUMMY_PROPERTY_LISTENER( ScDocumentConfiguration )
// XServiceInfo
rtl::OUString SAL_CALL ScDocumentConfiguration::getImplementationName() throw(uno::RuntimeException)
{
return rtl::OUString::createFromAscii( "ScDocumentConfiguration" );
}
sal_Bool SAL_CALL ScDocumentConfiguration::supportsService( const rtl::OUString& rServiceName )
throw(uno::RuntimeException)
{
String aServiceStr( rServiceName );
return aServiceStr.EqualsAscii( SCCOMPSCPREADSHEETSETTINGS_SERVICE ) ||
aServiceStr.EqualsAscii( SCDOCUMENTSETTINGS_SERVICE );
}
uno::Sequence<rtl::OUString> SAL_CALL ScDocumentConfiguration::getSupportedServiceNames()
throw(uno::RuntimeException)
{
uno::Sequence<rtl::OUString> aRet(2);
rtl::OUString* pArray = aRet.getArray();
pArray[0] = rtl::OUString::createFromAscii( SCCOMPSCPREADSHEETSETTINGS_SERVICE );
pArray[1] = rtl::OUString::createFromAscii( SCDOCUMENTSETTINGS_SERVICE );
return aRet;
}
//-------------------------------------------------------------------------