/************************************************************** * * 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 --------------------------------------------------------------- #include #include #include "poolhelp.hxx" #include "document.hxx" #include "docpool.hxx" #include "stlpool.hxx" // ----------------------------------------------------------------------- ScPoolHelper::ScPoolHelper( ScDocument* pSourceDoc ) :pFormTable(NULL) ,pEditPool(NULL) ,pEnginePool(NULL) ,m_pSourceDoc(pSourceDoc) { DBG_ASSERT( pSourceDoc, "ScPoolHelper: no document" ); pDocPool = new ScDocumentPool; pDocPool->FreezeIdRanges(); mxStylePool = new ScStyleSheetPool( *pDocPool, pSourceDoc ); } ScPoolHelper::~ScPoolHelper() { SfxItemPool::Free(pEnginePool); SfxItemPool::Free(pEditPool); delete pFormTable; mxStylePool.clear(); SfxItemPool::Free(pDocPool); } SfxItemPool* ScPoolHelper::GetEditPool() const { if ( !pEditPool ) { pEditPool = EditEngine::CreatePool(); pEditPool->SetDefaultMetric( SFX_MAPUNIT_100TH_MM ); pEditPool->FreezeIdRanges(); pEditPool->SetFileFormatVersion( SOFFICE_FILEFORMAT_50 ); // used in ScGlobal::EETextObjEqual } return pEditPool; } SfxItemPool* ScPoolHelper::GetEnginePool() const { if ( !pEnginePool ) { pEnginePool = EditEngine::CreatePool(); pEnginePool->SetDefaultMetric( SFX_MAPUNIT_100TH_MM ); pEnginePool->FreezeIdRanges(); } // ifg ( pEnginePool ) return pEnginePool; } SvNumberFormatter* ScPoolHelper::GetFormTable() const { if ( !pFormTable ) { pFormTable = new SvNumberFormatter( m_pSourceDoc->GetServiceManager(), ScGlobal::eLnge ); pFormTable->SetColorLink( LINK( m_pSourceDoc, ScDocument, GetUserDefinedColor ) ); pFormTable->SetEvalDateFormat( NF_EVALDATEFORMAT_INTL_FORMAT ); UseDocOptions(); // null date, year2000, std precision } return pFormTable; } void ScPoolHelper::UseDocOptions() const { if (pFormTable) { sal_uInt16 d,m,y; aOpt.GetDate( d,m,y ); pFormTable->ChangeNullDate( d,m,y ); pFormTable->ChangeStandardPrec( (sal_uInt16)aOpt.GetStdPrecision() ); pFormTable->SetYear2000( aOpt.GetYear2000() ); } } void ScPoolHelper::SetFormTableOpt(const ScDocOptions& rOpt) { aOpt = rOpt; UseDocOptions(); // #i105512# if the number formatter exists, update its settings } void ScPoolHelper::SourceDocumentGone() { // reset all pointers to the source document mxStylePool->SetDocument( NULL ); if ( pFormTable ) pFormTable->SetColorLink( Link() ); } // -----------------------------------------------------------------------