xref: /aoo42x/main/sd/source/core/stlpool.cxx (revision 94ee63a6)
15b190011SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
35b190011SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
45b190011SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
55b190011SAndrew Rist  * distributed with this work for additional information
65b190011SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
75b190011SAndrew Rist  * to you under the Apache License, Version 2.0 (the
85b190011SAndrew Rist  * "License"); you may not use this file except in compliance
95b190011SAndrew Rist  * with the License.  You may obtain a copy of the License at
105b190011SAndrew Rist  *
115b190011SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
125b190011SAndrew Rist  *
135b190011SAndrew Rist  * Unless required by applicable law or agreed to in writing,
145b190011SAndrew Rist  * software distributed under the License is distributed on an
155b190011SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
165b190011SAndrew Rist  * KIND, either express or implied.  See the License for the
175b190011SAndrew Rist  * specific language governing permissions and limitations
185b190011SAndrew Rist  * under the License.
195b190011SAndrew Rist  *
205b190011SAndrew Rist  *************************************************************/
215b190011SAndrew Rist 
225b190011SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_sd.hxx"
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include <com/sun/star/lang/DisposedException.hpp>
28cdf0e10cSrcweir #include <editeng/eeitem.hxx>
29cdf0e10cSrcweir #include <editeng/fhgtitem.hxx>
30cdf0e10cSrcweir #include <editeng/colritem.hxx>
31cdf0e10cSrcweir #include <editeng/cntritem.hxx>
32cdf0e10cSrcweir #include <editeng/shdditem.hxx>
33cdf0e10cSrcweir #include <editeng/crsditem.hxx>
34cdf0e10cSrcweir #include <editeng/udlnitem.hxx>
35cdf0e10cSrcweir #include <editeng/wghtitem.hxx>
36cdf0e10cSrcweir #include <editeng/postitem.hxx>
37cdf0e10cSrcweir #include <editeng/fontitem.hxx>
38cdf0e10cSrcweir #include <svl/poolitem.hxx>
39cdf0e10cSrcweir #include <svx/xfillit0.hxx>
40cdf0e10cSrcweir #include <svx/xlineit0.hxx>
41cdf0e10cSrcweir #include <editeng/ulspitem.hxx>
42cdf0e10cSrcweir #include <editeng/numitem.hxx>
43cdf0e10cSrcweir #include <editeng/brshitem.hxx>
44cdf0e10cSrcweir #include <editeng/editeng.hxx>
45cdf0e10cSrcweir #include <svl/smplhint.hxx>
46cdf0e10cSrcweir #include <editeng/langitem.hxx>
47cdf0e10cSrcweir #include <editeng/charreliefitem.hxx>
48cdf0e10cSrcweir #ifndef _SVX_EMPHITEM_HXX
49cdf0e10cSrcweir #include <editeng/emphitem.hxx>
50cdf0e10cSrcweir #endif
51cdf0e10cSrcweir #include <svx/sdr/table/tabledesign.hxx>
52cdf0e10cSrcweir #include <editeng/akrnitem.hxx>
53cdf0e10cSrcweir 
54cdf0e10cSrcweir #include <svx/svdattr.hxx>
55cdf0e10cSrcweir #include "eetext.hxx"
56cdf0e10cSrcweir #include <svx/xtable.hxx>			// fuer RGB_Color
57cdf0e10cSrcweir #include <editeng/bulitem.hxx>
58cdf0e10cSrcweir #include <editeng/lrspitem.hxx>
59cdf0e10cSrcweir #include <editeng/adjitem.hxx>
60cdf0e10cSrcweir #include <svl/itempool.hxx>
61cdf0e10cSrcweir 
62cdf0e10cSrcweir #define _SDR_POSITIVE
63cdf0e10cSrcweir #define _SDR_ITEMS
64cdf0e10cSrcweir 
65cdf0e10cSrcweir #include "stlpool.hxx"
66cdf0e10cSrcweir #include "sdresid.hxx"
67cdf0e10cSrcweir #include "stlsheet.hxx"
68cdf0e10cSrcweir #include "glob.hrc"
69cdf0e10cSrcweir #include "glob.hxx"
70cdf0e10cSrcweir #include "drawdoc.hxx"
71cdf0e10cSrcweir #include "sdmod.hxx"
72cdf0e10cSrcweir #include "sdpage.hxx"
73cdf0e10cSrcweir #include "helpids.h"
74cdf0e10cSrcweir #include <svl/itemset.hxx>
75cdf0e10cSrcweir #include "app.hrc"
76cdf0e10cSrcweir 
77cdf0e10cSrcweir using ::rtl::OUString;
78cdf0e10cSrcweir using namespace ::com::sun::star::uno;
79cdf0e10cSrcweir using namespace ::com::sun::star::lang;
80cdf0e10cSrcweir using namespace ::com::sun::star::style;
81cdf0e10cSrcweir using namespace ::com::sun::star::container;
82cdf0e10cSrcweir 
83cdf0e10cSrcweir // ----------------------------------------------------------
84cdf0e10cSrcweir 
SdStyleSheetPool(SfxItemPool const & _rPool,SdDrawDocument * pDocument)85cdf0e10cSrcweir SdStyleSheetPool::SdStyleSheetPool(SfxItemPool const& _rPool, SdDrawDocument* pDocument)
86cdf0e10cSrcweir :	SdStyleSheetPoolBase( _rPool )
87cdf0e10cSrcweir ,	mpActualStyleSheet(NULL)
88cdf0e10cSrcweir ,	mpDoc(pDocument)
89cdf0e10cSrcweir {
90cdf0e10cSrcweir 	if( mpDoc )
91cdf0e10cSrcweir 	{
92cdf0e10cSrcweir 		rtl::Reference< SfxStyleSheetPool > xPool( this );
93cdf0e10cSrcweir 
94cdf0e10cSrcweir 		// create graphics family
95cdf0e10cSrcweir 		mxGraphicFamily = new SdStyleFamily( xPool, SD_STYLE_FAMILY_GRAPHICS );
96cdf0e10cSrcweir 		mxCellFamily = new SdStyleFamily( xPool, SD_STYLE_FAMILY_CELL );
97cdf0e10cSrcweir 
98cdf0e10cSrcweir 		mxTableFamily = sdr::table::CreateTableDesignFamily();
99cdf0e10cSrcweir 		Reference< XNamed > xNamed( mxTableFamily, UNO_QUERY );
100cdf0e10cSrcweir 		if( xNamed.is() )
101cdf0e10cSrcweir 			msTableFamilyName = xNamed->getName();
102cdf0e10cSrcweir 
103cdf0e10cSrcweir 		// create presentation families, one for each master page
104cdf0e10cSrcweir 		const sal_uInt16 nCount = mpDoc->GetMasterSdPageCount(PK_STANDARD);
105cdf0e10cSrcweir 		for( sal_uInt16 nPage = 0; nPage < nCount; ++nPage )
106cdf0e10cSrcweir 			AddStyleFamily( mpDoc->GetMasterSdPage(nPage,PK_STANDARD) );
107cdf0e10cSrcweir 
108cdf0e10cSrcweir //		StartListening( *mpDoc );
109cdf0e10cSrcweir 	}
110cdf0e10cSrcweir }
111cdf0e10cSrcweir 
112cdf0e10cSrcweir // ----------------------------------------------------------
113cdf0e10cSrcweir 
~SdStyleSheetPool()114cdf0e10cSrcweir SdStyleSheetPool::~SdStyleSheetPool()
115cdf0e10cSrcweir {
116cdf0e10cSrcweir 	DBG_ASSERT( mpDoc == NULL, "sd::SdStyleSheetPool::~SdStyleSheetPool(), dispose me first!" );
117cdf0e10cSrcweir }
118cdf0e10cSrcweir 
119cdf0e10cSrcweir // ----------------------------------------------------------
120cdf0e10cSrcweir 
Create(const String & rName,SfxStyleFamily eFamily,sal_uInt16 _nMask)121cdf0e10cSrcweir SfxStyleSheetBase* SdStyleSheetPool::Create(const String& rName, SfxStyleFamily eFamily, sal_uInt16 _nMask )
122cdf0e10cSrcweir {
123cdf0e10cSrcweir 	return new SdStyleSheet(rName, *this, eFamily, _nMask);
124cdf0e10cSrcweir }
125cdf0e10cSrcweir 
126cdf0e10cSrcweir // ----------------------------------------------------------
127cdf0e10cSrcweir 
Create(const SdStyleSheet & rStyle)128cdf0e10cSrcweir SfxStyleSheetBase* SdStyleSheetPool::Create(const SdStyleSheet& rStyle)
129cdf0e10cSrcweir {
130cdf0e10cSrcweir 	return new SdStyleSheet( rStyle );
131cdf0e10cSrcweir }
132cdf0e10cSrcweir 
133cdf0e10cSrcweir // ----------------------------------------------------------
134cdf0e10cSrcweir 
GetTitleSheet(const String & rLayoutName)135cdf0e10cSrcweir SfxStyleSheetBase* SdStyleSheetPool::GetTitleSheet(const String& rLayoutName)
136cdf0e10cSrcweir {
137cdf0e10cSrcweir 	String aName(rLayoutName);
138cdf0e10cSrcweir 	aName.AppendAscii( RTL_CONSTASCII_STRINGPARAM( SD_LT_SEPARATOR ));
139cdf0e10cSrcweir 	aName += String(SdResId(STR_LAYOUT_TITLE));
140cdf0e10cSrcweir 	SfxStyleSheetBase* pResult = Find(aName, SD_STYLE_FAMILY_MASTERPAGE);
141cdf0e10cSrcweir 	return pResult;
142cdf0e10cSrcweir }
143cdf0e10cSrcweir 
144cdf0e10cSrcweir /*************************************************************************
145cdf0e10cSrcweir |*
146cdf0e10cSrcweir |* eine Liste der Gliederungstextvorlagen fuer ein Praesentationlayout
147cdf0e10cSrcweir |* erstellen, der Aufrufer muss die Liste wieder loeschen
148cdf0e10cSrcweir |*
149cdf0e10cSrcweir \************************************************************************/
150cdf0e10cSrcweir 
CreateOutlineSheetList(const String & rLayoutName)151cdf0e10cSrcweir List* SdStyleSheetPool::CreateOutlineSheetList (const String& rLayoutName)
152cdf0e10cSrcweir {
153cdf0e10cSrcweir 	String aName(rLayoutName);
154cdf0e10cSrcweir 	aName.AppendAscii( RTL_CONSTASCII_STRINGPARAM( SD_LT_SEPARATOR ));
155cdf0e10cSrcweir 	aName += String(SdResId(STR_LAYOUT_OUTLINE));
156cdf0e10cSrcweir 	List* pList = new List;
157cdf0e10cSrcweir 	for (sal_uInt16 nSheet = 1; nSheet < 10; nSheet++)
158cdf0e10cSrcweir 	{
159cdf0e10cSrcweir 		String aFullName(aName);
160cdf0e10cSrcweir 		aFullName.Append( sal_Unicode( ' ' ));
161cdf0e10cSrcweir 		aFullName.Append( String::CreateFromInt32( (sal_Int32)nSheet ));
162cdf0e10cSrcweir 		SfxStyleSheetBase* pSheet = Find(aFullName, SD_STYLE_FAMILY_MASTERPAGE);
163cdf0e10cSrcweir 		pList->Insert(pSheet, LIST_APPEND);
164cdf0e10cSrcweir 	}
165cdf0e10cSrcweir 	return pList;
166cdf0e10cSrcweir }
167cdf0e10cSrcweir 
168cdf0e10cSrcweir /*************************************************************************
169cdf0e10cSrcweir |*
170cdf0e10cSrcweir |* StyleSheets mit Defaultweren fuer das genannte Praesentationslayout erzeugen
171cdf0e10cSrcweir |*
172cdf0e10cSrcweir \************************************************************************/
173cdf0e10cSrcweir 
CreateLayoutStyleSheets(const String & rLayoutName,sal_Bool bCheck)174cdf0e10cSrcweir void SdStyleSheetPool::CreateLayoutStyleSheets(const String& rLayoutName, sal_Bool bCheck /*= sal_False*/ )
175cdf0e10cSrcweir {
176cdf0e10cSrcweir     const sal_uInt16 nUsedMask = SFXSTYLEBIT_ALL & ~SFXSTYLEBIT_USERDEF;
177cdf0e10cSrcweir 
178cdf0e10cSrcweir     (void)bCheck;
179cdf0e10cSrcweir 	sal_Bool bCreated = sal_False;
180cdf0e10cSrcweir 
181cdf0e10cSrcweir 	SfxStyleSheetBase* pSheet = NULL;
182cdf0e10cSrcweir 
183cdf0e10cSrcweir 	String aPrefix(rLayoutName);
184cdf0e10cSrcweir 	String aSep( RTL_CONSTASCII_USTRINGPARAM( SD_LT_SEPARATOR ));
185cdf0e10cSrcweir 	aPrefix.Insert(aSep);
186cdf0e10cSrcweir 
187cdf0e10cSrcweir 	Font aLatinFont, aCJKFont, aCTLFont;
188cdf0e10cSrcweir 
189cdf0e10cSrcweir 	mpDoc->getDefaultFonts( aLatinFont, aCJKFont, aCTLFont );
190cdf0e10cSrcweir 
191cdf0e10cSrcweir 	// Font fuer Titel und Gliederung
192cdf0e10cSrcweir 	SvxFontItem aSvxFontItem( aLatinFont.GetFamily(), aLatinFont.GetName(), aLatinFont.GetStyleName(), aLatinFont.GetPitch(),
193cdf0e10cSrcweir 		                      aLatinFont.GetCharSet(), EE_CHAR_FONTINFO );
194cdf0e10cSrcweir 
195cdf0e10cSrcweir 	SvxFontItem aSvxFontItemCJK( aCJKFont.GetFamily(), aCJKFont.GetName(), aCJKFont.GetStyleName(), aCJKFont.GetPitch(),
196cdf0e10cSrcweir 		                         aCJKFont.GetCharSet(), EE_CHAR_FONTINFO_CJK );
197cdf0e10cSrcweir 
198cdf0e10cSrcweir 	SvxFontItem aSvxFontItemCTL( aCTLFont.GetFamily(), aCTLFont.GetName(), aCTLFont.GetStyleName(), aCTLFont.GetPitch(),
199cdf0e10cSrcweir 		                         aCTLFont.GetCharSet(), EE_CHAR_FONTINFO_CTL );
200cdf0e10cSrcweir 
201cdf0e10cSrcweir 	Font aBulletFont( GetBulletFont() );
202cdf0e10cSrcweir 
203cdf0e10cSrcweir 	/**************************************************************************
204cdf0e10cSrcweir 	* Gliederungsebenen
205cdf0e10cSrcweir 	**************************************************************************/
206cdf0e10cSrcweir 	String aName(SdResId(STR_LAYOUT_OUTLINE));
207cdf0e10cSrcweir 	String aHelpFile;
208cdf0e10cSrcweir 
209cdf0e10cSrcweir 	SfxStyleSheetBase* pParent = NULL;
210cdf0e10cSrcweir     SvxLRSpaceItem aSvxLRSpaceItem( EE_PARA_LRSPACE );
211cdf0e10cSrcweir     SvxULSpaceItem aSvxULSpaceItem( EE_PARA_ULSPACE );
212cdf0e10cSrcweir 	sal_uInt16 nLevel;
213cdf0e10cSrcweir 
214cdf0e10cSrcweir 	for( nLevel = 1; nLevel < 10; nLevel++)
215cdf0e10cSrcweir 	{
216cdf0e10cSrcweir 		String aLevelName(aName);
217cdf0e10cSrcweir 		aLevelName.Append( sal_Unicode( ' ' ));
218cdf0e10cSrcweir 		aLevelName.Append( String::CreateFromInt32( sal_Int32( nLevel )));
219cdf0e10cSrcweir 
220cdf0e10cSrcweir 		aLevelName.Insert(aPrefix, 0);
221cdf0e10cSrcweir 
222cdf0e10cSrcweir 		if (!Find(aLevelName, SD_STYLE_FAMILY_MASTERPAGE))
223cdf0e10cSrcweir 		{
224cdf0e10cSrcweir 			bCreated = sal_True;
225cdf0e10cSrcweir 			pSheet = &Make(aLevelName, SD_STYLE_FAMILY_MASTERPAGE,nUsedMask);
226cdf0e10cSrcweir 			pSheet->SetHelpId( aHelpFile, HID_PSEUDOSHEET_OUTLINE + nLevel );
227cdf0e10cSrcweir 
228cdf0e10cSrcweir 			pSheet->SetParent( String() );
229cdf0e10cSrcweir 
230cdf0e10cSrcweir 			// Attributierung fuer Level 1, die anderen Ebenen "erben"
231cdf0e10cSrcweir 			if (nLevel == 1)
232cdf0e10cSrcweir 			{
233cdf0e10cSrcweir 				SfxItemSet&     rSet = pSheet->GetItemSet();
234cdf0e10cSrcweir 
235cdf0e10cSrcweir 				rSet.Put(aSvxFontItem);
236cdf0e10cSrcweir 				rSet.Put(aSvxFontItemCJK);
237cdf0e10cSrcweir 				rSet.Put(aSvxFontItemCTL);
238cdf0e10cSrcweir 				rSet.Put( SvxPostureItem( ITALIC_NONE, EE_CHAR_ITALIC ) );
239cdf0e10cSrcweir 				rSet.Put( SvxPostureItem( ITALIC_NONE, EE_CHAR_ITALIC_CJK ) );
240cdf0e10cSrcweir 				rSet.Put( SvxPostureItem( ITALIC_NONE, EE_CHAR_ITALIC_CTL ) );
241cdf0e10cSrcweir 				rSet.Put( SvxWeightItem( WEIGHT_NORMAL, EE_CHAR_WEIGHT ) );
242cdf0e10cSrcweir 				rSet.Put( SvxWeightItem( WEIGHT_NORMAL, EE_CHAR_WEIGHT_CJK ) );
243cdf0e10cSrcweir 				rSet.Put( SvxWeightItem( WEIGHT_NORMAL, EE_CHAR_WEIGHT_CTL ) );
244cdf0e10cSrcweir                 rSet.Put( SvxUnderlineItem(UNDERLINE_NONE, EE_CHAR_UNDERLINE ) );
245cdf0e10cSrcweir                 rSet.Put( SvxOverlineItem(UNDERLINE_NONE, EE_CHAR_OVERLINE ) );
246cdf0e10cSrcweir                 rSet.Put( SvxCrossedOutItem(STRIKEOUT_NONE, EE_CHAR_STRIKEOUT ) );
247cdf0e10cSrcweir                 rSet.Put( SvxShadowedItem(sal_False, EE_CHAR_SHADOW ) );
248cdf0e10cSrcweir                 rSet.Put( SvxContourItem(sal_False, EE_CHAR_OUTLINE ) );
249cdf0e10cSrcweir                 rSet.Put( SvxEmphasisMarkItem(EMPHASISMARK_NONE, EE_CHAR_EMPHASISMARK ) );
250cdf0e10cSrcweir                 rSet.Put( SvxCharReliefItem(RELIEF_NONE, EE_CHAR_RELIEF) );
251cdf0e10cSrcweir                 rSet.Put( SvxColorItem( Color(COL_AUTO), EE_CHAR_COLOR) );
252cdf0e10cSrcweir 				rSet.Put( XLineStyleItem(XLINE_NONE) );
253cdf0e10cSrcweir 				rSet.Put( XFillStyleItem(XFILL_NONE) );
254cdf0e10cSrcweir 				// #i16874# enable kerning by default but only for new documents
255cdf0e10cSrcweir 				rSet.Put( SvxAutoKernItem( sal_True, EE_CHAR_PAIRKERNING ) );
256cdf0e10cSrcweir 
257cdf0e10cSrcweir 				if( nLevel == 1 )
258cdf0e10cSrcweir 				{
259cdf0e10cSrcweir 					Font f( GetBulletFont() );
260cdf0e10cSrcweir 					PutNumBulletItem( pSheet, f );
261cdf0e10cSrcweir 				}
262cdf0e10cSrcweir 			}
263cdf0e10cSrcweir 
264cdf0e10cSrcweir 			sal_uLong nFontSize = 20;
265cdf0e10cSrcweir 			short nFirstIndent = -600;
266cdf0e10cSrcweir //			sal_uInt16 nIndent = nLevel * 1200;
267*94ee63a6SSteve Yin 			sal_uInt16 nUpper = 100;
268cdf0e10cSrcweir 
269cdf0e10cSrcweir 			switch (nLevel)
270cdf0e10cSrcweir 			{
271cdf0e10cSrcweir 				case 1:
272cdf0e10cSrcweir 				{
273cdf0e10cSrcweir 					nFontSize = 32;
274*94ee63a6SSteve Yin 					nUpper = 500;
275cdf0e10cSrcweir 					nFirstIndent = -900;
276cdf0e10cSrcweir 				}
277cdf0e10cSrcweir 				break;
278cdf0e10cSrcweir 
279cdf0e10cSrcweir 				case 2:
280cdf0e10cSrcweir 				{
281cdf0e10cSrcweir 					nFontSize = 28;
282*94ee63a6SSteve Yin 					nUpper = 400;
283cdf0e10cSrcweir 					nFirstIndent = -800;
284cdf0e10cSrcweir 				}
285cdf0e10cSrcweir 				break;
286cdf0e10cSrcweir 
287cdf0e10cSrcweir 				case 3:
288cdf0e10cSrcweir 				{
289cdf0e10cSrcweir 					nFontSize = 24;
290*94ee63a6SSteve Yin 					nUpper = 300;
291cdf0e10cSrcweir 				}
292cdf0e10cSrcweir 				break;
293cdf0e10cSrcweir 
294cdf0e10cSrcweir 				case 4:
295cdf0e10cSrcweir 				{
296*94ee63a6SSteve Yin 					nUpper = 200;
297cdf0e10cSrcweir 				}
298cdf0e10cSrcweir 				break;
299cdf0e10cSrcweir 			}
300cdf0e10cSrcweir 
301cdf0e10cSrcweir 			// FontSize
302cdf0e10cSrcweir 			nFontSize = (sal_uInt16)((nFontSize * 2540L) / 72);  // Pt --> 1/100 mm
303cdf0e10cSrcweir 			SfxItemSet& rOutlineSet = pSheet->GetItemSet();
304cdf0e10cSrcweir 			rOutlineSet.Put( SvxFontHeightItem( nFontSize, 100, EE_CHAR_FONTHEIGHT ) );
305cdf0e10cSrcweir 			rOutlineSet.Put( SvxFontHeightItem( nFontSize, 100, EE_CHAR_FONTHEIGHT_CJK ) );
306cdf0e10cSrcweir 			rOutlineSet.Put( SvxFontHeightItem( SdDrawDocument::convertFontHeightToCTL( nFontSize ), 100, EE_CHAR_FONTHEIGHT_CTL ) );
307cdf0e10cSrcweir 
308cdf0e10cSrcweir 			// Einzuege
309cdf0e10cSrcweir /* i35937
310cdf0e10cSrcweir             aSvxLRSpaceItem.SetTxtFirstLineOfst(nFirstIndent);
311cdf0e10cSrcweir 			aSvxLRSpaceItem.SetTxtLeft(nIndent);
312cdf0e10cSrcweir 			aSvxLRSpaceItem.SetRight(0);
313cdf0e10cSrcweir 			aSvxLRSpaceItem.SetBulletFI(sal_True);
314cdf0e10cSrcweir 			pSheet->GetItemSet().Put(aSvxLRSpaceItem);
315cdf0e10cSrcweir */
316cdf0e10cSrcweir 			// Zeilendurchschuss (Abstand nach unten)
317*94ee63a6SSteve Yin 			aSvxULSpaceItem.SetUpper(nUpper);
318cdf0e10cSrcweir 			pSheet->GetItemSet().Put(aSvxULSpaceItem);
319cdf0e10cSrcweir 
320cdf0e10cSrcweir /* i35937
321cdf0e10cSrcweir 			if (nLevel == 1)
322cdf0e10cSrcweir 			{
323cdf0e10cSrcweir 				SfxUInt16Item aBulletStateItem(EE_PARA_BULLETSTATE, 1); // Bullets sichtbar
324cdf0e10cSrcweir 				pSheet->GetItemSet().Put(aBulletStateItem);
325cdf0e10cSrcweir 			}
326cdf0e10cSrcweir */
327cdf0e10cSrcweir 		}
328cdf0e10cSrcweir 	}
329cdf0e10cSrcweir 
330cdf0e10cSrcweir 	// if we created outline styles, we need to chain them
331cdf0e10cSrcweir 	if( bCreated )
332cdf0e10cSrcweir 	{
333cdf0e10cSrcweir 		pParent = NULL;
334cdf0e10cSrcweir 		for (nLevel = 1; nLevel < 10; nLevel++)
335cdf0e10cSrcweir 		{
336cdf0e10cSrcweir 			String aLevelName(aName);
337cdf0e10cSrcweir 			aLevelName.Append( sal_Unicode( ' ' ));
338cdf0e10cSrcweir 			aLevelName.Append( String::CreateFromInt32( sal_Int32( nLevel )));
339cdf0e10cSrcweir 
340cdf0e10cSrcweir 			aLevelName.Insert(aPrefix, 0);
341cdf0e10cSrcweir 
342cdf0e10cSrcweir 			pSheet = Find(aLevelName, SD_STYLE_FAMILY_MASTERPAGE);
343cdf0e10cSrcweir 
344cdf0e10cSrcweir 			DBG_ASSERT( pSheet, "missing layout style!");
345cdf0e10cSrcweir 
346cdf0e10cSrcweir 			if( pSheet )
347cdf0e10cSrcweir 			{
348cdf0e10cSrcweir 				if (pParent)
349cdf0e10cSrcweir 					pSheet->SetParent(pParent->GetName());
350cdf0e10cSrcweir 				pParent = pSheet;
351cdf0e10cSrcweir 			}
352cdf0e10cSrcweir 		}
353cdf0e10cSrcweir 	}
354cdf0e10cSrcweir 
355cdf0e10cSrcweir 	/**************************************************************************
356cdf0e10cSrcweir 	* Titel
357cdf0e10cSrcweir 	**************************************************************************/
358cdf0e10cSrcweir 	aName = String(SdResId(STR_LAYOUT_TITLE));
359cdf0e10cSrcweir 	aName.Insert(aPrefix, 0);
360cdf0e10cSrcweir 
361cdf0e10cSrcweir 	if (!Find(aName, SD_STYLE_FAMILY_MASTERPAGE))
362cdf0e10cSrcweir 	{
363cdf0e10cSrcweir 		bCreated = sal_True;
364cdf0e10cSrcweir 
365cdf0e10cSrcweir 		pSheet = &Make(aName, SD_STYLE_FAMILY_MASTERPAGE,nUsedMask);
366cdf0e10cSrcweir 		pSheet->SetHelpId( aHelpFile, HID_PSEUDOSHEET_TITLE );
367cdf0e10cSrcweir 		pSheet->SetParent(String());
368cdf0e10cSrcweir 		SfxItemSet& rTitleSet = pSheet->GetItemSet();
369cdf0e10cSrcweir 		rTitleSet.Put(XLineStyleItem(XLINE_NONE));
370cdf0e10cSrcweir 		rTitleSet.Put(XFillStyleItem(XFILL_NONE));
371cdf0e10cSrcweir 		rTitleSet.Put(aSvxFontItem);
372cdf0e10cSrcweir 		rTitleSet.Put(aSvxFontItemCJK);
373cdf0e10cSrcweir 		rTitleSet.Put(aSvxFontItemCTL);
374cdf0e10cSrcweir 		rTitleSet.Put(SvxPostureItem( ITALIC_NONE, EE_CHAR_ITALIC ) );
375cdf0e10cSrcweir 		rTitleSet.Put(SvxPostureItem( ITALIC_NONE, EE_CHAR_ITALIC_CJK ) );
376cdf0e10cSrcweir 		rTitleSet.Put(SvxPostureItem( ITALIC_NONE, EE_CHAR_ITALIC_CTL ) );
377cdf0e10cSrcweir 		rTitleSet.Put(SvxWeightItem( WEIGHT_NORMAL, EE_CHAR_WEIGHT ) );
378cdf0e10cSrcweir 		rTitleSet.Put(SvxWeightItem( WEIGHT_NORMAL, EE_CHAR_WEIGHT_CJK ) );
379cdf0e10cSrcweir 		rTitleSet.Put(SvxWeightItem( WEIGHT_NORMAL, EE_CHAR_WEIGHT_CTL ) );
380cdf0e10cSrcweir 		rTitleSet.Put(SvxFontHeightItem( 1552, 100, EE_CHAR_FONTHEIGHT ) );		            // 44 pt
381cdf0e10cSrcweir 		rTitleSet.Put(SvxFontHeightItem( 1552, 100, EE_CHAR_FONTHEIGHT_CJK ) );		            // 44 pt
382cdf0e10cSrcweir 		rTitleSet.Put(SvxFontHeightItem( SdDrawDocument::convertFontHeightToCTL( 1552 ), 100, EE_CHAR_FONTHEIGHT_CTL ) );		            // 44 pt
383cdf0e10cSrcweir         rTitleSet.Put(SvxUnderlineItem(UNDERLINE_NONE, EE_CHAR_UNDERLINE ));
384cdf0e10cSrcweir         rTitleSet.Put(SvxOverlineItem(UNDERLINE_NONE, EE_CHAR_OVERLINE ));
385cdf0e10cSrcweir         rTitleSet.Put(SvxCrossedOutItem(STRIKEOUT_NONE, EE_CHAR_STRIKEOUT ));
386cdf0e10cSrcweir         rTitleSet.Put(SvxShadowedItem(sal_False, EE_CHAR_SHADOW ));
387cdf0e10cSrcweir         rTitleSet.Put(SvxContourItem(sal_False, EE_CHAR_OUTLINE ));
388cdf0e10cSrcweir         rTitleSet.Put( SvxEmphasisMarkItem(EMPHASISMARK_NONE, EE_CHAR_EMPHASISMARK ) );
389cdf0e10cSrcweir         rTitleSet.Put( SvxCharReliefItem(RELIEF_NONE, EE_CHAR_RELIEF ) );
390cdf0e10cSrcweir         rTitleSet.Put(SvxColorItem( Color(COL_AUTO), EE_CHAR_COLOR ));
391cdf0e10cSrcweir         rTitleSet.Put(SvxAdjustItem(SVX_ADJUST_CENTER, EE_PARA_JUST ));
392cdf0e10cSrcweir 		rTitleSet.Put( SdrTextVertAdjustItem( SDRTEXTVERTADJUST_CENTER ) );
393cdf0e10cSrcweir //		rTitleSet.Put( SfxUInt16Item(EE_PARA_BULLETSTATE, 0) );
394cdf0e10cSrcweir 		// #i16874# enable kerning by default but only for new documents
395cdf0e10cSrcweir 		rTitleSet.Put( SvxAutoKernItem( sal_True, EE_CHAR_PAIRKERNING ) );
396cdf0e10cSrcweir 
397cdf0e10cSrcweir 		aBulletFont.SetSize(Size(0,1552));					// 44 pt
398cdf0e10cSrcweir 		PutNumBulletItem( pSheet, aBulletFont );
399cdf0e10cSrcweir 	}
400cdf0e10cSrcweir 
401cdf0e10cSrcweir 	/**************************************************************************
402cdf0e10cSrcweir 	* Untertitel
403cdf0e10cSrcweir 	**************************************************************************/
404cdf0e10cSrcweir 	aName = String(SdResId(STR_LAYOUT_SUBTITLE));
405cdf0e10cSrcweir 	aName.Insert(aPrefix, 0);
406cdf0e10cSrcweir 
407cdf0e10cSrcweir 	if (!Find(aName, SD_STYLE_FAMILY_MASTERPAGE))
408cdf0e10cSrcweir 	{
409cdf0e10cSrcweir 		bCreated = sal_True;
410cdf0e10cSrcweir 
411cdf0e10cSrcweir 		pSheet = &Make(aName, SD_STYLE_FAMILY_MASTERPAGE,nUsedMask);
412cdf0e10cSrcweir 		pSheet->SetHelpId( aHelpFile, HID_PSEUDOSHEET_SUBTITLE );
413cdf0e10cSrcweir 		pSheet->SetParent(String());
414cdf0e10cSrcweir 		SfxItemSet& rSubtitleSet = pSheet->GetItemSet();
415cdf0e10cSrcweir 		rSubtitleSet.Put(XLineStyleItem(XLINE_NONE));
416cdf0e10cSrcweir 		rSubtitleSet.Put(XFillStyleItem(XFILL_NONE));
417cdf0e10cSrcweir 		rSubtitleSet.Put(aSvxFontItem);
418cdf0e10cSrcweir 		rSubtitleSet.Put(aSvxFontItemCJK);
419cdf0e10cSrcweir 		rSubtitleSet.Put(aSvxFontItemCTL);
420cdf0e10cSrcweir 		rSubtitleSet.Put(SvxPostureItem( ITALIC_NONE, EE_CHAR_ITALIC ) );
421cdf0e10cSrcweir 		rSubtitleSet.Put(SvxPostureItem( ITALIC_NONE, EE_CHAR_ITALIC_CJK ) );
422cdf0e10cSrcweir 		rSubtitleSet.Put(SvxPostureItem( ITALIC_NONE, EE_CHAR_ITALIC_CTL ) );
423cdf0e10cSrcweir 		rSubtitleSet.Put(SvxWeightItem( WEIGHT_NORMAL, EE_CHAR_WEIGHT ) );
424cdf0e10cSrcweir 		rSubtitleSet.Put(SvxWeightItem( WEIGHT_NORMAL, EE_CHAR_WEIGHT_CJK ) );
425cdf0e10cSrcweir 		rSubtitleSet.Put(SvxWeightItem( WEIGHT_NORMAL, EE_CHAR_WEIGHT_CTL ) );
426cdf0e10cSrcweir 		rSubtitleSet.Put( SvxFontHeightItem( 1129, 100, EE_CHAR_FONTHEIGHT ) );	    // 32 pt
427cdf0e10cSrcweir 		rSubtitleSet.Put( SvxFontHeightItem( 1129, 100, EE_CHAR_FONTHEIGHT_CJK ) ); // 32 pt
428cdf0e10cSrcweir 		rSubtitleSet.Put( SvxFontHeightItem( SdDrawDocument::convertFontHeightToCTL( 1129 ), 100, EE_CHAR_FONTHEIGHT_CTL ) ); // 32 pt
429cdf0e10cSrcweir         rSubtitleSet.Put(SvxUnderlineItem(UNDERLINE_NONE, EE_CHAR_UNDERLINE ));
430cdf0e10cSrcweir         rSubtitleSet.Put(SvxOverlineItem(UNDERLINE_NONE, EE_CHAR_OVERLINE ));
431cdf0e10cSrcweir         rSubtitleSet.Put(SvxCrossedOutItem(STRIKEOUT_NONE, EE_CHAR_STRIKEOUT ));
432cdf0e10cSrcweir         rSubtitleSet.Put(SvxShadowedItem(sal_False, EE_CHAR_SHADOW ));
433cdf0e10cSrcweir         rSubtitleSet.Put(SvxContourItem(sal_False, EE_CHAR_OUTLINE ));
434cdf0e10cSrcweir         rSubtitleSet.Put( SvxEmphasisMarkItem(EMPHASISMARK_NONE, EE_CHAR_EMPHASISMARK ) );
435cdf0e10cSrcweir         rSubtitleSet.Put( SvxCharReliefItem(RELIEF_NONE, EE_CHAR_RELIEF ) );
436cdf0e10cSrcweir         rSubtitleSet.Put(SvxColorItem( Color(COL_AUTO), EE_CHAR_COLOR ));
437cdf0e10cSrcweir         rSubtitleSet.Put(SvxAdjustItem(SVX_ADJUST_CENTER, EE_PARA_JUST ));
438cdf0e10cSrcweir 		rSubtitleSet.Put( SdrTextVertAdjustItem( SDRTEXTVERTADJUST_CENTER ) );
439cdf0e10cSrcweir //		rSubtitleSet.Put( SfxUInt16Item(EE_PARA_BULLETSTATE, 0) );
440cdf0e10cSrcweir 		// #i16874# enable kerning by default but only for new documents
441cdf0e10cSrcweir 		rSubtitleSet.Put( SvxAutoKernItem( sal_True, EE_CHAR_PAIRKERNING ) );
442cdf0e10cSrcweir 		aSvxLRSpaceItem.SetTxtLeft(0);
443cdf0e10cSrcweir 		rSubtitleSet.Put(aSvxLRSpaceItem);
444cdf0e10cSrcweir 
445cdf0e10cSrcweir 		Font aTmpFont( GetBulletFont() );
446cdf0e10cSrcweir 		aTmpFont.SetSize(Size(0, 1129));		// 32 pt
447cdf0e10cSrcweir 		PutNumBulletItem( pSheet, aTmpFont );
448cdf0e10cSrcweir 	}
449cdf0e10cSrcweir 
450cdf0e10cSrcweir 	/**************************************************************************
451cdf0e10cSrcweir 	* Notizen
452cdf0e10cSrcweir 	**************************************************************************/
453cdf0e10cSrcweir 	aName = String(SdResId(STR_LAYOUT_NOTES));
454cdf0e10cSrcweir 	aName.Insert(aPrefix, 0);
455cdf0e10cSrcweir 
456cdf0e10cSrcweir 	if (!Find(aName, SD_STYLE_FAMILY_MASTERPAGE))
457cdf0e10cSrcweir 	{
458cdf0e10cSrcweir 		bCreated = sal_True;
459cdf0e10cSrcweir 
460cdf0e10cSrcweir 		pSheet = &Make(aName, SD_STYLE_FAMILY_MASTERPAGE,nUsedMask);
461cdf0e10cSrcweir 		pSheet->SetHelpId( aHelpFile, HID_PSEUDOSHEET_NOTES );
462cdf0e10cSrcweir 		pSheet->SetParent(String());
463cdf0e10cSrcweir 		SfxItemSet& rNotesSet = pSheet->GetItemSet();
464cdf0e10cSrcweir 		rNotesSet.Put(XLineStyleItem(XLINE_NONE));
465cdf0e10cSrcweir 		rNotesSet.Put(XFillStyleItem(XFILL_NONE));
466cdf0e10cSrcweir 		rNotesSet.Put(aSvxFontItem);
467cdf0e10cSrcweir 		rNotesSet.Put(aSvxFontItemCJK);
468cdf0e10cSrcweir 		rNotesSet.Put(aSvxFontItemCTL);
469cdf0e10cSrcweir 		rNotesSet.Put( SvxPostureItem( ITALIC_NONE, EE_CHAR_ITALIC ) );
470cdf0e10cSrcweir 		rNotesSet.Put( SvxPostureItem( ITALIC_NONE, EE_CHAR_ITALIC_CJK ) );
471cdf0e10cSrcweir 		rNotesSet.Put( SvxPostureItem( ITALIC_NONE, EE_CHAR_ITALIC_CTL ) );
472cdf0e10cSrcweir 		rNotesSet.Put( SvxWeightItem( WEIGHT_NORMAL, EE_CHAR_WEIGHT ) );
473cdf0e10cSrcweir 		rNotesSet.Put( SvxWeightItem( WEIGHT_NORMAL, EE_CHAR_WEIGHT_CJK ) );
474cdf0e10cSrcweir 		rNotesSet.Put( SvxWeightItem( WEIGHT_NORMAL, EE_CHAR_WEIGHT_CTL ) );
475cdf0e10cSrcweir 		rNotesSet.Put( SvxFontHeightItem( 705, 100, EE_CHAR_FONTHEIGHT ) );	    // 20 pt
476cdf0e10cSrcweir 		rNotesSet.Put( SvxFontHeightItem( 705, 100, EE_CHAR_FONTHEIGHT_CJK ) ); // 20 pt
477cdf0e10cSrcweir 		rNotesSet.Put( SvxFontHeightItem( SdDrawDocument::convertFontHeightToCTL( 705 ), 100, EE_CHAR_FONTHEIGHT_CTL ) ); // 20 pt
478cdf0e10cSrcweir         rNotesSet.Put( SvxUnderlineItem(UNDERLINE_NONE, EE_CHAR_UNDERLINE ) );
479cdf0e10cSrcweir         rNotesSet.Put( SvxOverlineItem(UNDERLINE_NONE, EE_CHAR_OVERLINE ) );
480cdf0e10cSrcweir         rNotesSet.Put( SvxCrossedOutItem(STRIKEOUT_NONE, EE_CHAR_STRIKEOUT ) );
481cdf0e10cSrcweir         rNotesSet.Put( SvxShadowedItem(sal_False, EE_CHAR_SHADOW ) );
482cdf0e10cSrcweir         rNotesSet.Put( SvxContourItem(sal_False, EE_CHAR_OUTLINE ) );
483cdf0e10cSrcweir         rNotesSet.Put( SvxEmphasisMarkItem(EMPHASISMARK_NONE, EE_CHAR_EMPHASISMARK ) );
484cdf0e10cSrcweir         rNotesSet.Put( SvxCharReliefItem(RELIEF_NONE, EE_CHAR_RELIEF) );
485cdf0e10cSrcweir         rNotesSet.Put( SvxColorItem( Color(COL_AUTO), EE_CHAR_COLOR ) );
486cdf0e10cSrcweir //		rNotesSet.Put( SfxUInt16Item(EE_PARA_BULLETSTATE, 0) );
487cdf0e10cSrcweir         rNotesSet.Put( SvxLRSpaceItem( 0, 0, 600, -600, EE_PARA_LRSPACE  ) );
488cdf0e10cSrcweir 		// #i16874# enable kerning by default but only for new documents
489cdf0e10cSrcweir 		rNotesSet.Put( SvxAutoKernItem( sal_True, EE_CHAR_PAIRKERNING ) );
490cdf0e10cSrcweir 
491cdf0e10cSrcweir /* #i35937#
492cdf0e10cSrcweir 		SvxNumBulletItem aNumBullet( (const SvxNumBulletItem&) rNotesSet.Get(EE_PARA_NUMBULLET) );
493cdf0e10cSrcweir 
494cdf0e10cSrcweir 		EditEngine::ImportBulletItem( aNumBullet, 0, NULL,
495cdf0e10cSrcweir 								&(const SvxLRSpaceItem&) rNotesSet.Get( EE_PARA_LRSPACE ) );
496cdf0e10cSrcweir 
497cdf0e10cSrcweir 		( (SfxItemSet&) rNotesSet).Put( aNumBullet );
498cdf0e10cSrcweir */
499cdf0e10cSrcweir 
500cdf0e10cSrcweir 	}
501cdf0e10cSrcweir 
502cdf0e10cSrcweir 	/**************************************************************************
503cdf0e10cSrcweir 	* Hintergrundobjekte
504cdf0e10cSrcweir 	**************************************************************************/
505cdf0e10cSrcweir 	aName = String(SdResId(STR_LAYOUT_BACKGROUNDOBJECTS));
506cdf0e10cSrcweir 	aName.Insert(aPrefix, 0);
507cdf0e10cSrcweir 
508cdf0e10cSrcweir 	if (!Find(aName, SD_STYLE_FAMILY_MASTERPAGE))
509cdf0e10cSrcweir 	{
510cdf0e10cSrcweir 		bCreated = sal_True;
511cdf0e10cSrcweir 
512cdf0e10cSrcweir 		pSheet = &Make(aName, SD_STYLE_FAMILY_MASTERPAGE,nUsedMask);
513cdf0e10cSrcweir 		pSheet->SetHelpId( aHelpFile, HID_PSEUDOSHEET_BACKGROUNDOBJECTS );
514cdf0e10cSrcweir 		pSheet->SetParent(String());
515cdf0e10cSrcweir 		SfxItemSet& rBackgroundObjectsSet = pSheet->GetItemSet();
516cdf0e10cSrcweir 		rBackgroundObjectsSet.Put(SdrShadowItem(sal_False));
517cdf0e10cSrcweir 		rBackgroundObjectsSet.Put(SdrShadowColorItem(String(), Color(COL_GRAY)));
518cdf0e10cSrcweir 		rBackgroundObjectsSet.Put(SdrShadowXDistItem(200));	// 3 mm Schattendistanz
519cdf0e10cSrcweir 		rBackgroundObjectsSet.Put(SdrShadowYDistItem(200));
520cdf0e10cSrcweir 		// #i16874# enable kerning by default but only for new documents
521cdf0e10cSrcweir 		rBackgroundObjectsSet.Put( SvxAutoKernItem( sal_True, EE_CHAR_PAIRKERNING ) );
522cdf0e10cSrcweir 		rBackgroundObjectsSet.Put(SdrTextHorzAdjustItem(SDRTEXTHORZADJUST_BLOCK));
523cdf0e10cSrcweir 	}
524cdf0e10cSrcweir 
525cdf0e10cSrcweir 	/**************************************************************************
526cdf0e10cSrcweir 	* Hintergrund
527cdf0e10cSrcweir 	**************************************************************************/
528cdf0e10cSrcweir 	aName = String(SdResId(STR_LAYOUT_BACKGROUND));
529cdf0e10cSrcweir 	aName.Insert(aPrefix, 0);
530cdf0e10cSrcweir 
531cdf0e10cSrcweir 	if (!Find(aName, SD_STYLE_FAMILY_MASTERPAGE))
532cdf0e10cSrcweir 	{
533cdf0e10cSrcweir 		bCreated = sal_True;
534cdf0e10cSrcweir 
535cdf0e10cSrcweir 		pSheet = &Make(aName, SD_STYLE_FAMILY_MASTERPAGE,nUsedMask);
536cdf0e10cSrcweir 		pSheet->SetHelpId( aHelpFile, HID_PSEUDOSHEET_BACKGROUND );
537cdf0e10cSrcweir 		pSheet->SetParent(String());
538cdf0e10cSrcweir 		SfxItemSet& rBackgroundSet = pSheet->GetItemSet();
539cdf0e10cSrcweir 		rBackgroundSet.Put(XLineStyleItem(XLINE_NONE));
540cdf0e10cSrcweir 		rBackgroundSet.Put(XFillStyleItem(XFILL_NONE));
541cdf0e10cSrcweir 		// #i16874# enable kerning by default but only for new documents
542cdf0e10cSrcweir 		rBackgroundSet.Put( SvxAutoKernItem( sal_True, EE_CHAR_PAIRKERNING ) );
543cdf0e10cSrcweir 	}
544cdf0e10cSrcweir 
545cdf0e10cSrcweir 	DBG_ASSERT( !bCheck || !bCreated, "missing layout style sheets detected!" );
546cdf0e10cSrcweir }
547cdf0e10cSrcweir 
548cdf0e10cSrcweir /*************************************************************************
549cdf0e10cSrcweir |*
550cdf0e10cSrcweir |* Graphik-StyleSheets  aus dem Quellpool in diesen Pool kopieren
551cdf0e10cSrcweir |*
552cdf0e10cSrcweir |* (rSourcePool kann nicht const sein, weil SfxStyleSheetPoolBase::Find
553cdf0e10cSrcweir |*	nicht const ist)
554cdf0e10cSrcweir |*
555cdf0e10cSrcweir \************************************************************************/
556cdf0e10cSrcweir 
CopyGraphicSheets(SdStyleSheetPool & rSourcePool)557cdf0e10cSrcweir void SdStyleSheetPool::CopyGraphicSheets(SdStyleSheetPool& rSourcePool)
558cdf0e10cSrcweir {
559cdf0e10cSrcweir 	CopySheets( rSourcePool, SD_STYLE_FAMILY_GRAPHICS );
560cdf0e10cSrcweir }
561cdf0e10cSrcweir 
CopyCellSheets(SdStyleSheetPool & rSourcePool)562cdf0e10cSrcweir void SdStyleSheetPool::CopyCellSheets(SdStyleSheetPool& rSourcePool)
563cdf0e10cSrcweir {
564cdf0e10cSrcweir 	CopySheets( rSourcePool, SD_STYLE_FAMILY_CELL );
565cdf0e10cSrcweir }
566cdf0e10cSrcweir 
CopyTableStyles(SdStyleSheetPool & rSourcePool)567cdf0e10cSrcweir void SdStyleSheetPool::CopyTableStyles(SdStyleSheetPool& rSourcePool)
568cdf0e10cSrcweir {
569cdf0e10cSrcweir 	Reference< XIndexAccess > xSource( rSourcePool.mxTableFamily, UNO_QUERY );
570cdf0e10cSrcweir 	Reference< XNameContainer > xTarget( mxTableFamily, UNO_QUERY );
571cdf0e10cSrcweir 	Reference< XSingleServiceFactory > xFactory( mxTableFamily, UNO_QUERY );
572cdf0e10cSrcweir 
573cdf0e10cSrcweir 	if( xSource.is() && xFactory.is() && mxTableFamily.is() )
574cdf0e10cSrcweir 	{
575cdf0e10cSrcweir 		for( sal_Int32 nIndex = 0; nIndex < xSource->getCount(); nIndex++ ) try
576cdf0e10cSrcweir 		{
577cdf0e10cSrcweir 			Reference< XStyle > xSourceTableStyle( xSource->getByIndex( nIndex ), UNO_QUERY );
578cdf0e10cSrcweir 			if( xSourceTableStyle.is() )
579cdf0e10cSrcweir 			{
580cdf0e10cSrcweir 				Reference< XStyle > xNewTableStyle( xFactory->createInstance(), UNO_QUERY );
581cdf0e10cSrcweir 				if( xNewTableStyle.is() )
582cdf0e10cSrcweir 				{
583cdf0e10cSrcweir 					Reference< XNameAccess> xSourceNames( xSourceTableStyle, UNO_QUERY_THROW );
584cdf0e10cSrcweir 
585cdf0e10cSrcweir 					Sequence< OUString > aStyleNames( xSourceNames->getElementNames() );
586cdf0e10cSrcweir 					OUString* pStyleNames( aStyleNames.getArray() );
587cdf0e10cSrcweir 
588cdf0e10cSrcweir 					Reference< XNameReplace > xTargetNames( xNewTableStyle, UNO_QUERY );
589cdf0e10cSrcweir 
590cdf0e10cSrcweir 					sal_Int32 nNames = aStyleNames.getLength();
591cdf0e10cSrcweir 					while( nNames-- )
592cdf0e10cSrcweir 					{
593cdf0e10cSrcweir 						const OUString aName( *pStyleNames++ );
594cdf0e10cSrcweir 						Reference< XStyle > xSourceStyle( xSourceNames->getByName( aName ), UNO_QUERY );
595cdf0e10cSrcweir 						Reference< XStyle > xTargetStyle;
596cdf0e10cSrcweir 						if( xSourceStyle.is() ) try
597cdf0e10cSrcweir 						{
598cdf0e10cSrcweir 							mxCellFamily->getByName( xSourceStyle->getName() ) >>= xTargetStyle;
599cdf0e10cSrcweir 						}
600cdf0e10cSrcweir 						catch( Exception& )
601cdf0e10cSrcweir 						{
602cdf0e10cSrcweir 							DBG_ERROR( "sd::SdStyleSheetPool::CopyTableStyles(), exception caught!" );
603cdf0e10cSrcweir 						}
604cdf0e10cSrcweir 
605cdf0e10cSrcweir 						if( xTargetStyle.is() )
606cdf0e10cSrcweir 							xTargetNames->replaceByName( aName, Any( xTargetStyle ) );
607cdf0e10cSrcweir 					}
608cdf0e10cSrcweir 				}
609cdf0e10cSrcweir 
610cdf0e10cSrcweir                 OUString sName( Reference< XNamed >( xSourceTableStyle, UNO_QUERY_THROW )->getName() );
611cdf0e10cSrcweir                 if( xTarget->hasByName( sName ) )
612cdf0e10cSrcweir                     xTarget->replaceByName( sName, Any( xNewTableStyle ) );
613cdf0e10cSrcweir                 else
614cdf0e10cSrcweir 				    xTarget->insertByName( sName, Any( xNewTableStyle ) );
615cdf0e10cSrcweir 			}
616cdf0e10cSrcweir 		}
617cdf0e10cSrcweir 		catch( Exception& )
618cdf0e10cSrcweir 		{
619cdf0e10cSrcweir 			DBG_ERROR("sd::SdStyleSheetPool::CopyTableStyles(), exception caught!");
620cdf0e10cSrcweir 		}
621cdf0e10cSrcweir 	}
622cdf0e10cSrcweir }
623cdf0e10cSrcweir 
CopySheets(SdStyleSheetPool & rSourcePool,SfxStyleFamily eFamily)624cdf0e10cSrcweir void SdStyleSheetPool::CopySheets(SdStyleSheetPool& rSourcePool, SfxStyleFamily eFamily )
625cdf0e10cSrcweir {
626cdf0e10cSrcweir     String aHelpFile;
627cdf0e10cSrcweir 
628cdf0e10cSrcweir 	sal_uInt32 nCount = rSourcePool.aStyles.size();
629cdf0e10cSrcweir 
630cdf0e10cSrcweir 	std::vector< std::pair< rtl::Reference< SfxStyleSheetBase >, String > > aNewStyles;
631cdf0e10cSrcweir 
632cdf0e10cSrcweir 	for (sal_uInt32 n = 0; n < nCount; n++)
633cdf0e10cSrcweir 	{
634cdf0e10cSrcweir 		rtl::Reference< SfxStyleSheetBase > xSheet( rSourcePool.aStyles[sal::static_int_cast<sal_uInt16>(n)] );
635cdf0e10cSrcweir 
636cdf0e10cSrcweir 		if( xSheet->GetFamily() == eFamily )
637cdf0e10cSrcweir 		{
638cdf0e10cSrcweir 			String aName( xSheet->GetName() );
639cdf0e10cSrcweir 			if ( !Find( aName, eFamily ) )
640cdf0e10cSrcweir 			{
641cdf0e10cSrcweir 				rtl::Reference< SfxStyleSheetBase > xNewSheet( &Make( aName, eFamily ) );
642cdf0e10cSrcweir 
643cdf0e10cSrcweir 				xNewSheet->SetMask( xSheet->GetMask() );
644cdf0e10cSrcweir 
645cdf0e10cSrcweir                 // #91588# Also set parent relation for copied style sheets
646cdf0e10cSrcweir                 String aParent( xSheet->GetParent() );
647cdf0e10cSrcweir                 if( aParent.Len() )
648cdf0e10cSrcweir 					aNewStyles.push_back( std::pair< rtl::Reference< SfxStyleSheetBase >, String >( xNewSheet, aParent ) );
649cdf0e10cSrcweir 
650cdf0e10cSrcweir                 xNewSheet->SetHelpId( aHelpFile, xSheet->GetHelpId( aHelpFile ) );
651cdf0e10cSrcweir 				xNewSheet->GetItemSet().Put( xSheet->GetItemSet() );
652cdf0e10cSrcweir 			}
653cdf0e10cSrcweir 		}
654cdf0e10cSrcweir 	}
655cdf0e10cSrcweir 
656cdf0e10cSrcweir 	// set parents on newly added stylesheets
657cdf0e10cSrcweir 	std::vector< std::pair< rtl::Reference< SfxStyleSheetBase >, String > >::iterator aIter;
658cdf0e10cSrcweir 	for( aIter = aNewStyles.begin(); aIter != aNewStyles.end(); aIter++ )
659cdf0e10cSrcweir 	{
660cdf0e10cSrcweir         DBG_ASSERT( rSourcePool.Find( (*aIter).second, eFamily ), "StyleSheet has invalid parent: Family mismatch" );
661cdf0e10cSrcweir 		(*aIter).first->SetParent( (*aIter).second );
662cdf0e10cSrcweir 	}
663cdf0e10cSrcweir }
664cdf0e10cSrcweir 
665cdf0e10cSrcweir 
666cdf0e10cSrcweir /*************************************************************************
667cdf0e10cSrcweir |*
668cdf0e10cSrcweir |* StyleSheets des genannten Praesentationslayouts aus dem Quellpool in diesen
669cdf0e10cSrcweir |* Pool kopieren. Kopiert werden nur solche StyleSheets, die in diesem Pool
670cdf0e10cSrcweir |* noch nicht vorhanden sind.
671cdf0e10cSrcweir |* pCreatedSheets wird - wenn ungleich NULL - mit Zeigern auf die erzeugten
672cdf0e10cSrcweir |* StyleSheets gefuellt.
673cdf0e10cSrcweir |*
674cdf0e10cSrcweir |* (rSourcePool kann nicht const sein, weil SfxStyleSheetPoolBase::Find
675cdf0e10cSrcweir |*	nicht const ist)
676cdf0e10cSrcweir |*
677cdf0e10cSrcweir \************************************************************************/
678cdf0e10cSrcweir 
CopyLayoutSheets(const String & rLayoutName,SdStyleSheetPool & rSourcePool,SdStyleSheetVector & rCreatedSheets)679cdf0e10cSrcweir void SdStyleSheetPool::CopyLayoutSheets(const String& rLayoutName, SdStyleSheetPool& rSourcePool, SdStyleSheetVector& rCreatedSheets)
680cdf0e10cSrcweir {
681cdf0e10cSrcweir 	SfxStyleSheetBase* pSheet = NULL;
682cdf0e10cSrcweir 
683cdf0e10cSrcweir 	String aOutlineTag(SdResId(STR_LAYOUT_OUTLINE));
684cdf0e10cSrcweir 
685cdf0e10cSrcweir 	List* pNameList = CreateLayoutSheetNames(rLayoutName);
686cdf0e10cSrcweir 
687cdf0e10cSrcweir     String sEmpty;
688cdf0e10cSrcweir 	String* pName = (String*)pNameList->First();
689cdf0e10cSrcweir 	while (pName)
690cdf0e10cSrcweir 	{
691cdf0e10cSrcweir 		pSheet = Find(*pName, SD_STYLE_FAMILY_MASTERPAGE);
692cdf0e10cSrcweir 		if (!pSheet)
693cdf0e10cSrcweir 		{
694cdf0e10cSrcweir 			SfxStyleSheetBase* pSourceSheet = rSourcePool.Find(*pName, SD_STYLE_FAMILY_MASTERPAGE);
695cdf0e10cSrcweir 			DBG_ASSERT(pSourceSheet, "CopyLayoutSheets: Quellvorlage nicht gefunden");
696cdf0e10cSrcweir 			if (pSourceSheet)
697cdf0e10cSrcweir 			{
698cdf0e10cSrcweir 				// falls einer mit Methusalem-Doks. ankommt
699cdf0e10cSrcweir 				SfxStyleSheetBase& rNewSheet = Make(*pName, SD_STYLE_FAMILY_MASTERPAGE);
700cdf0e10cSrcweir                 rNewSheet.SetHelpId( sEmpty, pSourceSheet->GetHelpId( sEmpty ) );
701cdf0e10cSrcweir 				rNewSheet.GetItemSet().Put(pSourceSheet->GetItemSet());
702cdf0e10cSrcweir 				rCreatedSheets.push_back( SdStyleSheetRef( static_cast< SdStyleSheet* >( &rNewSheet ) ) );
703cdf0e10cSrcweir 			}
704cdf0e10cSrcweir 		}
705cdf0e10cSrcweir 		delete pName;
706cdf0e10cSrcweir 		pName = (String*)pNameList->Next();
707cdf0e10cSrcweir 	}
708cdf0e10cSrcweir 	delete pNameList;
709cdf0e10cSrcweir 
710cdf0e10cSrcweir 	// Sonderbehandlung fuer Gliederungsvorlagen: Parentbeziehungen aufbauen
711cdf0e10cSrcweir 	List* pOutlineSheets = CreateOutlineSheetList(rLayoutName);
712cdf0e10cSrcweir 	SfxStyleSheetBase* pParent = (SfxStyleSheetBase*)pOutlineSheets->First();
713cdf0e10cSrcweir 	pSheet = (SfxStyleSheetBase*)pOutlineSheets->Next();
714cdf0e10cSrcweir 	while (pSheet)
715cdf0e10cSrcweir 	{
716cdf0e10cSrcweir 		// kein Parent?
717cdf0e10cSrcweir 		if (pSheet->GetParent().Len() == 0)
718cdf0e10cSrcweir 			pSheet->SetParent(pParent->GetName());
719cdf0e10cSrcweir 		pParent = pSheet;
720cdf0e10cSrcweir 		pSheet = (SfxStyleSheetBase*)pOutlineSheets->Next();
721cdf0e10cSrcweir 	}
722cdf0e10cSrcweir 	delete pOutlineSheets;
723cdf0e10cSrcweir }
724cdf0e10cSrcweir 
725cdf0e10cSrcweir /*************************************************************************
726cdf0e10cSrcweir |*
727cdf0e10cSrcweir |* Liste mit den Namen der Praesentationsvorlagen eines Layouts erzeugen.
728cdf0e10cSrcweir |* Die Liste und die enthaltenen Strings gehoeren dem Caller!
729cdf0e10cSrcweir |*
730cdf0e10cSrcweir \************************************************************************/
731cdf0e10cSrcweir 
CreateLayoutSheetNames(const String & rLayoutName) const732cdf0e10cSrcweir List* SdStyleSheetPool::CreateLayoutSheetNames(const String& rLayoutName) const
733cdf0e10cSrcweir {
734cdf0e10cSrcweir 	String aPrefix(rLayoutName);
735cdf0e10cSrcweir 	String aSep( RTL_CONSTASCII_USTRINGPARAM( SD_LT_SEPARATOR ));
736cdf0e10cSrcweir 	aPrefix.Insert(aSep);
737cdf0e10cSrcweir 
738cdf0e10cSrcweir 	List* pNameList = new List;
739cdf0e10cSrcweir 
740cdf0e10cSrcweir 	String aName(SdResId(STR_LAYOUT_OUTLINE));
741cdf0e10cSrcweir 	String* pName = NULL;
742cdf0e10cSrcweir 
743cdf0e10cSrcweir 	for (sal_uInt16 nLevel = 1; nLevel < 10; nLevel++)
744cdf0e10cSrcweir 	{
745cdf0e10cSrcweir 		pName = new String(aName);
746cdf0e10cSrcweir 		pName->Append( sal_Unicode( ' ' ));
747cdf0e10cSrcweir 		pName->Append( String::CreateFromInt32( sal_Int32( nLevel )));
748cdf0e10cSrcweir 		pName->Insert(aPrefix, 0);
749cdf0e10cSrcweir 		pNameList->Insert(pName, LIST_APPEND);
750cdf0e10cSrcweir 	}
751cdf0e10cSrcweir 
752cdf0e10cSrcweir 	pName = new String(SdResId(STR_LAYOUT_TITLE));
753cdf0e10cSrcweir 	pName->Insert(aPrefix, 0);
754cdf0e10cSrcweir 	pNameList->Insert(pName, LIST_APPEND);
755cdf0e10cSrcweir 
756cdf0e10cSrcweir 	pName = new String(SdResId(STR_LAYOUT_SUBTITLE));
757cdf0e10cSrcweir 	pName->Insert(aPrefix, 0);
758cdf0e10cSrcweir 	pNameList->Insert(pName, LIST_APPEND);
759cdf0e10cSrcweir 
760cdf0e10cSrcweir 	pName = new String(SdResId(STR_LAYOUT_NOTES));
761cdf0e10cSrcweir 	pName->Insert(aPrefix, 0);
762cdf0e10cSrcweir 	pNameList->Insert(pName, LIST_APPEND);
763cdf0e10cSrcweir 
764cdf0e10cSrcweir 	pName = new String(SdResId(STR_LAYOUT_BACKGROUNDOBJECTS));
765cdf0e10cSrcweir 	pName->Insert(aPrefix, 0);
766cdf0e10cSrcweir 	pNameList->Insert(pName, LIST_APPEND);
767cdf0e10cSrcweir 
768cdf0e10cSrcweir 	pName = new String(SdResId(STR_LAYOUT_BACKGROUND));
769cdf0e10cSrcweir 	pName->Insert(aPrefix, 0);
770cdf0e10cSrcweir 	pNameList->Insert(pName, LIST_APPEND);
771cdf0e10cSrcweir 
772cdf0e10cSrcweir 	return pNameList;
773cdf0e10cSrcweir }
774cdf0e10cSrcweir 
775cdf0e10cSrcweir /*************************************************************************
776cdf0e10cSrcweir |*
777cdf0e10cSrcweir |* Liste mit Zeigern auf Praesentationsvorlagen eines Layouts erzeugen.
778cdf0e10cSrcweir |* Die Liste gehoert dem Caller!
779cdf0e10cSrcweir |*
780cdf0e10cSrcweir \************************************************************************/
781cdf0e10cSrcweir 
CreateLayoutSheetList(const String & rLayoutName,SdStyleSheetVector & rLayoutSheets)782cdf0e10cSrcweir void SdStyleSheetPool::CreateLayoutSheetList(const String& rLayoutName, SdStyleSheetVector& rLayoutSheets )
783cdf0e10cSrcweir {
784cdf0e10cSrcweir 	String aLayoutNameWithSep(rLayoutName);
785cdf0e10cSrcweir 	aLayoutNameWithSep.AppendAscii( RTL_CONSTASCII_STRINGPARAM( SD_LT_SEPARATOR ));
786cdf0e10cSrcweir 	sal_uInt16 nLen = aLayoutNameWithSep.Len();
787cdf0e10cSrcweir 
788cdf0e10cSrcweir 	SfxStyleSheetIterator aIter(this, SD_STYLE_FAMILY_MASTERPAGE);
789cdf0e10cSrcweir 	SfxStyleSheetBase* pSheet = aIter.First();
790cdf0e10cSrcweir 
791cdf0e10cSrcweir 	while (pSheet)
792cdf0e10cSrcweir 	{
793cdf0e10cSrcweir 		if (pSheet->GetName().Match(aLayoutNameWithSep) == nLen)
794cdf0e10cSrcweir 			rLayoutSheets.push_back( SdStyleSheetRef( static_cast< SdStyleSheet* >( pSheet ) ) );
795cdf0e10cSrcweir 		pSheet = aIter.Next();
796cdf0e10cSrcweir 	}
797cdf0e10cSrcweir }
798cdf0e10cSrcweir 
799cdf0e10cSrcweir /*************************************************************************
800cdf0e10cSrcweir |*
801cdf0e10cSrcweir |* ggfs. PseudoStyleSheets erzeugen
802cdf0e10cSrcweir |*
803cdf0e10cSrcweir \************************************************************************/
804cdf0e10cSrcweir 
CreatePseudosIfNecessary()805cdf0e10cSrcweir void SdStyleSheetPool::CreatePseudosIfNecessary()
806cdf0e10cSrcweir {
807cdf0e10cSrcweir 	String aName;
808cdf0e10cSrcweir 	String aHelpFile;
809cdf0e10cSrcweir 	SfxStyleSheetBase* pSheet = NULL;
810cdf0e10cSrcweir 	SfxStyleSheetBase* pParent = NULL;
811cdf0e10cSrcweir 
812cdf0e10cSrcweir 	//sal_uInt16 nUsedMask = SFXSTYLEBIT_ALL & ~SFXSTYLEBIT_USERDEF;
813cdf0e10cSrcweir 	sal_uInt16 nUsedMask = SFXSTYLEBIT_USED;
814cdf0e10cSrcweir 
815cdf0e10cSrcweir 	aName = String(SdResId(STR_PSEUDOSHEET_TITLE));
816cdf0e10cSrcweir 	if( (pSheet = Find(aName, SD_STYLE_FAMILY_PSEUDO)) == 0 )
817cdf0e10cSrcweir 	{
818cdf0e10cSrcweir 		pSheet = &Make(aName, SD_STYLE_FAMILY_PSEUDO, nUsedMask);
819cdf0e10cSrcweir 		pSheet->SetParent( String() );
820cdf0e10cSrcweir 		((SfxStyleSheet*)pSheet)->StartListening(*this);
821cdf0e10cSrcweir 	}
822cdf0e10cSrcweir 	pSheet->SetHelpId( aHelpFile, HID_PSEUDOSHEET_TITLE );
823cdf0e10cSrcweir 
824cdf0e10cSrcweir 	aName = String(SdResId(STR_PSEUDOSHEET_SUBTITLE));
825cdf0e10cSrcweir 	if( (pSheet = Find(aName, SD_STYLE_FAMILY_PSEUDO)) == 0 )
826cdf0e10cSrcweir 	{
827cdf0e10cSrcweir 		pSheet = &Make(aName, SD_STYLE_FAMILY_PSEUDO, nUsedMask);
828cdf0e10cSrcweir 		pSheet->SetParent(String());
829cdf0e10cSrcweir 		((SfxStyleSheet*)pSheet)->StartListening(*this);
830cdf0e10cSrcweir 	}
831cdf0e10cSrcweir 	pSheet->SetHelpId( aHelpFile, HID_PSEUDOSHEET_SUBTITLE );
832cdf0e10cSrcweir 
833cdf0e10cSrcweir 	aName = String(SdResId(STR_PSEUDOSHEET_BACKGROUNDOBJECTS));
834cdf0e10cSrcweir 	if( (pSheet = Find(aName, SD_STYLE_FAMILY_PSEUDO)) == 0 )
835cdf0e10cSrcweir 	{
836cdf0e10cSrcweir 		pSheet = &Make(aName, SD_STYLE_FAMILY_PSEUDO, nUsedMask);
837cdf0e10cSrcweir 		pSheet->SetParent( String() );
838cdf0e10cSrcweir 		((SfxStyleSheet*)pSheet)->StartListening(*this);
839cdf0e10cSrcweir 	}
840cdf0e10cSrcweir 	pSheet->SetHelpId( aHelpFile, HID_PSEUDOSHEET_BACKGROUNDOBJECTS );
841cdf0e10cSrcweir 
842cdf0e10cSrcweir 	aName = String(SdResId(STR_PSEUDOSHEET_BACKGROUND));
843cdf0e10cSrcweir 	if( (pSheet = Find(aName, SD_STYLE_FAMILY_PSEUDO)) == 0 )
844cdf0e10cSrcweir 	{
845cdf0e10cSrcweir 		pSheet = &Make(aName, SD_STYLE_FAMILY_PSEUDO, nUsedMask);
846cdf0e10cSrcweir 		pSheet->SetParent( String() );
847cdf0e10cSrcweir 		((SfxStyleSheet*)pSheet)->StartListening(*this);
848cdf0e10cSrcweir 	}
849cdf0e10cSrcweir 	pSheet->SetHelpId( aHelpFile, HID_PSEUDOSHEET_BACKGROUND );
850cdf0e10cSrcweir 
851cdf0e10cSrcweir 	aName = String(SdResId(STR_PSEUDOSHEET_NOTES));
852cdf0e10cSrcweir 	if( (pSheet = Find(aName, SD_STYLE_FAMILY_PSEUDO)) == 0 )
853cdf0e10cSrcweir 	{
854cdf0e10cSrcweir 		pSheet = &Make(aName, SD_STYLE_FAMILY_PSEUDO, nUsedMask);
855cdf0e10cSrcweir 		pSheet->SetParent( String() );
856cdf0e10cSrcweir 		((SfxStyleSheet*)pSheet)->StartListening(*this);
857cdf0e10cSrcweir 	}
858cdf0e10cSrcweir 	pSheet->SetHelpId( aHelpFile, HID_PSEUDOSHEET_NOTES );
859cdf0e10cSrcweir 
860cdf0e10cSrcweir 	pParent = NULL;
861cdf0e10cSrcweir 	SetSearchMask(SD_STYLE_FAMILY_PSEUDO);
862cdf0e10cSrcweir 	aName = String(SdResId(STR_PSEUDOSHEET_OUTLINE));
863cdf0e10cSrcweir 	for (sal_uInt16 nLevel = 1; nLevel < 10; nLevel++)
864cdf0e10cSrcweir 	{
865cdf0e10cSrcweir 		String aLevelName(aName);
866cdf0e10cSrcweir 		aLevelName.Append( sal_Unicode( ' ' ));
867cdf0e10cSrcweir 		aLevelName.Append( String::CreateFromInt32( sal_Int32( nLevel )));
868cdf0e10cSrcweir 
869cdf0e10cSrcweir 		if( (pSheet = Find(aLevelName, SD_STYLE_FAMILY_PSEUDO)) == 0 )
870cdf0e10cSrcweir 		{
871cdf0e10cSrcweir 			pSheet = &Make(aLevelName, SD_STYLE_FAMILY_PSEUDO, nUsedMask);
872cdf0e10cSrcweir 
873cdf0e10cSrcweir 			if (pSheet)
874cdf0e10cSrcweir 			{
875cdf0e10cSrcweir 				if (pParent)
876cdf0e10cSrcweir 					pSheet->SetParent(pParent->GetName());
877cdf0e10cSrcweir 				pParent = pSheet;
878cdf0e10cSrcweir 				((SfxStyleSheet*)pSheet)->StartListening(*this);
879cdf0e10cSrcweir 			}
880cdf0e10cSrcweir 		}
881cdf0e10cSrcweir 		pSheet->SetHelpId( aHelpFile, HID_PSEUDOSHEET_OUTLINE + nLevel );
882cdf0e10cSrcweir 	}
883cdf0e10cSrcweir }
884cdf0e10cSrcweir 
885cdf0e10cSrcweir 
886cdf0e10cSrcweir /*************************************************************************
887cdf0e10cSrcweir |*
888cdf0e10cSrcweir |* Standard-Styles den richtigen Namen in der Programm-Sprache geben
889cdf0e10cSrcweir |*
890cdf0e10cSrcweir \************************************************************************/
891cdf0e10cSrcweir 
UpdateStdNames()892cdf0e10cSrcweir void SdStyleSheetPool::UpdateStdNames()
893cdf0e10cSrcweir {
894cdf0e10cSrcweir 	String aHelpFile;
895cdf0e10cSrcweir 	sal_uInt32  nCount = aStyles.size();
896cdf0e10cSrcweir 	List* pEraseList = NULL;
897cdf0e10cSrcweir 
898cdf0e10cSrcweir 	for( sal_uInt32 n=0; n < nCount; n++ )
899cdf0e10cSrcweir 	{
900cdf0e10cSrcweir 		SfxStyleSheetBase* pStyle = aStyles[ n ].get();
901cdf0e10cSrcweir 
902cdf0e10cSrcweir 		if( !pStyle->IsUserDefined() )
903cdf0e10cSrcweir 		{
904cdf0e10cSrcweir 			String aOldName		= pStyle->GetName();
905cdf0e10cSrcweir 			sal_uLong nHelpId		= pStyle->GetHelpId( aHelpFile );
906cdf0e10cSrcweir 			SfxStyleFamily eFam	= pStyle->GetFamily();
907cdf0e10cSrcweir 
908cdf0e10cSrcweir 			sal_Bool bHelpKnown = sal_True;
909cdf0e10cSrcweir 			String aNewName;
910cdf0e10cSrcweir 			sal_uInt16 nNameId = 0;
911cdf0e10cSrcweir 			switch( nHelpId )
912cdf0e10cSrcweir 			{
913cdf0e10cSrcweir 				case HID_STANDARD_STYLESHEET_NAME:	nNameId = STR_STANDARD_STYLESHEET_NAME;	break;
914cdf0e10cSrcweir 				case HID_POOLSHEET_OBJWITHARROW:	nNameId = STR_POOLSHEET_OBJWITHARROW;	break;
915cdf0e10cSrcweir 				case HID_POOLSHEET_OBJWITHSHADOW:	nNameId = STR_POOLSHEET_OBJWITHSHADOW;	break;
916cdf0e10cSrcweir 				case HID_POOLSHEET_OBJWITHOUTFILL:	nNameId = STR_POOLSHEET_OBJWITHOUTFILL;	break;
9174bf7a51aSArmin Le Grand 				case HID_POOLSHEET_OBJNOLINENOFILL:	nNameId = STR_POOLSHEET_OBJNOLINENOFILL;break;
918cdf0e10cSrcweir 				case HID_POOLSHEET_TEXT:			nNameId = STR_POOLSHEET_TEXT;			break;
919cdf0e10cSrcweir 				case HID_POOLSHEET_TEXTBODY:		nNameId = STR_POOLSHEET_TEXTBODY;		break;
920cdf0e10cSrcweir 				case HID_POOLSHEET_TEXTBODY_JUSTIFY:nNameId = STR_POOLSHEET_TEXTBODY_JUSTIFY;break;
921cdf0e10cSrcweir 				case HID_POOLSHEET_TEXTBODY_INDENT:	nNameId = STR_POOLSHEET_TEXTBODY_INDENT;break;
922cdf0e10cSrcweir 				case HID_POOLSHEET_TITLE:			nNameId = STR_POOLSHEET_TITLE;			break;
923cdf0e10cSrcweir 				case HID_POOLSHEET_TITLE1:			nNameId = STR_POOLSHEET_TITLE1;			break;
924cdf0e10cSrcweir 				case HID_POOLSHEET_TITLE2:			nNameId = STR_POOLSHEET_TITLE2;			break;
925cdf0e10cSrcweir 				case HID_POOLSHEET_HEADLINE:		nNameId = STR_POOLSHEET_HEADLINE;		break;
926cdf0e10cSrcweir 				case HID_POOLSHEET_HEADLINE1:		nNameId = STR_POOLSHEET_HEADLINE1;		break;
927cdf0e10cSrcweir 				case HID_POOLSHEET_HEADLINE2:		nNameId = STR_POOLSHEET_HEADLINE2;		break;
928cdf0e10cSrcweir 				case HID_POOLSHEET_MEASURE:			nNameId = STR_POOLSHEET_MEASURE;		break;
929cdf0e10cSrcweir 
930cdf0e10cSrcweir 				case HID_PSEUDOSHEET_TITLE:			nNameId = STR_PSEUDOSHEET_TITLE; 		break;
931cdf0e10cSrcweir 				case HID_PSEUDOSHEET_SUBTITLE:	 	nNameId = STR_PSEUDOSHEET_SUBTITLE; 	break;
932cdf0e10cSrcweir 				case HID_PSEUDOSHEET_OUTLINE1:
933cdf0e10cSrcweir 				case HID_PSEUDOSHEET_OUTLINE2:
934cdf0e10cSrcweir 				case HID_PSEUDOSHEET_OUTLINE3:
935cdf0e10cSrcweir 				case HID_PSEUDOSHEET_OUTLINE4:
936cdf0e10cSrcweir 				case HID_PSEUDOSHEET_OUTLINE5:
937cdf0e10cSrcweir 				case HID_PSEUDOSHEET_OUTLINE6:
938cdf0e10cSrcweir 				case HID_PSEUDOSHEET_OUTLINE7:
939cdf0e10cSrcweir 				case HID_PSEUDOSHEET_OUTLINE8:
940cdf0e10cSrcweir 				case HID_PSEUDOSHEET_OUTLINE9:		nNameId = STR_PSEUDOSHEET_OUTLINE; 		break;
941cdf0e10cSrcweir 				case HID_PSEUDOSHEET_BACKGROUNDOBJECTS:	nNameId = STR_PSEUDOSHEET_BACKGROUNDOBJECTS; break;
942cdf0e10cSrcweir 				case HID_PSEUDOSHEET_BACKGROUND:	nNameId = STR_PSEUDOSHEET_BACKGROUND; 	break;
943cdf0e10cSrcweir 				case HID_PSEUDOSHEET_NOTES:			nNameId = STR_PSEUDOSHEET_NOTES; 		break;
944cdf0e10cSrcweir 
945cdf0e10cSrcweir 				case HID_SD_CELL_STYLE_DEFAULT:			nNameId = STR_STANDARD_STYLESHEET_NAME; break;
946cdf0e10cSrcweir 				case HID_SD_CELL_STYLE_BANDED:			nNameId = STR_POOLSHEET_BANDED_CELL; break;
947cdf0e10cSrcweir 				case HID_SD_CELL_STYLE_HEADER:			nNameId = STR_POOLSHEET_HEADER; break;
948cdf0e10cSrcweir 				case HID_SD_CELL_STYLE_TOTAL:			nNameId = STR_POOLSHEET_TOTAL; break;
949cdf0e10cSrcweir 				case HID_SD_CELL_STYLE_FIRST_COLUMN:	nNameId = STR_POOLSHEET_FIRST_COLUMN; break;
950cdf0e10cSrcweir 				case HID_SD_CELL_STYLE_LAST_COLUMN:		nNameId = STR_POOLSHEET_LAST_COLUMN; break;
951cdf0e10cSrcweir 
952cdf0e10cSrcweir 				default:
953cdf0e10cSrcweir 					// 0 oder falsche (alte) HelpId
954cdf0e10cSrcweir 					bHelpKnown = sal_False;
955cdf0e10cSrcweir 			}
956cdf0e10cSrcweir 			if( bHelpKnown )
957cdf0e10cSrcweir 			{
958cdf0e10cSrcweir 				if( nNameId )
959cdf0e10cSrcweir 				{
960cdf0e10cSrcweir 					aNewName = String( SdResId( nNameId ) );
961cdf0e10cSrcweir 					if( nNameId == STR_PSEUDOSHEET_OUTLINE )
962cdf0e10cSrcweir 					{
963cdf0e10cSrcweir 						aNewName.Append( sal_Unicode( ' ' ));
964cdf0e10cSrcweir 						aNewName.Append( String::CreateFromInt32( sal_Int32( nHelpId - HID_PSEUDOSHEET_OUTLINE )));
965cdf0e10cSrcweir 					}
966cdf0e10cSrcweir 				}
967cdf0e10cSrcweir 
968cdf0e10cSrcweir 				if( aNewName.Len() && aNewName != aOldName )
969cdf0e10cSrcweir 				{
970cdf0e10cSrcweir 					SfxStyleSheetBase* pSheetFound = Find( aNewName, eFam );
971cdf0e10cSrcweir 
972cdf0e10cSrcweir 					if ( !pSheetFound )
973cdf0e10cSrcweir 					{
974cdf0e10cSrcweir 						// Sheet existiert noch nicht: Altes Sheet wird umbenannt
975cdf0e10cSrcweir 						pStyle->SetName( aNewName );	// setzt auch Parents um
976cdf0e10cSrcweir 					}
977cdf0e10cSrcweir 					else
978cdf0e10cSrcweir 					{
979cdf0e10cSrcweir 						// Sheet existiert schon: Altes Sheet muss entfernt werden
980cdf0e10cSrcweir 						if( !pEraseList )
981cdf0e10cSrcweir 						{
982cdf0e10cSrcweir 							pEraseList = new List();
983cdf0e10cSrcweir 						}
984cdf0e10cSrcweir 
985cdf0e10cSrcweir 						pEraseList->Insert( pStyle );
986cdf0e10cSrcweir 					}
987cdf0e10cSrcweir 				}
988cdf0e10cSrcweir 			}
989cdf0e10cSrcweir 		}
990cdf0e10cSrcweir 	}
991cdf0e10cSrcweir 
992cdf0e10cSrcweir 	if ( pEraseList )
993cdf0e10cSrcweir 	{
994cdf0e10cSrcweir 		// Styles, welche nicht umbenannt werden konnten, muessen entfernt werden
995cdf0e10cSrcweir 		for ( sal_uLong i = 0; i < pEraseList->Count(); i++ )
996cdf0e10cSrcweir 		{
997cdf0e10cSrcweir 			SfxStyleSheetBase* pEraseSheet = ( SfxStyleSheetBase* ) pEraseList->GetObject( i );
998cdf0e10cSrcweir 			Remove( pEraseSheet );
999cdf0e10cSrcweir 		}
1000cdf0e10cSrcweir 
1001cdf0e10cSrcweir 		delete pEraseList;
1002cdf0e10cSrcweir 		pEraseList = NULL;
1003cdf0e10cSrcweir 	}
1004cdf0e10cSrcweir }
1005cdf0e10cSrcweir // --------------------------------------------------------------------
1006cdf0e10cSrcweir // Neues SvxNumBulletItem fuer das jeweilige StyleSheet setzen
1007cdf0e10cSrcweir // --------------------------------------------------------------------
1008cdf0e10cSrcweir 
PutNumBulletItem(SfxStyleSheetBase * pSheet,Font & rBulletFont)1009cdf0e10cSrcweir void SdStyleSheetPool::PutNumBulletItem( SfxStyleSheetBase* pSheet,
1010cdf0e10cSrcweir 										 Font& rBulletFont )
1011cdf0e10cSrcweir {
1012cdf0e10cSrcweir 	String aHelpFile;
1013cdf0e10cSrcweir 	sal_uLong nHelpId = pSheet->GetHelpId( aHelpFile );
1014cdf0e10cSrcweir 	SfxItemSet& rSet = pSheet->GetItemSet();
1015cdf0e10cSrcweir 
1016cdf0e10cSrcweir 	switch ( nHelpId )
1017cdf0e10cSrcweir 	{
1018cdf0e10cSrcweir 		case HID_STANDARD_STYLESHEET_NAME :
1019cdf0e10cSrcweir 		{
1020cdf0e10cSrcweir 			// Standard-Vorlage
1021cdf0e10cSrcweir 			SvxNumberFormat aNumberFormat(SVX_NUM_CHAR_SPECIAL);
1022cdf0e10cSrcweir 			aNumberFormat.SetBulletFont(&rBulletFont);
1023cdf0e10cSrcweir 			aNumberFormat.SetBulletChar( 0x25CF ); // StarBats: 0xF000 + 34
1024cdf0e10cSrcweir 			aNumberFormat.SetBulletRelSize(45);
1025cdf0e10cSrcweir 			aNumberFormat.SetBulletColor(Color(COL_AUTO));
1026cdf0e10cSrcweir 			aNumberFormat.SetStart(1);
1027cdf0e10cSrcweir 			aNumberFormat.SetNumAdjust(SVX_ADJUST_LEFT);
1028cdf0e10cSrcweir 
1029cdf0e10cSrcweir 			SvxNumRule aNumRule( NUM_BULLET_REL_SIZE|NUM_BULLET_COLOR|NUM_CHAR_TEXT_DISTANCE, 10 , sal_False);
1030cdf0e10cSrcweir 
1031cdf0e10cSrcweir 			for( sal_uInt16 i = 0; i < aNumRule.GetLevelCount(); i++ )
1032cdf0e10cSrcweir 			{
1033cdf0e10cSrcweir 				const short nLSpace = (i + 1) * 600;
1034cdf0e10cSrcweir 				aNumberFormat.SetLSpace(nLSpace);
1035cdf0e10cSrcweir 				aNumberFormat.SetAbsLSpace(nLSpace);
1036cdf0e10cSrcweir 				aNumberFormat.SetFirstLineOffset(-600);
1037cdf0e10cSrcweir 				aNumRule.SetLevel( i, aNumberFormat );
1038cdf0e10cSrcweir 			}
1039cdf0e10cSrcweir 
1040cdf0e10cSrcweir 			rSet.Put( SvxNumBulletItem( aNumRule, EE_PARA_NUMBULLET ) );
1041cdf0e10cSrcweir 			((SfxStyleSheet*)pSheet)->Broadcast(SfxSimpleHint( SFX_HINT_DATACHANGED ) );
1042cdf0e10cSrcweir 		}
1043cdf0e10cSrcweir 		break;
1044cdf0e10cSrcweir 
1045cdf0e10cSrcweir 		case HID_PSEUDOSHEET_TITLE:
1046cdf0e10cSrcweir 			/* #84013# title gets same bullet as subtitle and not that page symbol anymore */
1047cdf0e10cSrcweir 		case HID_PSEUDOSHEET_SUBTITLE :
1048cdf0e10cSrcweir 		{
1049cdf0e10cSrcweir 			// Untertitel-Vorlage
1050cdf0e10cSrcweir 			SvxNumRule* pDefaultRule = ((SvxNumBulletItem*) rSet.GetPool()->GetSecondaryPool()->GetPoolDefaultItem(EE_PARA_NUMBULLET))->GetNumRule();
1051cdf0e10cSrcweir 			DBG_ASSERT( pDefaultRule, "Wo ist mein Default? [CL]" );
1052cdf0e10cSrcweir 
1053cdf0e10cSrcweir 			if(pDefaultRule)
1054cdf0e10cSrcweir 			{
1055cdf0e10cSrcweir 				SvxNumRule aNumRule(pDefaultRule->GetFeatureFlags(), 10, sal_False);
1056cdf0e10cSrcweir 				for(sal_uInt16 i=0; i < aNumRule.GetLevelCount(); i++)
1057cdf0e10cSrcweir 				{
1058cdf0e10cSrcweir 					SvxNumberFormat aFrmt( pDefaultRule->GetLevel(i) );
1059cdf0e10cSrcweir 					aFrmt.SetNumberingType(SVX_NUM_CHAR_SPECIAL);
1060cdf0e10cSrcweir                     // #i93908# clear suffix for bullet lists
1061cdf0e10cSrcweir                     aFrmt.SetPrefix(::rtl::OUString());
1062cdf0e10cSrcweir                     aFrmt.SetSuffix(::rtl::OUString());
1063cdf0e10cSrcweir 					aFrmt.SetStart(1);
1064cdf0e10cSrcweir 					aFrmt.SetBulletRelSize(45);
1065cdf0e10cSrcweir 					aFrmt.SetBulletChar( 0x25CF );  // StarBats: 0xF000 + 34
1066cdf0e10cSrcweir 					aFrmt.SetBulletFont(&rBulletFont);
1067cdf0e10cSrcweir 					aNumRule.SetLevel(i, aFrmt);
1068cdf0e10cSrcweir 				}
1069cdf0e10cSrcweir 
1070cdf0e10cSrcweir 				rSet.Put( SvxNumBulletItem( aNumRule, EE_PARA_NUMBULLET ) );
1071cdf0e10cSrcweir 				((SfxStyleSheet*)pSheet)->Broadcast(SfxSimpleHint( SFX_HINT_DATACHANGED ) );
1072cdf0e10cSrcweir 			}
1073cdf0e10cSrcweir 		}
1074cdf0e10cSrcweir 		break;
1075cdf0e10cSrcweir 
1076cdf0e10cSrcweir 		case HID_PSEUDOSHEET_OUTLINE + 1 :
1077cdf0e10cSrcweir 		{
1078cdf0e10cSrcweir 			// Gliederungs-Vorlage
1079cdf0e10cSrcweir 			SvxNumberFormat aNumberFormat(SVX_NUM_CHAR_SPECIAL);
1080cdf0e10cSrcweir 			aNumberFormat.SetBulletColor(Color(COL_AUTO));
1081cdf0e10cSrcweir 			aNumberFormat.SetStart(1);
1082cdf0e10cSrcweir 			aNumberFormat.SetNumAdjust(SVX_ADJUST_LEFT);
1083cdf0e10cSrcweir 
1084cdf0e10cSrcweir 			SvxNumRule aNumRule( NUM_BULLET_REL_SIZE|NUM_BULLET_COLOR|NUM_CHAR_TEXT_DISTANCE|NUM_SYMBOL_ALIGNMENT,
1085cdf0e10cSrcweir 								 10, sal_False );
1086cdf0e10cSrcweir 			for( sal_uInt16 i = 0; i < aNumRule.GetLevelCount(); i++ )
1087cdf0e10cSrcweir 			{
1088cdf0e10cSrcweir 				aNumberFormat.SetBulletChar( 0x25CF );  // StarBats: 0xF000 + 34
1089cdf0e10cSrcweir 				aNumberFormat.SetBulletRelSize(45);
1090cdf0e10cSrcweir 				const short nLSpace = (i + 1) * 1200;
1091cdf0e10cSrcweir 				aNumberFormat.SetLSpace(nLSpace);
1092cdf0e10cSrcweir 				aNumberFormat.SetAbsLSpace(nLSpace);
1093cdf0e10cSrcweir 				short nFirstLineOffset = -600;
1094cdf0e10cSrcweir 
1095cdf0e10cSrcweir 				sal_uLong nFontSize = 20;
1096cdf0e10cSrcweir 				switch(i)
1097cdf0e10cSrcweir 				{
1098cdf0e10cSrcweir 					case 0:
1099cdf0e10cSrcweir 					{
1100cdf0e10cSrcweir 						nFontSize = 32;
1101cdf0e10cSrcweir 						nFirstLineOffset = -900;
1102cdf0e10cSrcweir 					}
1103cdf0e10cSrcweir 					break;
1104cdf0e10cSrcweir 
1105cdf0e10cSrcweir 					case 1:
1106cdf0e10cSrcweir 					{
1107cdf0e10cSrcweir 						aNumberFormat.SetBulletChar( 0x2013 );  // StarBats: 0xF000 + 150
1108cdf0e10cSrcweir 						aNumberFormat.SetBulletRelSize(75);
1109cdf0e10cSrcweir 						nFontSize = 32;
1110cdf0e10cSrcweir 						nFirstLineOffset = -900;
1111cdf0e10cSrcweir 					}
1112cdf0e10cSrcweir 					break;
1113cdf0e10cSrcweir 
1114cdf0e10cSrcweir 					case 2:
1115cdf0e10cSrcweir 					{
1116cdf0e10cSrcweir 						nFontSize = 28;
1117cdf0e10cSrcweir 						nFirstLineOffset = -800;
1118cdf0e10cSrcweir 					}
1119cdf0e10cSrcweir 					break;
1120cdf0e10cSrcweir 
1121cdf0e10cSrcweir 					case 3:
1122cdf0e10cSrcweir 					{
1123cdf0e10cSrcweir 						aNumberFormat.SetBulletChar( 0x2013 );  // StarBats: 0xF000 + 150
1124cdf0e10cSrcweir 						aNumberFormat.SetBulletRelSize(75);
1125cdf0e10cSrcweir 						nFontSize = 24;
1126cdf0e10cSrcweir 					}
1127cdf0e10cSrcweir 					break;
1128cdf0e10cSrcweir 				}
1129cdf0e10cSrcweir 
1130cdf0e10cSrcweir 				aNumberFormat.SetFirstLineOffset(nFirstLineOffset);
1131cdf0e10cSrcweir 				nFontSize = (sal_uInt16)((nFontSize * 2540L) / 72);  // Pt --> 1/100 mm
1132cdf0e10cSrcweir 				rBulletFont.SetSize(Size(0,846));		// 24 pt
1133cdf0e10cSrcweir 				aNumberFormat.SetBulletFont(&rBulletFont);
1134cdf0e10cSrcweir 				aNumRule.SetLevel( i, aNumberFormat );
1135cdf0e10cSrcweir 			}
1136cdf0e10cSrcweir 
1137cdf0e10cSrcweir 			rSet.Put( SvxNumBulletItem( aNumRule, EE_PARA_NUMBULLET ) );
1138cdf0e10cSrcweir 			((SfxStyleSheet*)pSheet)->Broadcast(SfxSimpleHint( SFX_HINT_DATACHANGED ) );
1139cdf0e10cSrcweir 		}
1140cdf0e10cSrcweir 		break;
1141cdf0e10cSrcweir 	}
1142cdf0e10cSrcweir }
1143cdf0e10cSrcweir 
1144cdf0e10cSrcweir /*************************************************************************
1145cdf0e10cSrcweir |*
1146cdf0e10cSrcweir |* Standard Bullet-Font erzeugen (ohne Groesse)
1147cdf0e10cSrcweir |*
1148cdf0e10cSrcweir \************************************************************************/
1149cdf0e10cSrcweir 
GetBulletFont() const1150cdf0e10cSrcweir Font SdStyleSheetPool::GetBulletFont() const
1151cdf0e10cSrcweir {
1152cdf0e10cSrcweir 	Font aBulletFont( String( RTL_CONSTASCII_USTRINGPARAM( "StarSymbol" )), Size(0, 1000) );
1153cdf0e10cSrcweir 	aBulletFont.SetCharSet(RTL_TEXTENCODING_UNICODE);
1154cdf0e10cSrcweir 	aBulletFont.SetWeight(WEIGHT_NORMAL);
1155cdf0e10cSrcweir 	aBulletFont.SetUnderline(UNDERLINE_NONE);
1156cdf0e10cSrcweir 	aBulletFont.SetOverline(UNDERLINE_NONE);
1157cdf0e10cSrcweir 	aBulletFont.SetStrikeout(STRIKEOUT_NONE);
1158cdf0e10cSrcweir 	aBulletFont.SetItalic(ITALIC_NONE);
1159cdf0e10cSrcweir 	aBulletFont.SetOutline(sal_False);
1160cdf0e10cSrcweir 	aBulletFont.SetShadow(sal_False);
1161cdf0e10cSrcweir 	aBulletFont.SetColor(Color(COL_AUTO));
1162cdf0e10cSrcweir 	aBulletFont.SetTransparent(sal_True);
1163cdf0e10cSrcweir 
1164cdf0e10cSrcweir 	return aBulletFont;
1165cdf0e10cSrcweir }
1166cdf0e10cSrcweir 
1167cdf0e10cSrcweir // --------------------------------------------------------------------
1168cdf0e10cSrcweir 
AddStyleFamily(const SdPage * pPage)1169cdf0e10cSrcweir void SdStyleSheetPool::AddStyleFamily( const SdPage* pPage )
1170cdf0e10cSrcweir {
1171cdf0e10cSrcweir 	rtl::Reference< SfxStyleSheetPool > xPool( this );
1172cdf0e10cSrcweir 	maStyleFamilyMap[pPage] = new SdStyleFamily( xPool, pPage );
1173cdf0e10cSrcweir }
1174cdf0e10cSrcweir 
1175cdf0e10cSrcweir // --------------------------------------------------------------------
1176cdf0e10cSrcweir 
RemoveStyleFamily(const SdPage * pPage)1177cdf0e10cSrcweir void SdStyleSheetPool::RemoveStyleFamily( const SdPage* pPage )
1178cdf0e10cSrcweir {
1179cdf0e10cSrcweir 	SdStyleFamilyMap::iterator iter( maStyleFamilyMap.find( pPage ) );
1180cdf0e10cSrcweir 	if( iter != maStyleFamilyMap.end() )
1181cdf0e10cSrcweir 	{
1182cdf0e10cSrcweir 		SdStyleFamilyRef xStyle( (*iter).second );
1183cdf0e10cSrcweir 		maStyleFamilyMap.erase( iter );
1184cdf0e10cSrcweir 
1185cdf0e10cSrcweir 		if( xStyle.is() ) try
1186cdf0e10cSrcweir 		{
1187cdf0e10cSrcweir 			xStyle->dispose();
1188cdf0e10cSrcweir 		}
1189cdf0e10cSrcweir 		catch( Exception& )
1190cdf0e10cSrcweir 		{
1191cdf0e10cSrcweir 		}
1192cdf0e10cSrcweir 	}
1193cdf0e10cSrcweir }
1194cdf0e10cSrcweir 
1195cdf0e10cSrcweir // --------------------------------------------------------------------
1196cdf0e10cSrcweir 
throwIfDisposed()1197cdf0e10cSrcweir void SdStyleSheetPool::throwIfDisposed() throw(::com::sun::star::uno::RuntimeException)
1198cdf0e10cSrcweir {
1199cdf0e10cSrcweir 	if( mpDoc == NULL )
1200cdf0e10cSrcweir 		throw DisposedException();
1201cdf0e10cSrcweir }
1202cdf0e10cSrcweir 
1203cdf0e10cSrcweir // --------------------------------------------------------------------
1204cdf0e10cSrcweir // XServiceInfo
1205cdf0e10cSrcweir // --------------------------------------------------------------------
1206cdf0e10cSrcweir 
getImplementationName()1207cdf0e10cSrcweir OUString SAL_CALL SdStyleSheetPool::getImplementationName() throw(RuntimeException)
1208cdf0e10cSrcweir {
1209cdf0e10cSrcweir 	return OUString( RTL_CONSTASCII_USTRINGPARAM("SdStyleSheetPool") );
1210cdf0e10cSrcweir }
1211cdf0e10cSrcweir 
1212cdf0e10cSrcweir // --------------------------------------------------------------------
1213cdf0e10cSrcweir 
1214cdf0e10cSrcweir static const sal_Char* gpServiceName = "com.sun.star.style.StyleFamilies";
1215cdf0e10cSrcweir 
supportsService(const OUString & ServiceName)1216cdf0e10cSrcweir sal_Bool SAL_CALL SdStyleSheetPool::supportsService( const OUString& ServiceName ) throw(RuntimeException)
1217cdf0e10cSrcweir {
1218cdf0e10cSrcweir 	return ServiceName.equalsAscii( gpServiceName );
1219cdf0e10cSrcweir }
1220cdf0e10cSrcweir 
1221cdf0e10cSrcweir // --------------------------------------------------------------------
1222cdf0e10cSrcweir 
getSupportedServiceNames()1223cdf0e10cSrcweir Sequence< OUString > SAL_CALL SdStyleSheetPool::getSupportedServiceNames() throw(RuntimeException)
1224cdf0e10cSrcweir {
1225cdf0e10cSrcweir 	OUString aStr( OUString::createFromAscii( gpServiceName ) );
1226cdf0e10cSrcweir 	return Sequence< OUString >( &aStr, 1 );
1227cdf0e10cSrcweir }
1228cdf0e10cSrcweir 
1229cdf0e10cSrcweir // --------------------------------------------------------------------
1230cdf0e10cSrcweir // XNameAccess
1231cdf0e10cSrcweir // --------------------------------------------------------------------
1232cdf0e10cSrcweir 
getByName(const OUString & aName)1233cdf0e10cSrcweir Any SAL_CALL SdStyleSheetPool::getByName( const OUString& aName ) throw(NoSuchElementException, WrappedTargetException, RuntimeException)
1234cdf0e10cSrcweir {
1235cdf0e10cSrcweir 	throwIfDisposed();
1236cdf0e10cSrcweir 
1237cdf0e10cSrcweir 	if( mxGraphicFamily->getName() == aName )
1238cdf0e10cSrcweir 		return Any( Reference< XNameAccess >( static_cast< XNameAccess* >( mxGraphicFamily.get() ) ) );
1239cdf0e10cSrcweir 
1240cdf0e10cSrcweir 	if( mxCellFamily->getName() == aName )
1241cdf0e10cSrcweir 		return Any( Reference< XNameAccess >( static_cast< XNameAccess* >( mxCellFamily.get() ) ) );
1242cdf0e10cSrcweir 
1243cdf0e10cSrcweir 	if( msTableFamilyName == aName )
1244cdf0e10cSrcweir 		return Any( mxTableFamily );
1245cdf0e10cSrcweir 
1246cdf0e10cSrcweir 	for( SdStyleFamilyMap::iterator iter( maStyleFamilyMap.begin() ); iter != maStyleFamilyMap.end(); iter++ )
1247cdf0e10cSrcweir 	{
1248cdf0e10cSrcweir 		if( (*iter).second->getName() == aName )
1249cdf0e10cSrcweir 			return Any( Reference< XNameAccess >( static_cast< XNameAccess* >( (*iter).second.get() ) ) );
1250cdf0e10cSrcweir 	}
1251cdf0e10cSrcweir 
1252cdf0e10cSrcweir 	throw NoSuchElementException();
1253cdf0e10cSrcweir }
1254cdf0e10cSrcweir 
1255cdf0e10cSrcweir // --------------------------------------------------------------------
1256cdf0e10cSrcweir 
getElementNames()1257cdf0e10cSrcweir Sequence< OUString > SAL_CALL SdStyleSheetPool::getElementNames() throw(RuntimeException)
1258cdf0e10cSrcweir {
1259cdf0e10cSrcweir 	throwIfDisposed();
1260cdf0e10cSrcweir 
1261cdf0e10cSrcweir 	Sequence< OUString > aNames( maStyleFamilyMap.size() + 3 );
1262cdf0e10cSrcweir 	OUString* pNames = aNames.getArray();
1263cdf0e10cSrcweir 
1264cdf0e10cSrcweir 	*pNames++ = mxGraphicFamily->getName();
1265cdf0e10cSrcweir 	*pNames++ = mxCellFamily->getName();
1266cdf0e10cSrcweir 	*pNames++ = msTableFamilyName;
1267cdf0e10cSrcweir 
1268cdf0e10cSrcweir 	for( SdStyleFamilyMap::iterator iter( maStyleFamilyMap.begin() ); iter != maStyleFamilyMap.end(); iter++ )
1269cdf0e10cSrcweir 	{
1270cdf0e10cSrcweir 		*pNames++ = (*iter).second->getName();
1271cdf0e10cSrcweir 	}
1272cdf0e10cSrcweir 
1273cdf0e10cSrcweir 	return aNames;
1274cdf0e10cSrcweir }
1275cdf0e10cSrcweir 
1276cdf0e10cSrcweir // --------------------------------------------------------------------
1277cdf0e10cSrcweir 
hasByName(const OUString & aName)1278cdf0e10cSrcweir sal_Bool SAL_CALL SdStyleSheetPool::hasByName( const OUString& aName ) throw(RuntimeException)
1279cdf0e10cSrcweir {
1280cdf0e10cSrcweir 	throwIfDisposed();
1281cdf0e10cSrcweir 
1282cdf0e10cSrcweir 	if( mxGraphicFamily->getName() == aName )
1283cdf0e10cSrcweir 		return sal_True;
1284cdf0e10cSrcweir 
1285cdf0e10cSrcweir 	if( mxCellFamily->getName() == aName )
1286cdf0e10cSrcweir 		return sal_True;
1287cdf0e10cSrcweir 
1288cdf0e10cSrcweir 	if( msTableFamilyName == aName )
1289cdf0e10cSrcweir 		return sal_True;
1290cdf0e10cSrcweir 
1291cdf0e10cSrcweir 	for( SdStyleFamilyMap::iterator iter( maStyleFamilyMap.begin() ); iter != maStyleFamilyMap.end(); iter++ )
1292cdf0e10cSrcweir 	{
1293cdf0e10cSrcweir 		if( (*iter).second->getName() == aName )
1294cdf0e10cSrcweir 			return sal_True;
1295cdf0e10cSrcweir 	}
1296cdf0e10cSrcweir 
1297cdf0e10cSrcweir 	return sal_False;
1298cdf0e10cSrcweir }
1299cdf0e10cSrcweir 
1300cdf0e10cSrcweir // --------------------------------------------------------------------
1301cdf0e10cSrcweir // XElementAccess
1302cdf0e10cSrcweir // --------------------------------------------------------------------
1303cdf0e10cSrcweir 
getElementType()1304cdf0e10cSrcweir Type SAL_CALL SdStyleSheetPool::getElementType() throw(RuntimeException)
1305cdf0e10cSrcweir {
1306cdf0e10cSrcweir 	throwIfDisposed();
1307cdf0e10cSrcweir 
1308cdf0e10cSrcweir 	return XNameAccess::static_type();
1309cdf0e10cSrcweir }
1310cdf0e10cSrcweir 
1311cdf0e10cSrcweir // --------------------------------------------------------------------
1312cdf0e10cSrcweir 
hasElements()1313cdf0e10cSrcweir sal_Bool SAL_CALL SdStyleSheetPool::hasElements() throw(RuntimeException)
1314cdf0e10cSrcweir {
1315cdf0e10cSrcweir 	return sal_True;
1316cdf0e10cSrcweir }
1317cdf0e10cSrcweir 
1318cdf0e10cSrcweir // --------------------------------------------------------------------
1319cdf0e10cSrcweir // XIndexAccess
1320cdf0e10cSrcweir // --------------------------------------------------------------------
1321cdf0e10cSrcweir 
getCount()1322cdf0e10cSrcweir sal_Int32 SAL_CALL SdStyleSheetPool::getCount() throw(RuntimeException)
1323cdf0e10cSrcweir {
1324cdf0e10cSrcweir 	throwIfDisposed();
1325cdf0e10cSrcweir 
1326cdf0e10cSrcweir 	return maStyleFamilyMap.size() + 3;
1327cdf0e10cSrcweir }
1328cdf0e10cSrcweir 
1329cdf0e10cSrcweir // --------------------------------------------------------------------
1330cdf0e10cSrcweir 
getByIndex(sal_Int32 Index)1331cdf0e10cSrcweir Any SAL_CALL SdStyleSheetPool::getByIndex( sal_Int32 Index ) throw(IndexOutOfBoundsException, WrappedTargetException, RuntimeException)
1332cdf0e10cSrcweir {
1333cdf0e10cSrcweir 	switch( Index )
1334cdf0e10cSrcweir 	{
1335cdf0e10cSrcweir 	case 0:
1336cdf0e10cSrcweir 		return Any( Reference< XNameAccess >( static_cast< XNameAccess* >( mxGraphicFamily.get() ) ) );
1337cdf0e10cSrcweir 
1338cdf0e10cSrcweir 	case 1:
1339cdf0e10cSrcweir 		return Any( Reference< XNameAccess >( static_cast< XNameAccess* >( mxCellFamily.get() ) ) );
1340cdf0e10cSrcweir 
1341cdf0e10cSrcweir 	case 2:
1342cdf0e10cSrcweir 		return Any( mxTableFamily );
1343cdf0e10cSrcweir 
1344cdf0e10cSrcweir 	default:
1345cdf0e10cSrcweir 		{
1346cdf0e10cSrcweir 			Index -= 3;
1347cdf0e10cSrcweir 			if( (Index < 0) || (Index >= sal::static_int_cast<sal_Int32>(maStyleFamilyMap.size())) )
1348cdf0e10cSrcweir 				throw IndexOutOfBoundsException();
1349cdf0e10cSrcweir 			SdStyleFamilyMap::iterator iter( maStyleFamilyMap.begin() );
1350cdf0e10cSrcweir 			while( Index-- )
1351cdf0e10cSrcweir 				iter++;
1352cdf0e10cSrcweir 
1353cdf0e10cSrcweir 			return Any( Reference< XNameAccess >( static_cast< XNameAccess* >( (*iter).second.get() ) ) );
1354cdf0e10cSrcweir 		}
1355cdf0e10cSrcweir 	}
1356cdf0e10cSrcweir }
1357cdf0e10cSrcweir 
1358cdf0e10cSrcweir // --------------------------------------------------------------------
1359cdf0e10cSrcweir // XComponent
1360cdf0e10cSrcweir // --------------------------------------------------------------------
1361cdf0e10cSrcweir 
dispose()1362cdf0e10cSrcweir void SAL_CALL SdStyleSheetPool::dispose() throw (RuntimeException)
1363cdf0e10cSrcweir {
1364cdf0e10cSrcweir 	if( mpDoc )
1365cdf0e10cSrcweir 	{
1366cdf0e10cSrcweir 		mxGraphicFamily->dispose();
1367cdf0e10cSrcweir 		mxGraphicFamily.clear();
1368cdf0e10cSrcweir 		mxCellFamily->dispose();
1369cdf0e10cSrcweir 		mxCellFamily.clear();
1370cdf0e10cSrcweir 
1371cdf0e10cSrcweir 		Reference< XComponent > xComp( mxTableFamily, UNO_QUERY );
1372cdf0e10cSrcweir 		if( xComp.is() )
1373cdf0e10cSrcweir 			xComp->dispose();
1374cdf0e10cSrcweir 		mxTableFamily = 0;
1375cdf0e10cSrcweir 
1376cdf0e10cSrcweir 		SdStyleFamilyMap aTempMap;
1377cdf0e10cSrcweir 		aTempMap.swap( maStyleFamilyMap );
1378cdf0e10cSrcweir 
1379cdf0e10cSrcweir 		for( SdStyleFamilyMap::iterator iter( aTempMap.begin() ); iter != aTempMap.end(); iter++ ) try
1380cdf0e10cSrcweir 		{
1381cdf0e10cSrcweir 			(*iter).second->dispose();
1382cdf0e10cSrcweir 		}
1383cdf0e10cSrcweir 		catch( Exception& )
1384cdf0e10cSrcweir 		{
1385cdf0e10cSrcweir 		}
1386cdf0e10cSrcweir 
1387cdf0e10cSrcweir //		EndListening( *mpDoc );
1388cdf0e10cSrcweir 		mpDoc = 0;
1389cdf0e10cSrcweir 
1390cdf0e10cSrcweir 		Clear();
1391cdf0e10cSrcweir 	}
1392cdf0e10cSrcweir }
1393cdf0e10cSrcweir 
1394cdf0e10cSrcweir // --------------------------------------------------------------------
1395cdf0e10cSrcweir 
addEventListener(const Reference<XEventListener> &)1396cdf0e10cSrcweir void SAL_CALL SdStyleSheetPool::addEventListener( const Reference< XEventListener >& /*xListener*/ ) throw (RuntimeException)
1397cdf0e10cSrcweir {
1398cdf0e10cSrcweir }
1399cdf0e10cSrcweir 
1400cdf0e10cSrcweir // --------------------------------------------------------------------
1401cdf0e10cSrcweir 
removeEventListener(const Reference<XEventListener> &)1402cdf0e10cSrcweir void SAL_CALL SdStyleSheetPool::removeEventListener( const Reference< XEventListener >& /*aListener*/ ) throw (RuntimeException)
1403cdf0e10cSrcweir {
1404cdf0e10cSrcweir }
1405cdf0e10cSrcweir 
1406cdf0e10cSrcweir // --------------------------------------------------------------------
1407cdf0e10cSrcweir 
CreateChildList(SdStyleSheet * pSheet)1408cdf0e10cSrcweir SdStyleSheetVector SdStyleSheetPool::CreateChildList( SdStyleSheet* pSheet )
1409cdf0e10cSrcweir {
1410cdf0e10cSrcweir 	SdStyleSheetVector aResult;
1411cdf0e10cSrcweir 
1412cdf0e10cSrcweir 	sal_uInt16 nListenerCount = pSheet->GetListenerCount();
1413cdf0e10cSrcweir 	if (nListenerCount > 0)
1414cdf0e10cSrcweir 	{
1415cdf0e10cSrcweir 		for (sal_uInt16 n = 0; n < nListenerCount; n++)
1416cdf0e10cSrcweir 		{
1417cdf0e10cSrcweir 			SdStyleSheet* pChild = dynamic_cast< SdStyleSheet* >( pSheet->GetListener(n) );
1418cdf0e10cSrcweir 			if(pChild && pChild->GetParent() == pSheet->GetName())
1419cdf0e10cSrcweir 			{
1420cdf0e10cSrcweir 				aResult.push_back( SdStyleSheetRef( pChild ) );
1421cdf0e10cSrcweir 			}
1422cdf0e10cSrcweir 		}
1423cdf0e10cSrcweir 	}
1424cdf0e10cSrcweir 
1425cdf0e10cSrcweir 	return aResult;
1426cdf0e10cSrcweir }
1427cdf0e10cSrcweir 
1428cdf0e10cSrcweir // --------------------------------------------------------------------
1429cdf0e10cSrcweir 
acquire(void)1430cdf0e10cSrcweir void SAL_CALL SdStyleSheetPool::acquire (void) throw ()
1431cdf0e10cSrcweir {
1432cdf0e10cSrcweir 	SdStyleSheetPoolBase::acquire();
1433cdf0e10cSrcweir }
1434cdf0e10cSrcweir 
release(void)1435cdf0e10cSrcweir void SAL_CALL SdStyleSheetPool::release (void) throw ()
1436cdf0e10cSrcweir {
1437cdf0e10cSrcweir 	SdStyleSheetPoolBase::release();
1438cdf0e10cSrcweir }
1439cdf0e10cSrcweir 
1440cdf0e10cSrcweir // --------------------------------------------------------------------
1441