1*5b190011SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*5b190011SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*5b190011SAndrew Rist * or more contributor license agreements. See the NOTICE file 5*5b190011SAndrew Rist * distributed with this work for additional information 6*5b190011SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*5b190011SAndrew Rist * to you under the Apache License, Version 2.0 (the 8*5b190011SAndrew Rist * "License"); you may not use this file except in compliance 9*5b190011SAndrew Rist * with the License. You may obtain a copy of the License at 10cdf0e10cSrcweir * 11*5b190011SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 13*5b190011SAndrew Rist * Unless required by applicable law or agreed to in writing, 14*5b190011SAndrew Rist * software distributed under the License is distributed on an 15*5b190011SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*5b190011SAndrew Rist * KIND, either express or implied. See the License for the 17*5b190011SAndrew Rist * specific language governing permissions and limitations 18*5b190011SAndrew Rist * under the License. 19cdf0e10cSrcweir * 20*5b190011SAndrew Rist *************************************************************/ 21*5b190011SAndrew Rist 22*5b190011SAndrew 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 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 114cdf0e10cSrcweir SdStyleSheetPool::~SdStyleSheetPool() 115cdf0e10cSrcweir { 116cdf0e10cSrcweir DBG_ASSERT( mpDoc == NULL, "sd::SdStyleSheetPool::~SdStyleSheetPool(), dispose me first!" ); 117cdf0e10cSrcweir } 118cdf0e10cSrcweir 119cdf0e10cSrcweir // ---------------------------------------------------------- 120cdf0e10cSrcweir 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 128cdf0e10cSrcweir SfxStyleSheetBase* SdStyleSheetPool::Create(const SdStyleSheet& rStyle) 129cdf0e10cSrcweir { 130cdf0e10cSrcweir return new SdStyleSheet( rStyle ); 131cdf0e10cSrcweir } 132cdf0e10cSrcweir 133cdf0e10cSrcweir // ---------------------------------------------------------- 134cdf0e10cSrcweir 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 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 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; 267cdf0e10cSrcweir sal_uInt16 nLower = 100; 268cdf0e10cSrcweir 269cdf0e10cSrcweir switch (nLevel) 270cdf0e10cSrcweir { 271cdf0e10cSrcweir case 1: 272cdf0e10cSrcweir { 273cdf0e10cSrcweir nFontSize = 32; 274cdf0e10cSrcweir nLower = 500; 275cdf0e10cSrcweir nFirstIndent = -900; 276cdf0e10cSrcweir } 277cdf0e10cSrcweir break; 278cdf0e10cSrcweir 279cdf0e10cSrcweir case 2: 280cdf0e10cSrcweir { 281cdf0e10cSrcweir nFontSize = 28; 282cdf0e10cSrcweir nLower = 400; 283cdf0e10cSrcweir nFirstIndent = -800; 284cdf0e10cSrcweir } 285cdf0e10cSrcweir break; 286cdf0e10cSrcweir 287cdf0e10cSrcweir case 3: 288cdf0e10cSrcweir { 289cdf0e10cSrcweir nFontSize = 24; 290cdf0e10cSrcweir nLower = 300; 291cdf0e10cSrcweir } 292cdf0e10cSrcweir break; 293cdf0e10cSrcweir 294cdf0e10cSrcweir case 4: 295cdf0e10cSrcweir { 296cdf0e10cSrcweir nLower = 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) 317cdf0e10cSrcweir aSvxULSpaceItem.SetLower(nLower); 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 557cdf0e10cSrcweir void SdStyleSheetPool::CopyGraphicSheets(SdStyleSheetPool& rSourcePool) 558cdf0e10cSrcweir { 559cdf0e10cSrcweir CopySheets( rSourcePool, SD_STYLE_FAMILY_GRAPHICS ); 560cdf0e10cSrcweir } 561cdf0e10cSrcweir 562cdf0e10cSrcweir void SdStyleSheetPool::CopyCellSheets(SdStyleSheetPool& rSourcePool) 563cdf0e10cSrcweir { 564cdf0e10cSrcweir CopySheets( rSourcePool, SD_STYLE_FAMILY_CELL ); 565cdf0e10cSrcweir } 566cdf0e10cSrcweir 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 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 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 732cdf0e10cSrcweir 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 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 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 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; 917cdf0e10cSrcweir case HID_POOLSHEET_TEXT: nNameId = STR_POOLSHEET_TEXT; break; 918cdf0e10cSrcweir case HID_POOLSHEET_TEXTBODY: nNameId = STR_POOLSHEET_TEXTBODY; break; 919cdf0e10cSrcweir case HID_POOLSHEET_TEXTBODY_JUSTIFY:nNameId = STR_POOLSHEET_TEXTBODY_JUSTIFY;break; 920cdf0e10cSrcweir case HID_POOLSHEET_TEXTBODY_INDENT: nNameId = STR_POOLSHEET_TEXTBODY_INDENT;break; 921cdf0e10cSrcweir case HID_POOLSHEET_TITLE: nNameId = STR_POOLSHEET_TITLE; break; 922cdf0e10cSrcweir case HID_POOLSHEET_TITLE1: nNameId = STR_POOLSHEET_TITLE1; break; 923cdf0e10cSrcweir case HID_POOLSHEET_TITLE2: nNameId = STR_POOLSHEET_TITLE2; break; 924cdf0e10cSrcweir case HID_POOLSHEET_HEADLINE: nNameId = STR_POOLSHEET_HEADLINE; break; 925cdf0e10cSrcweir case HID_POOLSHEET_HEADLINE1: nNameId = STR_POOLSHEET_HEADLINE1; break; 926cdf0e10cSrcweir case HID_POOLSHEET_HEADLINE2: nNameId = STR_POOLSHEET_HEADLINE2; break; 927cdf0e10cSrcweir case HID_POOLSHEET_MEASURE: nNameId = STR_POOLSHEET_MEASURE; break; 928cdf0e10cSrcweir 929cdf0e10cSrcweir case HID_PSEUDOSHEET_TITLE: nNameId = STR_PSEUDOSHEET_TITLE; break; 930cdf0e10cSrcweir case HID_PSEUDOSHEET_SUBTITLE: nNameId = STR_PSEUDOSHEET_SUBTITLE; break; 931cdf0e10cSrcweir case HID_PSEUDOSHEET_OUTLINE1: 932cdf0e10cSrcweir case HID_PSEUDOSHEET_OUTLINE2: 933cdf0e10cSrcweir case HID_PSEUDOSHEET_OUTLINE3: 934cdf0e10cSrcweir case HID_PSEUDOSHEET_OUTLINE4: 935cdf0e10cSrcweir case HID_PSEUDOSHEET_OUTLINE5: 936cdf0e10cSrcweir case HID_PSEUDOSHEET_OUTLINE6: 937cdf0e10cSrcweir case HID_PSEUDOSHEET_OUTLINE7: 938cdf0e10cSrcweir case HID_PSEUDOSHEET_OUTLINE8: 939cdf0e10cSrcweir case HID_PSEUDOSHEET_OUTLINE9: nNameId = STR_PSEUDOSHEET_OUTLINE; break; 940cdf0e10cSrcweir case HID_PSEUDOSHEET_BACKGROUNDOBJECTS: nNameId = STR_PSEUDOSHEET_BACKGROUNDOBJECTS; break; 941cdf0e10cSrcweir case HID_PSEUDOSHEET_BACKGROUND: nNameId = STR_PSEUDOSHEET_BACKGROUND; break; 942cdf0e10cSrcweir case HID_PSEUDOSHEET_NOTES: nNameId = STR_PSEUDOSHEET_NOTES; break; 943cdf0e10cSrcweir 944cdf0e10cSrcweir case HID_SD_CELL_STYLE_DEFAULT: nNameId = STR_STANDARD_STYLESHEET_NAME; break; 945cdf0e10cSrcweir case HID_SD_CELL_STYLE_BANDED: nNameId = STR_POOLSHEET_BANDED_CELL; break; 946cdf0e10cSrcweir case HID_SD_CELL_STYLE_HEADER: nNameId = STR_POOLSHEET_HEADER; break; 947cdf0e10cSrcweir case HID_SD_CELL_STYLE_TOTAL: nNameId = STR_POOLSHEET_TOTAL; break; 948cdf0e10cSrcweir case HID_SD_CELL_STYLE_FIRST_COLUMN: nNameId = STR_POOLSHEET_FIRST_COLUMN; break; 949cdf0e10cSrcweir case HID_SD_CELL_STYLE_LAST_COLUMN: nNameId = STR_POOLSHEET_LAST_COLUMN; break; 950cdf0e10cSrcweir 951cdf0e10cSrcweir default: 952cdf0e10cSrcweir // 0 oder falsche (alte) HelpId 953cdf0e10cSrcweir bHelpKnown = sal_False; 954cdf0e10cSrcweir } 955cdf0e10cSrcweir if( bHelpKnown ) 956cdf0e10cSrcweir { 957cdf0e10cSrcweir if( nNameId ) 958cdf0e10cSrcweir { 959cdf0e10cSrcweir aNewName = String( SdResId( nNameId ) ); 960cdf0e10cSrcweir if( nNameId == STR_PSEUDOSHEET_OUTLINE ) 961cdf0e10cSrcweir { 962cdf0e10cSrcweir aNewName.Append( sal_Unicode( ' ' )); 963cdf0e10cSrcweir aNewName.Append( String::CreateFromInt32( sal_Int32( nHelpId - HID_PSEUDOSHEET_OUTLINE ))); 964cdf0e10cSrcweir } 965cdf0e10cSrcweir } 966cdf0e10cSrcweir 967cdf0e10cSrcweir if( aNewName.Len() && aNewName != aOldName ) 968cdf0e10cSrcweir { 969cdf0e10cSrcweir SfxStyleSheetBase* pSheetFound = Find( aNewName, eFam ); 970cdf0e10cSrcweir 971cdf0e10cSrcweir if ( !pSheetFound ) 972cdf0e10cSrcweir { 973cdf0e10cSrcweir // Sheet existiert noch nicht: Altes Sheet wird umbenannt 974cdf0e10cSrcweir pStyle->SetName( aNewName ); // setzt auch Parents um 975cdf0e10cSrcweir } 976cdf0e10cSrcweir else 977cdf0e10cSrcweir { 978cdf0e10cSrcweir // Sheet existiert schon: Altes Sheet muss entfernt werden 979cdf0e10cSrcweir if( !pEraseList ) 980cdf0e10cSrcweir { 981cdf0e10cSrcweir pEraseList = new List(); 982cdf0e10cSrcweir } 983cdf0e10cSrcweir 984cdf0e10cSrcweir pEraseList->Insert( pStyle ); 985cdf0e10cSrcweir } 986cdf0e10cSrcweir } 987cdf0e10cSrcweir } 988cdf0e10cSrcweir } 989cdf0e10cSrcweir } 990cdf0e10cSrcweir 991cdf0e10cSrcweir if ( pEraseList ) 992cdf0e10cSrcweir { 993cdf0e10cSrcweir // Styles, welche nicht umbenannt werden konnten, muessen entfernt werden 994cdf0e10cSrcweir for ( sal_uLong i = 0; i < pEraseList->Count(); i++ ) 995cdf0e10cSrcweir { 996cdf0e10cSrcweir SfxStyleSheetBase* pEraseSheet = ( SfxStyleSheetBase* ) pEraseList->GetObject( i ); 997cdf0e10cSrcweir Remove( pEraseSheet ); 998cdf0e10cSrcweir } 999cdf0e10cSrcweir 1000cdf0e10cSrcweir delete pEraseList; 1001cdf0e10cSrcweir pEraseList = NULL; 1002cdf0e10cSrcweir } 1003cdf0e10cSrcweir } 1004cdf0e10cSrcweir // -------------------------------------------------------------------- 1005cdf0e10cSrcweir // Neues SvxNumBulletItem fuer das jeweilige StyleSheet setzen 1006cdf0e10cSrcweir // -------------------------------------------------------------------- 1007cdf0e10cSrcweir 1008cdf0e10cSrcweir void SdStyleSheetPool::PutNumBulletItem( SfxStyleSheetBase* pSheet, 1009cdf0e10cSrcweir Font& rBulletFont ) 1010cdf0e10cSrcweir { 1011cdf0e10cSrcweir String aHelpFile; 1012cdf0e10cSrcweir sal_uLong nHelpId = pSheet->GetHelpId( aHelpFile ); 1013cdf0e10cSrcweir SfxItemSet& rSet = pSheet->GetItemSet(); 1014cdf0e10cSrcweir 1015cdf0e10cSrcweir switch ( nHelpId ) 1016cdf0e10cSrcweir { 1017cdf0e10cSrcweir case HID_STANDARD_STYLESHEET_NAME : 1018cdf0e10cSrcweir { 1019cdf0e10cSrcweir // Standard-Vorlage 1020cdf0e10cSrcweir SvxNumberFormat aNumberFormat(SVX_NUM_CHAR_SPECIAL); 1021cdf0e10cSrcweir aNumberFormat.SetBulletFont(&rBulletFont); 1022cdf0e10cSrcweir aNumberFormat.SetBulletChar( 0x25CF ); // StarBats: 0xF000 + 34 1023cdf0e10cSrcweir aNumberFormat.SetBulletRelSize(45); 1024cdf0e10cSrcweir aNumberFormat.SetBulletColor(Color(COL_AUTO)); 1025cdf0e10cSrcweir aNumberFormat.SetStart(1); 1026cdf0e10cSrcweir aNumberFormat.SetNumAdjust(SVX_ADJUST_LEFT); 1027cdf0e10cSrcweir 1028cdf0e10cSrcweir SvxNumRule aNumRule( NUM_BULLET_REL_SIZE|NUM_BULLET_COLOR|NUM_CHAR_TEXT_DISTANCE, 10 , sal_False); 1029cdf0e10cSrcweir 1030cdf0e10cSrcweir for( sal_uInt16 i = 0; i < aNumRule.GetLevelCount(); i++ ) 1031cdf0e10cSrcweir { 1032cdf0e10cSrcweir const short nLSpace = (i + 1) * 600; 1033cdf0e10cSrcweir aNumberFormat.SetLSpace(nLSpace); 1034cdf0e10cSrcweir aNumberFormat.SetAbsLSpace(nLSpace); 1035cdf0e10cSrcweir aNumberFormat.SetFirstLineOffset(-600); 1036cdf0e10cSrcweir aNumRule.SetLevel( i, aNumberFormat ); 1037cdf0e10cSrcweir } 1038cdf0e10cSrcweir 1039cdf0e10cSrcweir rSet.Put( SvxNumBulletItem( aNumRule, EE_PARA_NUMBULLET ) ); 1040cdf0e10cSrcweir ((SfxStyleSheet*)pSheet)->Broadcast(SfxSimpleHint( SFX_HINT_DATACHANGED ) ); 1041cdf0e10cSrcweir } 1042cdf0e10cSrcweir break; 1043cdf0e10cSrcweir 1044cdf0e10cSrcweir case HID_PSEUDOSHEET_TITLE: 1045cdf0e10cSrcweir /* #84013# title gets same bullet as subtitle and not that page symbol anymore */ 1046cdf0e10cSrcweir case HID_PSEUDOSHEET_SUBTITLE : 1047cdf0e10cSrcweir { 1048cdf0e10cSrcweir // Untertitel-Vorlage 1049cdf0e10cSrcweir SvxNumRule* pDefaultRule = ((SvxNumBulletItem*) rSet.GetPool()->GetSecondaryPool()->GetPoolDefaultItem(EE_PARA_NUMBULLET))->GetNumRule(); 1050cdf0e10cSrcweir DBG_ASSERT( pDefaultRule, "Wo ist mein Default? [CL]" ); 1051cdf0e10cSrcweir 1052cdf0e10cSrcweir if(pDefaultRule) 1053cdf0e10cSrcweir { 1054cdf0e10cSrcweir SvxNumRule aNumRule(pDefaultRule->GetFeatureFlags(), 10, sal_False); 1055cdf0e10cSrcweir for(sal_uInt16 i=0; i < aNumRule.GetLevelCount(); i++) 1056cdf0e10cSrcweir { 1057cdf0e10cSrcweir SvxNumberFormat aFrmt( pDefaultRule->GetLevel(i) ); 1058cdf0e10cSrcweir aFrmt.SetNumberingType(SVX_NUM_CHAR_SPECIAL); 1059cdf0e10cSrcweir // #i93908# clear suffix for bullet lists 1060cdf0e10cSrcweir aFrmt.SetPrefix(::rtl::OUString()); 1061cdf0e10cSrcweir aFrmt.SetSuffix(::rtl::OUString()); 1062cdf0e10cSrcweir aFrmt.SetStart(1); 1063cdf0e10cSrcweir aFrmt.SetBulletRelSize(45); 1064cdf0e10cSrcweir aFrmt.SetBulletChar( 0x25CF ); // StarBats: 0xF000 + 34 1065cdf0e10cSrcweir aFrmt.SetBulletFont(&rBulletFont); 1066cdf0e10cSrcweir aNumRule.SetLevel(i, aFrmt); 1067cdf0e10cSrcweir } 1068cdf0e10cSrcweir 1069cdf0e10cSrcweir rSet.Put( SvxNumBulletItem( aNumRule, EE_PARA_NUMBULLET ) ); 1070cdf0e10cSrcweir ((SfxStyleSheet*)pSheet)->Broadcast(SfxSimpleHint( SFX_HINT_DATACHANGED ) ); 1071cdf0e10cSrcweir } 1072cdf0e10cSrcweir } 1073cdf0e10cSrcweir break; 1074cdf0e10cSrcweir 1075cdf0e10cSrcweir case HID_PSEUDOSHEET_OUTLINE + 1 : 1076cdf0e10cSrcweir { 1077cdf0e10cSrcweir // Gliederungs-Vorlage 1078cdf0e10cSrcweir SvxNumberFormat aNumberFormat(SVX_NUM_CHAR_SPECIAL); 1079cdf0e10cSrcweir aNumberFormat.SetBulletColor(Color(COL_AUTO)); 1080cdf0e10cSrcweir aNumberFormat.SetStart(1); 1081cdf0e10cSrcweir aNumberFormat.SetNumAdjust(SVX_ADJUST_LEFT); 1082cdf0e10cSrcweir 1083cdf0e10cSrcweir SvxNumRule aNumRule( NUM_BULLET_REL_SIZE|NUM_BULLET_COLOR|NUM_CHAR_TEXT_DISTANCE|NUM_SYMBOL_ALIGNMENT, 1084cdf0e10cSrcweir 10, sal_False ); 1085cdf0e10cSrcweir for( sal_uInt16 i = 0; i < aNumRule.GetLevelCount(); i++ ) 1086cdf0e10cSrcweir { 1087cdf0e10cSrcweir aNumberFormat.SetBulletChar( 0x25CF ); // StarBats: 0xF000 + 34 1088cdf0e10cSrcweir aNumberFormat.SetBulletRelSize(45); 1089cdf0e10cSrcweir const short nLSpace = (i + 1) * 1200; 1090cdf0e10cSrcweir aNumberFormat.SetLSpace(nLSpace); 1091cdf0e10cSrcweir aNumberFormat.SetAbsLSpace(nLSpace); 1092cdf0e10cSrcweir short nFirstLineOffset = -600; 1093cdf0e10cSrcweir 1094cdf0e10cSrcweir sal_uLong nFontSize = 20; 1095cdf0e10cSrcweir switch(i) 1096cdf0e10cSrcweir { 1097cdf0e10cSrcweir case 0: 1098cdf0e10cSrcweir { 1099cdf0e10cSrcweir nFontSize = 32; 1100cdf0e10cSrcweir nFirstLineOffset = -900; 1101cdf0e10cSrcweir } 1102cdf0e10cSrcweir break; 1103cdf0e10cSrcweir 1104cdf0e10cSrcweir case 1: 1105cdf0e10cSrcweir { 1106cdf0e10cSrcweir aNumberFormat.SetBulletChar( 0x2013 ); // StarBats: 0xF000 + 150 1107cdf0e10cSrcweir aNumberFormat.SetBulletRelSize(75); 1108cdf0e10cSrcweir nFontSize = 32; 1109cdf0e10cSrcweir nFirstLineOffset = -900; 1110cdf0e10cSrcweir } 1111cdf0e10cSrcweir break; 1112cdf0e10cSrcweir 1113cdf0e10cSrcweir case 2: 1114cdf0e10cSrcweir { 1115cdf0e10cSrcweir nFontSize = 28; 1116cdf0e10cSrcweir nFirstLineOffset = -800; 1117cdf0e10cSrcweir } 1118cdf0e10cSrcweir break; 1119cdf0e10cSrcweir 1120cdf0e10cSrcweir case 3: 1121cdf0e10cSrcweir { 1122cdf0e10cSrcweir aNumberFormat.SetBulletChar( 0x2013 ); // StarBats: 0xF000 + 150 1123cdf0e10cSrcweir aNumberFormat.SetBulletRelSize(75); 1124cdf0e10cSrcweir nFontSize = 24; 1125cdf0e10cSrcweir } 1126cdf0e10cSrcweir break; 1127cdf0e10cSrcweir } 1128cdf0e10cSrcweir 1129cdf0e10cSrcweir aNumberFormat.SetFirstLineOffset(nFirstLineOffset); 1130cdf0e10cSrcweir nFontSize = (sal_uInt16)((nFontSize * 2540L) / 72); // Pt --> 1/100 mm 1131cdf0e10cSrcweir rBulletFont.SetSize(Size(0,846)); // 24 pt 1132cdf0e10cSrcweir aNumberFormat.SetBulletFont(&rBulletFont); 1133cdf0e10cSrcweir aNumRule.SetLevel( i, aNumberFormat ); 1134cdf0e10cSrcweir } 1135cdf0e10cSrcweir 1136cdf0e10cSrcweir rSet.Put( SvxNumBulletItem( aNumRule, EE_PARA_NUMBULLET ) ); 1137cdf0e10cSrcweir ((SfxStyleSheet*)pSheet)->Broadcast(SfxSimpleHint( SFX_HINT_DATACHANGED ) ); 1138cdf0e10cSrcweir } 1139cdf0e10cSrcweir break; 1140cdf0e10cSrcweir } 1141cdf0e10cSrcweir } 1142cdf0e10cSrcweir 1143cdf0e10cSrcweir /************************************************************************* 1144cdf0e10cSrcweir |* 1145cdf0e10cSrcweir |* Standard Bullet-Font erzeugen (ohne Groesse) 1146cdf0e10cSrcweir |* 1147cdf0e10cSrcweir \************************************************************************/ 1148cdf0e10cSrcweir 1149cdf0e10cSrcweir Font SdStyleSheetPool::GetBulletFont() const 1150cdf0e10cSrcweir { 1151cdf0e10cSrcweir Font aBulletFont( String( RTL_CONSTASCII_USTRINGPARAM( "StarSymbol" )), Size(0, 1000) ); 1152cdf0e10cSrcweir aBulletFont.SetCharSet(RTL_TEXTENCODING_UNICODE); 1153cdf0e10cSrcweir aBulletFont.SetWeight(WEIGHT_NORMAL); 1154cdf0e10cSrcweir aBulletFont.SetUnderline(UNDERLINE_NONE); 1155cdf0e10cSrcweir aBulletFont.SetOverline(UNDERLINE_NONE); 1156cdf0e10cSrcweir aBulletFont.SetStrikeout(STRIKEOUT_NONE); 1157cdf0e10cSrcweir aBulletFont.SetItalic(ITALIC_NONE); 1158cdf0e10cSrcweir aBulletFont.SetOutline(sal_False); 1159cdf0e10cSrcweir aBulletFont.SetShadow(sal_False); 1160cdf0e10cSrcweir aBulletFont.SetColor(Color(COL_AUTO)); 1161cdf0e10cSrcweir aBulletFont.SetTransparent(sal_True); 1162cdf0e10cSrcweir 1163cdf0e10cSrcweir return aBulletFont; 1164cdf0e10cSrcweir } 1165cdf0e10cSrcweir 1166cdf0e10cSrcweir // -------------------------------------------------------------------- 1167cdf0e10cSrcweir 1168cdf0e10cSrcweir void SdStyleSheetPool::AddStyleFamily( const SdPage* pPage ) 1169cdf0e10cSrcweir { 1170cdf0e10cSrcweir rtl::Reference< SfxStyleSheetPool > xPool( this ); 1171cdf0e10cSrcweir maStyleFamilyMap[pPage] = new SdStyleFamily( xPool, pPage ); 1172cdf0e10cSrcweir } 1173cdf0e10cSrcweir 1174cdf0e10cSrcweir // -------------------------------------------------------------------- 1175cdf0e10cSrcweir 1176cdf0e10cSrcweir void SdStyleSheetPool::RemoveStyleFamily( const SdPage* pPage ) 1177cdf0e10cSrcweir { 1178cdf0e10cSrcweir SdStyleFamilyMap::iterator iter( maStyleFamilyMap.find( pPage ) ); 1179cdf0e10cSrcweir if( iter != maStyleFamilyMap.end() ) 1180cdf0e10cSrcweir { 1181cdf0e10cSrcweir SdStyleFamilyRef xStyle( (*iter).second ); 1182cdf0e10cSrcweir maStyleFamilyMap.erase( iter ); 1183cdf0e10cSrcweir 1184cdf0e10cSrcweir if( xStyle.is() ) try 1185cdf0e10cSrcweir { 1186cdf0e10cSrcweir xStyle->dispose(); 1187cdf0e10cSrcweir } 1188cdf0e10cSrcweir catch( Exception& ) 1189cdf0e10cSrcweir { 1190cdf0e10cSrcweir } 1191cdf0e10cSrcweir } 1192cdf0e10cSrcweir } 1193cdf0e10cSrcweir 1194cdf0e10cSrcweir // -------------------------------------------------------------------- 1195cdf0e10cSrcweir 1196cdf0e10cSrcweir void SdStyleSheetPool::throwIfDisposed() throw(::com::sun::star::uno::RuntimeException) 1197cdf0e10cSrcweir { 1198cdf0e10cSrcweir if( mpDoc == NULL ) 1199cdf0e10cSrcweir throw DisposedException(); 1200cdf0e10cSrcweir } 1201cdf0e10cSrcweir 1202cdf0e10cSrcweir // -------------------------------------------------------------------- 1203cdf0e10cSrcweir // XServiceInfo 1204cdf0e10cSrcweir // -------------------------------------------------------------------- 1205cdf0e10cSrcweir 1206cdf0e10cSrcweir OUString SAL_CALL SdStyleSheetPool::getImplementationName() throw(RuntimeException) 1207cdf0e10cSrcweir { 1208cdf0e10cSrcweir return OUString( RTL_CONSTASCII_USTRINGPARAM("SdStyleSheetPool") ); 1209cdf0e10cSrcweir } 1210cdf0e10cSrcweir 1211cdf0e10cSrcweir // -------------------------------------------------------------------- 1212cdf0e10cSrcweir 1213cdf0e10cSrcweir static const sal_Char* gpServiceName = "com.sun.star.style.StyleFamilies"; 1214cdf0e10cSrcweir 1215cdf0e10cSrcweir sal_Bool SAL_CALL SdStyleSheetPool::supportsService( const OUString& ServiceName ) throw(RuntimeException) 1216cdf0e10cSrcweir { 1217cdf0e10cSrcweir return ServiceName.equalsAscii( gpServiceName ); 1218cdf0e10cSrcweir } 1219cdf0e10cSrcweir 1220cdf0e10cSrcweir // -------------------------------------------------------------------- 1221cdf0e10cSrcweir 1222cdf0e10cSrcweir Sequence< OUString > SAL_CALL SdStyleSheetPool::getSupportedServiceNames() throw(RuntimeException) 1223cdf0e10cSrcweir { 1224cdf0e10cSrcweir OUString aStr( OUString::createFromAscii( gpServiceName ) ); 1225cdf0e10cSrcweir return Sequence< OUString >( &aStr, 1 ); 1226cdf0e10cSrcweir } 1227cdf0e10cSrcweir 1228cdf0e10cSrcweir // -------------------------------------------------------------------- 1229cdf0e10cSrcweir // XNameAccess 1230cdf0e10cSrcweir // -------------------------------------------------------------------- 1231cdf0e10cSrcweir 1232cdf0e10cSrcweir Any SAL_CALL SdStyleSheetPool::getByName( const OUString& aName ) throw(NoSuchElementException, WrappedTargetException, RuntimeException) 1233cdf0e10cSrcweir { 1234cdf0e10cSrcweir throwIfDisposed(); 1235cdf0e10cSrcweir 1236cdf0e10cSrcweir if( mxGraphicFamily->getName() == aName ) 1237cdf0e10cSrcweir return Any( Reference< XNameAccess >( static_cast< XNameAccess* >( mxGraphicFamily.get() ) ) ); 1238cdf0e10cSrcweir 1239cdf0e10cSrcweir if( mxCellFamily->getName() == aName ) 1240cdf0e10cSrcweir return Any( Reference< XNameAccess >( static_cast< XNameAccess* >( mxCellFamily.get() ) ) ); 1241cdf0e10cSrcweir 1242cdf0e10cSrcweir if( msTableFamilyName == aName ) 1243cdf0e10cSrcweir return Any( mxTableFamily ); 1244cdf0e10cSrcweir 1245cdf0e10cSrcweir for( SdStyleFamilyMap::iterator iter( maStyleFamilyMap.begin() ); iter != maStyleFamilyMap.end(); iter++ ) 1246cdf0e10cSrcweir { 1247cdf0e10cSrcweir if( (*iter).second->getName() == aName ) 1248cdf0e10cSrcweir return Any( Reference< XNameAccess >( static_cast< XNameAccess* >( (*iter).second.get() ) ) ); 1249cdf0e10cSrcweir } 1250cdf0e10cSrcweir 1251cdf0e10cSrcweir throw NoSuchElementException(); 1252cdf0e10cSrcweir } 1253cdf0e10cSrcweir 1254cdf0e10cSrcweir // -------------------------------------------------------------------- 1255cdf0e10cSrcweir 1256cdf0e10cSrcweir Sequence< OUString > SAL_CALL SdStyleSheetPool::getElementNames() throw(RuntimeException) 1257cdf0e10cSrcweir { 1258cdf0e10cSrcweir throwIfDisposed(); 1259cdf0e10cSrcweir 1260cdf0e10cSrcweir Sequence< OUString > aNames( maStyleFamilyMap.size() + 3 ); 1261cdf0e10cSrcweir OUString* pNames = aNames.getArray(); 1262cdf0e10cSrcweir 1263cdf0e10cSrcweir *pNames++ = mxGraphicFamily->getName(); 1264cdf0e10cSrcweir *pNames++ = mxCellFamily->getName(); 1265cdf0e10cSrcweir *pNames++ = msTableFamilyName; 1266cdf0e10cSrcweir 1267cdf0e10cSrcweir for( SdStyleFamilyMap::iterator iter( maStyleFamilyMap.begin() ); iter != maStyleFamilyMap.end(); iter++ ) 1268cdf0e10cSrcweir { 1269cdf0e10cSrcweir *pNames++ = (*iter).second->getName(); 1270cdf0e10cSrcweir } 1271cdf0e10cSrcweir 1272cdf0e10cSrcweir return aNames; 1273cdf0e10cSrcweir } 1274cdf0e10cSrcweir 1275cdf0e10cSrcweir // -------------------------------------------------------------------- 1276cdf0e10cSrcweir 1277cdf0e10cSrcweir sal_Bool SAL_CALL SdStyleSheetPool::hasByName( const OUString& aName ) throw(RuntimeException) 1278cdf0e10cSrcweir { 1279cdf0e10cSrcweir throwIfDisposed(); 1280cdf0e10cSrcweir 1281cdf0e10cSrcweir if( mxGraphicFamily->getName() == aName ) 1282cdf0e10cSrcweir return sal_True; 1283cdf0e10cSrcweir 1284cdf0e10cSrcweir if( mxCellFamily->getName() == aName ) 1285cdf0e10cSrcweir return sal_True; 1286cdf0e10cSrcweir 1287cdf0e10cSrcweir if( msTableFamilyName == aName ) 1288cdf0e10cSrcweir return sal_True; 1289cdf0e10cSrcweir 1290cdf0e10cSrcweir for( SdStyleFamilyMap::iterator iter( maStyleFamilyMap.begin() ); iter != maStyleFamilyMap.end(); iter++ ) 1291cdf0e10cSrcweir { 1292cdf0e10cSrcweir if( (*iter).second->getName() == aName ) 1293cdf0e10cSrcweir return sal_True; 1294cdf0e10cSrcweir } 1295cdf0e10cSrcweir 1296cdf0e10cSrcweir return sal_False; 1297cdf0e10cSrcweir } 1298cdf0e10cSrcweir 1299cdf0e10cSrcweir // -------------------------------------------------------------------- 1300cdf0e10cSrcweir // XElementAccess 1301cdf0e10cSrcweir // -------------------------------------------------------------------- 1302cdf0e10cSrcweir 1303cdf0e10cSrcweir Type SAL_CALL SdStyleSheetPool::getElementType() throw(RuntimeException) 1304cdf0e10cSrcweir { 1305cdf0e10cSrcweir throwIfDisposed(); 1306cdf0e10cSrcweir 1307cdf0e10cSrcweir return XNameAccess::static_type(); 1308cdf0e10cSrcweir } 1309cdf0e10cSrcweir 1310cdf0e10cSrcweir // -------------------------------------------------------------------- 1311cdf0e10cSrcweir 1312cdf0e10cSrcweir sal_Bool SAL_CALL SdStyleSheetPool::hasElements() throw(RuntimeException) 1313cdf0e10cSrcweir { 1314cdf0e10cSrcweir return sal_True; 1315cdf0e10cSrcweir } 1316cdf0e10cSrcweir 1317cdf0e10cSrcweir // -------------------------------------------------------------------- 1318cdf0e10cSrcweir // XIndexAccess 1319cdf0e10cSrcweir // -------------------------------------------------------------------- 1320cdf0e10cSrcweir 1321cdf0e10cSrcweir sal_Int32 SAL_CALL SdStyleSheetPool::getCount() throw(RuntimeException) 1322cdf0e10cSrcweir { 1323cdf0e10cSrcweir throwIfDisposed(); 1324cdf0e10cSrcweir 1325cdf0e10cSrcweir return maStyleFamilyMap.size() + 3; 1326cdf0e10cSrcweir } 1327cdf0e10cSrcweir 1328cdf0e10cSrcweir // -------------------------------------------------------------------- 1329cdf0e10cSrcweir 1330cdf0e10cSrcweir Any SAL_CALL SdStyleSheetPool::getByIndex( sal_Int32 Index ) throw(IndexOutOfBoundsException, WrappedTargetException, RuntimeException) 1331cdf0e10cSrcweir { 1332cdf0e10cSrcweir switch( Index ) 1333cdf0e10cSrcweir { 1334cdf0e10cSrcweir case 0: 1335cdf0e10cSrcweir return Any( Reference< XNameAccess >( static_cast< XNameAccess* >( mxGraphicFamily.get() ) ) ); 1336cdf0e10cSrcweir 1337cdf0e10cSrcweir case 1: 1338cdf0e10cSrcweir return Any( Reference< XNameAccess >( static_cast< XNameAccess* >( mxCellFamily.get() ) ) ); 1339cdf0e10cSrcweir 1340cdf0e10cSrcweir case 2: 1341cdf0e10cSrcweir return Any( mxTableFamily ); 1342cdf0e10cSrcweir 1343cdf0e10cSrcweir default: 1344cdf0e10cSrcweir { 1345cdf0e10cSrcweir Index -= 3; 1346cdf0e10cSrcweir if( (Index < 0) || (Index >= sal::static_int_cast<sal_Int32>(maStyleFamilyMap.size())) ) 1347cdf0e10cSrcweir throw IndexOutOfBoundsException(); 1348cdf0e10cSrcweir SdStyleFamilyMap::iterator iter( maStyleFamilyMap.begin() ); 1349cdf0e10cSrcweir while( Index-- ) 1350cdf0e10cSrcweir iter++; 1351cdf0e10cSrcweir 1352cdf0e10cSrcweir return Any( Reference< XNameAccess >( static_cast< XNameAccess* >( (*iter).second.get() ) ) ); 1353cdf0e10cSrcweir } 1354cdf0e10cSrcweir } 1355cdf0e10cSrcweir } 1356cdf0e10cSrcweir 1357cdf0e10cSrcweir // -------------------------------------------------------------------- 1358cdf0e10cSrcweir // XComponent 1359cdf0e10cSrcweir // -------------------------------------------------------------------- 1360cdf0e10cSrcweir 1361cdf0e10cSrcweir void SAL_CALL SdStyleSheetPool::dispose() throw (RuntimeException) 1362cdf0e10cSrcweir { 1363cdf0e10cSrcweir if( mpDoc ) 1364cdf0e10cSrcweir { 1365cdf0e10cSrcweir mxGraphicFamily->dispose(); 1366cdf0e10cSrcweir mxGraphicFamily.clear(); 1367cdf0e10cSrcweir mxCellFamily->dispose(); 1368cdf0e10cSrcweir mxCellFamily.clear(); 1369cdf0e10cSrcweir 1370cdf0e10cSrcweir Reference< XComponent > xComp( mxTableFamily, UNO_QUERY ); 1371cdf0e10cSrcweir if( xComp.is() ) 1372cdf0e10cSrcweir xComp->dispose(); 1373cdf0e10cSrcweir mxTableFamily = 0; 1374cdf0e10cSrcweir 1375cdf0e10cSrcweir SdStyleFamilyMap aTempMap; 1376cdf0e10cSrcweir aTempMap.swap( maStyleFamilyMap ); 1377cdf0e10cSrcweir 1378cdf0e10cSrcweir for( SdStyleFamilyMap::iterator iter( aTempMap.begin() ); iter != aTempMap.end(); iter++ ) try 1379cdf0e10cSrcweir { 1380cdf0e10cSrcweir (*iter).second->dispose(); 1381cdf0e10cSrcweir } 1382cdf0e10cSrcweir catch( Exception& ) 1383cdf0e10cSrcweir { 1384cdf0e10cSrcweir } 1385cdf0e10cSrcweir 1386cdf0e10cSrcweir // EndListening( *mpDoc ); 1387cdf0e10cSrcweir mpDoc = 0; 1388cdf0e10cSrcweir 1389cdf0e10cSrcweir Clear(); 1390cdf0e10cSrcweir } 1391cdf0e10cSrcweir } 1392cdf0e10cSrcweir 1393cdf0e10cSrcweir // -------------------------------------------------------------------- 1394cdf0e10cSrcweir 1395cdf0e10cSrcweir void SAL_CALL SdStyleSheetPool::addEventListener( const Reference< XEventListener >& /*xListener*/ ) throw (RuntimeException) 1396cdf0e10cSrcweir { 1397cdf0e10cSrcweir } 1398cdf0e10cSrcweir 1399cdf0e10cSrcweir // -------------------------------------------------------------------- 1400cdf0e10cSrcweir 1401cdf0e10cSrcweir void SAL_CALL SdStyleSheetPool::removeEventListener( const Reference< XEventListener >& /*aListener*/ ) throw (RuntimeException) 1402cdf0e10cSrcweir { 1403cdf0e10cSrcweir } 1404cdf0e10cSrcweir 1405cdf0e10cSrcweir // -------------------------------------------------------------------- 1406cdf0e10cSrcweir 1407cdf0e10cSrcweir SdStyleSheetVector SdStyleSheetPool::CreateChildList( SdStyleSheet* pSheet ) 1408cdf0e10cSrcweir { 1409cdf0e10cSrcweir SdStyleSheetVector aResult; 1410cdf0e10cSrcweir 1411cdf0e10cSrcweir sal_uInt16 nListenerCount = pSheet->GetListenerCount(); 1412cdf0e10cSrcweir if (nListenerCount > 0) 1413cdf0e10cSrcweir { 1414cdf0e10cSrcweir for (sal_uInt16 n = 0; n < nListenerCount; n++) 1415cdf0e10cSrcweir { 1416cdf0e10cSrcweir SdStyleSheet* pChild = dynamic_cast< SdStyleSheet* >( pSheet->GetListener(n) ); 1417cdf0e10cSrcweir if(pChild && pChild->GetParent() == pSheet->GetName()) 1418cdf0e10cSrcweir { 1419cdf0e10cSrcweir aResult.push_back( SdStyleSheetRef( pChild ) ); 1420cdf0e10cSrcweir } 1421cdf0e10cSrcweir } 1422cdf0e10cSrcweir } 1423cdf0e10cSrcweir 1424cdf0e10cSrcweir return aResult; 1425cdf0e10cSrcweir } 1426cdf0e10cSrcweir 1427cdf0e10cSrcweir // -------------------------------------------------------------------- 1428cdf0e10cSrcweir 1429cdf0e10cSrcweir void SAL_CALL SdStyleSheetPool::acquire (void) throw () 1430cdf0e10cSrcweir { 1431cdf0e10cSrcweir SdStyleSheetPoolBase::acquire(); 1432cdf0e10cSrcweir } 1433cdf0e10cSrcweir 1434cdf0e10cSrcweir void SAL_CALL SdStyleSheetPool::release (void) throw () 1435cdf0e10cSrcweir { 1436cdf0e10cSrcweir SdStyleSheetPoolBase::release(); 1437cdf0e10cSrcweir } 1438cdf0e10cSrcweir 1439cdf0e10cSrcweir // -------------------------------------------------------------------- 1440