1*cdf0e10cSrcweir /************************************************************************* 2*cdf0e10cSrcweir * 3*cdf0e10cSrcweir * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4*cdf0e10cSrcweir * 5*cdf0e10cSrcweir * Copyright 2000, 2010 Oracle and/or its affiliates. 6*cdf0e10cSrcweir * 7*cdf0e10cSrcweir * OpenOffice.org - a multi-platform office productivity suite 8*cdf0e10cSrcweir * 9*cdf0e10cSrcweir * This file is part of OpenOffice.org. 10*cdf0e10cSrcweir * 11*cdf0e10cSrcweir * OpenOffice.org is free software: you can redistribute it and/or modify 12*cdf0e10cSrcweir * it under the terms of the GNU Lesser General Public License version 3 13*cdf0e10cSrcweir * only, as published by the Free Software Foundation. 14*cdf0e10cSrcweir * 15*cdf0e10cSrcweir * OpenOffice.org is distributed in the hope that it will be useful, 16*cdf0e10cSrcweir * but WITHOUT ANY WARRANTY; without even the implied warranty of 17*cdf0e10cSrcweir * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*cdf0e10cSrcweir * GNU Lesser General Public License version 3 for more details 19*cdf0e10cSrcweir * (a copy is included in the LICENSE file that accompanied this code). 20*cdf0e10cSrcweir * 21*cdf0e10cSrcweir * You should have received a copy of the GNU Lesser General Public License 22*cdf0e10cSrcweir * version 3 along with OpenOffice.org. If not, see 23*cdf0e10cSrcweir * <http://www.openoffice.org/license.html> 24*cdf0e10cSrcweir * for a copy of the LGPLv3 License. 25*cdf0e10cSrcweir * 26*cdf0e10cSrcweir ************************************************************************/ 27*cdf0e10cSrcweir 28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 29*cdf0e10cSrcweir #include "precompiled_xmloff.hxx" 30*cdf0e10cSrcweir 31*cdf0e10cSrcweir #include <vector> 32*cdf0e10cSrcweir 33*cdf0e10cSrcweir #include <boost/scoped_array.hpp> 34*cdf0e10cSrcweir #include <boost/tuple/tuple.hpp> 35*cdf0e10cSrcweir 36*cdf0e10cSrcweir #include <tools/solar.h> 37*cdf0e10cSrcweir #include <tools/debug.hxx> 38*cdf0e10cSrcweir #ifndef _SVSTDARR_STRINGSDTOR_DECL 39*cdf0e10cSrcweir #define _SVSTDARR_STRINGSDTOR 40*cdf0e10cSrcweir #include <svl/svstdarr.hxx> 41*cdf0e10cSrcweir #endif 42*cdf0e10cSrcweir #include <com/sun/star/beans/XPropertySet.hpp> 43*cdf0e10cSrcweir #include <com/sun/star/beans/PropertyValue.hpp> 44*cdf0e10cSrcweir #include <com/sun/star/container/XEnumerationAccess.hpp> 45*cdf0e10cSrcweir #include <com/sun/star/container/XNameContainer.hpp> 46*cdf0e10cSrcweir #include <com/sun/star/style/XStyleFamiliesSupplier.hpp> 47*cdf0e10cSrcweir #include <com/sun/star/text/XTextCursor.hpp> 48*cdf0e10cSrcweir #include <com/sun/star/text/XChapterNumberingSupplier.hpp> 49*cdf0e10cSrcweir #include <com/sun/star/text/XTextFramesSupplier.hpp> 50*cdf0e10cSrcweir #include <com/sun/star/text/XTextGraphicObjectsSupplier.hpp> 51*cdf0e10cSrcweir #include <com/sun/star/text/XTextEmbeddedObjectsSupplier.hpp> 52*cdf0e10cSrcweir #include <com/sun/star/text/TextContentAnchorType.hpp> 53*cdf0e10cSrcweir #include <com/sun/star/text/XTextFrame.hpp> 54*cdf0e10cSrcweir #include <com/sun/star/text/XFormField.hpp> 55*cdf0e10cSrcweir #include <com/sun/star/drawing/XShapes.hpp> 56*cdf0e10cSrcweir #include <com/sun/star/util/DateTime.hpp> 57*cdf0e10cSrcweir #include <com/sun/star/lang/XMultiServiceFactory.hpp> 58*cdf0e10cSrcweir #include <com/sun/star/ucb/XAnyCompareFactory.hpp> 59*cdf0e10cSrcweir #include <com/sun/star/container/XNamed.hpp> 60*cdf0e10cSrcweir #include <xmloff/xmltoken.hxx> 61*cdf0e10cSrcweir #include "xmloff/xmlnmspe.hxx" 62*cdf0e10cSrcweir #include <xmloff/txtstyli.hxx> 63*cdf0e10cSrcweir #include <xmloff/families.hxx> 64*cdf0e10cSrcweir #include <xmloff/xmlnumfi.hxx> 65*cdf0e10cSrcweir #include <xmloff/xmlnumi.hxx> 66*cdf0e10cSrcweir #include <xmloff/xmlictxt.hxx> 67*cdf0e10cSrcweir #include <xmloff/xmlimppr.hxx> 68*cdf0e10cSrcweir 69*cdf0e10cSrcweir #include "txtparai.hxx" 70*cdf0e10cSrcweir #include <xmloff/txtimp.hxx> 71*cdf0e10cSrcweir #include <xmloff/txtprmap.hxx> 72*cdf0e10cSrcweir #include "xmloff/txtimppr.hxx" 73*cdf0e10cSrcweir #include <xmloff/xmlimp.hxx> 74*cdf0e10cSrcweir #include "txtvfldi.hxx" 75*cdf0e10cSrcweir #include "xmloff/i18nmap.hxx" 76*cdf0e10cSrcweir #include "XMLTextListItemContext.hxx" 77*cdf0e10cSrcweir #include "XMLTextListBlockContext.hxx" 78*cdf0e10cSrcweir #include "XMLTextFrameContext.hxx" 79*cdf0e10cSrcweir #include "XMLPropertyBackpatcher.hxx" 80*cdf0e10cSrcweir #include "XMLTextFrameHyperlinkContext.hxx" 81*cdf0e10cSrcweir #include "XMLSectionImportContext.hxx" 82*cdf0e10cSrcweir #include "XMLIndexTOCContext.hxx" 83*cdf0e10cSrcweir #include <xmloff/XMLFontStylesContext.hxx> 84*cdf0e10cSrcweir #include <xmloff/ProgressBarHelper.hxx> 85*cdf0e10cSrcweir #include <xmloff/nmspmap.hxx> 86*cdf0e10cSrcweir #include <xmloff/XMLEventsImportContext.hxx> 87*cdf0e10cSrcweir #include "XMLTrackedChangesImportContext.hxx" 88*cdf0e10cSrcweir #include "XMLChangeImportContext.hxx" 89*cdf0e10cSrcweir #include "XMLAutoMarkFileContext.hxx" 90*cdf0e10cSrcweir 91*cdf0e10cSrcweir #include "XMLCalculationSettingsContext.hxx" 92*cdf0e10cSrcweir #include <xmloff/formsimp.hxx> 93*cdf0e10cSrcweir #include "XMLNumberStylesImport.hxx" 94*cdf0e10cSrcweir // --> OD 2006-10-12 #i69629# 95*cdf0e10cSrcweir #include <com/sun/star/beans/XPropertyState.hpp> 96*cdf0e10cSrcweir // <-- 97*cdf0e10cSrcweir 98*cdf0e10cSrcweir // --> OD 2008-04-25 #refactorlists# 99*cdf0e10cSrcweir #include <txtlists.hxx> 100*cdf0e10cSrcweir // <-- 101*cdf0e10cSrcweir #include <xmloff/odffields.hxx> 102*cdf0e10cSrcweir #include <comphelper/stlunosequence.hxx> 103*cdf0e10cSrcweir 104*cdf0e10cSrcweir using ::rtl::OUString; 105*cdf0e10cSrcweir using ::rtl::OUStringBuffer; 106*cdf0e10cSrcweir using ::com::sun::star::ucb::XAnyCompare; 107*cdf0e10cSrcweir 108*cdf0e10cSrcweir using namespace ::std; 109*cdf0e10cSrcweir using namespace ::com::sun::star; 110*cdf0e10cSrcweir using namespace ::com::sun::star::uno; 111*cdf0e10cSrcweir using namespace ::com::sun::star::beans; 112*cdf0e10cSrcweir using namespace ::com::sun::star::text; 113*cdf0e10cSrcweir using namespace ::com::sun::star::frame; 114*cdf0e10cSrcweir using namespace ::com::sun::star::style; 115*cdf0e10cSrcweir using namespace ::com::sun::star::container; 116*cdf0e10cSrcweir using namespace ::com::sun::star::drawing; 117*cdf0e10cSrcweir using namespace ::com::sun::star::xml::sax; 118*cdf0e10cSrcweir using namespace ::com::sun::star::lang; 119*cdf0e10cSrcweir using namespace ::xmloff::token; 120*cdf0e10cSrcweir using ::com::sun::star::util::DateTime; 121*cdf0e10cSrcweir using namespace ::com::sun::star::ucb; 122*cdf0e10cSrcweir using namespace ::com::sun::star; 123*cdf0e10cSrcweir using ::comphelper::UStringLess; 124*cdf0e10cSrcweir 125*cdf0e10cSrcweir 126*cdf0e10cSrcweir 127*cdf0e10cSrcweir static __FAR_DATA SvXMLTokenMapEntry aTextElemTokenMap[] = 128*cdf0e10cSrcweir { 129*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_P, XML_TOK_TEXT_P }, 130*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_H, XML_TOK_TEXT_H }, 131*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_LIST, XML_TOK_TEXT_LIST }, 132*cdf0e10cSrcweir { XML_NAMESPACE_DRAW, XML_FRAME, XML_TOK_TEXT_FRAME_PAGE }, 133*cdf0e10cSrcweir { XML_NAMESPACE_DRAW, XML_A, XML_TOK_DRAW_A_PAGE }, 134*cdf0e10cSrcweir { XML_NAMESPACE_TABLE,XML_TABLE, XML_TOK_TABLE_TABLE }, 135*cdf0e10cSrcweir // { XML_NAMESPACE_TABLE,XML_SUB_TABLE, XML_TOK_TABLE_SUBTABLE }, 136*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_VARIABLE_DECLS, XML_TOK_TEXT_VARFIELD_DECLS }, 137*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_USER_FIELD_DECLS, XML_TOK_TEXT_USERFIELD_DECLS }, 138*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_SEQUENCE_DECLS, XML_TOK_TEXT_SEQUENCE_DECLS }, 139*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_DDE_CONNECTION_DECLS, XML_TOK_TEXT_DDE_DECLS }, 140*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_SECTION, XML_TOK_TEXT_SECTION }, 141*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_TABLE_OF_CONTENT, XML_TOK_TEXT_TOC }, 142*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_OBJECT_INDEX, XML_TOK_TEXT_OBJECT_INDEX }, 143*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_TABLE_INDEX, XML_TOK_TEXT_TABLE_INDEX }, 144*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_ILLUSTRATION_INDEX, XML_TOK_TEXT_ILLUSTRATION_INDEX }, 145*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_USER_INDEX, XML_TOK_TEXT_USER_INDEX }, 146*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_ALPHABETICAL_INDEX, XML_TOK_TEXT_ALPHABETICAL_INDEX }, 147*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_BIBLIOGRAPHY, XML_TOK_TEXT_BIBLIOGRAPHY_INDEX }, 148*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_INDEX_TITLE, XML_TOK_TEXT_INDEX_TITLE }, 149*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_TRACKED_CHANGES, XML_TOK_TEXT_TRACKED_CHANGES }, 150*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_CHANGE_START, XML_TOK_TEXT_CHANGE_START }, 151*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_CHANGE_END, XML_TOK_TEXT_CHANGE_END }, 152*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_CHANGE, XML_TOK_TEXT_CHANGE }, 153*cdf0e10cSrcweir { XML_NAMESPACE_OFFICE, XML_FORMS, XML_TOK_TEXT_FORMS }, 154*cdf0e10cSrcweir { XML_NAMESPACE_TABLE, XML_CALCULATION_SETTINGS, XML_TOK_TEXT_CALCULATION_SETTINGS }, 155*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_ALPHABETICAL_INDEX_AUTO_MARK_FILE, XML_TOK_TEXT_AUTOMARK }, 156*cdf0e10cSrcweir // --> FLR #i52127# 157*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_NUMBERED_PARAGRAPH, XML_TOK_TEXT_NUMBERED_PARAGRAPH }, 158*cdf0e10cSrcweir // <-- 159*cdf0e10cSrcweir 160*cdf0e10cSrcweir XML_TOKEN_MAP_END 161*cdf0e10cSrcweir }; 162*cdf0e10cSrcweir 163*cdf0e10cSrcweir static __FAR_DATA SvXMLTokenMapEntry aTextPElemTokenMap[] = 164*cdf0e10cSrcweir { 165*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_SPAN, XML_TOK_TEXT_SPAN }, 166*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_TAB, XML_TOK_TEXT_TAB_STOP }, 167*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_LINE_BREAK, XML_TOK_TEXT_LINE_BREAK }, 168*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_SOFT_PAGE_BREAK, XML_TOK_TEXT_SOFT_PAGE_BREAK }, 169*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_S, XML_TOK_TEXT_S }, 170*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_A, XML_TOK_TEXT_HYPERLINK }, 171*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_RUBY, XML_TOK_TEXT_RUBY }, 172*cdf0e10cSrcweir 173*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_NOTE, XML_TOK_TEXT_NOTE }, 174*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_BOOKMARK, XML_TOK_TEXT_BOOKMARK }, 175*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_BOOKMARK_START, XML_TOK_TEXT_BOOKMARK_START }, 176*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_BOOKMARK_END, XML_TOK_TEXT_BOOKMARK_END }, 177*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_REFERENCE_MARK, XML_TOK_TEXT_REFERENCE }, 178*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_REFERENCE_MARK_START, 179*cdf0e10cSrcweir XML_TOK_TEXT_REFERENCE_START }, 180*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_REFERENCE_MARK_END, 181*cdf0e10cSrcweir XML_TOK_TEXT_REFERENCE_END }, 182*cdf0e10cSrcweir 183*cdf0e10cSrcweir { XML_NAMESPACE_DRAW, XML_FRAME, XML_TOK_TEXT_FRAME }, 184*cdf0e10cSrcweir { XML_NAMESPACE_DRAW, XML_A, XML_TOK_DRAW_A }, 185*cdf0e10cSrcweir 186*cdf0e10cSrcweir // index marks 187*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_TOC_MARK, XML_TOK_TEXT_TOC_MARK }, 188*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_TOC_MARK_START, XML_TOK_TEXT_TOC_MARK_START }, 189*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_TOC_MARK_END, XML_TOK_TEXT_TOC_MARK_END }, 190*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_USER_INDEX_MARK, XML_TOK_TEXT_USER_INDEX_MARK }, 191*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_USER_INDEX_MARK_START, 192*cdf0e10cSrcweir XML_TOK_TEXT_USER_INDEX_MARK_START }, 193*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_USER_INDEX_MARK_END, 194*cdf0e10cSrcweir XML_TOK_TEXT_USER_INDEX_MARK_END }, 195*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_ALPHABETICAL_INDEX_MARK, 196*cdf0e10cSrcweir XML_TOK_TEXT_ALPHA_INDEX_MARK }, 197*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_ALPHABETICAL_INDEX_MARK_START, 198*cdf0e10cSrcweir XML_TOK_TEXT_ALPHA_INDEX_MARK_START }, 199*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_ALPHABETICAL_INDEX_MARK_END, 200*cdf0e10cSrcweir XML_TOK_TEXT_ALPHA_INDEX_MARK_END }, 201*cdf0e10cSrcweir 202*cdf0e10cSrcweir // sender fields 203*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_SENDER_FIRSTNAME,XML_TOK_TEXT_SENDER_FIRSTNAME}, 204*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_SENDER_LASTNAME, XML_TOK_TEXT_SENDER_LASTNAME }, 205*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_SENDER_INITIALS, XML_TOK_TEXT_SENDER_INITIALS }, 206*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_SENDER_TITLE, XML_TOK_TEXT_SENDER_TITLE }, 207*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_SENDER_POSITION, XML_TOK_TEXT_SENDER_POSITION }, 208*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_SENDER_EMAIL, XML_TOK_TEXT_SENDER_EMAIL }, 209*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_SENDER_PHONE_PRIVATE, 210*cdf0e10cSrcweir XML_TOK_TEXT_SENDER_PHONE_PRIVATE }, 211*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_SENDER_FAX, XML_TOK_TEXT_SENDER_FAX }, 212*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_SENDER_COMPANY, XML_TOK_TEXT_SENDER_COMPANY }, 213*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_SENDER_PHONE_WORK, 214*cdf0e10cSrcweir XML_TOK_TEXT_SENDER_PHONE_WORK }, 215*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_SENDER_STREET, XML_TOK_TEXT_SENDER_STREET }, 216*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_SENDER_CITY, XML_TOK_TEXT_SENDER_CITY }, 217*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_SENDER_POSTAL_CODE, 218*cdf0e10cSrcweir XML_TOK_TEXT_SENDER_POSTAL_CODE }, 219*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_SENDER_COUNTRY, XML_TOK_TEXT_SENDER_COUNTRY }, 220*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_SENDER_STATE_OR_PROVINCE, 221*cdf0e10cSrcweir XML_TOK_TEXT_SENDER_STATE_OR_PROVINCE }, 222*cdf0e10cSrcweir 223*cdf0e10cSrcweir // misc. document fields 224*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_AUTHOR_NAME, XML_TOK_TEXT_AUTHOR_NAME }, 225*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_AUTHOR_INITIALS, XML_TOK_TEXT_AUTHOR_INITIALS }, 226*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_DATE, XML_TOK_TEXT_DATE }, 227*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_TIME, XML_TOK_TEXT_TIME }, 228*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_PAGE_NUMBER, XML_TOK_TEXT_PAGE_NUMBER }, 229*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_PAGE_CONTINUATION_STRING, 230*cdf0e10cSrcweir XML_TOK_TEXT_PAGE_CONTINUATION_STRING }, 231*cdf0e10cSrcweir 232*cdf0e10cSrcweir // variable fields 233*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_VARIABLE_SET, XML_TOK_TEXT_VARIABLE_SET }, 234*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_VARIABLE_GET, XML_TOK_TEXT_VARIABLE_GET }, 235*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_VARIABLE_INPUT, XML_TOK_TEXT_VARIABLE_INPUT }, 236*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_USER_FIELD_GET, XML_TOK_TEXT_USER_FIELD_GET }, 237*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_USER_FIELD_INPUT,XML_TOK_TEXT_USER_FIELD_INPUT}, 238*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_SEQUENCE, XML_TOK_TEXT_SEQUENCE }, 239*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_EXPRESSION, XML_TOK_TEXT_EXPRESSION }, 240*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_TEXT_INPUT, XML_TOK_TEXT_TEXT_INPUT }, 241*cdf0e10cSrcweir 242*cdf0e10cSrcweir // database fields 243*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_DATABASE_DISPLAY, 244*cdf0e10cSrcweir XML_TOK_TEXT_DATABASE_DISPLAY }, 245*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_DATABASE_NEXT, 246*cdf0e10cSrcweir XML_TOK_TEXT_DATABASE_NEXT }, 247*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_DATABASE_ROW_SELECT, 248*cdf0e10cSrcweir XML_TOK_TEXT_DATABASE_SELECT }, 249*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_DATABASE_ROW_NUMBER, 250*cdf0e10cSrcweir XML_TOK_TEXT_DATABASE_ROW_NUMBER }, 251*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_DATABASE_NAME, XML_TOK_TEXT_DATABASE_NAME }, 252*cdf0e10cSrcweir 253*cdf0e10cSrcweir // docinfo fields 254*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_INITIAL_CREATOR, 255*cdf0e10cSrcweir XML_TOK_TEXT_DOCUMENT_CREATION_AUTHOR }, 256*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_DESCRIPTION, XML_TOK_TEXT_DOCUMENT_DESCRIPTION}, 257*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_PRINTED_BY, XML_TOK_TEXT_DOCUMENT_PRINT_AUTHOR}, 258*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_TITLE, XML_TOK_TEXT_DOCUMENT_TITLE }, 259*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_SUBJECT, XML_TOK_TEXT_DOCUMENT_SUBJECT }, 260*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_KEYWORDS, XML_TOK_TEXT_DOCUMENT_KEYWORDS }, 261*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_CREATOR, XML_TOK_TEXT_DOCUMENT_SAVE_AUTHOR }, 262*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_EDITING_CYCLES, 263*cdf0e10cSrcweir XML_TOK_TEXT_DOCUMENT_REVISION }, 264*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_CREATION_DATE, 265*cdf0e10cSrcweir XML_TOK_TEXT_DOCUMENT_CREATION_DATE }, 266*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_CREATION_TIME, 267*cdf0e10cSrcweir XML_TOK_TEXT_DOCUMENT_CREATION_TIME }, 268*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_PRINT_DATE, XML_TOK_TEXT_DOCUMENT_PRINT_DATE }, 269*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_PRINT_TIME, XML_TOK_TEXT_DOCUMENT_PRINT_TIME }, 270*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_MODIFICATION_DATE, 271*cdf0e10cSrcweir XML_TOK_TEXT_DOCUMENT_SAVE_DATE }, 272*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_MODIFICATION_TIME, 273*cdf0e10cSrcweir XML_TOK_TEXT_DOCUMENT_SAVE_TIME }, 274*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_EDITING_DURATION, 275*cdf0e10cSrcweir XML_TOK_TEXT_DOCUMENT_EDIT_DURATION }, 276*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_USER_DEFINED, 277*cdf0e10cSrcweir XML_TOK_TEXT_DOCUMENT_USER_DEFINED }, 278*cdf0e10cSrcweir 279*cdf0e10cSrcweir // misc fields 280*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_PLACEHOLDER, XML_TOK_TEXT_PLACEHOLDER }, 281*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_HIDDEN_TEXT, XML_TOK_TEXT_HIDDEN_TEXT }, 282*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_HIDDEN_PARAGRAPH, 283*cdf0e10cSrcweir XML_TOK_TEXT_HIDDEN_PARAGRAPH }, 284*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_CONDITIONAL_TEXT, 285*cdf0e10cSrcweir XML_TOK_TEXT_CONDITIONAL_TEXT }, 286*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_FILE_NAME, XML_TOK_TEXT_FILENAME }, 287*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_CHAPTER, XML_TOK_TEXT_CHAPTER }, 288*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_TEMPLATE_NAME, XML_TOK_TEXT_TEMPLATENAME }, 289*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_PARAGRAPH_COUNT, XML_TOK_TEXT_PARAGRAPH_COUNT }, 290*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_WORD_COUNT, XML_TOK_TEXT_WORD_COUNT }, 291*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_TABLE_COUNT, XML_TOK_TEXT_TABLE_COUNT }, 292*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_CHARACTER_COUNT, XML_TOK_TEXT_CHARACTER_COUNT }, 293*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_IMAGE_COUNT, XML_TOK_TEXT_IMAGE_COUNT }, 294*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_OBJECT_COUNT, XML_TOK_TEXT_OBJECT_COUNT }, 295*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_PAGE_COUNT, XML_TOK_TEXT_PAGE_COUNT }, 296*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_PAGE_VARIABLE_GET, XML_TOK_TEXT_GET_PAGE_VAR }, 297*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_PAGE_VARIABLE_SET, XML_TOK_TEXT_SET_PAGE_VAR }, 298*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_EXECUTE_MACRO, XML_TOK_TEXT_MACRO }, 299*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_DDE_CONNECTION, XML_TOK_TEXT_DDE }, 300*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_REFERENCE_REF, XML_TOK_TEXT_REFERENCE_REF }, 301*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_BOOKMARK_REF, XML_TOK_TEXT_BOOKMARK_REF }, 302*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_SEQUENCE_REF, XML_TOK_TEXT_SEQUENCE_REF }, 303*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_NOTE_REF, XML_TOK_TEXT_NOTE_REF }, 304*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_BIBLIOGRAPHY_MARK, 305*cdf0e10cSrcweir XML_TOK_TEXT_BIBLIOGRAPHY_MARK }, 306*cdf0e10cSrcweir { XML_NAMESPACE_OFFICE, XML_ANNOTATION, XML_TOK_TEXT_ANNOTATION }, 307*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_SCRIPT, XML_TOK_TEXT_SCRIPT }, 308*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_TABLE_FORMULA, XML_TOK_TEXT_TABLE_FORMULA }, 309*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_DROPDOWN, XML_TOK_TEXT_DROPDOWN }, 310*cdf0e10cSrcweir 311*cdf0e10cSrcweir // Calc fields 312*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_SHEET_NAME, XML_TOK_TEXT_SHEET_NAME }, 313*cdf0e10cSrcweir 314*cdf0e10cSrcweir // draw fields 315*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_MEASURE, XML_TOK_TEXT_MEASURE }, 316*cdf0e10cSrcweir 317*cdf0e10cSrcweir // RDF metadata 318*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_META, XML_TOK_TEXT_META }, 319*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_META_FIELD, XML_TOK_TEXT_META_FIELD }, 320*cdf0e10cSrcweir 321*cdf0e10cSrcweir // redlining (aka change tracking) 322*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_CHANGE_START, XML_TOK_TEXTP_CHANGE_START }, 323*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_CHANGE_END , XML_TOK_TEXTP_CHANGE_END }, 324*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_CHANGE, XML_TOK_TEXTP_CHANGE }, 325*cdf0e10cSrcweir 326*cdf0e10cSrcweir { XML_NAMESPACE_PRESENTATION, XML_HEADER, XML_TOK_DRAW_HEADER }, 327*cdf0e10cSrcweir { XML_NAMESPACE_PRESENTATION, XML_FOOTER, XML_TOK_DRAW_FOOTER }, 328*cdf0e10cSrcweir { XML_NAMESPACE_PRESENTATION, XML_DATE_TIME, XML_TOK_DRAW_DATE_TIME }, 329*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_PAGE_CONTINUATION, XML_TOK_TEXT_PAGE_CONTINUATION }, 330*cdf0e10cSrcweir 331*cdf0e10cSrcweir { XML_NAMESPACE_FIELD, XML_FIELDMARK, XML_TOK_TEXT_FIELDMARK }, 332*cdf0e10cSrcweir { XML_NAMESPACE_FIELD, XML_FIELDMARK_START, XML_TOK_TEXT_FIELDMARK_START }, 333*cdf0e10cSrcweir { XML_NAMESPACE_FIELD, XML_FIELDMARK_END, XML_TOK_TEXT_FIELDMARK_END }, 334*cdf0e10cSrcweir 335*cdf0e10cSrcweir 336*cdf0e10cSrcweir XML_TOKEN_MAP_END 337*cdf0e10cSrcweir }; 338*cdf0e10cSrcweir 339*cdf0e10cSrcweir static __FAR_DATA SvXMLTokenMapEntry aTextPAttrTokenMap[] = 340*cdf0e10cSrcweir { 341*cdf0e10cSrcweir { XML_NAMESPACE_XML , XML_ID, XML_TOK_TEXT_P_XMLID }, 342*cdf0e10cSrcweir { XML_NAMESPACE_XHTML, XML_ABOUT, XML_TOK_TEXT_P_ABOUT }, 343*cdf0e10cSrcweir { XML_NAMESPACE_XHTML, XML_PROPERTY, XML_TOK_TEXT_P_PROPERTY }, 344*cdf0e10cSrcweir { XML_NAMESPACE_XHTML, XML_CONTENT, XML_TOK_TEXT_P_CONTENT }, 345*cdf0e10cSrcweir { XML_NAMESPACE_XHTML, XML_DATATYPE, XML_TOK_TEXT_P_DATATYPE }, 346*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_ID, XML_TOK_TEXT_P_TEXTID }, 347*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_STYLE_NAME, XML_TOK_TEXT_P_STYLE_NAME }, 348*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_COND_STYLE_NAME, 349*cdf0e10cSrcweir XML_TOK_TEXT_P_COND_STYLE_NAME }, 350*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_OUTLINE_LEVEL,XML_TOK_TEXT_P_LEVEL }, 351*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_IS_LIST_HEADER,XML_TOK_TEXT_P_IS_LIST_HEADER }, 352*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_RESTART_NUMBERING,XML_TOK_TEXT_P_RESTART_NUMBERING }, 353*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_START_VALUE,XML_TOK_TEXT_P_START_VALUE }, 354*cdf0e10cSrcweir XML_TOKEN_MAP_END 355*cdf0e10cSrcweir }; 356*cdf0e10cSrcweir 357*cdf0e10cSrcweir static __FAR_DATA SvXMLTokenMapEntry aTextNumberedParagraphAttrTokenMap[] = 358*cdf0e10cSrcweir { 359*cdf0e10cSrcweir { XML_NAMESPACE_XML , XML_ID, XML_TOK_TEXT_NUMBERED_PARAGRAPH_XMLID }, 360*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_LIST_ID, 361*cdf0e10cSrcweir XML_TOK_TEXT_NUMBERED_PARAGRAPH_LIST_ID }, 362*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_LEVEL, XML_TOK_TEXT_NUMBERED_PARAGRAPH_LEVEL }, 363*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_STYLE_NAME, 364*cdf0e10cSrcweir XML_TOK_TEXT_NUMBERED_PARAGRAPH_STYLE_NAME }, 365*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_CONTINUE_NUMBERING, 366*cdf0e10cSrcweir XML_TOK_TEXT_NUMBERED_PARAGRAPH_CONTINUE_NUMBERING }, 367*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_START_VALUE, 368*cdf0e10cSrcweir XML_TOK_TEXT_NUMBERED_PARAGRAPH_START_VALUE }, 369*cdf0e10cSrcweir XML_TOKEN_MAP_END 370*cdf0e10cSrcweir }; 371*cdf0e10cSrcweir 372*cdf0e10cSrcweir static __FAR_DATA SvXMLTokenMapEntry aTextListBlockAttrTokenMap[] = 373*cdf0e10cSrcweir { 374*cdf0e10cSrcweir { XML_NAMESPACE_XML , XML_ID, XML_TOK_TEXT_LIST_BLOCK_XMLID }, 375*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_STYLE_NAME, 376*cdf0e10cSrcweir XML_TOK_TEXT_LIST_BLOCK_STYLE_NAME }, 377*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_CONTINUE_NUMBERING, 378*cdf0e10cSrcweir XML_TOK_TEXT_LIST_BLOCK_CONTINUE_NUMBERING }, 379*cdf0e10cSrcweir // --> OD 2008-04-22 #refactorlists# 380*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_CONTINUE_LIST, 381*cdf0e10cSrcweir XML_TOK_TEXT_LIST_BLOCK_CONTINUE_LIST }, 382*cdf0e10cSrcweir XML_TOKEN_MAP_END 383*cdf0e10cSrcweir }; 384*cdf0e10cSrcweir 385*cdf0e10cSrcweir static __FAR_DATA SvXMLTokenMapEntry aTextListBlockElemTokenMap[] = 386*cdf0e10cSrcweir { 387*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_LIST_HEADER, XML_TOK_TEXT_LIST_HEADER }, 388*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_LIST_ITEM, XML_TOK_TEXT_LIST_ITEM }, 389*cdf0e10cSrcweir XML_TOKEN_MAP_END 390*cdf0e10cSrcweir }; 391*cdf0e10cSrcweir 392*cdf0e10cSrcweir static __FAR_DATA SvXMLTokenMapEntry aTextFrameAttrTokenMap[] = 393*cdf0e10cSrcweir { 394*cdf0e10cSrcweir { XML_NAMESPACE_DRAW, XML_STYLE_NAME, XML_TOK_TEXT_FRAME_STYLE_NAME }, 395*cdf0e10cSrcweir { XML_NAMESPACE_DRAW, XML_NAME, XML_TOK_TEXT_FRAME_NAME }, 396*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_ANCHOR_TYPE, XML_TOK_TEXT_FRAME_ANCHOR_TYPE }, 397*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_ANCHOR_PAGE_NUMBER, XML_TOK_TEXT_FRAME_ANCHOR_PAGE_NUMBER }, 398*cdf0e10cSrcweir { XML_NAMESPACE_SVG, XML_X, XML_TOK_TEXT_FRAME_X }, 399*cdf0e10cSrcweir { XML_NAMESPACE_SVG, XML_Y, XML_TOK_TEXT_FRAME_Y }, 400*cdf0e10cSrcweir { XML_NAMESPACE_SVG, XML_WIDTH, XML_TOK_TEXT_FRAME_WIDTH }, 401*cdf0e10cSrcweir { XML_NAMESPACE_FO, XML_MIN_WIDTH, XML_TOK_TEXT_FRAME_MIN_WIDTH }, 402*cdf0e10cSrcweir { XML_NAMESPACE_STYLE, XML_REL_WIDTH, XML_TOK_TEXT_FRAME_REL_WIDTH }, 403*cdf0e10cSrcweir { XML_NAMESPACE_SVG, XML_HEIGHT, XML_TOK_TEXT_FRAME_HEIGHT }, 404*cdf0e10cSrcweir { XML_NAMESPACE_FO, XML_MIN_HEIGHT, XML_TOK_TEXT_FRAME_MIN_HEIGHT }, 405*cdf0e10cSrcweir { XML_NAMESPACE_STYLE, XML_REL_HEIGHT, XML_TOK_TEXT_FRAME_REL_HEIGHT }, 406*cdf0e10cSrcweir { XML_NAMESPACE_DRAW, XML_CHAIN_NEXT_NAME, XML_TOK_TEXT_FRAME_NEXT_CHAIN_NAME }, 407*cdf0e10cSrcweir { XML_NAMESPACE_XLINK, XML_HREF, XML_TOK_TEXT_FRAME_HREF }, 408*cdf0e10cSrcweir { XML_NAMESPACE_DRAW, XML_NAME, XML_TOK_TEXT_FRAME_FILTER_NAME }, 409*cdf0e10cSrcweir { XML_NAMESPACE_DRAW, XML_ZINDEX, XML_TOK_TEXT_FRAME_Z_INDEX }, 410*cdf0e10cSrcweir { XML_NAMESPACE_SVG, XML_TRANSFORM, XML_TOK_TEXT_FRAME_TRANSFORM }, 411*cdf0e10cSrcweir { XML_NAMESPACE_DRAW, XML_CLASS_ID, XML_TOK_TEXT_FRAME_CLASS_ID }, 412*cdf0e10cSrcweir { XML_NAMESPACE_DRAW, XML_CODE, XML_TOK_TEXT_FRAME_CODE }, 413*cdf0e10cSrcweir { XML_NAMESPACE_DRAW, XML_OBJECT, XML_TOK_TEXT_FRAME_OBJECT }, 414*cdf0e10cSrcweir { XML_NAMESPACE_DRAW, XML_ARCHIVE, XML_TOK_TEXT_FRAME_ARCHIVE }, 415*cdf0e10cSrcweir { XML_NAMESPACE_DRAW, XML_MAY_SCRIPT, XML_TOK_TEXT_FRAME_MAY_SCRIPT }, 416*cdf0e10cSrcweir { XML_NAMESPACE_DRAW, XML_MIME_TYPE, XML_TOK_TEXT_FRAME_MIME_TYPE }, 417*cdf0e10cSrcweir { XML_NAMESPACE_DRAW, XML_APPLET_NAME, XML_TOK_TEXT_FRAME_APPLET_NAME }, 418*cdf0e10cSrcweir { XML_NAMESPACE_DRAW, XML_FRAME_NAME, XML_TOK_TEXT_FRAME_FRAME_NAME }, 419*cdf0e10cSrcweir { XML_NAMESPACE_DRAW, XML_NOTIFY_ON_UPDATE_OF_RANGES, XML_TOK_TEXT_FRAME_NOTIFY_ON_UPDATE }, 420*cdf0e10cSrcweir { XML_NAMESPACE_DRAW, XML_NOTIFY_ON_UPDATE_OF_TABLE, XML_TOK_TEXT_FRAME_NOTIFY_ON_UPDATE }, 421*cdf0e10cSrcweir XML_TOKEN_MAP_END 422*cdf0e10cSrcweir }; 423*cdf0e10cSrcweir 424*cdf0e10cSrcweir static __FAR_DATA SvXMLTokenMapEntry aTextContourAttrTokenMap[] = 425*cdf0e10cSrcweir { 426*cdf0e10cSrcweir { XML_NAMESPACE_SVG, XML_WIDTH, XML_TOK_TEXT_CONTOUR_WIDTH }, 427*cdf0e10cSrcweir { XML_NAMESPACE_SVG, XML_HEIGHT, XML_TOK_TEXT_CONTOUR_HEIGHT }, 428*cdf0e10cSrcweir { XML_NAMESPACE_SVG, XML_VIEWBOX, XML_TOK_TEXT_CONTOUR_VIEWBOX }, 429*cdf0e10cSrcweir { XML_NAMESPACE_SVG, XML_D, XML_TOK_TEXT_CONTOUR_D }, 430*cdf0e10cSrcweir { XML_NAMESPACE_DRAW,XML_POINTS, XML_TOK_TEXT_CONTOUR_POINTS }, 431*cdf0e10cSrcweir { XML_NAMESPACE_DRAW,XML_RECREATE_ON_EDIT, XML_TOK_TEXT_CONTOUR_AUTO }, 432*cdf0e10cSrcweir XML_TOKEN_MAP_END 433*cdf0e10cSrcweir }; 434*cdf0e10cSrcweir 435*cdf0e10cSrcweir static __FAR_DATA SvXMLTokenMapEntry aTextHyperlinkAttrTokenMap[] = 436*cdf0e10cSrcweir { 437*cdf0e10cSrcweir { XML_NAMESPACE_XLINK, XML_HREF, XML_TOK_TEXT_HYPERLINK_HREF }, 438*cdf0e10cSrcweir { XML_NAMESPACE_OFFICE, XML_NAME, XML_TOK_TEXT_HYPERLINK_NAME }, 439*cdf0e10cSrcweir { XML_NAMESPACE_XLINK, XML_SHOW, XML_TOK_TEXT_HYPERLINK_SHOW }, 440*cdf0e10cSrcweir { XML_NAMESPACE_OFFICE, XML_TARGET_FRAME_NAME, XML_TOK_TEXT_HYPERLINK_TARGET_FRAME }, 441*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_STYLE_NAME, XML_TOK_TEXT_HYPERLINK_STYLE_NAME }, 442*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_VISITED_STYLE_NAME, XML_TOK_TEXT_HYPERLINK_VIS_STYLE_NAME }, 443*cdf0e10cSrcweir { XML_NAMESPACE_OFFICE, XML_SERVER_MAP, XML_TOK_TEXT_HYPERLINK_SERVER_MAP }, 444*cdf0e10cSrcweir XML_TOKEN_MAP_END 445*cdf0e10cSrcweir }; 446*cdf0e10cSrcweir 447*cdf0e10cSrcweir static __FAR_DATA SvXMLTokenMapEntry aTextMasterPageElemTokenMap[] = 448*cdf0e10cSrcweir { 449*cdf0e10cSrcweir { XML_NAMESPACE_STYLE, XML_HEADER, XML_TOK_TEXT_MP_HEADER }, 450*cdf0e10cSrcweir { XML_NAMESPACE_STYLE, XML_FOOTER, XML_TOK_TEXT_MP_FOOTER }, 451*cdf0e10cSrcweir { XML_NAMESPACE_STYLE, XML_HEADER_LEFT, XML_TOK_TEXT_MP_HEADER_LEFT }, 452*cdf0e10cSrcweir { XML_NAMESPACE_STYLE, XML_FOOTER_LEFT, XML_TOK_TEXT_MP_FOOTER_LEFT }, 453*cdf0e10cSrcweir 454*cdf0e10cSrcweir XML_TOKEN_MAP_END 455*cdf0e10cSrcweir }; 456*cdf0e10cSrcweir 457*cdf0e10cSrcweir static __FAR_DATA SvXMLTokenMapEntry aTextFieldAttrTokenMap[] = 458*cdf0e10cSrcweir { 459*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_FIXED, XML_TOK_TEXTFIELD_FIXED }, 460*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_DESCRIPTION, XML_TOK_TEXTFIELD_DESCRIPTION }, 461*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_HELP, XML_TOK_TEXTFIELD_HELP }, 462*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_HINT, XML_TOK_TEXTFIELD_HINT }, 463*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_PLACEHOLDER_TYPE, 464*cdf0e10cSrcweir XML_TOK_TEXTFIELD_PLACEHOLDER_TYPE }, 465*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_NAME, XML_TOK_TEXTFIELD_NAME }, 466*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_FORMULA, XML_TOK_TEXTFIELD_FORMULA }, 467*cdf0e10cSrcweir { XML_NAMESPACE_STYLE, XML_NUM_FORMAT, XML_TOK_TEXTFIELD_NUM_FORMAT }, 468*cdf0e10cSrcweir { XML_NAMESPACE_STYLE, XML_NUM_LETTER_SYNC, 469*cdf0e10cSrcweir XML_TOK_TEXTFIELD_NUM_LETTER_SYNC }, 470*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_DISPLAY_FORMULA, 471*cdf0e10cSrcweir XML_TOK_TEXTFIELD_DISPLAY_FORMULA }, 472*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_VALUE_TYPE, XML_TOK_TEXTFIELD_VALUE_TYPE }, // #i32362#: src680m48++ saves text:value-type 473*cdf0e10cSrcweir { XML_NAMESPACE_OFFICE, XML_VALUE_TYPE, XML_TOK_TEXTFIELD_VALUE_TYPE }, 474*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_VALUE, XML_TOK_TEXTFIELD_VALUE }, 475*cdf0e10cSrcweir { XML_NAMESPACE_OFFICE, XML_VALUE, XML_TOK_TEXTFIELD_VALUE }, 476*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_STRING_VALUE, XML_TOK_TEXTFIELD_STRING_VALUE }, 477*cdf0e10cSrcweir { XML_NAMESPACE_OFFICE, XML_STRING_VALUE, XML_TOK_TEXTFIELD_STRING_VALUE }, 478*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_DATE_VALUE, XML_TOK_TEXTFIELD_DATE_VALUE }, 479*cdf0e10cSrcweir { XML_NAMESPACE_OFFICE, XML_DATE_VALUE, XML_TOK_TEXTFIELD_DATE_VALUE }, 480*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_TIME_VALUE, XML_TOK_TEXTFIELD_TIME_VALUE }, 481*cdf0e10cSrcweir { XML_NAMESPACE_OFFICE, XML_TIME_VALUE, XML_TOK_TEXTFIELD_TIME_VALUE }, 482*cdf0e10cSrcweir { XML_NAMESPACE_OFFICE, XML_BOOLEAN_VALUE, XML_TOK_TEXTFIELD_BOOL_VALUE}, 483*cdf0e10cSrcweir { XML_NAMESPACE_OFFICE, XML_CURRENCY, XML_TOK_TEXTFIELD_CURRENCY}, 484*cdf0e10cSrcweir { XML_NAMESPACE_STYLE, XML_DATA_STYLE_NAME, 485*cdf0e10cSrcweir XML_TOK_TEXTFIELD_DATA_STYLE_NAME }, 486*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_DISPLAY_OUTLINE_LEVEL, 487*cdf0e10cSrcweir XML_TOK_TEXTFIELD_NUMBERING_LEVEL }, 488*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_SEPARATION_CHARACTER, 489*cdf0e10cSrcweir XML_TOK_TEXTFIELD_NUMBERING_SEPARATOR }, 490*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_DISPLAY, XML_TOK_TEXTFIELD_DISPLAY }, 491*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_TIME_ADJUST, XML_TOK_TEXTFIELD_TIME_ADJUST }, 492*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_DATE_ADJUST, XML_TOK_TEXTFIELD_DATE_ADJUST }, 493*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_PAGE_ADJUST, XML_TOK_TEXTFIELD_PAGE_ADJUST }, 494*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_SELECT_PAGE, XML_TOK_TEXTFIELD_SELECT_PAGE }, 495*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_DATABASE_NAME, XML_TOK_TEXTFIELD_DATABASE_NAME}, 496*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_TABLE_NAME, XML_TOK_TEXTFIELD_TABLE_NAME }, 497*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_COLUMN_NAME, XML_TOK_TEXTFIELD_COLUMN_NAME }, 498*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_ROW_NUMBER, XML_TOK_TEXTFIELD_ROW_NUMBER }, 499*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_CONDITION, XML_TOK_TEXTFIELD_CONDITION }, 500*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_STRING_VALUE_IF_TRUE, 501*cdf0e10cSrcweir XML_TOK_TEXTFIELD_STRING_VALUE_IF_TRUE }, 502*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_STRING_VALUE_IF_FALSE, 503*cdf0e10cSrcweir XML_TOK_TEXTFIELD_STRING_VALUE_IF_FALSE }, 504*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_EDITING_CYCLES, XML_TOK_TEXTFIELD_REVISION }, 505*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_OUTLINE_LEVEL, XML_TOK_TEXTFIELD_OUTLINE_LEVEL}, 506*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_ACTIVE, XML_TOK_TEXTFIELD_ACTIVE }, 507*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_NOTE_CLASS, XML_TOK_TEXTFIELD_NOTE_CLASS }, 508*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_REFERENCE_FORMAT, 509*cdf0e10cSrcweir XML_TOK_TEXTFIELD_REFERENCE_FORMAT }, 510*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_REF_NAME, XML_TOK_TEXTFIELD_REF_NAME }, 511*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_CONNECTION_NAME, 512*cdf0e10cSrcweir XML_TOK_TEXTFIELD_CONNECTION_NAME }, 513*cdf0e10cSrcweir { XML_NAMESPACE_XLINK, XML_HREF, XML_TOK_TEXTFIELD_HREF }, 514*cdf0e10cSrcweir { XML_NAMESPACE_OFFICE, XML_TARGET_FRAME_NAME, 515*cdf0e10cSrcweir XML_TOK_TEXTFIELD_TARGET_FRAME }, 516*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_ANNOTATION, XML_TOK_TEXTFIELD_ANNOTATION }, 517*cdf0e10cSrcweir { XML_NAMESPACE_SCRIPT, XML_LANGUAGE, XML_TOK_TEXTFIELD_LANGUAGE }, 518*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_KIND, XML_TOK_TEXTFIELD_MEASURE_KIND }, 519*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_IS_HIDDEN, XML_TOK_TEXTFIELD_IS_HIDDEN }, 520*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_CURRENT_VALUE, 521*cdf0e10cSrcweir XML_TOK_TEXTFIELD_CURRENT_VALUE }, 522*cdf0e10cSrcweir { XML_NAMESPACE_TEXT, XML_TABLE_TYPE, XML_TOK_TEXTFIELD_TABLE_TYPE }, 523*cdf0e10cSrcweir 524*cdf0e10cSrcweir XML_TOKEN_MAP_END 525*cdf0e10cSrcweir }; 526*cdf0e10cSrcweir 527*cdf0e10cSrcweir 528*cdf0e10cSrcweir // maximum allowed length of combined characters field 529*cdf0e10cSrcweir #define MAX_COMBINED_CHARACTERS 6 530*cdf0e10cSrcweir 531*cdf0e10cSrcweir struct SAL_DLLPRIVATE XMLTextImportHelper::Impl 532*cdf0e10cSrcweir : private ::boost::noncopyable 533*cdf0e10cSrcweir { 534*cdf0e10cSrcweir ::std::auto_ptr<SvXMLTokenMap> m_pTextElemTokenMap; 535*cdf0e10cSrcweir ::std::auto_ptr<SvXMLTokenMap> m_pTextPElemTokenMap; 536*cdf0e10cSrcweir ::std::auto_ptr<SvXMLTokenMap> m_pTextPAttrTokenMap; 537*cdf0e10cSrcweir ::std::auto_ptr<SvXMLTokenMap> m_pTextFieldAttrTokenMap; 538*cdf0e10cSrcweir ::std::auto_ptr<SvXMLTokenMap> m_pTextNumberedParagraphAttrTokenMap; 539*cdf0e10cSrcweir ::std::auto_ptr<SvXMLTokenMap> m_pTextListBlockAttrTokenMap; 540*cdf0e10cSrcweir ::std::auto_ptr<SvXMLTokenMap> m_pTextListBlockElemTokenMap; 541*cdf0e10cSrcweir ::std::auto_ptr<SvXMLTokenMap> m_pTextFrameAttrTokenMap; 542*cdf0e10cSrcweir ::std::auto_ptr<SvXMLTokenMap> m_pTextContourAttrTokenMap; 543*cdf0e10cSrcweir ::std::auto_ptr<SvXMLTokenMap> m_pTextHyperlinkAttrTokenMap; 544*cdf0e10cSrcweir ::std::auto_ptr<SvXMLTokenMap> m_pTextMasterPageElemTokenMap; 545*cdf0e10cSrcweir ::std::auto_ptr<SvStringsDtor> m_pPrevFrmNames; 546*cdf0e10cSrcweir ::std::auto_ptr<SvStringsDtor> m_pNextFrmNames; 547*cdf0e10cSrcweir 548*cdf0e10cSrcweir // --> OD 2008-04-25 #refactorlists# 549*cdf0e10cSrcweir ::std::auto_ptr<XMLTextListsHelper> m_pTextListsHelper; 550*cdf0e10cSrcweir // <-- 551*cdf0e10cSrcweir 552*cdf0e10cSrcweir SvXMLImportContextRef m_xAutoStyles; 553*cdf0e10cSrcweir SvXMLImportContextRef m_xFontDecls; 554*cdf0e10cSrcweir 555*cdf0e10cSrcweir XMLSectionList_Impl m_SectionList; 556*cdf0e10cSrcweir 557*cdf0e10cSrcweir UniReference< SvXMLImportPropertyMapper > m_xParaImpPrMap; 558*cdf0e10cSrcweir UniReference< SvXMLImportPropertyMapper > m_xTextImpPrMap; 559*cdf0e10cSrcweir UniReference< SvXMLImportPropertyMapper > m_xFrameImpPrMap; 560*cdf0e10cSrcweir UniReference< SvXMLImportPropertyMapper > m_xSectionImpPrMap; 561*cdf0e10cSrcweir UniReference< SvXMLImportPropertyMapper > m_xRubyImpPrMap; 562*cdf0e10cSrcweir 563*cdf0e10cSrcweir ::std::auto_ptr<SvI18NMap> m_pRenameMap; 564*cdf0e10cSrcweir // --> OD 2006-10-12 #i69629# - change and extend data structure: 565*cdf0e10cSrcweir // - data structure contains candidates of paragraph styles, which 566*cdf0e10cSrcweir // will be assigned to the outline style 567*cdf0e10cSrcweir // - data structure contains more than one candidate for each list level 568*cdf0e10cSrcweir // of the outline style 569*cdf0e10cSrcweir ::boost::scoped_array< ::std::vector< ::rtl::OUString > > 570*cdf0e10cSrcweir m_pOutlineStylesCandidates; 571*cdf0e10cSrcweir // <-- 572*cdf0e10cSrcweir 573*cdf0e10cSrcweir // start range, xml:id, RDFa stuff 574*cdf0e10cSrcweir typedef ::boost::tuple< 575*cdf0e10cSrcweir uno::Reference<text::XTextRange>, ::rtl::OUString, 576*cdf0e10cSrcweir ::boost::shared_ptr< ::xmloff::ParsedRDFaAttributes > > 577*cdf0e10cSrcweir BookmarkMapEntry_t; 578*cdf0e10cSrcweir /// start ranges for open bookmarks 579*cdf0e10cSrcweir ::std::map< ::rtl::OUString, BookmarkMapEntry_t, 580*cdf0e10cSrcweir ::comphelper::UStringLess> m_BookmarkStartRanges; 581*cdf0e10cSrcweir 582*cdf0e10cSrcweir typedef ::std::vector< ::rtl::OUString > BookmarkVector_t; 583*cdf0e10cSrcweir BookmarkVector_t m_BookmarkVector; 584*cdf0e10cSrcweir 585*cdf0e10cSrcweir /// name of the last 'open' redline that started between paragraphs 586*cdf0e10cSrcweir ::rtl::OUString m_sOpenRedlineIdentifier; 587*cdf0e10cSrcweir 588*cdf0e10cSrcweir uno::Reference<text::XText> m_xText; 589*cdf0e10cSrcweir uno::Reference<text::XTextCursor> m_xCursor; 590*cdf0e10cSrcweir uno::Reference<text::XTextRange> m_xCursorAsRange; 591*cdf0e10cSrcweir uno::Reference<container::XNameContainer> m_xParaStyles; 592*cdf0e10cSrcweir uno::Reference<container::XNameContainer> m_xTextStyles; 593*cdf0e10cSrcweir uno::Reference<container::XNameContainer> m_xNumStyles; 594*cdf0e10cSrcweir uno::Reference<container::XNameContainer> m_xFrameStyles; 595*cdf0e10cSrcweir uno::Reference<container::XNameContainer> m_xPageStyles; 596*cdf0e10cSrcweir uno::Reference<container::XIndexReplace> m_xChapterNumbering; 597*cdf0e10cSrcweir uno::Reference<container::XNameAccess> m_xTextFrames; 598*cdf0e10cSrcweir uno::Reference<container::XNameAccess> m_xGraphics; 599*cdf0e10cSrcweir uno::Reference<container::XNameAccess> m_xObjects; 600*cdf0e10cSrcweir uno::Reference<lang::XMultiServiceFactory> m_xServiceFactory; 601*cdf0e10cSrcweir 602*cdf0e10cSrcweir SvXMLImport & m_rSvXMLImport; 603*cdf0e10cSrcweir 604*cdf0e10cSrcweir bool m_bInsertMode : 1; 605*cdf0e10cSrcweir bool m_bStylesOnlyMode : 1; 606*cdf0e10cSrcweir bool m_bBlockMode : 1; 607*cdf0e10cSrcweir bool m_bProgress : 1; 608*cdf0e10cSrcweir bool m_bOrganizerMode : 1; 609*cdf0e10cSrcweir bool m_bBodyContentStarted : 1; 610*cdf0e10cSrcweir 611*cdf0e10cSrcweir // #107848# 612*cdf0e10cSrcweir // One more flag to remember if we are inside a deleted redline section 613*cdf0e10cSrcweir bool m_bInsideDeleteContext : 1; 614*cdf0e10cSrcweir 615*cdf0e10cSrcweir typedef ::std::pair< ::rtl::OUString, ::rtl::OUString> field_name_type_t; 616*cdf0e10cSrcweir typedef ::std::pair< ::rtl::OUString, ::rtl::OUString > field_param_t; 617*cdf0e10cSrcweir typedef ::std::vector< field_param_t > field_params_t; 618*cdf0e10cSrcweir typedef ::std::pair< field_name_type_t, field_params_t > field_stack_item_t; 619*cdf0e10cSrcweir typedef ::std::stack< field_stack_item_t > field_stack_t; 620*cdf0e10cSrcweir 621*cdf0e10cSrcweir field_stack_t m_FieldStack; 622*cdf0e10cSrcweir 623*cdf0e10cSrcweir ::rtl::OUString m_sCellParaStyleDefault; 624*cdf0e10cSrcweir 625*cdf0e10cSrcweir Impl( uno::Reference<frame::XModel> const& rModel, 626*cdf0e10cSrcweir SvXMLImport & rImport, 627*cdf0e10cSrcweir bool const bInsertMode, bool const bStylesOnlyMode, 628*cdf0e10cSrcweir bool const bProgress, bool const bBlockMode, 629*cdf0e10cSrcweir bool const bOrganizerMode) 630*cdf0e10cSrcweir : m_pTextElemTokenMap( 0 ) 631*cdf0e10cSrcweir , m_pTextPElemTokenMap( 0 ) 632*cdf0e10cSrcweir , m_pTextPAttrTokenMap( 0 ) 633*cdf0e10cSrcweir , m_pTextFieldAttrTokenMap( 0 ) 634*cdf0e10cSrcweir , m_pTextNumberedParagraphAttrTokenMap( 0 ) 635*cdf0e10cSrcweir , m_pTextListBlockAttrTokenMap( 0 ) 636*cdf0e10cSrcweir , m_pTextListBlockElemTokenMap( 0 ) 637*cdf0e10cSrcweir , m_pTextFrameAttrTokenMap( 0 ) 638*cdf0e10cSrcweir , m_pTextContourAttrTokenMap( 0 ) 639*cdf0e10cSrcweir , m_pTextHyperlinkAttrTokenMap( 0 ) 640*cdf0e10cSrcweir , m_pTextMasterPageElemTokenMap( 0 ) 641*cdf0e10cSrcweir , m_pPrevFrmNames( 0 ) 642*cdf0e10cSrcweir , m_pNextFrmNames( 0 ) 643*cdf0e10cSrcweir // --> OD 2008-04-25 #refactorlists# 644*cdf0e10cSrcweir , m_pTextListsHelper( new XMLTextListsHelper() ) 645*cdf0e10cSrcweir // <-- 646*cdf0e10cSrcweir , m_pRenameMap( 0 ) 647*cdf0e10cSrcweir // --> OD 2006-10-12 #i69629# 648*cdf0e10cSrcweir , m_pOutlineStylesCandidates( 0 ) 649*cdf0e10cSrcweir // <-- 650*cdf0e10cSrcweir , m_xServiceFactory( rModel, UNO_QUERY ) 651*cdf0e10cSrcweir , m_rSvXMLImport( rImport ) 652*cdf0e10cSrcweir , m_bInsertMode( bInsertMode ) 653*cdf0e10cSrcweir , m_bStylesOnlyMode( bStylesOnlyMode ) 654*cdf0e10cSrcweir , m_bBlockMode( bBlockMode ) 655*cdf0e10cSrcweir , m_bProgress( bProgress ) 656*cdf0e10cSrcweir , m_bOrganizerMode( bOrganizerMode ) 657*cdf0e10cSrcweir , m_bBodyContentStarted( true ) 658*cdf0e10cSrcweir // #107848# Initialize inside_deleted_section flag correctly 659*cdf0e10cSrcweir , m_bInsideDeleteContext( false ) 660*cdf0e10cSrcweir { 661*cdf0e10cSrcweir } 662*cdf0e10cSrcweir 663*cdf0e10cSrcweir void InitOutlineStylesCandidates() 664*cdf0e10cSrcweir { 665*cdf0e10cSrcweir if (!m_pOutlineStylesCandidates) 666*cdf0e10cSrcweir { 667*cdf0e10cSrcweir size_t const size(m_xChapterNumbering->getCount()); 668*cdf0e10cSrcweir m_pOutlineStylesCandidates.reset( 669*cdf0e10cSrcweir new ::std::vector< ::rtl::OUString >[size] ); 670*cdf0e10cSrcweir } 671*cdf0e10cSrcweir } 672*cdf0e10cSrcweir 673*cdf0e10cSrcweir }; 674*cdf0e10cSrcweir 675*cdf0e10cSrcweir 676*cdf0e10cSrcweir uno::Reference< text::XText > & XMLTextImportHelper::GetText() 677*cdf0e10cSrcweir { 678*cdf0e10cSrcweir return m_pImpl->m_xText; 679*cdf0e10cSrcweir } 680*cdf0e10cSrcweir 681*cdf0e10cSrcweir uno::Reference< text::XTextCursor > & XMLTextImportHelper::GetCursor() 682*cdf0e10cSrcweir { 683*cdf0e10cSrcweir return m_pImpl->m_xCursor; 684*cdf0e10cSrcweir } 685*cdf0e10cSrcweir 686*cdf0e10cSrcweir uno::Reference< text::XTextRange > & XMLTextImportHelper::GetCursorAsRange() 687*cdf0e10cSrcweir { 688*cdf0e10cSrcweir return m_pImpl->m_xCursorAsRange; 689*cdf0e10cSrcweir } 690*cdf0e10cSrcweir 691*cdf0e10cSrcweir bool XMLTextImportHelper::IsInsertMode() const 692*cdf0e10cSrcweir { 693*cdf0e10cSrcweir return m_pImpl->m_bInsertMode; 694*cdf0e10cSrcweir } 695*cdf0e10cSrcweir 696*cdf0e10cSrcweir bool XMLTextImportHelper::IsStylesOnlyMode() const 697*cdf0e10cSrcweir { 698*cdf0e10cSrcweir return m_pImpl->m_bStylesOnlyMode; 699*cdf0e10cSrcweir } 700*cdf0e10cSrcweir 701*cdf0e10cSrcweir bool XMLTextImportHelper::IsBlockMode() const 702*cdf0e10cSrcweir { 703*cdf0e10cSrcweir return m_pImpl->m_bBlockMode; 704*cdf0e10cSrcweir } 705*cdf0e10cSrcweir 706*cdf0e10cSrcweir bool XMLTextImportHelper::IsOrganizerMode() const 707*cdf0e10cSrcweir { 708*cdf0e10cSrcweir return m_pImpl->m_bOrganizerMode; 709*cdf0e10cSrcweir } 710*cdf0e10cSrcweir 711*cdf0e10cSrcweir bool XMLTextImportHelper::IsProgress() const 712*cdf0e10cSrcweir { 713*cdf0e10cSrcweir return m_pImpl->m_bProgress; 714*cdf0e10cSrcweir } 715*cdf0e10cSrcweir 716*cdf0e10cSrcweir XMLSectionList_Impl & XMLTextImportHelper::GetSectionList() 717*cdf0e10cSrcweir { 718*cdf0e10cSrcweir return m_pImpl->m_SectionList; 719*cdf0e10cSrcweir } 720*cdf0e10cSrcweir 721*cdf0e10cSrcweir uno::Reference<container::XNameContainer> const& 722*cdf0e10cSrcweir XMLTextImportHelper::GetParaStyles() const 723*cdf0e10cSrcweir { 724*cdf0e10cSrcweir return m_pImpl->m_xParaStyles; 725*cdf0e10cSrcweir } 726*cdf0e10cSrcweir 727*cdf0e10cSrcweir uno::Reference<container::XNameContainer> const& 728*cdf0e10cSrcweir XMLTextImportHelper::GetTextStyles() const 729*cdf0e10cSrcweir { 730*cdf0e10cSrcweir return m_pImpl->m_xTextStyles; 731*cdf0e10cSrcweir } 732*cdf0e10cSrcweir 733*cdf0e10cSrcweir uno::Reference<container::XNameContainer> const& 734*cdf0e10cSrcweir XMLTextImportHelper::GetNumberingStyles() const 735*cdf0e10cSrcweir { 736*cdf0e10cSrcweir return m_pImpl->m_xNumStyles; 737*cdf0e10cSrcweir } 738*cdf0e10cSrcweir 739*cdf0e10cSrcweir uno::Reference<container::XNameContainer> const& 740*cdf0e10cSrcweir XMLTextImportHelper::GetFrameStyles() const 741*cdf0e10cSrcweir { 742*cdf0e10cSrcweir return m_pImpl->m_xFrameStyles; 743*cdf0e10cSrcweir } 744*cdf0e10cSrcweir 745*cdf0e10cSrcweir uno::Reference<container::XNameContainer> const& 746*cdf0e10cSrcweir XMLTextImportHelper::GetPageStyles() const 747*cdf0e10cSrcweir { 748*cdf0e10cSrcweir return m_pImpl->m_xPageStyles; 749*cdf0e10cSrcweir } 750*cdf0e10cSrcweir 751*cdf0e10cSrcweir uno::Reference<container::XIndexReplace> const& 752*cdf0e10cSrcweir XMLTextImportHelper::GetChapterNumbering() const 753*cdf0e10cSrcweir { 754*cdf0e10cSrcweir return m_pImpl->m_xChapterNumbering; 755*cdf0e10cSrcweir } 756*cdf0e10cSrcweir 757*cdf0e10cSrcweir UniReference< SvXMLImportPropertyMapper > const& 758*cdf0e10cSrcweir XMLTextImportHelper::GetParaImportPropertySetMapper() const 759*cdf0e10cSrcweir { 760*cdf0e10cSrcweir return m_pImpl->m_xParaImpPrMap; 761*cdf0e10cSrcweir } 762*cdf0e10cSrcweir 763*cdf0e10cSrcweir UniReference< SvXMLImportPropertyMapper > const& 764*cdf0e10cSrcweir XMLTextImportHelper::GetTextImportPropertySetMapper() const 765*cdf0e10cSrcweir { 766*cdf0e10cSrcweir return m_pImpl->m_xTextImpPrMap; 767*cdf0e10cSrcweir } 768*cdf0e10cSrcweir 769*cdf0e10cSrcweir UniReference< SvXMLImportPropertyMapper > const& 770*cdf0e10cSrcweir XMLTextImportHelper::GetFrameImportPropertySetMapper() const 771*cdf0e10cSrcweir { 772*cdf0e10cSrcweir return m_pImpl->m_xFrameImpPrMap; 773*cdf0e10cSrcweir } 774*cdf0e10cSrcweir 775*cdf0e10cSrcweir UniReference< SvXMLImportPropertyMapper > const& 776*cdf0e10cSrcweir XMLTextImportHelper::GetSectionImportPropertySetMapper() const 777*cdf0e10cSrcweir { 778*cdf0e10cSrcweir return m_pImpl->m_xSectionImpPrMap; 779*cdf0e10cSrcweir } 780*cdf0e10cSrcweir 781*cdf0e10cSrcweir UniReference< SvXMLImportPropertyMapper > const& 782*cdf0e10cSrcweir XMLTextImportHelper::GetRubyImportPropertySetMapper() const 783*cdf0e10cSrcweir { 784*cdf0e10cSrcweir return m_pImpl->m_xRubyImpPrMap; 785*cdf0e10cSrcweir } 786*cdf0e10cSrcweir 787*cdf0e10cSrcweir void XMLTextImportHelper::SetInsideDeleteContext(bool const bNew) 788*cdf0e10cSrcweir { 789*cdf0e10cSrcweir m_pImpl->m_bInsideDeleteContext = bNew; 790*cdf0e10cSrcweir } 791*cdf0e10cSrcweir 792*cdf0e10cSrcweir bool XMLTextImportHelper::IsInsideDeleteContext() const 793*cdf0e10cSrcweir { 794*cdf0e10cSrcweir return m_pImpl->m_bInsideDeleteContext; 795*cdf0e10cSrcweir } 796*cdf0e10cSrcweir 797*cdf0e10cSrcweir SvXMLImport & XMLTextImportHelper::GetXMLImport() 798*cdf0e10cSrcweir { 799*cdf0e10cSrcweir return m_pImpl->m_rSvXMLImport; 800*cdf0e10cSrcweir } 801*cdf0e10cSrcweir 802*cdf0e10cSrcweir XMLTextListsHelper & XMLTextImportHelper::GetTextListHelper() 803*cdf0e10cSrcweir { 804*cdf0e10cSrcweir return *m_pImpl->m_pTextListsHelper; 805*cdf0e10cSrcweir } 806*cdf0e10cSrcweir 807*cdf0e10cSrcweir const SvXMLTokenMap& XMLTextImportHelper::GetTextElemTokenMap() 808*cdf0e10cSrcweir { 809*cdf0e10cSrcweir if (!m_pImpl->m_pTextElemTokenMap.get()) 810*cdf0e10cSrcweir { 811*cdf0e10cSrcweir m_pImpl->m_pTextElemTokenMap.reset( 812*cdf0e10cSrcweir new SvXMLTokenMap( aTextElemTokenMap )); 813*cdf0e10cSrcweir } 814*cdf0e10cSrcweir return *m_pImpl->m_pTextElemTokenMap; 815*cdf0e10cSrcweir } 816*cdf0e10cSrcweir 817*cdf0e10cSrcweir const SvXMLTokenMap& XMLTextImportHelper::GetTextPElemTokenMap() 818*cdf0e10cSrcweir { 819*cdf0e10cSrcweir if (!m_pImpl->m_pTextPElemTokenMap.get()) 820*cdf0e10cSrcweir { 821*cdf0e10cSrcweir m_pImpl->m_pTextPElemTokenMap.reset( 822*cdf0e10cSrcweir new SvXMLTokenMap( aTextPElemTokenMap )); 823*cdf0e10cSrcweir } 824*cdf0e10cSrcweir return *m_pImpl->m_pTextPElemTokenMap; 825*cdf0e10cSrcweir } 826*cdf0e10cSrcweir 827*cdf0e10cSrcweir const SvXMLTokenMap& XMLTextImportHelper::GetTextPAttrTokenMap() 828*cdf0e10cSrcweir { 829*cdf0e10cSrcweir if (!m_pImpl->m_pTextPAttrTokenMap.get()) 830*cdf0e10cSrcweir { 831*cdf0e10cSrcweir m_pImpl->m_pTextPAttrTokenMap.reset( 832*cdf0e10cSrcweir new SvXMLTokenMap( aTextPAttrTokenMap )); 833*cdf0e10cSrcweir } 834*cdf0e10cSrcweir return *m_pImpl->m_pTextPAttrTokenMap; 835*cdf0e10cSrcweir } 836*cdf0e10cSrcweir 837*cdf0e10cSrcweir const SvXMLTokenMap& XMLTextImportHelper::GetTextFrameAttrTokenMap() 838*cdf0e10cSrcweir { 839*cdf0e10cSrcweir if (!m_pImpl->m_pTextFrameAttrTokenMap.get()) 840*cdf0e10cSrcweir { 841*cdf0e10cSrcweir m_pImpl->m_pTextFrameAttrTokenMap.reset( 842*cdf0e10cSrcweir new SvXMLTokenMap( aTextFrameAttrTokenMap )); 843*cdf0e10cSrcweir } 844*cdf0e10cSrcweir return *m_pImpl->m_pTextFrameAttrTokenMap; 845*cdf0e10cSrcweir } 846*cdf0e10cSrcweir 847*cdf0e10cSrcweir const SvXMLTokenMap& XMLTextImportHelper::GetTextContourAttrTokenMap() 848*cdf0e10cSrcweir { 849*cdf0e10cSrcweir if (!m_pImpl->m_pTextContourAttrTokenMap.get()) 850*cdf0e10cSrcweir { 851*cdf0e10cSrcweir m_pImpl->m_pTextContourAttrTokenMap.reset( 852*cdf0e10cSrcweir new SvXMLTokenMap( aTextContourAttrTokenMap )); 853*cdf0e10cSrcweir } 854*cdf0e10cSrcweir return *m_pImpl->m_pTextContourAttrTokenMap; 855*cdf0e10cSrcweir } 856*cdf0e10cSrcweir 857*cdf0e10cSrcweir const SvXMLTokenMap& XMLTextImportHelper::GetTextHyperlinkAttrTokenMap() 858*cdf0e10cSrcweir { 859*cdf0e10cSrcweir if (!m_pImpl->m_pTextHyperlinkAttrTokenMap.get()) 860*cdf0e10cSrcweir { 861*cdf0e10cSrcweir m_pImpl->m_pTextHyperlinkAttrTokenMap.reset( 862*cdf0e10cSrcweir new SvXMLTokenMap( aTextHyperlinkAttrTokenMap )); 863*cdf0e10cSrcweir } 864*cdf0e10cSrcweir return *m_pImpl->m_pTextHyperlinkAttrTokenMap; 865*cdf0e10cSrcweir } 866*cdf0e10cSrcweir 867*cdf0e10cSrcweir const SvXMLTokenMap& XMLTextImportHelper::GetTextMasterPageElemTokenMap() 868*cdf0e10cSrcweir { 869*cdf0e10cSrcweir if (!m_pImpl->m_pTextMasterPageElemTokenMap.get()) 870*cdf0e10cSrcweir { 871*cdf0e10cSrcweir m_pImpl->m_pTextMasterPageElemTokenMap.reset( 872*cdf0e10cSrcweir new SvXMLTokenMap( aTextMasterPageElemTokenMap )); 873*cdf0e10cSrcweir } 874*cdf0e10cSrcweir return *m_pImpl->m_pTextMasterPageElemTokenMap; 875*cdf0e10cSrcweir } 876*cdf0e10cSrcweir 877*cdf0e10cSrcweir const SvXMLTokenMap& XMLTextImportHelper::GetTextFieldAttrTokenMap() 878*cdf0e10cSrcweir { 879*cdf0e10cSrcweir if (!m_pImpl->m_pTextFieldAttrTokenMap.get()) 880*cdf0e10cSrcweir { 881*cdf0e10cSrcweir m_pImpl->m_pTextFieldAttrTokenMap.reset( 882*cdf0e10cSrcweir new SvXMLTokenMap( aTextFieldAttrTokenMap )); 883*cdf0e10cSrcweir } 884*cdf0e10cSrcweir return *m_pImpl->m_pTextFieldAttrTokenMap; 885*cdf0e10cSrcweir } 886*cdf0e10cSrcweir 887*cdf0e10cSrcweir 888*cdf0e10cSrcweir namespace 889*cdf0e10cSrcweir { 890*cdf0e10cSrcweir class FieldParamImporter 891*cdf0e10cSrcweir { 892*cdf0e10cSrcweir public: 893*cdf0e10cSrcweir typedef pair<OUString,OUString> field_param_t; 894*cdf0e10cSrcweir typedef vector<field_param_t> field_params_t; 895*cdf0e10cSrcweir FieldParamImporter(const field_params_t* const pInParams, Reference<XNameContainer> xOutParams) 896*cdf0e10cSrcweir : m_pInParams(pInParams) 897*cdf0e10cSrcweir , m_xOutParams(xOutParams) 898*cdf0e10cSrcweir { }; 899*cdf0e10cSrcweir void Import(); 900*cdf0e10cSrcweir 901*cdf0e10cSrcweir private: 902*cdf0e10cSrcweir const field_params_t* const m_pInParams; 903*cdf0e10cSrcweir Reference<XNameContainer> m_xOutParams; 904*cdf0e10cSrcweir }; 905*cdf0e10cSrcweir 906*cdf0e10cSrcweir void FieldParamImporter::Import() 907*cdf0e10cSrcweir { 908*cdf0e10cSrcweir ::std::vector<OUString> vListEntries; 909*cdf0e10cSrcweir ::std::map<OUString, Any> vOutParams; 910*cdf0e10cSrcweir for(field_params_t::const_iterator pCurrent = m_pInParams->begin(); 911*cdf0e10cSrcweir pCurrent != m_pInParams->end(); 912*cdf0e10cSrcweir ++pCurrent) 913*cdf0e10cSrcweir { 914*cdf0e10cSrcweir if(pCurrent->first.equalsAscii(ODF_FORMDROPDOWN_RESULT)) 915*cdf0e10cSrcweir { 916*cdf0e10cSrcweir // sal_Int32 917*cdf0e10cSrcweir vOutParams[pCurrent->first] = makeAny(pCurrent->second.toInt32()); 918*cdf0e10cSrcweir } 919*cdf0e10cSrcweir else if(pCurrent->first.equalsAscii(ODF_FORMCHECKBOX_RESULT)) 920*cdf0e10cSrcweir { 921*cdf0e10cSrcweir // bool 922*cdf0e10cSrcweir vOutParams[pCurrent->first] = makeAny(pCurrent->second.toBoolean()); 923*cdf0e10cSrcweir } 924*cdf0e10cSrcweir else if(pCurrent->first.equalsAscii(ODF_FORMDROPDOWN_LISTENTRY)) 925*cdf0e10cSrcweir { 926*cdf0e10cSrcweir // sequence 927*cdf0e10cSrcweir vListEntries.push_back(pCurrent->second); 928*cdf0e10cSrcweir } 929*cdf0e10cSrcweir else 930*cdf0e10cSrcweir vOutParams[pCurrent->first] = makeAny(pCurrent->second); 931*cdf0e10cSrcweir } 932*cdf0e10cSrcweir if(!vListEntries.empty()) 933*cdf0e10cSrcweir { 934*cdf0e10cSrcweir Sequence<OUString> vListEntriesSeq(vListEntries.size()); 935*cdf0e10cSrcweir copy(vListEntries.begin(), vListEntries.end(), ::comphelper::stl_begin(vListEntriesSeq)); 936*cdf0e10cSrcweir vOutParams[OUString::createFromAscii(ODF_FORMDROPDOWN_LISTENTRY)] = makeAny(vListEntriesSeq); 937*cdf0e10cSrcweir } 938*cdf0e10cSrcweir for(::std::map<OUString, Any>::const_iterator pCurrent = vOutParams.begin(); 939*cdf0e10cSrcweir pCurrent != vOutParams.end(); 940*cdf0e10cSrcweir ++pCurrent) 941*cdf0e10cSrcweir { 942*cdf0e10cSrcweir try 943*cdf0e10cSrcweir { 944*cdf0e10cSrcweir m_xOutParams->insertByName(pCurrent->first, pCurrent->second); 945*cdf0e10cSrcweir } 946*cdf0e10cSrcweir catch(ElementExistException) 947*cdf0e10cSrcweir { } 948*cdf0e10cSrcweir } 949*cdf0e10cSrcweir } 950*cdf0e10cSrcweir } 951*cdf0e10cSrcweir 952*cdf0e10cSrcweir XMLTextImportHelper::XMLTextImportHelper( 953*cdf0e10cSrcweir uno::Reference<frame::XModel> const& rModel, 954*cdf0e10cSrcweir SvXMLImport& rImport, 955*cdf0e10cSrcweir bool const bInsertMode, bool const bStylesOnlyMode, 956*cdf0e10cSrcweir bool const bProgress, bool const bBlockMode, 957*cdf0e10cSrcweir bool const bOrganizerMode) 958*cdf0e10cSrcweir : m_pImpl( new Impl(rModel, rImport, bInsertMode, bStylesOnlyMode, 959*cdf0e10cSrcweir bProgress, bBlockMode, bOrganizerMode) ) 960*cdf0e10cSrcweir , m_pBackpatcherImpl( MakeBackpatcherImpl() ) 961*cdf0e10cSrcweir { 962*cdf0e10cSrcweir static ::rtl::OUString s_PropNameDefaultListId( 963*cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM("DefaultListId")); 964*cdf0e10cSrcweir 965*cdf0e10cSrcweir Reference< XChapterNumberingSupplier > xCNSupplier( rModel, UNO_QUERY ); 966*cdf0e10cSrcweir 967*cdf0e10cSrcweir if( xCNSupplier.is() ) 968*cdf0e10cSrcweir { 969*cdf0e10cSrcweir m_pImpl->m_xChapterNumbering = xCNSupplier->getChapterNumberingRules(); 970*cdf0e10cSrcweir // --> OD 2008-05-15 #refactorlists# 971*cdf0e10cSrcweir if (m_pImpl->m_xChapterNumbering.is()) 972*cdf0e10cSrcweir { 973*cdf0e10cSrcweir Reference< XPropertySet > const xNumRuleProps( 974*cdf0e10cSrcweir m_pImpl->m_xChapterNumbering, UNO_QUERY); 975*cdf0e10cSrcweir if ( xNumRuleProps.is() ) 976*cdf0e10cSrcweir { 977*cdf0e10cSrcweir Reference< XPropertySetInfo > xNumRulePropSetInfo( 978*cdf0e10cSrcweir xNumRuleProps->getPropertySetInfo()); 979*cdf0e10cSrcweir if (xNumRulePropSetInfo.is() && 980*cdf0e10cSrcweir xNumRulePropSetInfo->hasPropertyByName( 981*cdf0e10cSrcweir s_PropNameDefaultListId)) 982*cdf0e10cSrcweir { 983*cdf0e10cSrcweir ::rtl::OUString sListId; 984*cdf0e10cSrcweir xNumRuleProps->getPropertyValue(s_PropNameDefaultListId) 985*cdf0e10cSrcweir >>= sListId; 986*cdf0e10cSrcweir DBG_ASSERT( sListId.getLength() != 0, 987*cdf0e10cSrcweir "no default list id found at chapter numbering rules instance. Serious defect -> please inform OD." ); 988*cdf0e10cSrcweir if ( sListId.getLength() ) 989*cdf0e10cSrcweir { 990*cdf0e10cSrcweir Reference< XNamed > const xChapterNumNamed( 991*cdf0e10cSrcweir m_pImpl->m_xChapterNumbering, UNO_QUERY); 992*cdf0e10cSrcweir if ( xChapterNumNamed.is() ) 993*cdf0e10cSrcweir { 994*cdf0e10cSrcweir m_pImpl->m_pTextListsHelper->KeepListAsProcessed( 995*cdf0e10cSrcweir sListId, 996*cdf0e10cSrcweir xChapterNumNamed->getName(), 997*cdf0e10cSrcweir ::rtl::OUString() ); 998*cdf0e10cSrcweir } 999*cdf0e10cSrcweir } 1000*cdf0e10cSrcweir } 1001*cdf0e10cSrcweir } 1002*cdf0e10cSrcweir } 1003*cdf0e10cSrcweir // <-- 1004*cdf0e10cSrcweir } 1005*cdf0e10cSrcweir 1006*cdf0e10cSrcweir Reference< XStyleFamiliesSupplier > xFamiliesSupp( rModel, UNO_QUERY ); 1007*cdf0e10cSrcweir // DBG_ASSERT( xFamiliesSupp.is(), "no chapter numbering supplier" ); for clipboard there may be documents without styles 1008*cdf0e10cSrcweir 1009*cdf0e10cSrcweir if( xFamiliesSupp.is() ) 1010*cdf0e10cSrcweir { 1011*cdf0e10cSrcweir Reference< XNameAccess > xFamilies(xFamiliesSupp->getStyleFamilies()); 1012*cdf0e10cSrcweir 1013*cdf0e10cSrcweir const OUString aParaStyles(RTL_CONSTASCII_USTRINGPARAM("ParagraphStyles")); 1014*cdf0e10cSrcweir if( xFamilies->hasByName( aParaStyles ) ) 1015*cdf0e10cSrcweir { 1016*cdf0e10cSrcweir m_pImpl->m_xParaStyles.set(xFamilies->getByName(aParaStyles), 1017*cdf0e10cSrcweir UNO_QUERY); 1018*cdf0e10cSrcweir } 1019*cdf0e10cSrcweir 1020*cdf0e10cSrcweir const OUString aCharStyles(RTL_CONSTASCII_USTRINGPARAM("CharacterStyles")); 1021*cdf0e10cSrcweir if( xFamilies->hasByName( aCharStyles ) ) 1022*cdf0e10cSrcweir { 1023*cdf0e10cSrcweir m_pImpl->m_xTextStyles.set(xFamilies->getByName(aCharStyles), 1024*cdf0e10cSrcweir UNO_QUERY); 1025*cdf0e10cSrcweir } 1026*cdf0e10cSrcweir 1027*cdf0e10cSrcweir const OUString aNumStyles(RTL_CONSTASCII_USTRINGPARAM("NumberingStyles")); 1028*cdf0e10cSrcweir if( xFamilies->hasByName( aNumStyles ) ) 1029*cdf0e10cSrcweir { 1030*cdf0e10cSrcweir m_pImpl->m_xNumStyles.set(xFamilies->getByName(aNumStyles), 1031*cdf0e10cSrcweir UNO_QUERY); 1032*cdf0e10cSrcweir } 1033*cdf0e10cSrcweir 1034*cdf0e10cSrcweir const OUString aFrameStyles(RTL_CONSTASCII_USTRINGPARAM("FrameStyles")); 1035*cdf0e10cSrcweir if( xFamilies->hasByName( aFrameStyles ) ) 1036*cdf0e10cSrcweir { 1037*cdf0e10cSrcweir m_pImpl->m_xFrameStyles.set(xFamilies->getByName(aFrameStyles), 1038*cdf0e10cSrcweir UNO_QUERY); 1039*cdf0e10cSrcweir } 1040*cdf0e10cSrcweir 1041*cdf0e10cSrcweir const OUString aPageStyles(RTL_CONSTASCII_USTRINGPARAM("PageStyles")); 1042*cdf0e10cSrcweir if( xFamilies->hasByName( aPageStyles ) ) 1043*cdf0e10cSrcweir { 1044*cdf0e10cSrcweir m_pImpl->m_xPageStyles.set(xFamilies->getByName(aPageStyles), 1045*cdf0e10cSrcweir UNO_QUERY); 1046*cdf0e10cSrcweir } 1047*cdf0e10cSrcweir } 1048*cdf0e10cSrcweir 1049*cdf0e10cSrcweir Reference < XTextFramesSupplier > xTFS( rModel, UNO_QUERY ); 1050*cdf0e10cSrcweir if( xTFS.is() ) 1051*cdf0e10cSrcweir { 1052*cdf0e10cSrcweir m_pImpl->m_xTextFrames.set(xTFS->getTextFrames()); 1053*cdf0e10cSrcweir } 1054*cdf0e10cSrcweir 1055*cdf0e10cSrcweir Reference < XTextGraphicObjectsSupplier > xTGOS( rModel, UNO_QUERY ); 1056*cdf0e10cSrcweir if( xTGOS.is() ) 1057*cdf0e10cSrcweir { 1058*cdf0e10cSrcweir m_pImpl->m_xGraphics.set(xTGOS->getGraphicObjects()); 1059*cdf0e10cSrcweir } 1060*cdf0e10cSrcweir 1061*cdf0e10cSrcweir Reference < XTextEmbeddedObjectsSupplier > xTEOS( rModel, UNO_QUERY ); 1062*cdf0e10cSrcweir if( xTEOS.is() ) 1063*cdf0e10cSrcweir { 1064*cdf0e10cSrcweir m_pImpl->m_xObjects.set(xTEOS->getEmbeddedObjects()); 1065*cdf0e10cSrcweir } 1066*cdf0e10cSrcweir 1067*cdf0e10cSrcweir XMLPropertySetMapper *pPropMapper = 1068*cdf0e10cSrcweir new XMLTextPropertySetMapper( TEXT_PROP_MAP_PARA ); 1069*cdf0e10cSrcweir m_pImpl->m_xParaImpPrMap = 1070*cdf0e10cSrcweir new XMLTextImportPropertyMapper( pPropMapper, rImport ); 1071*cdf0e10cSrcweir 1072*cdf0e10cSrcweir pPropMapper = new XMLTextPropertySetMapper( TEXT_PROP_MAP_TEXT ); 1073*cdf0e10cSrcweir m_pImpl->m_xTextImpPrMap = 1074*cdf0e10cSrcweir new XMLTextImportPropertyMapper( pPropMapper, rImport ); 1075*cdf0e10cSrcweir 1076*cdf0e10cSrcweir pPropMapper = new XMLTextPropertySetMapper( TEXT_PROP_MAP_FRAME ); 1077*cdf0e10cSrcweir m_pImpl->m_xFrameImpPrMap = 1078*cdf0e10cSrcweir new XMLTextImportPropertyMapper( pPropMapper, rImport ); 1079*cdf0e10cSrcweir 1080*cdf0e10cSrcweir pPropMapper = new XMLTextPropertySetMapper( TEXT_PROP_MAP_SECTION ); 1081*cdf0e10cSrcweir m_pImpl->m_xSectionImpPrMap = 1082*cdf0e10cSrcweir new XMLTextImportPropertyMapper( pPropMapper, rImport ); 1083*cdf0e10cSrcweir 1084*cdf0e10cSrcweir pPropMapper = new XMLTextPropertySetMapper( TEXT_PROP_MAP_RUBY ); 1085*cdf0e10cSrcweir m_pImpl->m_xRubyImpPrMap = 1086*cdf0e10cSrcweir new SvXMLImportPropertyMapper( pPropMapper, rImport ); 1087*cdf0e10cSrcweir } 1088*cdf0e10cSrcweir 1089*cdf0e10cSrcweir XMLTextImportHelper::~XMLTextImportHelper() 1090*cdf0e10cSrcweir { 1091*cdf0e10cSrcweir } 1092*cdf0e10cSrcweir 1093*cdf0e10cSrcweir SvXMLImportPropertyMapper *XMLTextImportHelper::CreateShapeExtPropMapper(SvXMLImport& rImport) 1094*cdf0e10cSrcweir { 1095*cdf0e10cSrcweir XMLPropertySetMapper *pPropMapper = 1096*cdf0e10cSrcweir new XMLTextPropertySetMapper( TEXT_PROP_MAP_FRAME ); 1097*cdf0e10cSrcweir return new XMLTextImportPropertyMapper( pPropMapper, rImport, 1098*cdf0e10cSrcweir const_cast<XMLFontStylesContext*>(rImport.GetFontDecls()) ); 1099*cdf0e10cSrcweir } 1100*cdf0e10cSrcweir 1101*cdf0e10cSrcweir SvXMLImportPropertyMapper *XMLTextImportHelper::CreateCharExtPropMapper(SvXMLImport& rImport, XMLFontStylesContext *pFontDecls) 1102*cdf0e10cSrcweir { 1103*cdf0e10cSrcweir XMLPropertySetMapper *pPropMapper = 1104*cdf0e10cSrcweir new XMLTextPropertySetMapper( TEXT_PROP_MAP_TEXT ); 1105*cdf0e10cSrcweir if (!pFontDecls) 1106*cdf0e10cSrcweir pFontDecls = const_cast<XMLFontStylesContext*>(rImport.GetFontDecls()); 1107*cdf0e10cSrcweir return new XMLTextImportPropertyMapper( pPropMapper, rImport, pFontDecls ); 1108*cdf0e10cSrcweir } 1109*cdf0e10cSrcweir 1110*cdf0e10cSrcweir SvXMLImportPropertyMapper *XMLTextImportHelper::CreateParaExtPropMapper(SvXMLImport& rImport, XMLFontStylesContext *pFontDecls) 1111*cdf0e10cSrcweir { 1112*cdf0e10cSrcweir XMLPropertySetMapper *pPropMapper = 1113*cdf0e10cSrcweir new XMLTextPropertySetMapper( TEXT_PROP_MAP_SHAPE_PARA ); 1114*cdf0e10cSrcweir if (!pFontDecls) 1115*cdf0e10cSrcweir pFontDecls = const_cast<XMLFontStylesContext*>(rImport.GetFontDecls()); 1116*cdf0e10cSrcweir return new XMLTextImportPropertyMapper( pPropMapper, rImport, pFontDecls ); 1117*cdf0e10cSrcweir } 1118*cdf0e10cSrcweir 1119*cdf0e10cSrcweir SvXMLImportPropertyMapper *XMLTextImportHelper::CreateParaDefaultExtPropMapper(SvXMLImport& rImport, XMLFontStylesContext* pFontDecls) 1120*cdf0e10cSrcweir { 1121*cdf0e10cSrcweir if (!pFontDecls) 1122*cdf0e10cSrcweir pFontDecls = const_cast<XMLFontStylesContext*>(rImport.GetFontDecls()); 1123*cdf0e10cSrcweir 1124*cdf0e10cSrcweir XMLPropertySetMapper* pPropMapper = 1125*cdf0e10cSrcweir new XMLTextPropertySetMapper( TEXT_PROP_MAP_SHAPE_PARA ); 1126*cdf0e10cSrcweir SvXMLImportPropertyMapper* pImportMapper = new XMLTextImportPropertyMapper( pPropMapper, rImport, pFontDecls ); 1127*cdf0e10cSrcweir 1128*cdf0e10cSrcweir pPropMapper = 1129*cdf0e10cSrcweir new XMLTextPropertySetMapper( TEXT_PROP_MAP_TEXT_ADDITIONAL_DEFAULTS ); 1130*cdf0e10cSrcweir pImportMapper->ChainImportMapper( new XMLTextImportPropertyMapper( pPropMapper, rImport, pFontDecls ) ); 1131*cdf0e10cSrcweir 1132*cdf0e10cSrcweir return pImportMapper; 1133*cdf0e10cSrcweir } 1134*cdf0e10cSrcweir 1135*cdf0e10cSrcweir SvXMLImportPropertyMapper* 1136*cdf0e10cSrcweir XMLTextImportHelper::CreateTableDefaultExtPropMapper( 1137*cdf0e10cSrcweir SvXMLImport& rImport, 1138*cdf0e10cSrcweir XMLFontStylesContext* ) 1139*cdf0e10cSrcweir { 1140*cdf0e10cSrcweir XMLPropertySetMapper *pPropMapper = 1141*cdf0e10cSrcweir new XMLTextPropertySetMapper( TEXT_PROP_MAP_TABLE_DEFAULTS ); 1142*cdf0e10cSrcweir return new SvXMLImportPropertyMapper( pPropMapper, rImport ); 1143*cdf0e10cSrcweir } 1144*cdf0e10cSrcweir 1145*cdf0e10cSrcweir SvXMLImportPropertyMapper* 1146*cdf0e10cSrcweir XMLTextImportHelper::CreateTableRowDefaultExtPropMapper( 1147*cdf0e10cSrcweir SvXMLImport& rImport, 1148*cdf0e10cSrcweir XMLFontStylesContext* ) 1149*cdf0e10cSrcweir { 1150*cdf0e10cSrcweir XMLPropertySetMapper *pPropMapper = 1151*cdf0e10cSrcweir new XMLTextPropertySetMapper( TEXT_PROP_MAP_TABLE_ROW_DEFAULTS ); 1152*cdf0e10cSrcweir return new SvXMLImportPropertyMapper( pPropMapper, rImport ); 1153*cdf0e10cSrcweir } 1154*cdf0e10cSrcweir 1155*cdf0e10cSrcweir void XMLTextImportHelper::SetCursor( const Reference < XTextCursor > & rCursor ) 1156*cdf0e10cSrcweir { 1157*cdf0e10cSrcweir m_pImpl->m_xCursor.set(rCursor); 1158*cdf0e10cSrcweir m_pImpl->m_xText.set(rCursor->getText()); 1159*cdf0e10cSrcweir m_pImpl->m_xCursorAsRange.set( rCursor, UNO_QUERY ); 1160*cdf0e10cSrcweir } 1161*cdf0e10cSrcweir 1162*cdf0e10cSrcweir void XMLTextImportHelper::ResetCursor() 1163*cdf0e10cSrcweir { 1164*cdf0e10cSrcweir m_pImpl->m_xCursor.set(0); 1165*cdf0e10cSrcweir m_pImpl->m_xText.set(0); 1166*cdf0e10cSrcweir m_pImpl->m_xCursorAsRange.set(0); 1167*cdf0e10cSrcweir } 1168*cdf0e10cSrcweir 1169*cdf0e10cSrcweir 1170*cdf0e10cSrcweir sal_Bool XMLTextImportHelper::HasFrameByName( const OUString& rName ) const 1171*cdf0e10cSrcweir { 1172*cdf0e10cSrcweir return (m_pImpl->m_xTextFrames.is() && 1173*cdf0e10cSrcweir m_pImpl->m_xTextFrames->hasByName(rName)) 1174*cdf0e10cSrcweir || (m_pImpl->m_xGraphics.is() && 1175*cdf0e10cSrcweir m_pImpl->m_xGraphics->hasByName(rName)) 1176*cdf0e10cSrcweir || (m_pImpl->m_xObjects.is() && 1177*cdf0e10cSrcweir m_pImpl->m_xObjects->hasByName(rName)); 1178*cdf0e10cSrcweir } 1179*cdf0e10cSrcweir 1180*cdf0e10cSrcweir void XMLTextImportHelper::InsertString( const OUString& rChars ) 1181*cdf0e10cSrcweir { 1182*cdf0e10cSrcweir DBG_ASSERT(m_pImpl->m_xText.is(), "no text"); 1183*cdf0e10cSrcweir DBG_ASSERT(m_pImpl->m_xCursorAsRange.is(), "no range"); 1184*cdf0e10cSrcweir if (m_pImpl->m_xText.is()) 1185*cdf0e10cSrcweir { 1186*cdf0e10cSrcweir m_pImpl->m_xText->insertString(m_pImpl->m_xCursorAsRange, 1187*cdf0e10cSrcweir rChars, sal_False); 1188*cdf0e10cSrcweir } 1189*cdf0e10cSrcweir } 1190*cdf0e10cSrcweir 1191*cdf0e10cSrcweir void XMLTextImportHelper::InsertString( const OUString& rChars, 1192*cdf0e10cSrcweir sal_Bool& rIgnoreLeadingSpace ) 1193*cdf0e10cSrcweir { 1194*cdf0e10cSrcweir DBG_ASSERT(m_pImpl->m_xText.is(), "no text"); 1195*cdf0e10cSrcweir DBG_ASSERT(m_pImpl->m_xCursorAsRange.is(), "no range"); 1196*cdf0e10cSrcweir if (m_pImpl->m_xText.is()) 1197*cdf0e10cSrcweir { 1198*cdf0e10cSrcweir sal_Int32 nLen = rChars.getLength(); 1199*cdf0e10cSrcweir OUStringBuffer sChars( nLen ); 1200*cdf0e10cSrcweir 1201*cdf0e10cSrcweir for( sal_Int32 i=0; i < nLen; i++ ) 1202*cdf0e10cSrcweir { 1203*cdf0e10cSrcweir sal_Unicode c = rChars[i]; 1204*cdf0e10cSrcweir switch( c ) 1205*cdf0e10cSrcweir { 1206*cdf0e10cSrcweir case 0x20: 1207*cdf0e10cSrcweir case 0x09: 1208*cdf0e10cSrcweir case 0x0a: 1209*cdf0e10cSrcweir case 0x0d: 1210*cdf0e10cSrcweir if( !rIgnoreLeadingSpace ) 1211*cdf0e10cSrcweir sChars.append( (sal_Unicode)0x20 ); 1212*cdf0e10cSrcweir rIgnoreLeadingSpace = sal_True; 1213*cdf0e10cSrcweir break; 1214*cdf0e10cSrcweir default: 1215*cdf0e10cSrcweir rIgnoreLeadingSpace = sal_False; 1216*cdf0e10cSrcweir sChars.append( c ); 1217*cdf0e10cSrcweir break; 1218*cdf0e10cSrcweir } 1219*cdf0e10cSrcweir } 1220*cdf0e10cSrcweir m_pImpl->m_xText->insertString(m_pImpl->m_xCursorAsRange, 1221*cdf0e10cSrcweir sChars.makeStringAndClear(), sal_False); 1222*cdf0e10cSrcweir } 1223*cdf0e10cSrcweir } 1224*cdf0e10cSrcweir 1225*cdf0e10cSrcweir void XMLTextImportHelper::InsertControlCharacter( sal_Int16 nControl ) 1226*cdf0e10cSrcweir { 1227*cdf0e10cSrcweir DBG_ASSERT(m_pImpl->m_xText.is(), "no text"); 1228*cdf0e10cSrcweir DBG_ASSERT(m_pImpl->m_xCursorAsRange.is(), "no range"); 1229*cdf0e10cSrcweir if (m_pImpl->m_xText.is()) 1230*cdf0e10cSrcweir { 1231*cdf0e10cSrcweir m_pImpl->m_xText->insertControlCharacter( 1232*cdf0e10cSrcweir m_pImpl->m_xCursorAsRange, nControl, sal_False); 1233*cdf0e10cSrcweir } 1234*cdf0e10cSrcweir } 1235*cdf0e10cSrcweir 1236*cdf0e10cSrcweir void XMLTextImportHelper::InsertTextContent( 1237*cdf0e10cSrcweir Reference < XTextContent > & xContent ) 1238*cdf0e10cSrcweir { 1239*cdf0e10cSrcweir DBG_ASSERT(m_pImpl->m_xText.is(), "no text"); 1240*cdf0e10cSrcweir DBG_ASSERT(m_pImpl->m_xCursorAsRange.is(), "no range"); 1241*cdf0e10cSrcweir if (m_pImpl->m_xText.is()) 1242*cdf0e10cSrcweir { 1243*cdf0e10cSrcweir m_pImpl->m_xText->insertTextContent( 1244*cdf0e10cSrcweir m_pImpl->m_xCursorAsRange, xContent, sal_False); 1245*cdf0e10cSrcweir } 1246*cdf0e10cSrcweir } 1247*cdf0e10cSrcweir 1248*cdf0e10cSrcweir void XMLTextImportHelper::DeleteParagraph() 1249*cdf0e10cSrcweir { 1250*cdf0e10cSrcweir DBG_ASSERT(m_pImpl->m_xText.is(), "no text"); 1251*cdf0e10cSrcweir DBG_ASSERT(m_pImpl->m_xCursor.is(), "no cursor"); 1252*cdf0e10cSrcweir DBG_ASSERT(m_pImpl->m_xCursorAsRange.is(), "no range"); 1253*cdf0e10cSrcweir 1254*cdf0e10cSrcweir sal_Bool bDelete = sal_True; 1255*cdf0e10cSrcweir Reference < XEnumerationAccess > const xEnumAccess( 1256*cdf0e10cSrcweir m_pImpl->m_xCursor, UNO_QUERY); 1257*cdf0e10cSrcweir if( xEnumAccess.is() ) 1258*cdf0e10cSrcweir { 1259*cdf0e10cSrcweir Reference < XEnumeration > xEnum(xEnumAccess->createEnumeration()); 1260*cdf0e10cSrcweir DBG_ASSERT( xEnum->hasMoreElements(), "empty text enumeration" ); 1261*cdf0e10cSrcweir if( xEnum->hasMoreElements() ) 1262*cdf0e10cSrcweir { 1263*cdf0e10cSrcweir Reference < XComponent > xComp( xEnum->nextElement(), UNO_QUERY ); 1264*cdf0e10cSrcweir DBG_ASSERT( xComp.is(), "got no component" ); 1265*cdf0e10cSrcweir if( xComp.is() ) 1266*cdf0e10cSrcweir { 1267*cdf0e10cSrcweir xComp->dispose(); 1268*cdf0e10cSrcweir bDelete = sal_False; 1269*cdf0e10cSrcweir } 1270*cdf0e10cSrcweir } 1271*cdf0e10cSrcweir } 1272*cdf0e10cSrcweir if( bDelete ) 1273*cdf0e10cSrcweir { 1274*cdf0e10cSrcweir if (m_pImpl->m_xCursor->goLeft( 1, sal_True )) 1275*cdf0e10cSrcweir { 1276*cdf0e10cSrcweir OUString sEmpty; 1277*cdf0e10cSrcweir m_pImpl->m_xText->insertString(m_pImpl->m_xCursorAsRange, 1278*cdf0e10cSrcweir sEmpty, sal_True); 1279*cdf0e10cSrcweir } 1280*cdf0e10cSrcweir } 1281*cdf0e10cSrcweir } 1282*cdf0e10cSrcweir 1283*cdf0e10cSrcweir OUString XMLTextImportHelper::ConvertStarFonts( const OUString& rChars, 1284*cdf0e10cSrcweir const OUString& rStyleName, 1285*cdf0e10cSrcweir sal_uInt8& rFlags, 1286*cdf0e10cSrcweir sal_Bool bPara, 1287*cdf0e10cSrcweir SvXMLImport& rImport ) const 1288*cdf0e10cSrcweir { 1289*cdf0e10cSrcweir OUStringBuffer sChars( rChars ); 1290*cdf0e10cSrcweir sal_Bool bConverted = sal_False; 1291*cdf0e10cSrcweir for( sal_Int32 j=0; j<rChars.getLength(); j++ ) 1292*cdf0e10cSrcweir { 1293*cdf0e10cSrcweir sal_Unicode c = rChars[j]; 1294*cdf0e10cSrcweir if( c >= 0xf000 && c <= 0xf0ff ) 1295*cdf0e10cSrcweir { 1296*cdf0e10cSrcweir if( (rFlags & CONV_STAR_FONT_FLAGS_VALID) == 0 ) 1297*cdf0e10cSrcweir { 1298*cdf0e10cSrcweir XMLTextStyleContext *pStyle = 0; 1299*cdf0e10cSrcweir sal_uInt16 nFamily = bPara ? XML_STYLE_FAMILY_TEXT_PARAGRAPH 1300*cdf0e10cSrcweir : XML_STYLE_FAMILY_TEXT_TEXT; 1301*cdf0e10cSrcweir if (rStyleName.getLength() && m_pImpl->m_xAutoStyles.Is()) 1302*cdf0e10cSrcweir { 1303*cdf0e10cSrcweir const SvXMLStyleContext* pTempStyle = 1304*cdf0e10cSrcweir ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)-> 1305*cdf0e10cSrcweir FindStyleChildContext( nFamily, rStyleName, 1306*cdf0e10cSrcweir sal_True ); 1307*cdf0e10cSrcweir pStyle = PTR_CAST( XMLTextStyleContext,pTempStyle); 1308*cdf0e10cSrcweir } 1309*cdf0e10cSrcweir 1310*cdf0e10cSrcweir if( pStyle ) 1311*cdf0e10cSrcweir { 1312*cdf0e10cSrcweir sal_Int32 nCount = pStyle->_GetProperties().size(); 1313*cdf0e10cSrcweir if( nCount ) 1314*cdf0e10cSrcweir { 1315*cdf0e10cSrcweir UniReference < SvXMLImportPropertyMapper > xImpPrMap = 1316*cdf0e10cSrcweir ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles) 1317*cdf0e10cSrcweir ->GetImportPropertyMapper(nFamily); 1318*cdf0e10cSrcweir if( xImpPrMap.is() ) 1319*cdf0e10cSrcweir { 1320*cdf0e10cSrcweir UniReference<XMLPropertySetMapper> rPropMapper = 1321*cdf0e10cSrcweir xImpPrMap->getPropertySetMapper(); 1322*cdf0e10cSrcweir for( sal_Int32 i=0; i < nCount; i++ ) 1323*cdf0e10cSrcweir { 1324*cdf0e10cSrcweir const XMLPropertyState& rProp = pStyle->_GetProperties()[i]; 1325*cdf0e10cSrcweir sal_Int32 nIdx = rProp.mnIndex; 1326*cdf0e10cSrcweir sal_uInt32 nContextId = rPropMapper->GetEntryContextId(nIdx); 1327*cdf0e10cSrcweir if( CTF_FONTFAMILYNAME == nContextId ) 1328*cdf0e10cSrcweir { 1329*cdf0e10cSrcweir rFlags &= ~(CONV_FROM_STAR_BATS|CONV_FROM_STAR_MATH); 1330*cdf0e10cSrcweir OUString sFontName; 1331*cdf0e10cSrcweir rProp.maValue >>= sFontName; 1332*cdf0e10cSrcweir OUString sStarBats( RTL_CONSTASCII_USTRINGPARAM("StarBats" ) ); 1333*cdf0e10cSrcweir OUString sStarMath( RTL_CONSTASCII_USTRINGPARAM("StarMath" ) ); 1334*cdf0e10cSrcweir if( sFontName.equalsIgnoreAsciiCase( sStarBats ) ) 1335*cdf0e10cSrcweir rFlags |= CONV_FROM_STAR_BATS; 1336*cdf0e10cSrcweir else if( sFontName.equalsIgnoreAsciiCase( sStarMath ) ) 1337*cdf0e10cSrcweir rFlags |= CONV_FROM_STAR_MATH; 1338*cdf0e10cSrcweir break; 1339*cdf0e10cSrcweir } 1340*cdf0e10cSrcweir } 1341*cdf0e10cSrcweir } 1342*cdf0e10cSrcweir } 1343*cdf0e10cSrcweir 1344*cdf0e10cSrcweir } 1345*cdf0e10cSrcweir 1346*cdf0e10cSrcweir rFlags |= CONV_STAR_FONT_FLAGS_VALID; 1347*cdf0e10cSrcweir } 1348*cdf0e10cSrcweir if( (rFlags & CONV_FROM_STAR_BATS ) != 0 ) 1349*cdf0e10cSrcweir { 1350*cdf0e10cSrcweir sChars.setCharAt( j, rImport.ConvStarBatsCharToStarSymbol( c ) ); 1351*cdf0e10cSrcweir bConverted = sal_True; 1352*cdf0e10cSrcweir } 1353*cdf0e10cSrcweir else if( (rFlags & CONV_FROM_STAR_MATH ) != 0 ) 1354*cdf0e10cSrcweir { 1355*cdf0e10cSrcweir sChars.setCharAt( j, rImport.ConvStarMathCharToStarSymbol( c ) ); 1356*cdf0e10cSrcweir bConverted = sal_True; 1357*cdf0e10cSrcweir } 1358*cdf0e10cSrcweir } 1359*cdf0e10cSrcweir } 1360*cdf0e10cSrcweir 1361*cdf0e10cSrcweir return bConverted ? sChars.makeStringAndClear() : rChars; 1362*cdf0e10cSrcweir } 1363*cdf0e10cSrcweir 1364*cdf0e10cSrcweir // --> OD 2006-10-12 #i69629# 1365*cdf0e10cSrcweir // helper method to determine, if a paragraph style has a list style (inclusive 1366*cdf0e10cSrcweir // an empty one) inherits a list style (inclusive an empty one) from one of its parents 1367*cdf0e10cSrcweir // --> OD 2007-01-29 #i73973# 1368*cdf0e10cSrcweir // apply special case, that found list style equals the chapter numbering, also 1369*cdf0e10cSrcweir // to the found list styles of the parent styles. 1370*cdf0e10cSrcweir sal_Bool lcl_HasListStyle( OUString sStyleName, 1371*cdf0e10cSrcweir const Reference < XNameContainer >& xParaStyles, 1372*cdf0e10cSrcweir SvXMLImport& rImport, 1373*cdf0e10cSrcweir const OUString& sNumberingStyleName, 1374*cdf0e10cSrcweir const OUString& sOutlineStyleName ) 1375*cdf0e10cSrcweir { 1376*cdf0e10cSrcweir sal_Bool bRet( sal_False ); 1377*cdf0e10cSrcweir 1378*cdf0e10cSrcweir if ( !xParaStyles->hasByName( sStyleName ) ) 1379*cdf0e10cSrcweir { 1380*cdf0e10cSrcweir // error case 1381*cdf0e10cSrcweir return sal_True; 1382*cdf0e10cSrcweir } 1383*cdf0e10cSrcweir 1384*cdf0e10cSrcweir Reference< XPropertyState > xPropState( xParaStyles->getByName( sStyleName ), 1385*cdf0e10cSrcweir UNO_QUERY ); 1386*cdf0e10cSrcweir if ( !xPropState.is() ) 1387*cdf0e10cSrcweir { 1388*cdf0e10cSrcweir // error case 1389*cdf0e10cSrcweir return sal_False; 1390*cdf0e10cSrcweir } 1391*cdf0e10cSrcweir 1392*cdf0e10cSrcweir if ( xPropState->getPropertyState( sNumberingStyleName ) == PropertyState_DIRECT_VALUE ) 1393*cdf0e10cSrcweir { 1394*cdf0e10cSrcweir // list style found 1395*cdf0e10cSrcweir bRet = sal_True; 1396*cdf0e10cSrcweir // special case: the set list style equals the chapter numbering 1397*cdf0e10cSrcweir Reference< XPropertySet > xPropSet( xPropState, UNO_QUERY ); 1398*cdf0e10cSrcweir if ( xPropSet.is() ) 1399*cdf0e10cSrcweir { 1400*cdf0e10cSrcweir OUString sListStyle; 1401*cdf0e10cSrcweir xPropSet->getPropertyValue( sNumberingStyleName ) >>= sListStyle; 1402*cdf0e10cSrcweir if ( sListStyle.getLength() != 0 && 1403*cdf0e10cSrcweir sListStyle == sOutlineStyleName ) 1404*cdf0e10cSrcweir { 1405*cdf0e10cSrcweir bRet = sal_False; 1406*cdf0e10cSrcweir } 1407*cdf0e10cSrcweir } 1408*cdf0e10cSrcweir } 1409*cdf0e10cSrcweir else 1410*cdf0e10cSrcweir { 1411*cdf0e10cSrcweir // --> OD 2007-12-07 #i77708# 1412*cdf0e10cSrcweir sal_Int32 nUPD( 0 ); 1413*cdf0e10cSrcweir sal_Int32 nBuild( 0 ); 1414*cdf0e10cSrcweir // --> OD 2008-03-19 #i86058# 1415*cdf0e10cSrcweir // rImport.getBuildIds( nUPD, nBuild ); 1416*cdf0e10cSrcweir const bool bBuildIdFound = rImport.getBuildIds( nUPD, nBuild ); 1417*cdf0e10cSrcweir // <-- 1418*cdf0e10cSrcweir // <-- 1419*cdf0e10cSrcweir // search list style at parent 1420*cdf0e10cSrcweir Reference<XStyle> xStyle( xPropState, UNO_QUERY ); 1421*cdf0e10cSrcweir while ( xStyle.is() ) 1422*cdf0e10cSrcweir { 1423*cdf0e10cSrcweir OUString aParentStyle( xStyle->getParentStyle() ); 1424*cdf0e10cSrcweir if ( aParentStyle.getLength() > 0 ) 1425*cdf0e10cSrcweir { 1426*cdf0e10cSrcweir aParentStyle = 1427*cdf0e10cSrcweir rImport.GetStyleDisplayName( XML_STYLE_FAMILY_TEXT_PARAGRAPH, 1428*cdf0e10cSrcweir aParentStyle ); 1429*cdf0e10cSrcweir } 1430*cdf0e10cSrcweir if ( aParentStyle.getLength() == 0 || 1431*cdf0e10cSrcweir !xParaStyles->hasByName( aParentStyle ) ) 1432*cdf0e10cSrcweir { 1433*cdf0e10cSrcweir // no list style found 1434*cdf0e10cSrcweir break; 1435*cdf0e10cSrcweir } 1436*cdf0e10cSrcweir else 1437*cdf0e10cSrcweir { 1438*cdf0e10cSrcweir xPropState = Reference< XPropertyState >( 1439*cdf0e10cSrcweir xParaStyles->getByName( aParentStyle ), 1440*cdf0e10cSrcweir UNO_QUERY ); 1441*cdf0e10cSrcweir if ( !xPropState.is() ) 1442*cdf0e10cSrcweir { 1443*cdf0e10cSrcweir // error case 1444*cdf0e10cSrcweir return sal_True; 1445*cdf0e10cSrcweir } 1446*cdf0e10cSrcweir if ( xPropState->getPropertyState( sNumberingStyleName ) == PropertyState_DIRECT_VALUE ) 1447*cdf0e10cSrcweir { 1448*cdf0e10cSrcweir // list style found 1449*cdf0e10cSrcweir bRet = sal_True; 1450*cdf0e10cSrcweir // --> OD 2007-01-29 #i73973# 1451*cdf0e10cSrcweir // special case: the found list style equals the chapter numbering 1452*cdf0e10cSrcweir Reference< XPropertySet > xPropSet( xPropState, UNO_QUERY ); 1453*cdf0e10cSrcweir if ( xPropSet.is() ) 1454*cdf0e10cSrcweir { 1455*cdf0e10cSrcweir OUString sListStyle; 1456*cdf0e10cSrcweir xPropSet->getPropertyValue( sNumberingStyleName ) >>= sListStyle; 1457*cdf0e10cSrcweir if ( sListStyle.getLength() != 0 && 1458*cdf0e10cSrcweir sListStyle == sOutlineStyleName ) 1459*cdf0e10cSrcweir { 1460*cdf0e10cSrcweir bRet = sal_False; 1461*cdf0e10cSrcweir } 1462*cdf0e10cSrcweir // --> OD 2007-12-07 #i77708# 1463*cdf0e10cSrcweir // special handling for text documents from OOo version prior OOo 2.4 1464*cdf0e10cSrcweir // --> OD 2008-03-19 #i86058# 1465*cdf0e10cSrcweir // check explicitly on certain versions and on import of 1466*cdf0e10cSrcweir // text documents in OpenOffice.org file format 1467*cdf0e10cSrcweir else if ( sListStyle.getLength() == 0 && 1468*cdf0e10cSrcweir ( rImport.IsTextDocInOOoFileFormat() || 1469*cdf0e10cSrcweir ( bBuildIdFound && 1470*cdf0e10cSrcweir ( ( nUPD == 641 ) || ( nUPD == 645 ) || // prior OOo 2.0 1471*cdf0e10cSrcweir ( nUPD == 680 && nBuild <= 9238 ) ) ) ) ) // OOo 2.0 - OOo 2.3.1 1472*cdf0e10cSrcweir { 1473*cdf0e10cSrcweir bRet = sal_False; 1474*cdf0e10cSrcweir } 1475*cdf0e10cSrcweir // <-- 1476*cdf0e10cSrcweir } 1477*cdf0e10cSrcweir // <-- 1478*cdf0e10cSrcweir break; 1479*cdf0e10cSrcweir } 1480*cdf0e10cSrcweir else 1481*cdf0e10cSrcweir { 1482*cdf0e10cSrcweir // search list style at parent 1483*cdf0e10cSrcweir xStyle = Reference<XStyle>( xPropState, UNO_QUERY ); 1484*cdf0e10cSrcweir } 1485*cdf0e10cSrcweir } 1486*cdf0e10cSrcweir } 1487*cdf0e10cSrcweir } 1488*cdf0e10cSrcweir 1489*cdf0e10cSrcweir return bRet; 1490*cdf0e10cSrcweir } 1491*cdf0e10cSrcweir // <-- 1492*cdf0e10cSrcweir OUString XMLTextImportHelper::SetStyleAndAttrs( 1493*cdf0e10cSrcweir SvXMLImport& rImport, 1494*cdf0e10cSrcweir const Reference < XTextCursor >& rCursor, 1495*cdf0e10cSrcweir const OUString& rStyleName, 1496*cdf0e10cSrcweir sal_Bool bPara, 1497*cdf0e10cSrcweir sal_Bool bOutlineLevelAttrFound, 1498*cdf0e10cSrcweir sal_Int8 nOutlineLevel, 1499*cdf0e10cSrcweir // --> OD 2007-08-17 #i80724# 1500*cdf0e10cSrcweir sal_Bool bSetListAttrs ) 1501*cdf0e10cSrcweir // <-- 1502*cdf0e10cSrcweir { 1503*cdf0e10cSrcweir static ::rtl::OUString s_ParaStyleName( 1504*cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM("ParaStyleName")); 1505*cdf0e10cSrcweir static ::rtl::OUString s_CharStyleName( 1506*cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM("CharStyleName")); 1507*cdf0e10cSrcweir static ::rtl::OUString s_NumberingRules( 1508*cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM("NumberingRules")); 1509*cdf0e10cSrcweir static ::rtl::OUString s_NumberingIsNumber( 1510*cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM("NumberingIsNumber")); 1511*cdf0e10cSrcweir static ::rtl::OUString s_NumberingLevel( 1512*cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM("NumberingLevel")); 1513*cdf0e10cSrcweir static ::rtl::OUString s_ParaIsNumberingRestart( 1514*cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM("ParaIsNumberingRestart")); 1515*cdf0e10cSrcweir static ::rtl::OUString s_NumberingStartValue( 1516*cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM("NumberingStartValue")); 1517*cdf0e10cSrcweir static ::rtl::OUString s_PropNameListId( 1518*cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM("ListId")); 1519*cdf0e10cSrcweir static ::rtl::OUString s_PageDescName( 1520*cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM("PageDescName")); 1521*cdf0e10cSrcweir static ::rtl::OUString s_ServiceCombinedCharacters( 1522*cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM( 1523*cdf0e10cSrcweir "com.sun.star.text.TextField.CombinedCharacters")); 1524*cdf0e10cSrcweir static ::rtl::OUString s_Content(RTL_CONSTASCII_USTRINGPARAM("Content")); 1525*cdf0e10cSrcweir static ::rtl::OUString s_OutlineLevel( 1526*cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM("OutlineLevel")); 1527*cdf0e10cSrcweir static ::rtl::OUString s_NumberingStyleName( 1528*cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM("NumberingStyleName")); 1529*cdf0e10cSrcweir 1530*cdf0e10cSrcweir const sal_uInt16 nFamily = bPara ? XML_STYLE_FAMILY_TEXT_PARAGRAPH 1531*cdf0e10cSrcweir : XML_STYLE_FAMILY_TEXT_TEXT; 1532*cdf0e10cSrcweir XMLTextStyleContext *pStyle = 0; 1533*cdf0e10cSrcweir OUString sStyleName( rStyleName ); 1534*cdf0e10cSrcweir if (sStyleName.getLength() && m_pImpl->m_xAutoStyles.Is()) 1535*cdf0e10cSrcweir { 1536*cdf0e10cSrcweir const SvXMLStyleContext* pTempStyle = 1537*cdf0e10cSrcweir ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)-> 1538*cdf0e10cSrcweir FindStyleChildContext( nFamily, sStyleName, sal_True ); 1539*cdf0e10cSrcweir pStyle = PTR_CAST( XMLTextStyleContext,pTempStyle); 1540*cdf0e10cSrcweir } 1541*cdf0e10cSrcweir if( pStyle ) 1542*cdf0e10cSrcweir sStyleName = pStyle->GetParentName(); 1543*cdf0e10cSrcweir 1544*cdf0e10cSrcweir Reference < XPropertySet > xPropSet( rCursor, UNO_QUERY ); 1545*cdf0e10cSrcweir Reference< XPropertySetInfo > xPropSetInfo( 1546*cdf0e10cSrcweir xPropSet->getPropertySetInfo()); 1547*cdf0e10cSrcweir 1548*cdf0e10cSrcweir // style 1549*cdf0e10cSrcweir if( sStyleName.getLength() ) 1550*cdf0e10cSrcweir { 1551*cdf0e10cSrcweir sStyleName = rImport.GetStyleDisplayName( nFamily, sStyleName ); 1552*cdf0e10cSrcweir const String& rPropName = (bPara) ? s_ParaStyleName : s_CharStyleName; 1553*cdf0e10cSrcweir const Reference < XNameContainer > & rStyles = (bPara) 1554*cdf0e10cSrcweir ? m_pImpl->m_xParaStyles 1555*cdf0e10cSrcweir : m_pImpl->m_xTextStyles; 1556*cdf0e10cSrcweir if( rStyles.is() && 1557*cdf0e10cSrcweir xPropSetInfo->hasPropertyByName( rPropName ) && 1558*cdf0e10cSrcweir rStyles->hasByName( sStyleName ) ) 1559*cdf0e10cSrcweir { 1560*cdf0e10cSrcweir xPropSet->setPropertyValue( rPropName, makeAny(sStyleName) ); 1561*cdf0e10cSrcweir } 1562*cdf0e10cSrcweir else 1563*cdf0e10cSrcweir sStyleName = OUString(); 1564*cdf0e10cSrcweir } 1565*cdf0e10cSrcweir 1566*cdf0e10cSrcweir // --> OD 2008-09-10 #i70748# 1567*cdf0e10cSrcweir // The outline level needs to be only applied as list level, if the heading 1568*cdf0e10cSrcweir // is not inside a list and if it by default applies the outline style. 1569*cdf0e10cSrcweir bool bApplyOutlineLevelAsListLevel( false ); 1570*cdf0e10cSrcweir // --> OD 2007-08-17 #i80724# 1571*cdf0e10cSrcweir if (bSetListAttrs && bPara 1572*cdf0e10cSrcweir && xPropSetInfo->hasPropertyByName( s_NumberingRules)) 1573*cdf0e10cSrcweir // <-- 1574*cdf0e10cSrcweir { 1575*cdf0e10cSrcweir // Set numbering rules 1576*cdf0e10cSrcweir Reference< XIndexReplace > const xNumRules( 1577*cdf0e10cSrcweir xPropSet->getPropertyValue(s_NumberingRules), UNO_QUERY); 1578*cdf0e10cSrcweir 1579*cdf0e10cSrcweir XMLTextListBlockContext * pListBlock(0); 1580*cdf0e10cSrcweir XMLTextListItemContext * pListItem(0); 1581*cdf0e10cSrcweir XMLNumberedParaContext * pNumberedParagraph(0); 1582*cdf0e10cSrcweir GetTextListHelper().ListContextTop( 1583*cdf0e10cSrcweir pListBlock, pListItem, pNumberedParagraph); 1584*cdf0e10cSrcweir 1585*cdf0e10cSrcweir OSL_ENSURE(!(pListBlock && pNumberedParagraph), "XMLTextImportHelper::" 1586*cdf0e10cSrcweir "SetStyleAndAttrs: both list and numbered-paragraph???"); 1587*cdf0e10cSrcweir 1588*cdf0e10cSrcweir Reference < XIndexReplace > xNewNumRules; 1589*cdf0e10cSrcweir sal_Int8 nLevel(-1); 1590*cdf0e10cSrcweir ::rtl::OUString sListId; 1591*cdf0e10cSrcweir sal_Int16 nStartValue(-1); 1592*cdf0e10cSrcweir bool bNumberingIsNumber(true); 1593*cdf0e10cSrcweir 1594*cdf0e10cSrcweir if (pListBlock) { 1595*cdf0e10cSrcweir 1596*cdf0e10cSrcweir if (!pListItem) { 1597*cdf0e10cSrcweir bNumberingIsNumber = false; // list-header 1598*cdf0e10cSrcweir } 1599*cdf0e10cSrcweir // --> OD 2008-05-08 #refactorlists# 1600*cdf0e10cSrcweir // consider text:style-override property of <text:list-item> 1601*cdf0e10cSrcweir xNewNumRules.set( 1602*cdf0e10cSrcweir (pListItem != 0 && pListItem->HasNumRulesOverride()) 1603*cdf0e10cSrcweir ? pListItem->GetNumRulesOverride() 1604*cdf0e10cSrcweir : pListBlock->GetNumRules() ); 1605*cdf0e10cSrcweir // <-- 1606*cdf0e10cSrcweir nLevel = static_cast<sal_Int8>(pListBlock->GetLevel()); 1607*cdf0e10cSrcweir 1608*cdf0e10cSrcweir if ( pListItem && pListItem->HasStartValue() ) { 1609*cdf0e10cSrcweir nStartValue = pListItem->GetStartValue(); 1610*cdf0e10cSrcweir } 1611*cdf0e10cSrcweir 1612*cdf0e10cSrcweir // --> OD 2008-08-15 #i92811# 1613*cdf0e10cSrcweir sListId = m_pImpl->m_pTextListsHelper->GetListIdForListBlock( 1614*cdf0e10cSrcweir *pListBlock); 1615*cdf0e10cSrcweir // <-- 1616*cdf0e10cSrcweir } 1617*cdf0e10cSrcweir else if (pNumberedParagraph) 1618*cdf0e10cSrcweir { 1619*cdf0e10cSrcweir xNewNumRules.set(pNumberedParagraph->GetNumRules()); 1620*cdf0e10cSrcweir nLevel = static_cast<sal_Int8>(pNumberedParagraph->GetLevel()); 1621*cdf0e10cSrcweir sListId = pNumberedParagraph->GetListId(); 1622*cdf0e10cSrcweir nStartValue = pNumberedParagraph->GetStartValue(); 1623*cdf0e10cSrcweir } 1624*cdf0e10cSrcweir 1625*cdf0e10cSrcweir 1626*cdf0e10cSrcweir if (pListBlock || pNumberedParagraph) 1627*cdf0e10cSrcweir { 1628*cdf0e10cSrcweir // --> OD 2009-08-24 #i101349# 1629*cdf0e10cSrcweir // Assure that list style of automatic paragraph style is applied at paragraph. 1630*cdf0e10cSrcweir sal_Bool bApplyNumRules = pStyle && pStyle->IsListStyleSet(); 1631*cdf0e10cSrcweir if ( !bApplyNumRules ) 1632*cdf0e10cSrcweir { 1633*cdf0e10cSrcweir sal_Bool bSameNumRules = xNewNumRules == xNumRules; 1634*cdf0e10cSrcweir if( !bSameNumRules && xNewNumRules.is() && xNumRules.is() ) 1635*cdf0e10cSrcweir { 1636*cdf0e10cSrcweir // If the interface pointers are different then this does 1637*cdf0e10cSrcweir // not mean that the num rules are different. Further tests 1638*cdf0e10cSrcweir // are required then. However, if only one num rule is 1639*cdf0e10cSrcweir // set, no tests are required of course. 1640*cdf0e10cSrcweir Reference< XNamed > xNewNamed( xNewNumRules, UNO_QUERY ); 1641*cdf0e10cSrcweir Reference< XNamed > xNamed( xNumRules, UNO_QUERY ); 1642*cdf0e10cSrcweir if( xNewNamed.is() && xNamed.is() ) 1643*cdf0e10cSrcweir { 1644*cdf0e10cSrcweir bSameNumRules = xNewNamed->getName() == xNamed->getName(); 1645*cdf0e10cSrcweir } 1646*cdf0e10cSrcweir else 1647*cdf0e10cSrcweir { 1648*cdf0e10cSrcweir Reference< XAnyCompare > xNumRuleCompare( xNumRules, UNO_QUERY ); 1649*cdf0e10cSrcweir if( xNumRuleCompare.is() ) 1650*cdf0e10cSrcweir { 1651*cdf0e10cSrcweir bSameNumRules = (xNumRuleCompare->compare( Any(xNumRules), Any(xNewNumRules) ) == 0); 1652*cdf0e10cSrcweir } 1653*cdf0e10cSrcweir } 1654*cdf0e10cSrcweir } 1655*cdf0e10cSrcweir bApplyNumRules = !bSameNumRules; 1656*cdf0e10cSrcweir } 1657*cdf0e10cSrcweir 1658*cdf0e10cSrcweir if ( bApplyNumRules ) 1659*cdf0e10cSrcweir // <-- 1660*cdf0e10cSrcweir { 1661*cdf0e10cSrcweir // #102607# This may except when xNewNumRules contains 1662*cdf0e10cSrcweir // a Writer-NumRule-Implementation bug gets applied to 1663*cdf0e10cSrcweir // a shape. Since this may occur inside a document 1664*cdf0e10cSrcweir // (e.g. when edited), this must be handled 1665*cdf0e10cSrcweir // gracefully. 1666*cdf0e10cSrcweir try 1667*cdf0e10cSrcweir { 1668*cdf0e10cSrcweir xPropSet->setPropertyValue( 1669*cdf0e10cSrcweir s_NumberingRules, makeAny(xNewNumRules) ); 1670*cdf0e10cSrcweir } 1671*cdf0e10cSrcweir catch( Exception e ) 1672*cdf0e10cSrcweir { 1673*cdf0e10cSrcweir ; // I would really like to use a warning here, 1674*cdf0e10cSrcweir // but I can't access the XMLErrorHandler from 1675*cdf0e10cSrcweir // here. 1676*cdf0e10cSrcweir } 1677*cdf0e10cSrcweir } 1678*cdf0e10cSrcweir 1679*cdf0e10cSrcweir if (!bNumberingIsNumber && 1680*cdf0e10cSrcweir xPropSetInfo->hasPropertyByName(s_NumberingIsNumber)) 1681*cdf0e10cSrcweir { 1682*cdf0e10cSrcweir xPropSet->setPropertyValue(s_NumberingIsNumber, Any(sal_False)); 1683*cdf0e10cSrcweir } 1684*cdf0e10cSrcweir 1685*cdf0e10cSrcweir xPropSet->setPropertyValue( s_NumberingLevel, Any(nLevel) ); 1686*cdf0e10cSrcweir 1687*cdf0e10cSrcweir if( pListBlock && pListBlock->IsRestartNumbering() ) 1688*cdf0e10cSrcweir { 1689*cdf0e10cSrcweir // TODO: property missing 1690*cdf0e10cSrcweir if (xPropSetInfo->hasPropertyByName(s_ParaIsNumberingRestart)) 1691*cdf0e10cSrcweir { 1692*cdf0e10cSrcweir sal_Bool bTmp = sal_True; 1693*cdf0e10cSrcweir xPropSet->setPropertyValue(s_ParaIsNumberingRestart, 1694*cdf0e10cSrcweir makeAny(bTmp) ); 1695*cdf0e10cSrcweir } 1696*cdf0e10cSrcweir pListBlock->ResetRestartNumbering(); 1697*cdf0e10cSrcweir } 1698*cdf0e10cSrcweir 1699*cdf0e10cSrcweir if ( 0 <= nStartValue && 1700*cdf0e10cSrcweir xPropSetInfo->hasPropertyByName(s_NumberingStartValue)) 1701*cdf0e10cSrcweir { 1702*cdf0e10cSrcweir xPropSet->setPropertyValue(s_NumberingStartValue, 1703*cdf0e10cSrcweir makeAny(nStartValue)); 1704*cdf0e10cSrcweir } 1705*cdf0e10cSrcweir 1706*cdf0e10cSrcweir // --> OD 2008-04-23 #refactorlists# 1707*cdf0e10cSrcweir if (xPropSetInfo->hasPropertyByName(s_PropNameListId)) 1708*cdf0e10cSrcweir { 1709*cdf0e10cSrcweir if (sListId.getLength()) { 1710*cdf0e10cSrcweir xPropSet->setPropertyValue(s_PropNameListId, 1711*cdf0e10cSrcweir makeAny(sListId) ); 1712*cdf0e10cSrcweir } 1713*cdf0e10cSrcweir } 1714*cdf0e10cSrcweir // <-- 1715*cdf0e10cSrcweir 1716*cdf0e10cSrcweir GetTextListHelper().SetListItem( (XMLTextListItemContext *)0 ); 1717*cdf0e10cSrcweir } 1718*cdf0e10cSrcweir else 1719*cdf0e10cSrcweir { 1720*cdf0e10cSrcweir // If the paragraph is not in a list but its style, remove it from 1721*cdf0e10cSrcweir // the list. 1722*cdf0e10cSrcweir // --> OD 2005-10-25 #126347# - do not remove it, if the list 1723*cdf0e10cSrcweir // of the style is the chapter numbering rule. 1724*cdf0e10cSrcweir if( xNumRules.is() ) 1725*cdf0e10cSrcweir { 1726*cdf0e10cSrcweir bool bRemove( true ); 1727*cdf0e10cSrcweir // --> OD 2008-12-17 #i70748# - special handling for document from OOo 2.x 1728*cdf0e10cSrcweir sal_Int32 nUPD( 0 ); 1729*cdf0e10cSrcweir sal_Int32 nBuild( 0 ); 1730*cdf0e10cSrcweir const bool bBuildIdFound = rImport.getBuildIds( nUPD, nBuild ); 1731*cdf0e10cSrcweir DBG_ASSERT( ( bBuildIdFound && nUPD == 680 ) || 1732*cdf0e10cSrcweir !pStyle || 1733*cdf0e10cSrcweir !pStyle->IsListStyleSet() || 1734*cdf0e10cSrcweir pStyle->GetListStyle().getLength() == 0, 1735*cdf0e10cSrcweir "automatic paragraph style with list style name, but paragraph not in list???" ); 1736*cdf0e10cSrcweir if ( ( bBuildIdFound && nUPD == 680 ) || 1737*cdf0e10cSrcweir !pStyle || !pStyle->IsListStyleSet() ) 1738*cdf0e10cSrcweir { 1739*cdf0e10cSrcweir if (m_pImpl->m_xChapterNumbering.is()) 1740*cdf0e10cSrcweir { 1741*cdf0e10cSrcweir Reference< XNamed > xNumNamed( xNumRules, UNO_QUERY ); 1742*cdf0e10cSrcweir Reference< XNamed > const xChapterNumNamed ( 1743*cdf0e10cSrcweir m_pImpl->m_xChapterNumbering, UNO_QUERY); 1744*cdf0e10cSrcweir if ( xNumNamed.is() && xChapterNumNamed.is() && 1745*cdf0e10cSrcweir xNumNamed->getName() == xChapterNumNamed->getName() ) 1746*cdf0e10cSrcweir { 1747*cdf0e10cSrcweir bRemove = false; 1748*cdf0e10cSrcweir // --> OD 2008-09-10 #i70748# 1749*cdf0e10cSrcweir bApplyOutlineLevelAsListLevel = true; 1750*cdf0e10cSrcweir // <-- 1751*cdf0e10cSrcweir } 1752*cdf0e10cSrcweir } 1753*cdf0e10cSrcweir } 1754*cdf0e10cSrcweir // <-- 1755*cdf0e10cSrcweir if ( bRemove ) 1756*cdf0e10cSrcweir { 1757*cdf0e10cSrcweir xPropSet->setPropertyValue( s_NumberingRules, Any() ); 1758*cdf0e10cSrcweir } 1759*cdf0e10cSrcweir } 1760*cdf0e10cSrcweir // <-- 1761*cdf0e10cSrcweir } 1762*cdf0e10cSrcweir } 1763*cdf0e10cSrcweir 1764*cdf0e10cSrcweir // hard paragraph properties 1765*cdf0e10cSrcweir if( pStyle ) 1766*cdf0e10cSrcweir { 1767*cdf0e10cSrcweir pStyle->FillPropertySet( xPropSet ); 1768*cdf0e10cSrcweir if( bPara && pStyle->HasMasterPageName() && 1769*cdf0e10cSrcweir xPropSetInfo->hasPropertyByName(s_PageDescName)) 1770*cdf0e10cSrcweir { 1771*cdf0e10cSrcweir OUString sDisplayName( 1772*cdf0e10cSrcweir rImport.GetStyleDisplayName( 1773*cdf0e10cSrcweir XML_STYLE_FAMILY_MASTER_PAGE, 1774*cdf0e10cSrcweir pStyle->GetMasterPageName()) ); 1775*cdf0e10cSrcweir if( !sDisplayName.getLength() || 1776*cdf0e10cSrcweir (m_pImpl->m_xPageStyles.is() && 1777*cdf0e10cSrcweir m_pImpl->m_xPageStyles->hasByName( sDisplayName))) 1778*cdf0e10cSrcweir { 1779*cdf0e10cSrcweir xPropSet->setPropertyValue(s_PageDescName, 1780*cdf0e10cSrcweir makeAny(sDisplayName)); 1781*cdf0e10cSrcweir } 1782*cdf0e10cSrcweir } 1783*cdf0e10cSrcweir if( bPara && pStyle->GetDropCapStyleName().getLength() && 1784*cdf0e10cSrcweir m_pImpl->m_xTextStyles.is()) 1785*cdf0e10cSrcweir { 1786*cdf0e10cSrcweir OUString sDisplayName( 1787*cdf0e10cSrcweir rImport.GetStyleDisplayName( 1788*cdf0e10cSrcweir XML_STYLE_FAMILY_TEXT_TEXT, 1789*cdf0e10cSrcweir pStyle->GetDropCapStyleName()) ); 1790*cdf0e10cSrcweir if (m_pImpl->m_xTextStyles->hasByName(sDisplayName) && 1791*cdf0e10cSrcweir xPropSetInfo->hasPropertyByName( sDisplayName ) ) 1792*cdf0e10cSrcweir { 1793*cdf0e10cSrcweir xPropSet->setPropertyValue( pStyle->sDropCapCharStyleName, makeAny(sDisplayName) ); 1794*cdf0e10cSrcweir } 1795*cdf0e10cSrcweir } 1796*cdf0e10cSrcweir 1797*cdf0e10cSrcweir // combined characters special treatment 1798*cdf0e10cSrcweir if (!bPara && pStyle->HasCombinedCharactersLetter()) 1799*cdf0e10cSrcweir { 1800*cdf0e10cSrcweir // insert combined characters text field 1801*cdf0e10cSrcweir if (m_pImpl->m_xServiceFactory.is()) 1802*cdf0e10cSrcweir { 1803*cdf0e10cSrcweir uno::Reference<beans::XPropertySet> const xTmp( 1804*cdf0e10cSrcweir m_pImpl->m_xServiceFactory->createInstance( 1805*cdf0e10cSrcweir s_ServiceCombinedCharacters), UNO_QUERY); 1806*cdf0e10cSrcweir if( xTmp.is() ) 1807*cdf0e10cSrcweir { 1808*cdf0e10cSrcweir // fix cursor if larger than possible for 1809*cdf0e10cSrcweir // combined characters field 1810*cdf0e10cSrcweir if (rCursor->getString().getLength() > 1811*cdf0e10cSrcweir MAX_COMBINED_CHARACTERS) 1812*cdf0e10cSrcweir { 1813*cdf0e10cSrcweir rCursor->gotoRange(rCursor->getStart(), sal_False); 1814*cdf0e10cSrcweir rCursor->goRight(MAX_COMBINED_CHARACTERS, sal_True); 1815*cdf0e10cSrcweir } 1816*cdf0e10cSrcweir 1817*cdf0e10cSrcweir // set field value (the combined character string) 1818*cdf0e10cSrcweir xTmp->setPropertyValue(s_Content, 1819*cdf0e10cSrcweir makeAny(rCursor->getString())); 1820*cdf0e10cSrcweir 1821*cdf0e10cSrcweir // insert the field over it's original text 1822*cdf0e10cSrcweir Reference<XTextRange> xRange(rCursor, UNO_QUERY); 1823*cdf0e10cSrcweir Reference<XTextContent> xTextContent(xTmp, UNO_QUERY); 1824*cdf0e10cSrcweir if (m_pImpl->m_xText.is() && xRange.is()) 1825*cdf0e10cSrcweir { 1826*cdf0e10cSrcweir // #i107225# the combined characters need to be inserted first 1827*cdf0e10cSrcweir // the selected text has to be removed afterwards 1828*cdf0e10cSrcweir m_pImpl->m_xText->insertTextContent( xRange->getStart(), xTextContent, sal_True ); 1829*cdf0e10cSrcweir 1830*cdf0e10cSrcweir if( xRange->getString().getLength() ) 1831*cdf0e10cSrcweir { 1832*cdf0e10cSrcweir try 1833*cdf0e10cSrcweir { 1834*cdf0e10cSrcweir uno::Reference< text::XTextCursor > xCrsr = xRange->getText()->createTextCursorByRange( xRange->getStart() ); 1835*cdf0e10cSrcweir xCrsr->goLeft( 1, true ); 1836*cdf0e10cSrcweir uno::Reference< beans::XPropertySet> xCrsrProperties( xCrsr, uno::UNO_QUERY_THROW ); 1837*cdf0e10cSrcweir //the hard properties of the removed text need to be applied to the combined characters field 1838*cdf0e10cSrcweir pStyle->FillPropertySet( xCrsrProperties ); 1839*cdf0e10cSrcweir xCrsr->collapseToEnd(); 1840*cdf0e10cSrcweir xCrsr->gotoRange( xRange->getEnd(), true ); 1841*cdf0e10cSrcweir xCrsr->setString( ::rtl::OUString() ); 1842*cdf0e10cSrcweir } 1843*cdf0e10cSrcweir catch( const uno::Exception& rEx ) 1844*cdf0e10cSrcweir { 1845*cdf0e10cSrcweir (void)rEx; 1846*cdf0e10cSrcweir } 1847*cdf0e10cSrcweir } 1848*cdf0e10cSrcweir } 1849*cdf0e10cSrcweir } 1850*cdf0e10cSrcweir } 1851*cdf0e10cSrcweir } 1852*cdf0e10cSrcweir } 1853*cdf0e10cSrcweir 1854*cdf0e10cSrcweir // outline level; set after list style has been set 1855*cdf0e10cSrcweir // --> OD 2005-08-25 #i53198# 1856*cdf0e10cSrcweir // Complete re-worked and corrected: 1857*cdf0e10cSrcweir // - set outline level at paragraph 1858*cdf0e10cSrcweir // - set numbering level at paragraph, if none is already set 1859*cdf0e10cSrcweir // - assure that style is marked as an outline style for the corresponding 1860*cdf0e10cSrcweir // outline level. 1861*cdf0e10cSrcweir // - DO NOT set type of numbering rule to outline. 1862*cdf0e10cSrcweir // - DO NOT set numbering rule directly at the paragraph. 1863*cdf0e10cSrcweir 1864*cdf0e10cSrcweir // --> OD 2008-12-09 #i70748# 1865*cdf0e10cSrcweir // Some minor rework and adjust access to paragraph styles 1866*cdf0e10cSrcweir if ( bPara ) 1867*cdf0e10cSrcweir { 1868*cdf0e10cSrcweir // --> OD 2009-08-18 #i103817# 1869*cdf0e10cSrcweir sal_Int16 nCurrentOutlineLevelInheritedFromParagraphStyle = 0; 1870*cdf0e10cSrcweir const bool bHasOutlineLevelProp( 1871*cdf0e10cSrcweir xPropSetInfo->hasPropertyByName(s_OutlineLevel)); 1872*cdf0e10cSrcweir if ( bHasOutlineLevelProp ) 1873*cdf0e10cSrcweir { 1874*cdf0e10cSrcweir xPropSet->getPropertyValue(s_OutlineLevel) 1875*cdf0e10cSrcweir >>= nCurrentOutlineLevelInheritedFromParagraphStyle; 1876*cdf0e10cSrcweir } 1877*cdf0e10cSrcweir // <-- 1878*cdf0e10cSrcweir //if ( bPara && nOutlineLevel != -1 ) //#outline level,removed by zhaojianwei 1879*cdf0e10cSrcweir if ( nOutlineLevel > 0 ) //add by zhaojianwei 1880*cdf0e10cSrcweir { 1881*cdf0e10cSrcweir //#outline level,removed by zhaojianwei 1882*cdf0e10cSrcweir if ( bHasOutlineLevelProp ) 1883*cdf0e10cSrcweir { 1884*cdf0e10cSrcweir // In case that the value equals the value of its paragraph style 1885*cdf0e10cSrcweir // attribute outline level, the paragraph attribute value is left unset 1886*cdf0e10cSrcweir if ( nCurrentOutlineLevelInheritedFromParagraphStyle != nOutlineLevel ) 1887*cdf0e10cSrcweir { 1888*cdf0e10cSrcweir xPropSet->setPropertyValue( s_OutlineLevel, 1889*cdf0e10cSrcweir makeAny( static_cast<sal_Int16>(nOutlineLevel) ) ); 1890*cdf0e10cSrcweir } 1891*cdf0e10cSrcweir }//<-end,zhaojianwei 1892*cdf0e10cSrcweir 1893*cdf0e10cSrcweir // --> OD 2008-09-10 #i70748# 1894*cdf0e10cSrcweir if ( bApplyOutlineLevelAsListLevel ) 1895*cdf0e10cSrcweir { 1896*cdf0e10cSrcweir sal_Int16 nNumLevel = -1; 1897*cdf0e10cSrcweir xPropSet->getPropertyValue( s_NumberingLevel ) >>= nNumLevel; 1898*cdf0e10cSrcweir if ( nNumLevel == -1 || 1899*cdf0e10cSrcweir nNumLevel != (nOutlineLevel - 1) ) 1900*cdf0e10cSrcweir { 1901*cdf0e10cSrcweir xPropSet->setPropertyValue( s_NumberingLevel, 1902*cdf0e10cSrcweir makeAny( static_cast<sal_Int8>(nOutlineLevel - 1) ) ); 1903*cdf0e10cSrcweir } 1904*cdf0e10cSrcweir } 1905*cdf0e10cSrcweir // <-- 1906*cdf0e10cSrcweir // --> OD 2006-10-13 #i69629# - correction: 1907*cdf0e10cSrcweir // - for text document from version OOo 2.0.4/SO 8 PU4 and earlier 1908*cdf0e10cSrcweir // the paragraph style of a heading should be assigned to the 1909*cdf0e10cSrcweir // corresponding list level of the outline style. 1910*cdf0e10cSrcweir // - for other text documents the paragraph style of a heading is only 1911*cdf0e10cSrcweir // a candidate for an assignment to the list level of the outline 1912*cdf0e10cSrcweir // style, if it has no direct list style property and (if exists) the 1913*cdf0e10cSrcweir // automatic paragraph style has also no direct list style set. 1914*cdf0e10cSrcweir if (m_pImpl->m_xParaStyles->hasByName(sStyleName)) 1915*cdf0e10cSrcweir { 1916*cdf0e10cSrcweir bool bOutlineStyleCandidate( false ); 1917*cdf0e10cSrcweir 1918*cdf0e10cSrcweir sal_Int32 nUPD( 0 ); 1919*cdf0e10cSrcweir sal_Int32 nBuild( 0 ); 1920*cdf0e10cSrcweir // --> OD 2007-12-19 #152540# 1921*cdf0e10cSrcweir const bool bBuildIdFound = rImport.getBuildIds( nUPD, nBuild ); 1922*cdf0e10cSrcweir // --> OD 2007-07-25 #i73509# 1923*cdf0e10cSrcweir // --> OD 2008-03-19 #i86058# - check explicitly on certain versions 1924*cdf0e10cSrcweir if ( rImport.IsTextDocInOOoFileFormat() || 1925*cdf0e10cSrcweir ( bBuildIdFound && 1926*cdf0e10cSrcweir ( nUPD == 645 || nUPD == 641 ) ) ) 1927*cdf0e10cSrcweir { 1928*cdf0e10cSrcweir bOutlineStyleCandidate = true; 1929*cdf0e10cSrcweir } 1930*cdf0e10cSrcweir else if ( nUPD == 680 && nBuild <= 9073 ) /* BuildId of OOo 2.0.4/SO8 PU4 */ 1931*cdf0e10cSrcweir { 1932*cdf0e10cSrcweir bOutlineStyleCandidate = bOutlineLevelAttrFound; 1933*cdf0e10cSrcweir } 1934*cdf0e10cSrcweir // <-- 1935*cdf0e10cSrcweir // else 1936*cdf0e10cSrcweir // { 1937*cdf0e10cSrcweir // Reference< XPropertyState > xStylePropState( 1938*cdf0e10cSrcweir // xParaStyles->getByName( sStyleName ), UNO_QUERY ); 1939*cdf0e10cSrcweir // if ( xStylePropState.is() && 1940*cdf0e10cSrcweir // xStylePropState->getPropertyState( sNumberingStyleName ) == PropertyState_DIRECT_VALUE ) 1941*cdf0e10cSrcweir // { 1942*cdf0e10cSrcweir // bOutlineStyleCandidate = false; 1943*cdf0e10cSrcweir // } 1944*cdf0e10cSrcweir // // --> OD 2007-01-11 #i73361# 1945*cdf0e10cSrcweir // // The automatic paragraph style doesn't have to be considered. 1946*cdf0e10cSrcweir // // else if ( pStyle && /* automatic paragraph style */ 1947*cdf0e10cSrcweir // // pStyle->IsListStyleSet() ) 1948*cdf0e10cSrcweir // // { 1949*cdf0e10cSrcweir // // bOutlineStyleCandidate = false; 1950*cdf0e10cSrcweir // // } 1951*cdf0e10cSrcweir // // <-- 1952*cdf0e10cSrcweir // else 1953*cdf0e10cSrcweir // { 1954*cdf0e10cSrcweir // bOutlineStyleCandidate = true; 1955*cdf0e10cSrcweir // } 1956*cdf0e10cSrcweir // } 1957*cdf0e10cSrcweir 1958*cdf0e10cSrcweir if ( bOutlineStyleCandidate ) 1959*cdf0e10cSrcweir { 1960*cdf0e10cSrcweir AddOutlineStyleCandidate( nOutlineLevel, sStyleName ); 1961*cdf0e10cSrcweir } 1962*cdf0e10cSrcweir // --> OD 2009-08-18 #i103817# 1963*cdf0e10cSrcweir // Assure that heading applies the outline style 1964*cdf0e10cSrcweir if ( ( !pStyle || !pStyle->IsListStyleSet() ) && 1965*cdf0e10cSrcweir !bOutlineStyleCandidate && 1966*cdf0e10cSrcweir m_pImpl->m_xChapterNumbering.is()) 1967*cdf0e10cSrcweir { 1968*cdf0e10cSrcweir OUString sEmptyStr; 1969*cdf0e10cSrcweir if ( !lcl_HasListStyle( sStyleName, 1970*cdf0e10cSrcweir m_pImpl->m_xParaStyles, GetXMLImport(), 1971*cdf0e10cSrcweir s_NumberingStyleName, 1972*cdf0e10cSrcweir sEmptyStr ) ) 1973*cdf0e10cSrcweir { 1974*cdf0e10cSrcweir // heading not in a list --> apply outline style 1975*cdf0e10cSrcweir xPropSet->setPropertyValue( s_NumberingRules, 1976*cdf0e10cSrcweir makeAny(m_pImpl->m_xChapterNumbering) ); 1977*cdf0e10cSrcweir xPropSet->setPropertyValue( s_NumberingLevel, 1978*cdf0e10cSrcweir makeAny(static_cast<sal_Int8>(nOutlineLevel - 1))); 1979*cdf0e10cSrcweir } 1980*cdf0e10cSrcweir } 1981*cdf0e10cSrcweir // <-- 1982*cdf0e10cSrcweir } 1983*cdf0e10cSrcweir // <-- 1984*cdf0e10cSrcweir } 1985*cdf0e10cSrcweir //-> #outlinelevel added by zhaojianwei 1986*cdf0e10cSrcweir //handle for text:p,if the paragraphstyle outlinelevel is set to[1~10] 1987*cdf0e10cSrcweir else if( bHasOutlineLevelProp ) 1988*cdf0e10cSrcweir { 1989*cdf0e10cSrcweir if ( nCurrentOutlineLevelInheritedFromParagraphStyle != 0 ) 1990*cdf0e10cSrcweir { 1991*cdf0e10cSrcweir sal_Int16 nZero = 0; 1992*cdf0e10cSrcweir xPropSet->setPropertyValue(s_OutlineLevel, 1993*cdf0e10cSrcweir makeAny( static_cast<sal_Int16>(nZero) )); 1994*cdf0e10cSrcweir } 1995*cdf0e10cSrcweir }//<-end,zhaojianwei 1996*cdf0e10cSrcweir } 1997*cdf0e10cSrcweir // <-- 1998*cdf0e10cSrcweir 1999*cdf0e10cSrcweir return sStyleName; 2000*cdf0e10cSrcweir } 2001*cdf0e10cSrcweir 2002*cdf0e10cSrcweir void XMLTextImportHelper::FindOutlineStyleName( ::rtl::OUString& rStyleName, 2003*cdf0e10cSrcweir sal_Int8 nOutlineLevel ) 2004*cdf0e10cSrcweir { 2005*cdf0e10cSrcweir static ::rtl::OUString s_HeadingStyleName( 2006*cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM("HeadingStyleName")); 2007*cdf0e10cSrcweir 2008*cdf0e10cSrcweir // style name empty? 2009*cdf0e10cSrcweir if( rStyleName.getLength() == 0 ) 2010*cdf0e10cSrcweir { 2011*cdf0e10cSrcweir // Empty? Then we need o do stuff. Let's do error checking first. 2012*cdf0e10cSrcweir if (m_pImpl->m_xChapterNumbering.is() && 2013*cdf0e10cSrcweir ( nOutlineLevel > 0 ) && 2014*cdf0e10cSrcweir (nOutlineLevel <= m_pImpl->m_xChapterNumbering->getCount())) 2015*cdf0e10cSrcweir { 2016*cdf0e10cSrcweir nOutlineLevel--; // for the remainder, the level's are 0-based 2017*cdf0e10cSrcweir 2018*cdf0e10cSrcweir // empty style name: look-up previously used name 2019*cdf0e10cSrcweir 2020*cdf0e10cSrcweir // if we don't have a previously used name, we'll use the default 2021*cdf0e10cSrcweir m_pImpl->InitOutlineStylesCandidates(); 2022*cdf0e10cSrcweir if (m_pImpl->m_pOutlineStylesCandidates[nOutlineLevel].empty()) 2023*cdf0e10cSrcweir { 2024*cdf0e10cSrcweir // no other name used previously? Then use default 2025*cdf0e10cSrcweir 2026*cdf0e10cSrcweir // iterate over property value sequence to find the style name 2027*cdf0e10cSrcweir Sequence<PropertyValue> aProperties; 2028*cdf0e10cSrcweir m_pImpl->m_xChapterNumbering->getByIndex( nOutlineLevel ) 2029*cdf0e10cSrcweir >>= aProperties; 2030*cdf0e10cSrcweir for( sal_Int32 i = 0; i < aProperties.getLength(); i++ ) 2031*cdf0e10cSrcweir { 2032*cdf0e10cSrcweir if (aProperties[i].Name == s_HeadingStyleName) 2033*cdf0e10cSrcweir { 2034*cdf0e10cSrcweir rtl::OUString aOutlineStyle; 2035*cdf0e10cSrcweir aProperties[i].Value >>= aOutlineStyle; 2036*cdf0e10cSrcweir m_pImpl->m_pOutlineStylesCandidates[nOutlineLevel] 2037*cdf0e10cSrcweir .push_back( aOutlineStyle ); 2038*cdf0e10cSrcweir break; // early out, if we found it!. 2039*cdf0e10cSrcweir } 2040*cdf0e10cSrcweir } 2041*cdf0e10cSrcweir } 2042*cdf0e10cSrcweir 2043*cdf0e10cSrcweir // finally, we'll use the previously used style name for this 2044*cdf0e10cSrcweir // format (or the default we've just put into that style) 2045*cdf0e10cSrcweir // --> OD 2006-11-06 #i71249# - take last added one 2046*cdf0e10cSrcweir rStyleName = 2047*cdf0e10cSrcweir m_pImpl->m_pOutlineStylesCandidates[nOutlineLevel].back(); 2048*cdf0e10cSrcweir // <-- 2049*cdf0e10cSrcweir } 2050*cdf0e10cSrcweir // else: nothing we can do, so we'll leave it empty 2051*cdf0e10cSrcweir } 2052*cdf0e10cSrcweir // else: we already had a style name, so we let it pass. 2053*cdf0e10cSrcweir } 2054*cdf0e10cSrcweir 2055*cdf0e10cSrcweir void XMLTextImportHelper::AddOutlineStyleCandidate( const sal_Int8 nOutlineLevel, 2056*cdf0e10cSrcweir const OUString& rStyleName ) 2057*cdf0e10cSrcweir { 2058*cdf0e10cSrcweir if (rStyleName.getLength() 2059*cdf0e10cSrcweir && m_pImpl->m_xChapterNumbering.is() 2060*cdf0e10cSrcweir && (nOutlineLevel > 0) 2061*cdf0e10cSrcweir && (nOutlineLevel <= m_pImpl->m_xChapterNumbering->getCount())) 2062*cdf0e10cSrcweir { 2063*cdf0e10cSrcweir m_pImpl->InitOutlineStylesCandidates(); 2064*cdf0e10cSrcweir m_pImpl->m_pOutlineStylesCandidates[nOutlineLevel-1].push_back( 2065*cdf0e10cSrcweir rStyleName); 2066*cdf0e10cSrcweir } 2067*cdf0e10cSrcweir } 2068*cdf0e10cSrcweir 2069*cdf0e10cSrcweir void XMLTextImportHelper::SetOutlineStyles( sal_Bool bSetEmptyLevels ) 2070*cdf0e10cSrcweir { 2071*cdf0e10cSrcweir static ::rtl::OUString s_NumberingStyleName( 2072*cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM("NumberingStyleName")); 2073*cdf0e10cSrcweir static ::rtl::OUString s_HeadingStyleName( 2074*cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM("HeadingStyleName")); 2075*cdf0e10cSrcweir 2076*cdf0e10cSrcweir if ((m_pImpl->m_pOutlineStylesCandidates != NULL || bSetEmptyLevels) && 2077*cdf0e10cSrcweir m_pImpl->m_xChapterNumbering.is() && 2078*cdf0e10cSrcweir !IsInsertMode()) 2079*cdf0e10cSrcweir { 2080*cdf0e10cSrcweir bool bChooseLastOne( false ); 2081*cdf0e10cSrcweir { 2082*cdf0e10cSrcweir if ( GetXMLImport().IsTextDocInOOoFileFormat() ) 2083*cdf0e10cSrcweir { 2084*cdf0e10cSrcweir bChooseLastOne = true; 2085*cdf0e10cSrcweir } 2086*cdf0e10cSrcweir else 2087*cdf0e10cSrcweir { 2088*cdf0e10cSrcweir sal_Int32 nUPD( 0 ); 2089*cdf0e10cSrcweir sal_Int32 nBuild( 0 ); 2090*cdf0e10cSrcweir if ( GetXMLImport().getBuildIds( nUPD, nBuild ) ) 2091*cdf0e10cSrcweir { 2092*cdf0e10cSrcweir // check explicitly on certain versions 2093*cdf0e10cSrcweir bChooseLastOne = ( nUPD == 641 ) || ( nUPD == 645 ) || // prior OOo 2.0 2094*cdf0e10cSrcweir ( nUPD == 680 && nBuild <= 9073 ); // OOo 2.0 - OOo 2.0.4 2095*cdf0e10cSrcweir } 2096*cdf0e10cSrcweir } 2097*cdf0e10cSrcweir } 2098*cdf0e10cSrcweir 2099*cdf0e10cSrcweir OUString sOutlineStyleName; 2100*cdf0e10cSrcweir { 2101*cdf0e10cSrcweir Reference<XPropertySet> xChapterNumRule( 2102*cdf0e10cSrcweir m_pImpl->m_xChapterNumbering, UNO_QUERY); 2103*cdf0e10cSrcweir const OUString sName(RTL_CONSTASCII_USTRINGPARAM("Name")); 2104*cdf0e10cSrcweir xChapterNumRule->getPropertyValue(sName) >>= sOutlineStyleName; 2105*cdf0e10cSrcweir } 2106*cdf0e10cSrcweir 2107*cdf0e10cSrcweir const sal_Int32 nCount = m_pImpl->m_xChapterNumbering->getCount(); 2108*cdf0e10cSrcweir // --> OD 2009-11-13 #i106218# 2109*cdf0e10cSrcweir // First collect all paragraph styles choosen for assignment to each 2110*cdf0e10cSrcweir // list level of the outline style, then perform the intrinsic assignment. 2111*cdf0e10cSrcweir // Reason: The assignment of a certain paragraph style to a list level 2112*cdf0e10cSrcweir // of the outline style causes side effects on the children 2113*cdf0e10cSrcweir // paragraph styles in Writer. 2114*cdf0e10cSrcweir ::std::vector<OUString> sChosenStyles(nCount); 2115*cdf0e10cSrcweir // <-- 2116*cdf0e10cSrcweir for( sal_Int32 i=0; i < nCount; ++i ) 2117*cdf0e10cSrcweir { 2118*cdf0e10cSrcweir if ( bSetEmptyLevels || 2119*cdf0e10cSrcweir (m_pImpl->m_pOutlineStylesCandidates && 2120*cdf0e10cSrcweir !m_pImpl->m_pOutlineStylesCandidates[i].empty())) 2121*cdf0e10cSrcweir { 2122*cdf0e10cSrcweir // determine, which candidate is one to be assigned to the list 2123*cdf0e10cSrcweir // level of the outline style 2124*cdf0e10cSrcweir if (m_pImpl->m_pOutlineStylesCandidates && 2125*cdf0e10cSrcweir !m_pImpl->m_pOutlineStylesCandidates[i].empty()) 2126*cdf0e10cSrcweir { 2127*cdf0e10cSrcweir if ( bChooseLastOne ) 2128*cdf0e10cSrcweir { 2129*cdf0e10cSrcweir sChosenStyles[i] = 2130*cdf0e10cSrcweir m_pImpl->m_pOutlineStylesCandidates[i].back(); 2131*cdf0e10cSrcweir } 2132*cdf0e10cSrcweir else 2133*cdf0e10cSrcweir { 2134*cdf0e10cSrcweir for (sal_uInt32 j = 0; 2135*cdf0e10cSrcweir j < m_pImpl->m_pOutlineStylesCandidates[i].size(); 2136*cdf0e10cSrcweir ++j) 2137*cdf0e10cSrcweir { 2138*cdf0e10cSrcweir if (!lcl_HasListStyle( 2139*cdf0e10cSrcweir m_pImpl->m_pOutlineStylesCandidates[i][j], 2140*cdf0e10cSrcweir m_pImpl->m_xParaStyles, GetXMLImport(), 2141*cdf0e10cSrcweir s_NumberingStyleName, 2142*cdf0e10cSrcweir sOutlineStyleName)) 2143*cdf0e10cSrcweir { 2144*cdf0e10cSrcweir sChosenStyles[i] = 2145*cdf0e10cSrcweir m_pImpl->m_pOutlineStylesCandidates[i][j]; 2146*cdf0e10cSrcweir break; 2147*cdf0e10cSrcweir } 2148*cdf0e10cSrcweir } 2149*cdf0e10cSrcweir } 2150*cdf0e10cSrcweir } 2151*cdf0e10cSrcweir } 2152*cdf0e10cSrcweir } 2153*cdf0e10cSrcweir // --> OD 2009-11-13 #i106218# 2154*cdf0e10cSrcweir Sequence < PropertyValue > aProps( 1 ); 2155*cdf0e10cSrcweir PropertyValue *pProps = aProps.getArray(); 2156*cdf0e10cSrcweir pProps->Name = s_HeadingStyleName; 2157*cdf0e10cSrcweir for ( sal_Int32 i = 0; i < nCount; ++i ) 2158*cdf0e10cSrcweir { 2159*cdf0e10cSrcweir // --> OD 2009-12-11 #i107610# 2160*cdf0e10cSrcweir if ( bSetEmptyLevels || 2161*cdf0e10cSrcweir sChosenStyles[i].getLength() > 0 ) 2162*cdf0e10cSrcweir // <-- 2163*cdf0e10cSrcweir { 2164*cdf0e10cSrcweir pProps->Value <<= sChosenStyles[i]; 2165*cdf0e10cSrcweir m_pImpl->m_xChapterNumbering->replaceByIndex(i, 2166*cdf0e10cSrcweir makeAny( aProps )); 2167*cdf0e10cSrcweir } 2168*cdf0e10cSrcweir } 2169*cdf0e10cSrcweir // <-- 2170*cdf0e10cSrcweir } 2171*cdf0e10cSrcweir } 2172*cdf0e10cSrcweir 2173*cdf0e10cSrcweir void XMLTextImportHelper::SetHyperlink( 2174*cdf0e10cSrcweir SvXMLImport& rImport, 2175*cdf0e10cSrcweir const Reference < XTextCursor >& rCursor, 2176*cdf0e10cSrcweir const OUString& rHRef, 2177*cdf0e10cSrcweir const OUString& rName, 2178*cdf0e10cSrcweir const OUString& rTargetFrameName, 2179*cdf0e10cSrcweir const OUString& rStyleName, 2180*cdf0e10cSrcweir const OUString& rVisitedStyleName, 2181*cdf0e10cSrcweir XMLEventsImportContext* pEvents) 2182*cdf0e10cSrcweir { 2183*cdf0e10cSrcweir static ::rtl::OUString s_HyperLinkURL( 2184*cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM("HyperLinkURL")); 2185*cdf0e10cSrcweir static ::rtl::OUString s_HyperLinkName( 2186*cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM("HyperLinkName")); 2187*cdf0e10cSrcweir static ::rtl::OUString s_HyperLinkTarget( 2188*cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM("HyperLinkTarget")); 2189*cdf0e10cSrcweir static ::rtl::OUString s_UnvisitedCharStyleName( 2190*cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM("UnvisitedCharStyleName")); 2191*cdf0e10cSrcweir static ::rtl::OUString s_VisitedCharStyleName( 2192*cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM("VisitedCharStyleName")); 2193*cdf0e10cSrcweir static ::rtl::OUString s_HyperLinkEvents( 2194*cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM("HyperLinkEvents")); 2195*cdf0e10cSrcweir 2196*cdf0e10cSrcweir Reference < XPropertySet > xPropSet( rCursor, UNO_QUERY ); 2197*cdf0e10cSrcweir Reference < XPropertySetInfo > xPropSetInfo( 2198*cdf0e10cSrcweir xPropSet->getPropertySetInfo()); 2199*cdf0e10cSrcweir if (!xPropSetInfo.is() || !xPropSetInfo->hasPropertyByName(s_HyperLinkURL)) 2200*cdf0e10cSrcweir return; 2201*cdf0e10cSrcweir 2202*cdf0e10cSrcweir xPropSet->setPropertyValue(s_HyperLinkURL, makeAny(rHRef)); 2203*cdf0e10cSrcweir 2204*cdf0e10cSrcweir if (xPropSetInfo->hasPropertyByName(s_HyperLinkName)) 2205*cdf0e10cSrcweir { 2206*cdf0e10cSrcweir xPropSet->setPropertyValue(s_HyperLinkName, makeAny(rName)); 2207*cdf0e10cSrcweir } 2208*cdf0e10cSrcweir 2209*cdf0e10cSrcweir if (xPropSetInfo->hasPropertyByName(s_HyperLinkTarget)) 2210*cdf0e10cSrcweir { 2211*cdf0e10cSrcweir xPropSet->setPropertyValue(s_HyperLinkTarget, 2212*cdf0e10cSrcweir makeAny(rTargetFrameName)); 2213*cdf0e10cSrcweir } 2214*cdf0e10cSrcweir 2215*cdf0e10cSrcweir if ( (pEvents != NULL) && 2216*cdf0e10cSrcweir xPropSetInfo->hasPropertyByName(s_HyperLinkEvents)) 2217*cdf0e10cSrcweir { 2218*cdf0e10cSrcweir // The API treats events at hyperlinks differently from most 2219*cdf0e10cSrcweir // other properties: You have to set a name replace with the 2220*cdf0e10cSrcweir // events in it. The easiest way to to this is to 1) get 2221*cdf0e10cSrcweir // events, 2) set new ones, and 3) then put events back. 2222*cdf0e10cSrcweir uno::Reference<XNameReplace> const xReplace( 2223*cdf0e10cSrcweir xPropSet->getPropertyValue(s_HyperLinkEvents), UNO_QUERY); 2224*cdf0e10cSrcweir if (xReplace.is()) 2225*cdf0e10cSrcweir { 2226*cdf0e10cSrcweir // set events 2227*cdf0e10cSrcweir pEvents->SetEvents(xReplace); 2228*cdf0e10cSrcweir 2229*cdf0e10cSrcweir // put events 2230*cdf0e10cSrcweir xPropSet->setPropertyValue(s_HyperLinkEvents, makeAny(xReplace)); 2231*cdf0e10cSrcweir } 2232*cdf0e10cSrcweir } 2233*cdf0e10cSrcweir 2234*cdf0e10cSrcweir if (m_pImpl->m_xTextStyles.is()) 2235*cdf0e10cSrcweir { 2236*cdf0e10cSrcweir OUString sDisplayName( 2237*cdf0e10cSrcweir rImport.GetStyleDisplayName( 2238*cdf0e10cSrcweir XML_STYLE_FAMILY_TEXT_TEXT, rStyleName ) ); 2239*cdf0e10cSrcweir if( sDisplayName.getLength() && 2240*cdf0e10cSrcweir xPropSetInfo->hasPropertyByName(s_UnvisitedCharStyleName) && 2241*cdf0e10cSrcweir m_pImpl->m_xTextStyles->hasByName(sDisplayName)) 2242*cdf0e10cSrcweir { 2243*cdf0e10cSrcweir xPropSet->setPropertyValue(s_UnvisitedCharStyleName, 2244*cdf0e10cSrcweir makeAny(sDisplayName)); 2245*cdf0e10cSrcweir } 2246*cdf0e10cSrcweir 2247*cdf0e10cSrcweir sDisplayName = 2248*cdf0e10cSrcweir rImport.GetStyleDisplayName( 2249*cdf0e10cSrcweir XML_STYLE_FAMILY_TEXT_TEXT, rVisitedStyleName ); 2250*cdf0e10cSrcweir if( sDisplayName.getLength() && 2251*cdf0e10cSrcweir xPropSetInfo->hasPropertyByName(s_VisitedCharStyleName) && 2252*cdf0e10cSrcweir m_pImpl->m_xTextStyles->hasByName(sDisplayName)) 2253*cdf0e10cSrcweir { 2254*cdf0e10cSrcweir xPropSet->setPropertyValue(s_VisitedCharStyleName, 2255*cdf0e10cSrcweir makeAny(sDisplayName)); 2256*cdf0e10cSrcweir } 2257*cdf0e10cSrcweir } 2258*cdf0e10cSrcweir } 2259*cdf0e10cSrcweir 2260*cdf0e10cSrcweir void XMLTextImportHelper::SetRuby( 2261*cdf0e10cSrcweir SvXMLImport& rImport, 2262*cdf0e10cSrcweir const Reference < XTextCursor >& rCursor, 2263*cdf0e10cSrcweir const OUString& rStyleName, 2264*cdf0e10cSrcweir const OUString& rTextStyleName, 2265*cdf0e10cSrcweir const OUString& rText ) 2266*cdf0e10cSrcweir { 2267*cdf0e10cSrcweir Reference<XPropertySet> xPropSet(rCursor, UNO_QUERY); 2268*cdf0e10cSrcweir 2269*cdf0e10cSrcweir OUString sRubyText(RTL_CONSTASCII_USTRINGPARAM("RubyText")); 2270*cdf0e10cSrcweir OUString sRubyCharStyleName(RTL_CONSTASCII_USTRINGPARAM("RubyCharStyleName")); 2271*cdf0e10cSrcweir 2272*cdf0e10cSrcweir // if we have one Ruby property, we assume all of them are present 2273*cdf0e10cSrcweir if (xPropSet.is() && 2274*cdf0e10cSrcweir xPropSet->getPropertySetInfo()->hasPropertyByName( sRubyText )) 2275*cdf0e10cSrcweir { 2276*cdf0e10cSrcweir // the ruby text 2277*cdf0e10cSrcweir xPropSet->setPropertyValue(sRubyText, makeAny(rText)); 2278*cdf0e10cSrcweir 2279*cdf0e10cSrcweir // the ruby style (ruby-adjust) 2280*cdf0e10cSrcweir XMLPropStyleContext *pStyle = 0; 2281*cdf0e10cSrcweir if (rStyleName.getLength() && m_pImpl->m_xAutoStyles.Is()) 2282*cdf0e10cSrcweir { 2283*cdf0e10cSrcweir const SvXMLStyleContext* pTempStyle = 2284*cdf0e10cSrcweir ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)-> 2285*cdf0e10cSrcweir FindStyleChildContext( XML_STYLE_FAMILY_TEXT_RUBY, 2286*cdf0e10cSrcweir rStyleName, sal_True ); 2287*cdf0e10cSrcweir pStyle = PTR_CAST(XMLPropStyleContext,pTempStyle); 2288*cdf0e10cSrcweir 2289*cdf0e10cSrcweir if (NULL != pStyle) 2290*cdf0e10cSrcweir pStyle->FillPropertySet( xPropSet ); 2291*cdf0e10cSrcweir } 2292*cdf0e10cSrcweir 2293*cdf0e10cSrcweir // the ruby text character style 2294*cdf0e10cSrcweir if (m_pImpl->m_xTextStyles.is()) 2295*cdf0e10cSrcweir { 2296*cdf0e10cSrcweir OUString sDisplayName( 2297*cdf0e10cSrcweir rImport.GetStyleDisplayName( 2298*cdf0e10cSrcweir XML_STYLE_FAMILY_TEXT_TEXT, rTextStyleName ) ); 2299*cdf0e10cSrcweir if( (sDisplayName.getLength() > 0) && 2300*cdf0e10cSrcweir // xPropSetInfo->hasPropertyByName( sRubyCharStyleName ) && 2301*cdf0e10cSrcweir m_pImpl->m_xTextStyles->hasByName( sDisplayName )) 2302*cdf0e10cSrcweir { 2303*cdf0e10cSrcweir xPropSet->setPropertyValue(sRubyCharStyleName, makeAny(sDisplayName)); 2304*cdf0e10cSrcweir } 2305*cdf0e10cSrcweir } 2306*cdf0e10cSrcweir } 2307*cdf0e10cSrcweir } 2308*cdf0e10cSrcweir 2309*cdf0e10cSrcweir void XMLTextImportHelper::SetAutoStyles( SvXMLStylesContext *pStyles ) 2310*cdf0e10cSrcweir { 2311*cdf0e10cSrcweir m_pImpl->m_xAutoStyles = pStyles; 2312*cdf0e10cSrcweir } 2313*cdf0e10cSrcweir 2314*cdf0e10cSrcweir void XMLTextImportHelper::SetFontDecls( XMLFontStylesContext *pFontDecls ) 2315*cdf0e10cSrcweir { 2316*cdf0e10cSrcweir m_pImpl->m_xFontDecls = pFontDecls; 2317*cdf0e10cSrcweir ((XMLTextImportPropertyMapper *)m_pImpl->m_xParaImpPrMap.get()) 2318*cdf0e10cSrcweir ->SetFontDecls( pFontDecls ); 2319*cdf0e10cSrcweir ((XMLTextImportPropertyMapper *)m_pImpl->m_xTextImpPrMap.get()) 2320*cdf0e10cSrcweir ->SetFontDecls( pFontDecls ); 2321*cdf0e10cSrcweir } 2322*cdf0e10cSrcweir 2323*cdf0e10cSrcweir const XMLFontStylesContext *XMLTextImportHelper::GetFontDecls() const 2324*cdf0e10cSrcweir { 2325*cdf0e10cSrcweir return (XMLFontStylesContext *)&m_pImpl->m_xFontDecls; 2326*cdf0e10cSrcweir } 2327*cdf0e10cSrcweir 2328*cdf0e10cSrcweir sal_Bool XMLTextImportHelper::HasDrawNameAttribute( 2329*cdf0e10cSrcweir const Reference< XAttributeList > & xAttrList, 2330*cdf0e10cSrcweir SvXMLNamespaceMap& rNamespaceMap ) 2331*cdf0e10cSrcweir { 2332*cdf0e10cSrcweir sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0; 2333*cdf0e10cSrcweir for( sal_Int16 i=0; i < nAttrCount; i++ ) 2334*cdf0e10cSrcweir { 2335*cdf0e10cSrcweir const OUString& rAttrName = xAttrList->getNameByIndex( i ); 2336*cdf0e10cSrcweir 2337*cdf0e10cSrcweir OUString aLocalName; 2338*cdf0e10cSrcweir sal_uInt16 nPrefix = 2339*cdf0e10cSrcweir rNamespaceMap.GetKeyByAttrName( rAttrName, &aLocalName ); 2340*cdf0e10cSrcweir if( XML_NAMESPACE_DRAW == nPrefix && 2341*cdf0e10cSrcweir IsXMLToken( aLocalName, XML_NAME ) ) 2342*cdf0e10cSrcweir { 2343*cdf0e10cSrcweir return xAttrList->getValueByIndex(i).getLength() != 0; 2344*cdf0e10cSrcweir } 2345*cdf0e10cSrcweir } 2346*cdf0e10cSrcweir 2347*cdf0e10cSrcweir return sal_False; 2348*cdf0e10cSrcweir } 2349*cdf0e10cSrcweir 2350*cdf0e10cSrcweir SvXMLImportContext *XMLTextImportHelper::CreateTextChildContext( 2351*cdf0e10cSrcweir SvXMLImport& rImport, 2352*cdf0e10cSrcweir sal_uInt16 nPrefix, const OUString& rLocalName, 2353*cdf0e10cSrcweir const Reference< XAttributeList > & xAttrList, 2354*cdf0e10cSrcweir XMLTextType eType ) 2355*cdf0e10cSrcweir { 2356*cdf0e10cSrcweir SvXMLImportContext *pContext = 0; 2357*cdf0e10cSrcweir 2358*cdf0e10cSrcweir const SvXMLTokenMap& rTokenMap = GetTextElemTokenMap(); 2359*cdf0e10cSrcweir sal_Bool bHeading = sal_False; 2360*cdf0e10cSrcweir sal_Bool bContent = sal_True; 2361*cdf0e10cSrcweir sal_uInt16 nToken = rTokenMap.Get( nPrefix, rLocalName ); 2362*cdf0e10cSrcweir switch( nToken ) 2363*cdf0e10cSrcweir { 2364*cdf0e10cSrcweir case XML_TOK_TEXT_H: 2365*cdf0e10cSrcweir bHeading = sal_True; 2366*cdf0e10cSrcweir case XML_TOK_TEXT_P: 2367*cdf0e10cSrcweir pContext = new XMLParaContext( rImport, 2368*cdf0e10cSrcweir nPrefix, rLocalName, 2369*cdf0e10cSrcweir xAttrList, bHeading ); 2370*cdf0e10cSrcweir if (m_pImpl->m_bProgress && XML_TEXT_TYPE_SHAPE != eType) 2371*cdf0e10cSrcweir { 2372*cdf0e10cSrcweir rImport.GetProgressBarHelper()->Increment(); 2373*cdf0e10cSrcweir } 2374*cdf0e10cSrcweir break; 2375*cdf0e10cSrcweir case XML_TOK_TEXT_NUMBERED_PARAGRAPH: 2376*cdf0e10cSrcweir pContext = new XMLNumberedParaContext( 2377*cdf0e10cSrcweir rImport, nPrefix, rLocalName, xAttrList ); 2378*cdf0e10cSrcweir break; 2379*cdf0e10cSrcweir case XML_TOK_TEXT_LIST: 2380*cdf0e10cSrcweir pContext = new XMLTextListBlockContext( rImport, *this, 2381*cdf0e10cSrcweir nPrefix, rLocalName, 2382*cdf0e10cSrcweir xAttrList ); 2383*cdf0e10cSrcweir break; 2384*cdf0e10cSrcweir case XML_TOK_TABLE_TABLE: 2385*cdf0e10cSrcweir if( XML_TEXT_TYPE_BODY == eType || 2386*cdf0e10cSrcweir XML_TEXT_TYPE_TEXTBOX == eType || 2387*cdf0e10cSrcweir XML_TEXT_TYPE_SECTION == eType || 2388*cdf0e10cSrcweir XML_TEXT_TYPE_HEADER_FOOTER == eType || 2389*cdf0e10cSrcweir XML_TEXT_TYPE_CHANGED_REGION == eType || 2390*cdf0e10cSrcweir XML_TEXT_TYPE_CELL == eType ) 2391*cdf0e10cSrcweir pContext = CreateTableChildContext( rImport, nPrefix, rLocalName, 2392*cdf0e10cSrcweir xAttrList ); 2393*cdf0e10cSrcweir break; 2394*cdf0e10cSrcweir case XML_TOK_TEXT_SEQUENCE_DECLS: 2395*cdf0e10cSrcweir if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted) || 2396*cdf0e10cSrcweir XML_TEXT_TYPE_HEADER_FOOTER == eType ) 2397*cdf0e10cSrcweir { 2398*cdf0e10cSrcweir pContext = new XMLVariableDeclsImportContext( 2399*cdf0e10cSrcweir rImport, *this, nPrefix, rLocalName, VarTypeSequence); 2400*cdf0e10cSrcweir bContent = sal_False; 2401*cdf0e10cSrcweir } 2402*cdf0e10cSrcweir break; 2403*cdf0e10cSrcweir 2404*cdf0e10cSrcweir case XML_TOK_TEXT_VARFIELD_DECLS: 2405*cdf0e10cSrcweir if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted) || 2406*cdf0e10cSrcweir XML_TEXT_TYPE_HEADER_FOOTER == eType ) 2407*cdf0e10cSrcweir { 2408*cdf0e10cSrcweir pContext = new XMLVariableDeclsImportContext( 2409*cdf0e10cSrcweir rImport, *this, nPrefix, rLocalName, VarTypeSimple); 2410*cdf0e10cSrcweir bContent = sal_False; 2411*cdf0e10cSrcweir } 2412*cdf0e10cSrcweir break; 2413*cdf0e10cSrcweir 2414*cdf0e10cSrcweir case XML_TOK_TEXT_USERFIELD_DECLS: 2415*cdf0e10cSrcweir if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted)|| 2416*cdf0e10cSrcweir XML_TEXT_TYPE_HEADER_FOOTER == eType ) 2417*cdf0e10cSrcweir { 2418*cdf0e10cSrcweir pContext = new XMLVariableDeclsImportContext( 2419*cdf0e10cSrcweir rImport, *this, nPrefix, rLocalName, VarTypeUserField); 2420*cdf0e10cSrcweir bContent = sal_False; 2421*cdf0e10cSrcweir } 2422*cdf0e10cSrcweir break; 2423*cdf0e10cSrcweir 2424*cdf0e10cSrcweir case XML_TOK_TEXT_DDE_DECLS: 2425*cdf0e10cSrcweir if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted) || 2426*cdf0e10cSrcweir XML_TEXT_TYPE_HEADER_FOOTER == eType ) 2427*cdf0e10cSrcweir { 2428*cdf0e10cSrcweir pContext = new XMLDdeFieldDeclsImportContext( 2429*cdf0e10cSrcweir rImport, nPrefix, rLocalName); 2430*cdf0e10cSrcweir bContent = sal_False; 2431*cdf0e10cSrcweir } 2432*cdf0e10cSrcweir break; 2433*cdf0e10cSrcweir 2434*cdf0e10cSrcweir case XML_TOK_TEXT_FRAME_PAGE: 2435*cdf0e10cSrcweir if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted) || 2436*cdf0e10cSrcweir XML_TEXT_TYPE_TEXTBOX == eType || 2437*cdf0e10cSrcweir XML_TEXT_TYPE_CHANGED_REGION == eType ) 2438*cdf0e10cSrcweir { 2439*cdf0e10cSrcweir TextContentAnchorType eAnchorType = 2440*cdf0e10cSrcweir XML_TEXT_TYPE_TEXTBOX == eType ? TextContentAnchorType_AT_FRAME 2441*cdf0e10cSrcweir : TextContentAnchorType_AT_PAGE; 2442*cdf0e10cSrcweir pContext = new XMLTextFrameContext( rImport, nPrefix, 2443*cdf0e10cSrcweir rLocalName, xAttrList, 2444*cdf0e10cSrcweir eAnchorType ); 2445*cdf0e10cSrcweir bContent = sal_False; 2446*cdf0e10cSrcweir } 2447*cdf0e10cSrcweir break; 2448*cdf0e10cSrcweir 2449*cdf0e10cSrcweir case XML_TOK_DRAW_A_PAGE: 2450*cdf0e10cSrcweir if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted) || 2451*cdf0e10cSrcweir XML_TEXT_TYPE_TEXTBOX == eType || 2452*cdf0e10cSrcweir XML_TEXT_TYPE_CHANGED_REGION == eType) 2453*cdf0e10cSrcweir { 2454*cdf0e10cSrcweir TextContentAnchorType eAnchorType = 2455*cdf0e10cSrcweir XML_TEXT_TYPE_TEXTBOX == eType ? TextContentAnchorType_AT_FRAME 2456*cdf0e10cSrcweir : TextContentAnchorType_AT_PAGE; 2457*cdf0e10cSrcweir pContext = new XMLTextFrameHyperlinkContext( rImport, nPrefix, 2458*cdf0e10cSrcweir rLocalName, xAttrList, 2459*cdf0e10cSrcweir eAnchorType ); 2460*cdf0e10cSrcweir bContent = sal_False; 2461*cdf0e10cSrcweir } 2462*cdf0e10cSrcweir break; 2463*cdf0e10cSrcweir 2464*cdf0e10cSrcweir case XML_TOK_TEXT_INDEX_TITLE: 2465*cdf0e10cSrcweir case XML_TOK_TEXT_SECTION: 2466*cdf0e10cSrcweir #ifndef SVX_LIGHT 2467*cdf0e10cSrcweir pContext = new XMLSectionImportContext( rImport, nPrefix, rLocalName ); 2468*cdf0e10cSrcweir #else 2469*cdf0e10cSrcweir // create default context to skip content 2470*cdf0e10cSrcweir pContext = new SvXMLImportContext( rImport, nPrefix, rLocalName ); 2471*cdf0e10cSrcweir #endif // #ifndef SVX_LIGHT 2472*cdf0e10cSrcweir break; 2473*cdf0e10cSrcweir 2474*cdf0e10cSrcweir case XML_TOK_TEXT_TOC: 2475*cdf0e10cSrcweir case XML_TOK_TEXT_OBJECT_INDEX: 2476*cdf0e10cSrcweir case XML_TOK_TEXT_TABLE_INDEX: 2477*cdf0e10cSrcweir case XML_TOK_TEXT_ILLUSTRATION_INDEX: 2478*cdf0e10cSrcweir case XML_TOK_TEXT_USER_INDEX: 2479*cdf0e10cSrcweir case XML_TOK_TEXT_ALPHABETICAL_INDEX: 2480*cdf0e10cSrcweir case XML_TOK_TEXT_BIBLIOGRAPHY_INDEX: 2481*cdf0e10cSrcweir #ifndef SVX_LIGHT 2482*cdf0e10cSrcweir if( XML_TEXT_TYPE_SHAPE != eType ) 2483*cdf0e10cSrcweir pContext = new XMLIndexTOCContext( rImport, nPrefix, rLocalName ); 2484*cdf0e10cSrcweir #else 2485*cdf0e10cSrcweir // create default context to skip content 2486*cdf0e10cSrcweir pContext = new SvXMLImportContext( rImport, nPrefix, rLocalName ); 2487*cdf0e10cSrcweir #endif // #ifndef SVX_LIGHT 2488*cdf0e10cSrcweir break; 2489*cdf0e10cSrcweir 2490*cdf0e10cSrcweir case XML_TOK_TEXT_TRACKED_CHANGES: 2491*cdf0e10cSrcweir #ifndef SVX_LIGHT 2492*cdf0e10cSrcweir pContext = new XMLTrackedChangesImportContext( rImport, nPrefix, 2493*cdf0e10cSrcweir rLocalName); 2494*cdf0e10cSrcweir #else 2495*cdf0e10cSrcweir // create default context to skip content 2496*cdf0e10cSrcweir pContext = new SvXMLImportContext( rImport, nPrefix, rLocalName ); 2497*cdf0e10cSrcweir #endif // #ifndef SVX_LIGHT 2498*cdf0e10cSrcweir bContent = sal_False; 2499*cdf0e10cSrcweir break; 2500*cdf0e10cSrcweir 2501*cdf0e10cSrcweir case XML_TOK_TEXT_CHANGE: 2502*cdf0e10cSrcweir case XML_TOK_TEXT_CHANGE_START: 2503*cdf0e10cSrcweir case XML_TOK_TEXT_CHANGE_END: 2504*cdf0e10cSrcweir pContext = new XMLChangeImportContext( 2505*cdf0e10cSrcweir rImport, nPrefix, rLocalName, 2506*cdf0e10cSrcweir (XML_TOK_TEXT_CHANGE_END != nToken), 2507*cdf0e10cSrcweir (XML_TOK_TEXT_CHANGE_START != nToken), 2508*cdf0e10cSrcweir sal_True); 2509*cdf0e10cSrcweir break; 2510*cdf0e10cSrcweir 2511*cdf0e10cSrcweir case XML_TOK_TEXT_FORMS: 2512*cdf0e10cSrcweir #ifndef SVX_LIGHT 2513*cdf0e10cSrcweir pContext = rImport.GetFormImport()->createOfficeFormsContext(rImport, nPrefix, rLocalName); 2514*cdf0e10cSrcweir #else 2515*cdf0e10cSrcweir // create default context to skip content 2516*cdf0e10cSrcweir pContext = new SvXMLImportContext( rImport, nPrefix, rLocalName ); 2517*cdf0e10cSrcweir #endif // #ifndef SVX_LIGHT 2518*cdf0e10cSrcweir bContent = sal_False; 2519*cdf0e10cSrcweir break; 2520*cdf0e10cSrcweir 2521*cdf0e10cSrcweir case XML_TOK_TEXT_AUTOMARK: 2522*cdf0e10cSrcweir if( XML_TEXT_TYPE_BODY == eType ) 2523*cdf0e10cSrcweir { 2524*cdf0e10cSrcweir pContext = new XMLAutoMarkFileContext(rImport, nPrefix,rLocalName); 2525*cdf0e10cSrcweir } 2526*cdf0e10cSrcweir bContent = sal_False; 2527*cdf0e10cSrcweir break; 2528*cdf0e10cSrcweir 2529*cdf0e10cSrcweir case XML_TOK_TEXT_CALCULATION_SETTINGS: 2530*cdf0e10cSrcweir #ifndef SVX_LIGHT 2531*cdf0e10cSrcweir pContext = new XMLCalculationSettingsContext ( rImport, nPrefix, rLocalName, xAttrList); 2532*cdf0e10cSrcweir #else 2533*cdf0e10cSrcweir // create default context to skip content 2534*cdf0e10cSrcweir pContext = new SvXMLImportContext( rImport, nPrefix, rLocalName ); 2535*cdf0e10cSrcweir #endif // #ifndef SVX_LIGHT 2536*cdf0e10cSrcweir bContent = sal_False; 2537*cdf0e10cSrcweir break; 2538*cdf0e10cSrcweir 2539*cdf0e10cSrcweir default: 2540*cdf0e10cSrcweir if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted) || 2541*cdf0e10cSrcweir XML_TEXT_TYPE_TEXTBOX == eType || 2542*cdf0e10cSrcweir XML_TEXT_TYPE_CHANGED_REGION == eType ) 2543*cdf0e10cSrcweir { 2544*cdf0e10cSrcweir Reference < XShapes > xShapes; 2545*cdf0e10cSrcweir pContext = rImport.GetShapeImport()->CreateGroupChildContext( 2546*cdf0e10cSrcweir rImport, nPrefix, rLocalName, xAttrList, xShapes ); 2547*cdf0e10cSrcweir bContent = sal_False; 2548*cdf0e10cSrcweir } 2549*cdf0e10cSrcweir } 2550*cdf0e10cSrcweir 2551*cdf0e10cSrcweir // if( !pContext ) 2552*cdf0e10cSrcweir // pContext = new SvXMLImportContext( GetImport(), nPrefix, rLocalName ); 2553*cdf0e10cSrcweir 2554*cdf0e10cSrcweir // handle open redlines 2555*cdf0e10cSrcweir if ( (XML_TOK_TEXT_CHANGE != nToken) && 2556*cdf0e10cSrcweir (XML_TOK_TEXT_CHANGE_END != nToken) && 2557*cdf0e10cSrcweir (XML_TOK_TEXT_CHANGE_START != nToken) ) 2558*cdf0e10cSrcweir { 2559*cdf0e10cSrcweir // ResetOpenRedlineId(); 2560*cdf0e10cSrcweir } 2561*cdf0e10cSrcweir 2562*cdf0e10cSrcweir if( XML_TEXT_TYPE_BODY == eType && bContent ) 2563*cdf0e10cSrcweir { 2564*cdf0e10cSrcweir m_pImpl->m_bBodyContentStarted = sal_False; 2565*cdf0e10cSrcweir } 2566*cdf0e10cSrcweir 2567*cdf0e10cSrcweir return pContext; 2568*cdf0e10cSrcweir } 2569*cdf0e10cSrcweir 2570*cdf0e10cSrcweir SvXMLImportContext *XMLTextImportHelper::CreateTableChildContext( 2571*cdf0e10cSrcweir SvXMLImport&, 2572*cdf0e10cSrcweir sal_uInt16 /*nPrefix*/, const OUString& /*rLocalName*/, 2573*cdf0e10cSrcweir const Reference< XAttributeList > & ) 2574*cdf0e10cSrcweir { 2575*cdf0e10cSrcweir return 0; 2576*cdf0e10cSrcweir } 2577*cdf0e10cSrcweir 2578*cdf0e10cSrcweir /// get data style key for use with NumberFormat property 2579*cdf0e10cSrcweir sal_Int32 XMLTextImportHelper::GetDataStyleKey(const OUString& sStyleName, 2580*cdf0e10cSrcweir sal_Bool* pIsSystemLanguage ) 2581*cdf0e10cSrcweir { 2582*cdf0e10cSrcweir const SvXMLStyleContext* pStyle = 2583*cdf0e10cSrcweir ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)-> 2584*cdf0e10cSrcweir FindStyleChildContext( XML_STYLE_FAMILY_DATA_STYLE, 2585*cdf0e10cSrcweir sStyleName, sal_True ); 2586*cdf0e10cSrcweir 2587*cdf0e10cSrcweir // get appropriate context 2588*cdf0e10cSrcweir 2589*cdf0e10cSrcweir 2590*cdf0e10cSrcweir // first check if its a impress and draw only number format 2591*cdf0e10cSrcweir // this is needed since its also a SvXMLNumFormatContext, 2592*cdf0e10cSrcweir // that was needed to support them for controls in impress/draw also 2593*cdf0e10cSrcweir SdXMLNumberFormatImportContext* pSdNumStyle = PTR_CAST( SdXMLNumberFormatImportContext, pStyle ); 2594*cdf0e10cSrcweir if( pSdNumStyle ) 2595*cdf0e10cSrcweir { 2596*cdf0e10cSrcweir return pSdNumStyle->GetDrawKey(); 2597*cdf0e10cSrcweir } 2598*cdf0e10cSrcweir else 2599*cdf0e10cSrcweir { 2600*cdf0e10cSrcweir SvXMLNumFormatContext* pNumStyle = PTR_CAST( SvXMLNumFormatContext, pStyle ); 2601*cdf0e10cSrcweir if( pNumStyle ) 2602*cdf0e10cSrcweir { 2603*cdf0e10cSrcweir if( pIsSystemLanguage != NULL ) 2604*cdf0e10cSrcweir *pIsSystemLanguage = pNumStyle->IsSystemLanguage(); 2605*cdf0e10cSrcweir 2606*cdf0e10cSrcweir // return key 2607*cdf0e10cSrcweir return pNumStyle->GetKey(); 2608*cdf0e10cSrcweir } 2609*cdf0e10cSrcweir } 2610*cdf0e10cSrcweir return -1; 2611*cdf0e10cSrcweir } 2612*cdf0e10cSrcweir 2613*cdf0e10cSrcweir const SvxXMLListStyleContext *XMLTextImportHelper::FindAutoListStyle( const OUString& rName ) const 2614*cdf0e10cSrcweir { 2615*cdf0e10cSrcweir const SvxXMLListStyleContext *pStyle = 0; 2616*cdf0e10cSrcweir if (m_pImpl->m_xAutoStyles.Is()) 2617*cdf0e10cSrcweir { 2618*cdf0e10cSrcweir const SvXMLStyleContext* pTempStyle = 2619*cdf0e10cSrcweir ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)-> 2620*cdf0e10cSrcweir FindStyleChildContext( XML_STYLE_FAMILY_TEXT_LIST, rName, 2621*cdf0e10cSrcweir sal_True ); 2622*cdf0e10cSrcweir pStyle = PTR_CAST( SvxXMLListStyleContext ,pTempStyle); 2623*cdf0e10cSrcweir } 2624*cdf0e10cSrcweir 2625*cdf0e10cSrcweir return pStyle; 2626*cdf0e10cSrcweir } 2627*cdf0e10cSrcweir 2628*cdf0e10cSrcweir XMLPropStyleContext *XMLTextImportHelper::FindAutoFrameStyle( const OUString& rName ) const 2629*cdf0e10cSrcweir { 2630*cdf0e10cSrcweir XMLPropStyleContext *pStyle = 0; 2631*cdf0e10cSrcweir if (m_pImpl->m_xAutoStyles.Is()) 2632*cdf0e10cSrcweir { 2633*cdf0e10cSrcweir const SvXMLStyleContext* pTempStyle = 2634*cdf0e10cSrcweir ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)-> 2635*cdf0e10cSrcweir FindStyleChildContext( XML_STYLE_FAMILY_SD_GRAPHICS_ID, rName, 2636*cdf0e10cSrcweir sal_True ); 2637*cdf0e10cSrcweir pStyle = PTR_CAST( XMLPropStyleContext ,pTempStyle); 2638*cdf0e10cSrcweir } 2639*cdf0e10cSrcweir 2640*cdf0e10cSrcweir return pStyle; 2641*cdf0e10cSrcweir } 2642*cdf0e10cSrcweir 2643*cdf0e10cSrcweir XMLPropStyleContext* XMLTextImportHelper::FindSectionStyle( 2644*cdf0e10cSrcweir const OUString& rName ) const 2645*cdf0e10cSrcweir { 2646*cdf0e10cSrcweir XMLPropStyleContext* pStyle = NULL; 2647*cdf0e10cSrcweir if (m_pImpl->m_xAutoStyles.Is()) 2648*cdf0e10cSrcweir { 2649*cdf0e10cSrcweir const SvXMLStyleContext* pTempStyle = 2650*cdf0e10cSrcweir ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)-> 2651*cdf0e10cSrcweir FindStyleChildContext( 2652*cdf0e10cSrcweir XML_STYLE_FAMILY_TEXT_SECTION, 2653*cdf0e10cSrcweir rName, sal_True ); 2654*cdf0e10cSrcweir pStyle = PTR_CAST( XMLPropStyleContext,pTempStyle); 2655*cdf0e10cSrcweir } 2656*cdf0e10cSrcweir 2657*cdf0e10cSrcweir return pStyle; 2658*cdf0e10cSrcweir } 2659*cdf0e10cSrcweir 2660*cdf0e10cSrcweir XMLPropStyleContext* XMLTextImportHelper::FindPageMaster( 2661*cdf0e10cSrcweir const OUString& rName ) const 2662*cdf0e10cSrcweir { 2663*cdf0e10cSrcweir XMLPropStyleContext* pStyle = NULL; 2664*cdf0e10cSrcweir if (m_pImpl->m_xAutoStyles.Is()) 2665*cdf0e10cSrcweir { 2666*cdf0e10cSrcweir const SvXMLStyleContext* pTempStyle = 2667*cdf0e10cSrcweir ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)-> 2668*cdf0e10cSrcweir FindStyleChildContext( 2669*cdf0e10cSrcweir XML_STYLE_FAMILY_PAGE_MASTER, 2670*cdf0e10cSrcweir rName, sal_True ); 2671*cdf0e10cSrcweir pStyle = PTR_CAST( XMLPropStyleContext,pTempStyle); 2672*cdf0e10cSrcweir } 2673*cdf0e10cSrcweir 2674*cdf0e10cSrcweir return pStyle; 2675*cdf0e10cSrcweir } 2676*cdf0e10cSrcweir 2677*cdf0e10cSrcweir 2678*cdf0e10cSrcweir void XMLTextImportHelper::PushListContext(XMLTextListBlockContext *i_pListBlock) 2679*cdf0e10cSrcweir { 2680*cdf0e10cSrcweir GetTextListHelper().PushListContext(i_pListBlock); 2681*cdf0e10cSrcweir } 2682*cdf0e10cSrcweir 2683*cdf0e10cSrcweir void XMLTextImportHelper::PopListContext() 2684*cdf0e10cSrcweir { 2685*cdf0e10cSrcweir GetTextListHelper().PopListContext(); 2686*cdf0e10cSrcweir } 2687*cdf0e10cSrcweir 2688*cdf0e10cSrcweir 2689*cdf0e10cSrcweir const SvXMLTokenMap& XMLTextImportHelper::GetTextNumberedParagraphAttrTokenMap() 2690*cdf0e10cSrcweir { 2691*cdf0e10cSrcweir if (!m_pImpl->m_pTextNumberedParagraphAttrTokenMap.get()) 2692*cdf0e10cSrcweir { 2693*cdf0e10cSrcweir m_pImpl->m_pTextNumberedParagraphAttrTokenMap.reset( 2694*cdf0e10cSrcweir new SvXMLTokenMap( aTextNumberedParagraphAttrTokenMap ) ); 2695*cdf0e10cSrcweir } 2696*cdf0e10cSrcweir return *m_pImpl->m_pTextNumberedParagraphAttrTokenMap; 2697*cdf0e10cSrcweir } 2698*cdf0e10cSrcweir 2699*cdf0e10cSrcweir const SvXMLTokenMap& XMLTextImportHelper::GetTextListBlockAttrTokenMap() 2700*cdf0e10cSrcweir { 2701*cdf0e10cSrcweir if (!m_pImpl->m_pTextListBlockAttrTokenMap.get()) 2702*cdf0e10cSrcweir { 2703*cdf0e10cSrcweir m_pImpl->m_pTextListBlockAttrTokenMap.reset( 2704*cdf0e10cSrcweir new SvXMLTokenMap( aTextListBlockAttrTokenMap ) ); 2705*cdf0e10cSrcweir } 2706*cdf0e10cSrcweir return *m_pImpl->m_pTextListBlockAttrTokenMap; 2707*cdf0e10cSrcweir } 2708*cdf0e10cSrcweir 2709*cdf0e10cSrcweir const SvXMLTokenMap& XMLTextImportHelper::GetTextListBlockElemTokenMap() 2710*cdf0e10cSrcweir { 2711*cdf0e10cSrcweir if (!m_pImpl->m_pTextListBlockElemTokenMap.get()) 2712*cdf0e10cSrcweir { 2713*cdf0e10cSrcweir m_pImpl->m_pTextListBlockElemTokenMap.reset( 2714*cdf0e10cSrcweir new SvXMLTokenMap( aTextListBlockElemTokenMap ) ); 2715*cdf0e10cSrcweir } 2716*cdf0e10cSrcweir return *m_pImpl->m_pTextListBlockElemTokenMap; 2717*cdf0e10cSrcweir } 2718*cdf0e10cSrcweir 2719*cdf0e10cSrcweir SvI18NMap& XMLTextImportHelper::GetRenameMap() 2720*cdf0e10cSrcweir { 2721*cdf0e10cSrcweir if (!m_pImpl->m_pRenameMap.get()) 2722*cdf0e10cSrcweir { 2723*cdf0e10cSrcweir m_pImpl->m_pRenameMap.reset( new SvI18NMap() ); 2724*cdf0e10cSrcweir } 2725*cdf0e10cSrcweir return *m_pImpl->m_pRenameMap; 2726*cdf0e10cSrcweir } 2727*cdf0e10cSrcweir 2728*cdf0e10cSrcweir void XMLTextImportHelper::InsertBookmarkStartRange( 2729*cdf0e10cSrcweir const OUString sName, 2730*cdf0e10cSrcweir const Reference<XTextRange> & rRange, 2731*cdf0e10cSrcweir OUString const& i_rXmlId, 2732*cdf0e10cSrcweir ::boost::shared_ptr< ::xmloff::ParsedRDFaAttributes > & i_rpRDFaAttributes) 2733*cdf0e10cSrcweir { 2734*cdf0e10cSrcweir m_pImpl->m_BookmarkStartRanges[sName] = 2735*cdf0e10cSrcweir ::boost::make_tuple(rRange, i_rXmlId, i_rpRDFaAttributes); 2736*cdf0e10cSrcweir m_pImpl->m_BookmarkVector.push_back(sName); 2737*cdf0e10cSrcweir } 2738*cdf0e10cSrcweir 2739*cdf0e10cSrcweir sal_Bool XMLTextImportHelper::FindAndRemoveBookmarkStartRange( 2740*cdf0e10cSrcweir const OUString sName, 2741*cdf0e10cSrcweir Reference<XTextRange> & o_rRange, 2742*cdf0e10cSrcweir OUString & o_rXmlId, 2743*cdf0e10cSrcweir ::boost::shared_ptr< ::xmloff::ParsedRDFaAttributes > & o_rpRDFaAttributes) 2744*cdf0e10cSrcweir { 2745*cdf0e10cSrcweir if (m_pImpl->m_BookmarkStartRanges.count(sName)) 2746*cdf0e10cSrcweir { 2747*cdf0e10cSrcweir Impl::BookmarkMapEntry_t & rEntry = 2748*cdf0e10cSrcweir (*m_pImpl->m_BookmarkStartRanges.find(sName)).second; 2749*cdf0e10cSrcweir o_rRange.set(rEntry.get<0>()); 2750*cdf0e10cSrcweir o_rXmlId = rEntry.get<1>(); 2751*cdf0e10cSrcweir o_rpRDFaAttributes = rEntry.get<2>(); 2752*cdf0e10cSrcweir m_pImpl->m_BookmarkStartRanges.erase(sName); 2753*cdf0e10cSrcweir Impl::BookmarkVector_t::iterator it(m_pImpl->m_BookmarkVector.begin()); 2754*cdf0e10cSrcweir while (it != m_pImpl->m_BookmarkVector.end() && it->compareTo(sName)!=0) 2755*cdf0e10cSrcweir { 2756*cdf0e10cSrcweir it++; 2757*cdf0e10cSrcweir } 2758*cdf0e10cSrcweir if (it!=m_pImpl->m_BookmarkVector.end()) { 2759*cdf0e10cSrcweir m_pImpl->m_BookmarkVector.erase(it); 2760*cdf0e10cSrcweir } 2761*cdf0e10cSrcweir return sal_True; 2762*cdf0e10cSrcweir } 2763*cdf0e10cSrcweir else 2764*cdf0e10cSrcweir { 2765*cdf0e10cSrcweir return sal_False; 2766*cdf0e10cSrcweir } 2767*cdf0e10cSrcweir } 2768*cdf0e10cSrcweir 2769*cdf0e10cSrcweir ::rtl::OUString XMLTextImportHelper::FindActiveBookmarkName() 2770*cdf0e10cSrcweir { 2771*cdf0e10cSrcweir if (!m_pImpl->m_BookmarkVector.empty()) { 2772*cdf0e10cSrcweir return m_pImpl->m_BookmarkVector.back(); 2773*cdf0e10cSrcweir } else return ::rtl::OUString(); // return the empty string on error... 2774*cdf0e10cSrcweir } 2775*cdf0e10cSrcweir 2776*cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > XMLTextImportHelper::GetRangeFor(::rtl::OUString &sName) 2777*cdf0e10cSrcweir { 2778*cdf0e10cSrcweir return m_pImpl->m_BookmarkStartRanges[sName].get<0>(); 2779*cdf0e10cSrcweir } 2780*cdf0e10cSrcweir 2781*cdf0e10cSrcweir 2782*cdf0e10cSrcweir void XMLTextImportHelper::pushFieldCtx( ::rtl::OUString name, ::rtl::OUString type ) 2783*cdf0e10cSrcweir { 2784*cdf0e10cSrcweir m_pImpl->m_FieldStack.push(Impl::field_stack_item_t( 2785*cdf0e10cSrcweir Impl::field_name_type_t(name, type), Impl::field_params_t())); 2786*cdf0e10cSrcweir } 2787*cdf0e10cSrcweir 2788*cdf0e10cSrcweir void XMLTextImportHelper::popFieldCtx() 2789*cdf0e10cSrcweir { 2790*cdf0e10cSrcweir m_pImpl->m_FieldStack.pop(); 2791*cdf0e10cSrcweir } 2792*cdf0e10cSrcweir 2793*cdf0e10cSrcweir void XMLTextImportHelper::addFieldParam( ::rtl::OUString name, ::rtl::OUString value ) 2794*cdf0e10cSrcweir { 2795*cdf0e10cSrcweir DBG_ASSERT(!m_pImpl->m_FieldStack.empty(), 2796*cdf0e10cSrcweir "stack is empty: not good! Do a pushFieldCtx before..."); 2797*cdf0e10cSrcweir if (!m_pImpl->m_FieldStack.empty()) { 2798*cdf0e10cSrcweir Impl::field_stack_item_t & FieldStackItem(m_pImpl->m_FieldStack.top()); 2799*cdf0e10cSrcweir FieldStackItem.second.push_back(Impl::field_param_t( name, value )); 2800*cdf0e10cSrcweir } 2801*cdf0e10cSrcweir } 2802*cdf0e10cSrcweir ::rtl::OUString XMLTextImportHelper::getCurrentFieldName() 2803*cdf0e10cSrcweir { 2804*cdf0e10cSrcweir DBG_ASSERT(!m_pImpl->m_FieldStack.empty(), 2805*cdf0e10cSrcweir "stack is empty: not good! Do a pushFieldCtx before..."); 2806*cdf0e10cSrcweir if (!m_pImpl->m_FieldStack.empty()) { 2807*cdf0e10cSrcweir return m_pImpl->m_FieldStack.top().first.first; 2808*cdf0e10cSrcweir } else return ::rtl::OUString(); 2809*cdf0e10cSrcweir } 2810*cdf0e10cSrcweir 2811*cdf0e10cSrcweir ::rtl::OUString XMLTextImportHelper::getCurrentFieldType() 2812*cdf0e10cSrcweir { 2813*cdf0e10cSrcweir DBG_ASSERT(!m_pImpl->m_FieldStack.empty(), 2814*cdf0e10cSrcweir "stack is empty: not good! Do a pushFieldCtx before..."); 2815*cdf0e10cSrcweir if (!m_pImpl->m_FieldStack.empty()) { 2816*cdf0e10cSrcweir return m_pImpl->m_FieldStack.top().first.second; 2817*cdf0e10cSrcweir } else return ::rtl::OUString(); 2818*cdf0e10cSrcweir } 2819*cdf0e10cSrcweir 2820*cdf0e10cSrcweir bool XMLTextImportHelper::hasCurrentFieldCtx() 2821*cdf0e10cSrcweir { 2822*cdf0e10cSrcweir return !m_pImpl->m_FieldStack.empty(); 2823*cdf0e10cSrcweir } 2824*cdf0e10cSrcweir 2825*cdf0e10cSrcweir void XMLTextImportHelper::setCurrentFieldParamsTo(::com::sun::star::uno::Reference< ::com::sun::star::text::XFormField> &xFormField) 2826*cdf0e10cSrcweir { 2827*cdf0e10cSrcweir DBG_ASSERT(!m_pImpl->m_FieldStack.empty(), 2828*cdf0e10cSrcweir "stack is empty: not good! Do a pushFieldCtx before..."); 2829*cdf0e10cSrcweir if (!m_pImpl->m_FieldStack.empty() && xFormField.is()) 2830*cdf0e10cSrcweir { 2831*cdf0e10cSrcweir FieldParamImporter(&m_pImpl->m_FieldStack.top().second, 2832*cdf0e10cSrcweir xFormField->getParameters()).Import(); 2833*cdf0e10cSrcweir } 2834*cdf0e10cSrcweir } 2835*cdf0e10cSrcweir 2836*cdf0e10cSrcweir 2837*cdf0e10cSrcweir void XMLTextImportHelper::ConnectFrameChains( 2838*cdf0e10cSrcweir const OUString& rFrmName, 2839*cdf0e10cSrcweir const OUString& rNextFrmName, 2840*cdf0e10cSrcweir const Reference < XPropertySet >& rFrmPropSet ) 2841*cdf0e10cSrcweir { 2842*cdf0e10cSrcweir static ::rtl::OUString s_ChainNextName( 2843*cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM("ChainNextName")); 2844*cdf0e10cSrcweir static ::rtl::OUString s_ChainPrevName( 2845*cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM("ChainPrevName")); 2846*cdf0e10cSrcweir 2847*cdf0e10cSrcweir if( !rFrmName.getLength() ) 2848*cdf0e10cSrcweir return; 2849*cdf0e10cSrcweir 2850*cdf0e10cSrcweir if( rNextFrmName.getLength() ) 2851*cdf0e10cSrcweir { 2852*cdf0e10cSrcweir OUString sNextFrmName(GetRenameMap().Get( XML_TEXT_RENAME_TYPE_FRAME, 2853*cdf0e10cSrcweir rNextFrmName )); 2854*cdf0e10cSrcweir if (m_pImpl->m_xTextFrames.is() 2855*cdf0e10cSrcweir && m_pImpl->m_xTextFrames->hasByName(sNextFrmName)) 2856*cdf0e10cSrcweir { 2857*cdf0e10cSrcweir rFrmPropSet->setPropertyValue(s_ChainNextName, 2858*cdf0e10cSrcweir makeAny(sNextFrmName)); 2859*cdf0e10cSrcweir } 2860*cdf0e10cSrcweir else 2861*cdf0e10cSrcweir { 2862*cdf0e10cSrcweir if (!m_pImpl->m_pPrevFrmNames.get()) 2863*cdf0e10cSrcweir { 2864*cdf0e10cSrcweir m_pImpl->m_pPrevFrmNames.reset( new SvStringsDtor ); 2865*cdf0e10cSrcweir m_pImpl->m_pNextFrmNames.reset( new SvStringsDtor ); 2866*cdf0e10cSrcweir } 2867*cdf0e10cSrcweir m_pImpl->m_pPrevFrmNames->Insert( new String( rFrmName ), 2868*cdf0e10cSrcweir m_pImpl->m_pPrevFrmNames->Count() ); 2869*cdf0e10cSrcweir m_pImpl->m_pNextFrmNames->Insert( new String( sNextFrmName ), 2870*cdf0e10cSrcweir m_pImpl->m_pNextFrmNames->Count() ); 2871*cdf0e10cSrcweir } 2872*cdf0e10cSrcweir } 2873*cdf0e10cSrcweir if (m_pImpl->m_pPrevFrmNames.get() && m_pImpl->m_pPrevFrmNames->Count()) 2874*cdf0e10cSrcweir { 2875*cdf0e10cSrcweir sal_uInt16 nCount = m_pImpl->m_pPrevFrmNames->Count(); 2876*cdf0e10cSrcweir for( sal_uInt16 i=0; i<nCount; i++ ) 2877*cdf0e10cSrcweir { 2878*cdf0e10cSrcweir String *pNext = (*m_pImpl->m_pNextFrmNames)[i]; 2879*cdf0e10cSrcweir if( OUString(*pNext) == rFrmName ) 2880*cdf0e10cSrcweir { 2881*cdf0e10cSrcweir // The previuous frame must exist, because it existing than 2882*cdf0e10cSrcweir // inserting the entry 2883*cdf0e10cSrcweir String *pPrev = (*m_pImpl->m_pPrevFrmNames)[i]; 2884*cdf0e10cSrcweir 2885*cdf0e10cSrcweir rFrmPropSet->setPropertyValue(s_ChainPrevName, 2886*cdf0e10cSrcweir makeAny(OUString( *pPrev ))); 2887*cdf0e10cSrcweir 2888*cdf0e10cSrcweir m_pImpl->m_pPrevFrmNames->Remove( i, 1 ); 2889*cdf0e10cSrcweir m_pImpl->m_pNextFrmNames->Remove( i, 1 ); 2890*cdf0e10cSrcweir delete pPrev; 2891*cdf0e10cSrcweir delete pNext; 2892*cdf0e10cSrcweir 2893*cdf0e10cSrcweir // There cannot be more than one previous frames 2894*cdf0e10cSrcweir break; 2895*cdf0e10cSrcweir } 2896*cdf0e10cSrcweir } 2897*cdf0e10cSrcweir } 2898*cdf0e10cSrcweir } 2899*cdf0e10cSrcweir 2900*cdf0e10cSrcweir sal_Bool XMLTextImportHelper::IsInFrame() const 2901*cdf0e10cSrcweir { 2902*cdf0e10cSrcweir static ::rtl::OUString s_TextFrame( 2903*cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM("TextFrame")); 2904*cdf0e10cSrcweir 2905*cdf0e10cSrcweir sal_Bool bIsInFrame = sal_False; 2906*cdf0e10cSrcweir 2907*cdf0e10cSrcweir // are we currently in a text frame? yes, if the cursor has a 2908*cdf0e10cSrcweir // TextFrame property and it's non-NULL 2909*cdf0e10cSrcweir Reference<XPropertySet> xPropSet(((XMLTextImportHelper *)this)->GetCursor(), UNO_QUERY); 2910*cdf0e10cSrcweir if (xPropSet.is()) 2911*cdf0e10cSrcweir { 2912*cdf0e10cSrcweir if (xPropSet->getPropertySetInfo()->hasPropertyByName(s_TextFrame)) 2913*cdf0e10cSrcweir { 2914*cdf0e10cSrcweir uno::Reference<XTextFrame> const xFrame( 2915*cdf0e10cSrcweir xPropSet->getPropertyValue(s_TextFrame), UNO_QUERY); 2916*cdf0e10cSrcweir 2917*cdf0e10cSrcweir if (xFrame.is()) 2918*cdf0e10cSrcweir { 2919*cdf0e10cSrcweir bIsInFrame = sal_True; 2920*cdf0e10cSrcweir } 2921*cdf0e10cSrcweir } 2922*cdf0e10cSrcweir } 2923*cdf0e10cSrcweir 2924*cdf0e10cSrcweir return bIsInFrame; 2925*cdf0e10cSrcweir } 2926*cdf0e10cSrcweir 2927*cdf0e10cSrcweir sal_Bool XMLTextImportHelper::IsInHeaderFooter() const 2928*cdf0e10cSrcweir { 2929*cdf0e10cSrcweir return sal_False; 2930*cdf0e10cSrcweir } 2931*cdf0e10cSrcweir 2932*cdf0e10cSrcweir Reference< XPropertySet> XMLTextImportHelper::createAndInsertOLEObject( 2933*cdf0e10cSrcweir SvXMLImport&, 2934*cdf0e10cSrcweir const OUString& /*rHRef*/, 2935*cdf0e10cSrcweir const OUString& /*rStyleName*/, 2936*cdf0e10cSrcweir const OUString& /*rTblName*/, 2937*cdf0e10cSrcweir sal_Int32 /*nWidth*/, sal_Int32 /*nHeight*/ ) 2938*cdf0e10cSrcweir { 2939*cdf0e10cSrcweir Reference< XPropertySet> xPropSet; 2940*cdf0e10cSrcweir return xPropSet; 2941*cdf0e10cSrcweir } 2942*cdf0e10cSrcweir 2943*cdf0e10cSrcweir Reference< XPropertySet> XMLTextImportHelper::createAndInsertOOoLink( 2944*cdf0e10cSrcweir SvXMLImport&, 2945*cdf0e10cSrcweir const OUString& /*rHRef*/, 2946*cdf0e10cSrcweir const OUString& /*rStyleName*/, 2947*cdf0e10cSrcweir const OUString& /*rTblName*/, 2948*cdf0e10cSrcweir sal_Int32 /*nWidth*/, sal_Int32 /*nHeight*/ ) 2949*cdf0e10cSrcweir { 2950*cdf0e10cSrcweir Reference< XPropertySet> xPropSet; 2951*cdf0e10cSrcweir return xPropSet; 2952*cdf0e10cSrcweir } 2953*cdf0e10cSrcweir 2954*cdf0e10cSrcweir Reference< XPropertySet> XMLTextImportHelper::createAndInsertApplet( 2955*cdf0e10cSrcweir const OUString& /*rCode*/, 2956*cdf0e10cSrcweir const OUString& /*rName*/, 2957*cdf0e10cSrcweir sal_Bool /*bMayScript*/, 2958*cdf0e10cSrcweir const OUString& /*rHRef*/, 2959*cdf0e10cSrcweir sal_Int32 /*nWidth*/, sal_Int32 /*nHeight*/ ) 2960*cdf0e10cSrcweir { 2961*cdf0e10cSrcweir Reference< XPropertySet> xPropSet; 2962*cdf0e10cSrcweir return xPropSet; 2963*cdf0e10cSrcweir } 2964*cdf0e10cSrcweir Reference< XPropertySet> XMLTextImportHelper::createAndInsertPlugin( 2965*cdf0e10cSrcweir const OUString& /*rMimeType*/, 2966*cdf0e10cSrcweir const OUString& /*rHRef*/, 2967*cdf0e10cSrcweir sal_Int32 /*nWidth*/, sal_Int32 /*nHeight*/ ) 2968*cdf0e10cSrcweir { 2969*cdf0e10cSrcweir Reference< XPropertySet> xPropSet; 2970*cdf0e10cSrcweir return xPropSet; 2971*cdf0e10cSrcweir } 2972*cdf0e10cSrcweir Reference< XPropertySet> XMLTextImportHelper::createAndInsertFloatingFrame( 2973*cdf0e10cSrcweir const OUString& /*rName*/, 2974*cdf0e10cSrcweir const OUString& /*rHRef*/, 2975*cdf0e10cSrcweir const OUString& /*rStyleName*/, 2976*cdf0e10cSrcweir sal_Int32 /*nWidth*/, sal_Int32 /*nHeight*/ ) 2977*cdf0e10cSrcweir { 2978*cdf0e10cSrcweir Reference< XPropertySet> xPropSet; 2979*cdf0e10cSrcweir return xPropSet; 2980*cdf0e10cSrcweir } 2981*cdf0e10cSrcweir 2982*cdf0e10cSrcweir void XMLTextImportHelper::endAppletOrPlugin( 2983*cdf0e10cSrcweir const Reference < XPropertySet> &, 2984*cdf0e10cSrcweir std::map < const rtl::OUString, rtl::OUString, UStringLess > &) 2985*cdf0e10cSrcweir { 2986*cdf0e10cSrcweir } 2987*cdf0e10cSrcweir // redline helper: dummy implementation to be overridden in sw/filter/xml 2988*cdf0e10cSrcweir void XMLTextImportHelper::RedlineAdd( 2989*cdf0e10cSrcweir const OUString& /*rType*/, 2990*cdf0e10cSrcweir const OUString& /*rId*/, 2991*cdf0e10cSrcweir const OUString& /*rAuthor*/, 2992*cdf0e10cSrcweir const OUString& /*rComment*/, 2993*cdf0e10cSrcweir const DateTime& /*rDateTime*/, 2994*cdf0e10cSrcweir sal_Bool /*bMergeLastPara*/) 2995*cdf0e10cSrcweir { 2996*cdf0e10cSrcweir // dummy implementation: do nothing 2997*cdf0e10cSrcweir } 2998*cdf0e10cSrcweir 2999*cdf0e10cSrcweir Reference<XTextCursor> XMLTextImportHelper::RedlineCreateText( 3000*cdf0e10cSrcweir Reference<XTextCursor> & /*rOldCursor*/, 3001*cdf0e10cSrcweir const OUString& /*rId*/) 3002*cdf0e10cSrcweir { 3003*cdf0e10cSrcweir // dummy implementation: do nothing 3004*cdf0e10cSrcweir Reference<XTextCursor> xRet; 3005*cdf0e10cSrcweir return xRet; 3006*cdf0e10cSrcweir } 3007*cdf0e10cSrcweir 3008*cdf0e10cSrcweir void XMLTextImportHelper::RedlineSetCursor( 3009*cdf0e10cSrcweir const OUString& /*rId*/, 3010*cdf0e10cSrcweir sal_Bool /*bStart*/, 3011*cdf0e10cSrcweir sal_Bool /*bIsOutsideOfParagraph*/) 3012*cdf0e10cSrcweir { 3013*cdf0e10cSrcweir // dummy implementation: do nothing 3014*cdf0e10cSrcweir } 3015*cdf0e10cSrcweir 3016*cdf0e10cSrcweir void XMLTextImportHelper::RedlineAdjustStartNodeCursor(sal_Bool) 3017*cdf0e10cSrcweir { 3018*cdf0e10cSrcweir // dummy implementation: do nothing 3019*cdf0e10cSrcweir } 3020*cdf0e10cSrcweir 3021*cdf0e10cSrcweir void XMLTextImportHelper::SetShowChanges( sal_Bool ) 3022*cdf0e10cSrcweir { 3023*cdf0e10cSrcweir // dummy implementation: do nothing 3024*cdf0e10cSrcweir } 3025*cdf0e10cSrcweir 3026*cdf0e10cSrcweir void XMLTextImportHelper::SetRecordChanges( sal_Bool ) 3027*cdf0e10cSrcweir { 3028*cdf0e10cSrcweir // dummy implementation: do nothing 3029*cdf0e10cSrcweir } 3030*cdf0e10cSrcweir void XMLTextImportHelper::SetChangesProtectionKey(const Sequence<sal_Int8> &) 3031*cdf0e10cSrcweir { 3032*cdf0e10cSrcweir // dummy implementation: do nothing 3033*cdf0e10cSrcweir } 3034*cdf0e10cSrcweir 3035*cdf0e10cSrcweir 3036*cdf0e10cSrcweir OUString XMLTextImportHelper::GetOpenRedlineId() 3037*cdf0e10cSrcweir { 3038*cdf0e10cSrcweir return m_pImpl->m_sOpenRedlineIdentifier; 3039*cdf0e10cSrcweir } 3040*cdf0e10cSrcweir 3041*cdf0e10cSrcweir void XMLTextImportHelper::SetOpenRedlineId( ::rtl::OUString& rId) 3042*cdf0e10cSrcweir { 3043*cdf0e10cSrcweir m_pImpl->m_sOpenRedlineIdentifier = rId; 3044*cdf0e10cSrcweir } 3045*cdf0e10cSrcweir 3046*cdf0e10cSrcweir void XMLTextImportHelper::ResetOpenRedlineId() 3047*cdf0e10cSrcweir { 3048*cdf0e10cSrcweir OUString sEmpty; 3049*cdf0e10cSrcweir SetOpenRedlineId(sEmpty); 3050*cdf0e10cSrcweir } 3051*cdf0e10cSrcweir 3052*cdf0e10cSrcweir void 3053*cdf0e10cSrcweir XMLTextImportHelper::SetCellParaStyleDefault(::rtl::OUString const& rNewValue) 3054*cdf0e10cSrcweir { 3055*cdf0e10cSrcweir m_pImpl->m_sCellParaStyleDefault = rNewValue; 3056*cdf0e10cSrcweir } 3057*cdf0e10cSrcweir 3058*cdf0e10cSrcweir ::rtl::OUString const& XMLTextImportHelper::GetCellParaStyleDefault() 3059*cdf0e10cSrcweir { 3060*cdf0e10cSrcweir return m_pImpl->m_sCellParaStyleDefault; 3061*cdf0e10cSrcweir } 3062*cdf0e10cSrcweir 3063