1*efeef26fSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*efeef26fSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*efeef26fSAndrew Rist * or more contributor license agreements. See the NOTICE file 5*efeef26fSAndrew Rist * distributed with this work for additional information 6*efeef26fSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*efeef26fSAndrew Rist * to you under the Apache License, Version 2.0 (the 8*efeef26fSAndrew Rist * "License"); you may not use this file except in compliance 9*efeef26fSAndrew Rist * with the License. You may obtain a copy of the License at 10cdf0e10cSrcweir * 11*efeef26fSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 13*efeef26fSAndrew Rist * Unless required by applicable law or agreed to in writing, 14*efeef26fSAndrew Rist * software distributed under the License is distributed on an 15*efeef26fSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*efeef26fSAndrew Rist * KIND, either express or implied. See the License for the 17*efeef26fSAndrew Rist * specific language governing permissions and limitations 18*efeef26fSAndrew Rist * under the License. 19cdf0e10cSrcweir * 20*efeef26fSAndrew Rist *************************************************************/ 21*efeef26fSAndrew Rist 22*efeef26fSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 25cdf0e10cSrcweir #include "precompiled_sw.hxx" 26cdf0e10cSrcweir 27cdf0e10cSrcweir #ifdef SW_DLLIMPLEMENTATION 28cdf0e10cSrcweir #undef SW_DLLIMPLEMENTATION 29cdf0e10cSrcweir #endif 30cdf0e10cSrcweir 31cdf0e10cSrcweir 32cdf0e10cSrcweir 33cdf0e10cSrcweir #include <rsc/rscsfx.hxx> 34cdf0e10cSrcweir #include <com/sun/star/text/XDocumentIndexesSupplier.hpp> 35cdf0e10cSrcweir #include <com/sun/star/text/XDocumentIndex.hpp> 36cdf0e10cSrcweir #include <com/sun/star/text/XTextSectionsSupplier.hpp> 37cdf0e10cSrcweir #include <com/sun/star/style/BreakType.hpp> 38cdf0e10cSrcweir #include <com/sun/star/text/XTextFieldsSupplier.hpp> 39cdf0e10cSrcweir #include <com/sun/star/text/XDependentTextField.hpp> 40cdf0e10cSrcweir #include <com/sun/star/text/XParagraphCursor.hpp> 41cdf0e10cSrcweir #include <com/sun/star/text/XDocumentIndex.hpp> 42cdf0e10cSrcweir #include <com/sun/star/text/ChapterFormat.hpp> 43cdf0e10cSrcweir #include <com/sun/star/text/XTextSection.hpp> 44cdf0e10cSrcweir #include <com/sun/star/text/ControlCharacter.hpp> 45cdf0e10cSrcweir #include <com/sun/star/beans/PropertyValues.hpp> 46cdf0e10cSrcweir #include <com/sun/star/text/TextContentAnchorType.hpp> 47cdf0e10cSrcweir #include <com/sun/star/ucb/XCommandEnvironment.hpp> 48cdf0e10cSrcweir #include <com/sun/star/ui/dialogs/XFilePicker.hpp> 49cdf0e10cSrcweir #include <com/sun/star/ui/dialogs/XFilterManager.hpp> 50cdf0e10cSrcweir #include <wrtsh.hxx> 51cdf0e10cSrcweir #ifndef _VIEW_HXX 52cdf0e10cSrcweir #include <view.hxx> 53cdf0e10cSrcweir #endif 54cdf0e10cSrcweir #include <cnttab.hxx> 55cdf0e10cSrcweir #include <poolfmt.hxx> 56cdf0e10cSrcweir #include <unoprnms.hxx> 57cdf0e10cSrcweir #include <unotools.hxx> 58cdf0e10cSrcweir #include <unotxdoc.hxx> 59cdf0e10cSrcweir #include <docsh.hxx> 60cdf0e10cSrcweir #include <swmodule.hxx> 61cdf0e10cSrcweir 62cdf0e10cSrcweir #ifndef _CMDID_H 63cdf0e10cSrcweir #include <cmdid.h> 64cdf0e10cSrcweir #endif 65cdf0e10cSrcweir #ifndef _UTLUI_HRC 66cdf0e10cSrcweir #include <utlui.hrc> 67cdf0e10cSrcweir #endif 68cdf0e10cSrcweir #ifndef _INDEX_HRC 69cdf0e10cSrcweir #include <index.hrc> 70cdf0e10cSrcweir #endif 71cdf0e10cSrcweir #ifndef _CNTTAB_HRC 72cdf0e10cSrcweir #include <cnttab.hrc> 73cdf0e10cSrcweir #endif 74cdf0e10cSrcweir #ifndef _GLOBALS_HRC 75cdf0e10cSrcweir #include <globals.hrc> 76cdf0e10cSrcweir #endif 77cdf0e10cSrcweir #include <SwStyleNameMapper.hxx> 78cdf0e10cSrcweir #include <swuicnttab.hxx> 79cdf0e10cSrcweir #include <unomid.h> 80cdf0e10cSrcweir 81cdf0e10cSrcweir 82cdf0e10cSrcweir using namespace ::com::sun::star; 83cdf0e10cSrcweir using namespace ::com::sun::star::text; 84cdf0e10cSrcweir using namespace ::com::sun::star::beans; 85cdf0e10cSrcweir using namespace ::com::sun::star::container; 86cdf0e10cSrcweir using namespace ::com::sun::star::lang; 87cdf0e10cSrcweir using namespace ::com::sun::star::ucb; 88cdf0e10cSrcweir using namespace ::com::sun::star::uno; 89cdf0e10cSrcweir using namespace com::sun::star::ui::dialogs; 90cdf0e10cSrcweir using ::rtl::OUString; 91cdf0e10cSrcweir 92cdf0e10cSrcweir 93cdf0e10cSrcweir #define INDEX_SECTION_NAME String::CreateFromAscii( \ 94cdf0e10cSrcweir RTL_CONSTASCII_STRINGPARAM( "IndexSection_" )) 95cdf0e10cSrcweir 96cdf0e10cSrcweir #ifdef SW_PROP_NAME_STR 97cdf0e10cSrcweir #undef SW_PROP_NAME_STR 98cdf0e10cSrcweir #endif 99cdf0e10cSrcweir #define SW_PROP_NAME_STR(nId) SwGetPropName((nId)).pName 100cdf0e10cSrcweir 101cdf0e10cSrcweir /* -----------------04.11.99 11:28------------------- 102cdf0e10cSrcweir 103cdf0e10cSrcweir --------------------------------------------------*/ 104cdf0e10cSrcweir void lcl_SetProp( uno::Reference< XPropertySetInfo > & xInfo, 105cdf0e10cSrcweir uno::Reference< XPropertySet > & xProps, 106cdf0e10cSrcweir const char* pPropName, const String& rValue) 107cdf0e10cSrcweir { 108cdf0e10cSrcweir OUString uPropName(C2U(pPropName)); 109cdf0e10cSrcweir if(xInfo->hasPropertyByName(uPropName)) 110cdf0e10cSrcweir { 111cdf0e10cSrcweir uno::Any aValue; 112cdf0e10cSrcweir aValue <<= OUString(rValue); 113cdf0e10cSrcweir xProps->setPropertyValue(uPropName, aValue); 114cdf0e10cSrcweir } 115cdf0e10cSrcweir } 116cdf0e10cSrcweir void lcl_SetProp( uno::Reference< XPropertySetInfo > & xInfo, 117cdf0e10cSrcweir uno::Reference< XPropertySet > & xProps, 118cdf0e10cSrcweir sal_uInt16 nId, const String& rValue) 119cdf0e10cSrcweir { 120cdf0e10cSrcweir lcl_SetProp( xInfo, xProps, SW_PROP_NAME_STR(nId), rValue); 121cdf0e10cSrcweir } 122cdf0e10cSrcweir void lcl_SetProp( uno::Reference< XPropertySetInfo > & xInfo, 123cdf0e10cSrcweir uno::Reference< XPropertySet > & xProps, 124cdf0e10cSrcweir sal_uInt16 nId, sal_Int16 nValue ) 125cdf0e10cSrcweir { 126cdf0e10cSrcweir OUString uPropName(C2U(SW_PROP_NAME_STR(nId))); 127cdf0e10cSrcweir if(xInfo->hasPropertyByName(uPropName)) 128cdf0e10cSrcweir { 129cdf0e10cSrcweir uno::Any aValue; 130cdf0e10cSrcweir aValue <<= nValue; 131cdf0e10cSrcweir xProps->setPropertyValue(uPropName, aValue); 132cdf0e10cSrcweir } 133cdf0e10cSrcweir } 134cdf0e10cSrcweir 135cdf0e10cSrcweir void lcl_SetBOOLProp( 136cdf0e10cSrcweir uno::Reference< beans::XPropertySetInfo > & xInfo, 137cdf0e10cSrcweir uno::Reference< beans::XPropertySet > & xProps, 138cdf0e10cSrcweir sal_uInt16 nId, sal_Bool bValue ) 139cdf0e10cSrcweir { 140cdf0e10cSrcweir OUString uPropName(C2U(SW_PROP_NAME_STR(nId))); 141cdf0e10cSrcweir if(xInfo->hasPropertyByName(uPropName)) 142cdf0e10cSrcweir { 143cdf0e10cSrcweir uno::Any aValue; 144cdf0e10cSrcweir aValue.setValue(&bValue, ::getCppuBooleanType()); 145cdf0e10cSrcweir xProps->setPropertyValue(uPropName, aValue); 146cdf0e10cSrcweir } 147cdf0e10cSrcweir } 148cdf0e10cSrcweir //----------------------------------------------------------------------------- 149cdf0e10cSrcweir IMPL_LINK( SwMultiTOXTabDialog, CreateExample_Hdl, void*, EMPTYARG ) 150cdf0e10cSrcweir { 151cdf0e10cSrcweir try 152cdf0e10cSrcweir { 153cdf0e10cSrcweir uno::Reference< frame::XModel > & xModel = pExampleFrame->GetModel(); 154cdf0e10cSrcweir uno::Reference< lang::XUnoTunnel > xDocTunnel(xModel, uno::UNO_QUERY); 155cdf0e10cSrcweir SwXTextDocument* pDoc = reinterpret_cast<SwXTextDocument*>(xDocTunnel->getSomething(SwXTextDocument::getUnoTunnelId())); 156cdf0e10cSrcweir 157cdf0e10cSrcweir if( pDoc ) 158cdf0e10cSrcweir pDoc->GetDocShell()->_LoadStyles( *rSh.GetView().GetDocShell(), sal_True ); 159cdf0e10cSrcweir 160cdf0e10cSrcweir uno::Reference< lang::XMultiServiceFactory > xFact( 161cdf0e10cSrcweir xModel, uno::UNO_QUERY); 162cdf0e10cSrcweir 163cdf0e10cSrcweir uno::Reference< text::XTextSectionsSupplier > xSectionSupplier( 164cdf0e10cSrcweir xModel, uno::UNO_QUERY); 165cdf0e10cSrcweir uno::Reference< container::XNameAccess > xSections = 166cdf0e10cSrcweir xSectionSupplier->getTextSections(); 167cdf0e10cSrcweir 168cdf0e10cSrcweir String sSectionName( INDEX_SECTION_NAME ); 169cdf0e10cSrcweir for(int i = 0; i < 7; ++i ) 170cdf0e10cSrcweir { 171cdf0e10cSrcweir String sTmp( sSectionName ); sTmp += String::CreateFromInt32(i); 172cdf0e10cSrcweir uno::Any aSection = xSections->getByName( sTmp ); 173cdf0e10cSrcweir aSection >>= pxIndexSectionsArr[i]->xContainerSection; 174cdf0e10cSrcweir } 175cdf0e10cSrcweir uno::Reference< text::XDocumentIndexesSupplier > xIdxSupp(xModel, uno::UNO_QUERY); 176cdf0e10cSrcweir uno::Reference< container::XIndexAccess > xIdxs = xIdxSupp->getDocumentIndexes(); 177cdf0e10cSrcweir int n = xIdxs->getCount(); 178cdf0e10cSrcweir while(n) 179cdf0e10cSrcweir { 180cdf0e10cSrcweir n--; 181cdf0e10cSrcweir uno::Any aIdx = xIdxs->getByIndex(n); 182cdf0e10cSrcweir uno::Reference< text::XDocumentIndex > xIdx; 183cdf0e10cSrcweir aIdx >>= xIdx; 184cdf0e10cSrcweir xIdx->dispose(); 185cdf0e10cSrcweir } 186cdf0e10cSrcweir CreateOrUpdateExample(eCurrentTOXType.eType); 187cdf0e10cSrcweir } 188cdf0e10cSrcweir catch(Exception&) 189cdf0e10cSrcweir { 190cdf0e10cSrcweir DBG_ERROR("::CreateExample() - exception caught"); 191cdf0e10cSrcweir } 192cdf0e10cSrcweir return 0; 193cdf0e10cSrcweir } 194cdf0e10cSrcweir 195cdf0e10cSrcweir /* -------------------------------------------------- 196cdf0e10cSrcweir 197cdf0e10cSrcweir --------------------------------------------------*/ 198cdf0e10cSrcweir void SwMultiTOXTabDialog::CreateOrUpdateExample( 199cdf0e10cSrcweir TOXTypes nTOXIndex, sal_uInt16 nPage, sal_uInt16 nCurrentLevel) 200cdf0e10cSrcweir { 201cdf0e10cSrcweir if(!pExampleFrame || !pExampleFrame->IsInitialized()) 202cdf0e10cSrcweir return; 203cdf0e10cSrcweir 204cdf0e10cSrcweir const char* __FAR_DATA IndexServiceNames[] = 205cdf0e10cSrcweir { 206cdf0e10cSrcweir "com.sun.star.text.DocumentIndex", 207cdf0e10cSrcweir "com.sun.star.text.UserIndex", 208cdf0e10cSrcweir "com.sun.star.text.ContentIndex", 209cdf0e10cSrcweir "com.sun.star.text.IllustrationsIndex", 210cdf0e10cSrcweir "com.sun.star.text.ObjectIndex", 211cdf0e10cSrcweir "com.sun.star.text.TableIndex", 212cdf0e10cSrcweir "com.sun.star.text.Bibliography" 213cdf0e10cSrcweir }; 214cdf0e10cSrcweir 215cdf0e10cSrcweir try 216cdf0e10cSrcweir { 217cdf0e10cSrcweir DBG_ASSERT(pxIndexSectionsArr[nTOXIndex] && 218cdf0e10cSrcweir pxIndexSectionsArr[nTOXIndex]->xContainerSection.is(), 219cdf0e10cSrcweir "Section not created"); 220cdf0e10cSrcweir uno::Reference< frame::XModel > & xModel = pExampleFrame->GetModel(); 221cdf0e10cSrcweir sal_Bool bInitialCreate = sal_True; 222cdf0e10cSrcweir if(!pxIndexSectionsArr[nTOXIndex]->xDocumentIndex.is()) 223cdf0e10cSrcweir { 224cdf0e10cSrcweir bInitialCreate = sal_True; 225cdf0e10cSrcweir if(!pxIndexSectionsArr[nTOXIndex]->xContainerSection.is()) 226cdf0e10cSrcweir throw uno::RuntimeException(); 227cdf0e10cSrcweir uno::Reference< text::XTextRange > xAnchor = pxIndexSectionsArr[nTOXIndex]->xContainerSection->getAnchor(); 228cdf0e10cSrcweir xAnchor = xAnchor->getStart(); 229cdf0e10cSrcweir uno::Reference< text::XTextCursor > xCrsr = xAnchor->getText()->createTextCursorByRange(xAnchor); 230cdf0e10cSrcweir 231cdf0e10cSrcweir uno::Reference< lang::XMultiServiceFactory > xFact(xModel, uno::UNO_QUERY); 232cdf0e10cSrcweir 233cdf0e10cSrcweir String sIndexTypeName; 234cdf0e10cSrcweir sIndexTypeName.AssignAscii( IndexServiceNames[ 235cdf0e10cSrcweir nTOXIndex <= TOX_AUTHORITIES ? nTOXIndex : TOX_USER] ); 236cdf0e10cSrcweir pxIndexSectionsArr[nTOXIndex]->xDocumentIndex = uno::Reference< text::XDocumentIndex > (xFact->createInstance( 237cdf0e10cSrcweir sIndexTypeName), uno::UNO_QUERY); 238cdf0e10cSrcweir uno::Reference< text::XTextContent > xContent(pxIndexSectionsArr[nTOXIndex]->xDocumentIndex, uno::UNO_QUERY); 239cdf0e10cSrcweir uno::Reference< text::XTextRange > xRg(xCrsr, uno::UNO_QUERY); 240cdf0e10cSrcweir xCrsr->getText()->insertTextContent(xRg, xContent, sal_False); 241cdf0e10cSrcweir } 242cdf0e10cSrcweir OUString uIsVisible(C2U(SW_PROP_NAME_STR(UNO_NAME_IS_VISIBLE))); 243cdf0e10cSrcweir for(sal_uInt16 i = 0 ; i <= TOX_AUTHORITIES; i++) 244cdf0e10cSrcweir { 245cdf0e10cSrcweir uno::Reference< beans::XPropertySet > xSectPr(pxIndexSectionsArr[i]->xContainerSection, uno::UNO_QUERY); 246cdf0e10cSrcweir uno::Any aVal; 247cdf0e10cSrcweir 248cdf0e10cSrcweir if(xSectPr.is()) 249cdf0e10cSrcweir { 250cdf0e10cSrcweir sal_Bool bTemp = i == nTOXIndex; 251cdf0e10cSrcweir aVal.setValue(&bTemp, ::getBooleanCppuType()); 252cdf0e10cSrcweir xSectPr->setPropertyValue(uIsVisible, aVal); 253cdf0e10cSrcweir } 254cdf0e10cSrcweir } 255cdf0e10cSrcweir // set properties 256cdf0e10cSrcweir uno::Reference< beans::XPropertySet > xIdxProps(pxIndexSectionsArr[nTOXIndex]->xDocumentIndex, uno::UNO_QUERY); 257cdf0e10cSrcweir uno::Reference< beans::XPropertySetInfo > xInfo = xIdxProps->getPropertySetInfo(); 258cdf0e10cSrcweir SwTOXDescription& rDesc = GetTOXDescription(eCurrentTOXType); 259cdf0e10cSrcweir sal_uInt16 nIdxOptions = rDesc.GetIndexOptions(); 260cdf0e10cSrcweir if(bInitialCreate || !nPage || nPage == TOX_PAGE_SELECT) 261cdf0e10cSrcweir { 262cdf0e10cSrcweir //title 263cdf0e10cSrcweir if(rDesc.GetTitle()) 264cdf0e10cSrcweir lcl_SetProp(xInfo, xIdxProps, UNO_NAME_TITLE, *rDesc.GetTitle()); 265cdf0e10cSrcweir 266cdf0e10cSrcweir //stylenames 267cdf0e10cSrcweir sal_uInt16 nContentOptions = rDesc.GetContentOptions(); 268cdf0e10cSrcweir if(xInfo->hasPropertyByName(C2U(SW_PROP_NAME_STR(UNO_NAME_LEVEL_PARAGRAPH_STYLES)))) 269cdf0e10cSrcweir { 270cdf0e10cSrcweir sal_Bool bOn = 0!=(nContentOptions&nsSwTOXElement::TOX_TEMPLATE ); 271cdf0e10cSrcweir uno::Any aStyleNames(xIdxProps->getPropertyValue(C2U(SW_PROP_NAME_STR(UNO_NAME_LEVEL_PARAGRAPH_STYLES)))); 272cdf0e10cSrcweir uno::Reference< container::XIndexReplace > xAcc; 273cdf0e10cSrcweir aStyleNames >>= xAcc; 274cdf0e10cSrcweir 275cdf0e10cSrcweir for(sal_uInt16 i = 0; i < MAXLEVEL; i++) 276cdf0e10cSrcweir { 277cdf0e10cSrcweir String sLevel; 278cdf0e10cSrcweir if(bOn) 279cdf0e10cSrcweir sLevel = rDesc.GetStyleNames(i); 280cdf0e10cSrcweir sal_uInt16 nStyles = sLevel.GetTokenCount(TOX_STYLE_DELIMITER); 281cdf0e10cSrcweir uno::Sequence<OUString> aStyles(nStyles); 282cdf0e10cSrcweir OUString* pArr = aStyles.getArray(); 283cdf0e10cSrcweir for(sal_uInt16 nStyle = 0; nStyle < nStyles; nStyle++) 284cdf0e10cSrcweir pArr[nStyle] = sLevel.GetToken(nStyle, TOX_STYLE_DELIMITER); 285cdf0e10cSrcweir uno::Any aAny(&aStyles, ::getCppuType((uno::Sequence<OUString>*)0)); 286cdf0e10cSrcweir xAcc->replaceByIndex(i, aAny); 287cdf0e10cSrcweir } 288cdf0e10cSrcweir } 289cdf0e10cSrcweir lcl_SetProp(xInfo, xIdxProps, UNO_NAME_LEVEL, (sal_Int16)rDesc.GetLevel()); 290cdf0e10cSrcweir lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_CREATE_FROM_MARKS, 0!=(nContentOptions&nsSwTOXElement::TOX_MARK )); 291cdf0e10cSrcweir lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_CREATE_FROM_OUTLINE, 0!=(nContentOptions&nsSwTOXElement::TOX_OUTLINELEVEL)); 292cdf0e10cSrcweir lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_CREATE_FROM_EMBEDDED_OBJECTS,0!=(nContentOptions&nsSwTOXElement::TOX_OLE )); 293cdf0e10cSrcweir lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_CREATE_FROM_TABLES , 0!=(nContentOptions&nsSwTOXElement::TOX_TABLE )); 294cdf0e10cSrcweir lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_CREATE_FROM_GRAPHIC_OBJECTS, 0!=(nContentOptions&nsSwTOXElement::TOX_GRAPHIC )); 295cdf0e10cSrcweir lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_CREATE_FROM_TEXT_FRAMES, 0!=(nContentOptions&nsSwTOXElement::TOX_FRAME )); 296cdf0e10cSrcweir lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_CREATE_FROM_LABELS, 0!=(nContentOptions&nsSwTOXElement::TOX_SEQUENCE )); 297cdf0e10cSrcweir 298cdf0e10cSrcweir lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_CREATE_FROM_CHAPTER, rDesc.IsFromChapter()); 299cdf0e10cSrcweir lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_IS_PROTECTED, rDesc.IsReadonly()); 300cdf0e10cSrcweir 301cdf0e10cSrcweir lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_USE_COMBINED_ENTRIES, 0 != (nIdxOptions&nsSwTOIOptions::TOI_SAME_ENTRY )); 302cdf0e10cSrcweir lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_USE_P_P, 0 != (nIdxOptions&nsSwTOIOptions::TOI_FF )); 303cdf0e10cSrcweir lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_IS_CASE_SENSITIVE, 0 != (nIdxOptions&nsSwTOIOptions::TOI_CASE_SENSITIVE )); 304cdf0e10cSrcweir lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_USE_KEY_AS_ENTRY, 0 != (nIdxOptions&nsSwTOIOptions::TOI_KEY_AS_ENTRY )); 305cdf0e10cSrcweir lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_USE_ALPHABETICAL_SEPARATORS, 0 != (nIdxOptions&nsSwTOIOptions::TOI_ALPHA_DELIMITTER)); 306cdf0e10cSrcweir lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_USE_DASH, 0 != (nIdxOptions&nsSwTOIOptions::TOI_DASH )); 307cdf0e10cSrcweir lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_USE_UPPER_CASE, 0 != (nIdxOptions&nsSwTOIOptions::TOI_INITIAL_CAPS )); 308cdf0e10cSrcweir 309cdf0e10cSrcweir String aTmpName( SwStyleNameMapper::GetSpecialExtraProgName( rDesc.GetSequenceName() ) ); 310cdf0e10cSrcweir lcl_SetProp(xInfo, xIdxProps, UNO_NAME_LABEL_CATEGORY, aTmpName ); 311cdf0e10cSrcweir lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_CREATE_FROM_LABELS, !rDesc.IsCreateFromObjectNames()); 312cdf0e10cSrcweir 313cdf0e10cSrcweir sal_Int16 nSet = text::ChapterFormat::NAME_NUMBER; 314cdf0e10cSrcweir switch (rDesc.GetCaptionDisplay()) 315cdf0e10cSrcweir { 316cdf0e10cSrcweir case CAPTION_COMPLETE: nSet = text::ChapterFormat::NAME_NUMBER;break; 317cdf0e10cSrcweir case CAPTION_NUMBER : nSet = text::ChapterFormat::NUMBER; break; 318cdf0e10cSrcweir case CAPTION_TEXT : nSet = text::ChapterFormat::NAME; break; 319cdf0e10cSrcweir } 320cdf0e10cSrcweir lcl_SetProp(xInfo, xIdxProps, UNO_NAME_LABEL_DISPLAY_TYPE, nSet); 321cdf0e10cSrcweir 322cdf0e10cSrcweir sal_uInt16 nOLEOptions = rDesc.GetOLEOptions(); 323cdf0e10cSrcweir lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_CREATE_FROM_STAR_MATH, 0 != (nsSwTOOElements::TOO_MATH &nOLEOptions )); 324cdf0e10cSrcweir lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_CREATE_FROM_STAR_CHART, 0 != (nsSwTOOElements::TOO_CHART &nOLEOptions )); 325cdf0e10cSrcweir lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_CREATE_FROM_STAR_CALC, 0 != (nsSwTOOElements::TOO_CALC &nOLEOptions )); 326cdf0e10cSrcweir lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_CREATE_FROM_STAR_DRAW, 0 != (nsSwTOOElements::TOO_DRAW_IMPRESS&nOLEOptions)); 327cdf0e10cSrcweir lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_CREATE_FROM_OTHER_EMBEDDED_OBJECTS, 0 != (nsSwTOOElements::TOO_OTHER|nOLEOptions )); 328cdf0e10cSrcweir 329cdf0e10cSrcweir //lcl_SetBOOLProp(xInfo, xIdxProps, , rDesc.IsLevelFromChapter()); 330cdf0e10cSrcweir } 331cdf0e10cSrcweir const SwForm* pForm = GetForm(eCurrentTOXType); 332cdf0e10cSrcweir if(bInitialCreate || !nPage || nPage == TOX_PAGE_ENTRY) 333cdf0e10cSrcweir { 334cdf0e10cSrcweir lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_IS_COMMA_SEPARATED, pForm->IsCommaSeparated()); 335cdf0e10cSrcweir lcl_SetBOOLProp(xInfo, xIdxProps, UNO_NAME_USE_ALPHABETICAL_SEPARATORS, 0 != (nIdxOptions&nsSwTOIOptions::TOI_ALPHA_DELIMITTER)); 336cdf0e10cSrcweir sal_uInt16 nStartLevel = USHRT_MAX; 337cdf0e10cSrcweir sal_uInt16 nEndLevel = USHRT_MAX; 338cdf0e10cSrcweir if(nCurrentLevel < pForm->GetFormMax()) 339cdf0e10cSrcweir nStartLevel = nEndLevel = nCurrentLevel; 340cdf0e10cSrcweir else 341cdf0e10cSrcweir { 342cdf0e10cSrcweir nStartLevel = 0; 343cdf0e10cSrcweir nEndLevel = pForm->GetFormMax() - 1; 344cdf0e10cSrcweir } 345cdf0e10cSrcweir 346cdf0e10cSrcweir if(xInfo->hasPropertyByName(C2U(SW_PROP_NAME_STR(UNO_NAME_LEVEL_FORMAT)))) 347cdf0e10cSrcweir { 348cdf0e10cSrcweir for(sal_uInt16 nCurrLevel = nStartLevel; nCurrLevel <= nEndLevel; nCurrLevel++) 349cdf0e10cSrcweir { 350cdf0e10cSrcweir String sTokenType; 351cdf0e10cSrcweir uno::Sequence< beans::PropertyValues> aSequPropVals(10); 352cdf0e10cSrcweir long nTokenIndex = 0; 353cdf0e10cSrcweir long nParamCount = 2; 354cdf0e10cSrcweir 355cdf0e10cSrcweir // #i24377# 356cdf0e10cSrcweir SwFormTokens aPattern = pForm->GetPattern(nCurrLevel); 357cdf0e10cSrcweir SwFormTokens::iterator aIt = aPattern.begin(); 358cdf0e10cSrcweir 359cdf0e10cSrcweir while(aIt != aPattern.end()) 360cdf0e10cSrcweir { 361cdf0e10cSrcweir if( aSequPropVals.getLength() <= nTokenIndex) 362cdf0e10cSrcweir aSequPropVals.realloc(nTokenIndex + 10); 363cdf0e10cSrcweir 364cdf0e10cSrcweir SwFormToken aToken = *aIt; // #i24377# 365cdf0e10cSrcweir switch(aToken.eTokenType) 366cdf0e10cSrcweir { 367cdf0e10cSrcweir case TOKEN_ENTRY_NO : 368cdf0e10cSrcweir sTokenType.AssignAscii(RTL_CONSTASCII_STRINGPARAM( 369cdf0e10cSrcweir "TokenEntryNumber")); 370cdf0e10cSrcweir // fuer Inhaltsverzeichnis Numerierung 371cdf0e10cSrcweir break; 372cdf0e10cSrcweir case TOKEN_ENTRY_TEXT : 373cdf0e10cSrcweir case TOKEN_ENTRY : 374cdf0e10cSrcweir sTokenType.AssignAscii(RTL_CONSTASCII_STRINGPARAM( 375cdf0e10cSrcweir "TokenEntryText")); 376cdf0e10cSrcweir break; 377cdf0e10cSrcweir case TOKEN_TAB_STOP : 378cdf0e10cSrcweir nParamCount += 3; 379cdf0e10cSrcweir sTokenType.AssignAscii(RTL_CONSTASCII_STRINGPARAM( 380cdf0e10cSrcweir "TokenTabStop")); 381cdf0e10cSrcweir break; 382cdf0e10cSrcweir case TOKEN_TEXT : 383cdf0e10cSrcweir sTokenType.AssignAscii(RTL_CONSTASCII_STRINGPARAM( 384cdf0e10cSrcweir "TokenText")); 385cdf0e10cSrcweir nParamCount += 1; 386cdf0e10cSrcweir break; 387cdf0e10cSrcweir case TOKEN_PAGE_NUMS : 388cdf0e10cSrcweir sTokenType.AssignAscii(RTL_CONSTASCII_STRINGPARAM( 389cdf0e10cSrcweir "TokenPageNumber")); 390cdf0e10cSrcweir break; 391cdf0e10cSrcweir case TOKEN_CHAPTER_INFO : 392cdf0e10cSrcweir sTokenType.AssignAscii(RTL_CONSTASCII_STRINGPARAM( 393cdf0e10cSrcweir "TokenChapterInfo")); 394cdf0e10cSrcweir break; 395cdf0e10cSrcweir case TOKEN_LINK_START : 396cdf0e10cSrcweir sTokenType.AssignAscii(RTL_CONSTASCII_STRINGPARAM( 397cdf0e10cSrcweir "TokenHyperlinkStart")); 398cdf0e10cSrcweir break; 399cdf0e10cSrcweir case TOKEN_LINK_END : 400cdf0e10cSrcweir sTokenType.AssignAscii(RTL_CONSTASCII_STRINGPARAM( 401cdf0e10cSrcweir "TokenHyperlinkEnd")); 402cdf0e10cSrcweir break; 403cdf0e10cSrcweir case TOKEN_AUTHORITY : 404cdf0e10cSrcweir { 405cdf0e10cSrcweir sTokenType.AssignAscii(RTL_CONSTASCII_STRINGPARAM( 406cdf0e10cSrcweir "TokenBibliographyDataField")); 407cdf0e10cSrcweir } 408cdf0e10cSrcweir break; 409cdf0e10cSrcweir default:; //prevent warning 410cdf0e10cSrcweir } 411cdf0e10cSrcweir beans::PropertyValues aPropVals(nParamCount); 412cdf0e10cSrcweir beans::PropertyValue* pPropValArr = aPropVals.getArray(); 413cdf0e10cSrcweir pPropValArr[0].Name = C2U("TokenType"); 414cdf0e10cSrcweir pPropValArr[0].Value <<= OUString(sTokenType); 415cdf0e10cSrcweir pPropValArr[1].Name = C2U("CharacterStyleName"); 416cdf0e10cSrcweir pPropValArr[1].Value <<= OUString(aToken.sCharStyleName); 417cdf0e10cSrcweir if(TOKEN_TAB_STOP == aToken.eTokenType) 418cdf0e10cSrcweir { 419cdf0e10cSrcweir pPropValArr[2].Name = C2U("TabStopRightAligned"); 420cdf0e10cSrcweir sal_Bool bTemp = SVX_TAB_ADJUST_END == aToken.eTabAlign; 421cdf0e10cSrcweir pPropValArr[2].Value.setValue(&bTemp, ::getBooleanCppuType()); 422cdf0e10cSrcweir pPropValArr[3].Name = C2U("TabStopFillCharacter"); 423cdf0e10cSrcweir pPropValArr[3].Value <<= OUString(aToken.cTabFillChar); 424cdf0e10cSrcweir pPropValArr[4].Name = C2U("TabStopPosition"); 425cdf0e10cSrcweir SwTwips nTempPos = aToken.nTabStopPosition >= 0 ? 426cdf0e10cSrcweir aToken.nTabStopPosition : 0; 427cdf0e10cSrcweir nTempPos = TWIP_TO_MM100(nTempPos); 428cdf0e10cSrcweir pPropValArr[4].Value <<= (sal_Int32)nTempPos; 429cdf0e10cSrcweir } 430cdf0e10cSrcweir else if(TOKEN_TEXT == aToken.eTokenType) 431cdf0e10cSrcweir { 432cdf0e10cSrcweir pPropValArr[2].Name = C2U("Text"); 433cdf0e10cSrcweir pPropValArr[2].Value <<= OUString(aToken.sText); 434cdf0e10cSrcweir } 435cdf0e10cSrcweir beans::PropertyValues* pValues = aSequPropVals.getArray(); 436cdf0e10cSrcweir pValues[nTokenIndex] = aPropVals; 437cdf0e10cSrcweir nTokenIndex++; 438cdf0e10cSrcweir 439cdf0e10cSrcweir aIt++; // #i24377# 440cdf0e10cSrcweir } 441cdf0e10cSrcweir aSequPropVals.realloc(nTokenIndex); 442cdf0e10cSrcweir 443cdf0e10cSrcweir uno::Any aFormatAccess = xIdxProps->getPropertyValue(C2U(SW_PROP_NAME_STR(UNO_NAME_LEVEL_FORMAT))); 444cdf0e10cSrcweir DBG_ASSERT(aFormatAccess.getValueType() == ::getCppuType((uno::Reference<container::XIndexReplace>*)0), 445cdf0e10cSrcweir "wrong property type"); 446cdf0e10cSrcweir 447cdf0e10cSrcweir 448cdf0e10cSrcweir uno::Reference< container::XIndexReplace > xFormatAccess; 449cdf0e10cSrcweir aFormatAccess >>= xFormatAccess; 450cdf0e10cSrcweir uno::Any aLevelProp(&aSequPropVals, ::getCppuType((uno::Sequence<beans::PropertyValues>*)0)); 451cdf0e10cSrcweir xFormatAccess->replaceByIndex(nCurrLevel, aLevelProp); 452cdf0e10cSrcweir } 453cdf0e10cSrcweir } 454cdf0e10cSrcweir } 455cdf0e10cSrcweir if(bInitialCreate || !nPage || nPage == TOX_PAGE_STYLES) 456cdf0e10cSrcweir { 457cdf0e10cSrcweir lcl_SetProp(xInfo, xIdxProps, "ParaStyleHeading", pForm->GetTemplate(0)); 458cdf0e10cSrcweir sal_uInt16 nOffset = 0; 459cdf0e10cSrcweir sal_uInt16 nEndLevel = 2; 460cdf0e10cSrcweir switch(eCurrentTOXType.eType) 461cdf0e10cSrcweir { 462cdf0e10cSrcweir case TOX_INDEX: 463cdf0e10cSrcweir { 464cdf0e10cSrcweir nOffset = 1; 465cdf0e10cSrcweir nEndLevel = 4; 466cdf0e10cSrcweir lcl_SetProp(xInfo, xIdxProps, "ParaStyleSeparator", pForm->GetTemplate(1)); 467cdf0e10cSrcweir } 468cdf0e10cSrcweir break; 469cdf0e10cSrcweir case TOX_CONTENT : 470cdf0e10cSrcweir nEndLevel = 11; 471cdf0e10cSrcweir break; 472cdf0e10cSrcweir default:; //prevent warning 473cdf0e10cSrcweir } 474cdf0e10cSrcweir for(sal_uInt16 i = 1; i < nEndLevel; i++) 475cdf0e10cSrcweir { 476cdf0e10cSrcweir String sPropName(C2S("ParaStyleLevel")); 477cdf0e10cSrcweir sPropName += String::CreateFromInt32( i ); 478cdf0e10cSrcweir lcl_SetProp(xInfo, 479cdf0e10cSrcweir xIdxProps, 480cdf0e10cSrcweir ByteString(sPropName, RTL_TEXTENCODING_ASCII_US).GetBuffer(), 481cdf0e10cSrcweir pForm->GetTemplate(i + nOffset)); 482cdf0e10cSrcweir } 483cdf0e10cSrcweir } 484cdf0e10cSrcweir /* 485cdf0e10cSrcweir const String& GetAutoMarkURL() const { return sAutoMarkURL;} 486cdf0e10cSrcweir const String& GetMainEntryCharStyle() const {return sMainEntryCharStyle;} 487cdf0e10cSrcweir 488cdf0e10cSrcweir String GetAuthBrackets() const {return sAuthBrackets;} 489cdf0e10cSrcweir sal_Bool IsAuthSequence() const {return bIsAuthSequence;} 490cdf0e10cSrcweir sal_Bool IsSortByDocument()const {return bSortByDocument ;} 491cdf0e10cSrcweir 492cdf0e10cSrcweir SwTOXSortKey GetSortKey1() const {return eSortKey1;} 493cdf0e10cSrcweir SwTOXSortKey GetSortKey2() const {return eSortKey2;} 494cdf0e10cSrcweir SwTOXSortKey GetSortKey3() const {return eSortKey3;} 495cdf0e10cSrcweir */ 496cdf0e10cSrcweir // 497cdf0e10cSrcweir pxIndexSectionsArr[nTOXIndex]->xDocumentIndex->update(); 498cdf0e10cSrcweir 499cdf0e10cSrcweir //#if OSL_DEBUG_LEVEL > 1 500cdf0e10cSrcweir // uno::Reference< frame::XStorable > xStor(xModel, uno::UNO_QUERY); 501cdf0e10cSrcweir // String sURL("file:///e|/temp/sw/idxexample.sdw"); 502cdf0e10cSrcweir // uno::Sequence< beans::PropertyValue > aArgs(0); 503cdf0e10cSrcweir // xStor->storeToURL(S2U(sURL), aArgs); 504cdf0e10cSrcweir //#endif 505cdf0e10cSrcweir 506cdf0e10cSrcweir } 507cdf0e10cSrcweir catch(Exception&) 508cdf0e10cSrcweir { 509cdf0e10cSrcweir DBG_ERROR("::CreateExample() - exception caught"); 510cdf0e10cSrcweir } 511cdf0e10cSrcweir } 512cdf0e10cSrcweir 513