| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| // MARKER(update_precomp.py): autogen include statement, do not remove |
| #include "precompiled_xmloff.hxx" |
| |
| #include <vector> |
| |
| #include <boost/scoped_array.hpp> |
| #include <boost/tuple/tuple.hpp> |
| |
| #include <tools/solar.h> |
| #include <tools/debug.hxx> |
| #ifndef _SVSTDARR_STRINGSDTOR_DECL |
| #define _SVSTDARR_STRINGSDTOR |
| #include <svl/svstdarr.hxx> |
| #endif |
| #include <com/sun/star/beans/XPropertySet.hpp> |
| #include <com/sun/star/beans/PropertyValue.hpp> |
| #include <com/sun/star/container/XEnumerationAccess.hpp> |
| #include <com/sun/star/container/XNameContainer.hpp> |
| #include <com/sun/star/style/XStyleFamiliesSupplier.hpp> |
| #include <com/sun/star/text/XTextCursor.hpp> |
| #include <com/sun/star/text/XChapterNumberingSupplier.hpp> |
| #include <com/sun/star/text/XTextFramesSupplier.hpp> |
| #include <com/sun/star/text/XTextGraphicObjectsSupplier.hpp> |
| #include <com/sun/star/text/XTextEmbeddedObjectsSupplier.hpp> |
| #include <com/sun/star/text/TextContentAnchorType.hpp> |
| #include <com/sun/star/text/XTextFrame.hpp> |
| #include <com/sun/star/text/XFormField.hpp> |
| #include <com/sun/star/drawing/XShapes.hpp> |
| #include <com/sun/star/util/DateTime.hpp> |
| #include <com/sun/star/lang/XMultiServiceFactory.hpp> |
| #include <com/sun/star/ucb/XAnyCompareFactory.hpp> |
| #include <com/sun/star/container/XNamed.hpp> |
| #include <xmloff/xmltoken.hxx> |
| #include "xmloff/xmlnmspe.hxx" |
| #include <xmloff/txtstyli.hxx> |
| #include <xmloff/families.hxx> |
| #include <xmloff/xmlnumfi.hxx> |
| #include <xmloff/xmlnumi.hxx> |
| #include <xmloff/xmlictxt.hxx> |
| #include <xmloff/xmlimppr.hxx> |
| |
| #include "txtparai.hxx" |
| #include <xmloff/txtimp.hxx> |
| #include <xmloff/txtprmap.hxx> |
| #include "xmloff/txtimppr.hxx" |
| #include <xmloff/xmlimp.hxx> |
| #include "txtvfldi.hxx" |
| #include "xmloff/i18nmap.hxx" |
| #include "XMLTextListItemContext.hxx" |
| #include "XMLTextListBlockContext.hxx" |
| #include "XMLTextFrameContext.hxx" |
| #include "XMLPropertyBackpatcher.hxx" |
| #include "XMLTextFrameHyperlinkContext.hxx" |
| #include "XMLSectionImportContext.hxx" |
| #include "XMLIndexTOCContext.hxx" |
| #include <xmloff/XMLFontStylesContext.hxx> |
| #include <xmloff/ProgressBarHelper.hxx> |
| #include <xmloff/nmspmap.hxx> |
| #include <xmloff/XMLEventsImportContext.hxx> |
| #include "XMLTrackedChangesImportContext.hxx" |
| #include "XMLChangeImportContext.hxx" |
| #include "XMLAutoMarkFileContext.hxx" |
| |
| #include "XMLCalculationSettingsContext.hxx" |
| #include <xmloff/formsimp.hxx> |
| #include "XMLNumberStylesImport.hxx" |
| #include <com/sun/star/beans/XPropertyState.hpp> |
| |
| #include <txtlists.hxx> |
| #include <xmloff/odffields.hxx> |
| #include <comphelper/stlunosequence.hxx> |
| |
| using ::rtl::OUString; |
| using ::rtl::OUStringBuffer; |
| using ::com::sun::star::ucb::XAnyCompare; |
| |
| using namespace ::std; |
| using namespace ::com::sun::star; |
| using namespace ::com::sun::star::uno; |
| using namespace ::com::sun::star::beans; |
| using namespace ::com::sun::star::text; |
| using namespace ::com::sun::star::frame; |
| using namespace ::com::sun::star::style; |
| using namespace ::com::sun::star::container; |
| using namespace ::com::sun::star::drawing; |
| using namespace ::com::sun::star::xml::sax; |
| using namespace ::com::sun::star::lang; |
| using namespace ::xmloff::token; |
| using ::com::sun::star::util::DateTime; |
| using namespace ::com::sun::star::ucb; |
| using namespace ::com::sun::star; |
| using ::comphelper::UStringLess; |
| |
| |
| |
| static __FAR_DATA SvXMLTokenMapEntry aTextElemTokenMap[] = |
| { |
| { XML_NAMESPACE_TEXT, XML_P, XML_TOK_TEXT_P }, |
| { XML_NAMESPACE_TEXT, XML_H, XML_TOK_TEXT_H }, |
| { XML_NAMESPACE_TEXT, XML_LIST, XML_TOK_TEXT_LIST }, |
| { XML_NAMESPACE_DRAW, XML_FRAME, XML_TOK_TEXT_FRAME_PAGE }, |
| { XML_NAMESPACE_DRAW, XML_A, XML_TOK_DRAW_A_PAGE }, |
| { XML_NAMESPACE_TABLE,XML_TABLE, XML_TOK_TABLE_TABLE }, |
| // { XML_NAMESPACE_TABLE,XML_SUB_TABLE, XML_TOK_TABLE_SUBTABLE }, |
| { XML_NAMESPACE_TEXT, XML_VARIABLE_DECLS, XML_TOK_TEXT_VARFIELD_DECLS }, |
| { XML_NAMESPACE_TEXT, XML_USER_FIELD_DECLS, XML_TOK_TEXT_USERFIELD_DECLS }, |
| { XML_NAMESPACE_TEXT, XML_SEQUENCE_DECLS, XML_TOK_TEXT_SEQUENCE_DECLS }, |
| { XML_NAMESPACE_TEXT, XML_DDE_CONNECTION_DECLS, XML_TOK_TEXT_DDE_DECLS }, |
| { XML_NAMESPACE_TEXT, XML_SECTION, XML_TOK_TEXT_SECTION }, |
| { XML_NAMESPACE_TEXT, XML_TABLE_OF_CONTENT, XML_TOK_TEXT_TOC }, |
| { XML_NAMESPACE_TEXT, XML_OBJECT_INDEX, XML_TOK_TEXT_OBJECT_INDEX }, |
| { XML_NAMESPACE_TEXT, XML_TABLE_INDEX, XML_TOK_TEXT_TABLE_INDEX }, |
| { XML_NAMESPACE_TEXT, XML_ILLUSTRATION_INDEX, XML_TOK_TEXT_ILLUSTRATION_INDEX }, |
| { XML_NAMESPACE_TEXT, XML_USER_INDEX, XML_TOK_TEXT_USER_INDEX }, |
| { XML_NAMESPACE_TEXT, XML_ALPHABETICAL_INDEX, XML_TOK_TEXT_ALPHABETICAL_INDEX }, |
| { XML_NAMESPACE_TEXT, XML_BIBLIOGRAPHY, XML_TOK_TEXT_BIBLIOGRAPHY_INDEX }, |
| { XML_NAMESPACE_TEXT, XML_INDEX_TITLE, XML_TOK_TEXT_INDEX_TITLE }, |
| { XML_NAMESPACE_TEXT, XML_TRACKED_CHANGES, XML_TOK_TEXT_TRACKED_CHANGES }, |
| { XML_NAMESPACE_TEXT, XML_CHANGE_START, XML_TOK_TEXT_CHANGE_START }, |
| { XML_NAMESPACE_TEXT, XML_CHANGE_END, XML_TOK_TEXT_CHANGE_END }, |
| { XML_NAMESPACE_TEXT, XML_CHANGE, XML_TOK_TEXT_CHANGE }, |
| { XML_NAMESPACE_OFFICE, XML_FORMS, XML_TOK_TEXT_FORMS }, |
| { XML_NAMESPACE_TABLE, XML_CALCULATION_SETTINGS, XML_TOK_TEXT_CALCULATION_SETTINGS }, |
| { XML_NAMESPACE_TEXT, XML_ALPHABETICAL_INDEX_AUTO_MARK_FILE, XML_TOK_TEXT_AUTOMARK }, |
| // --> FLR #i52127# |
| { XML_NAMESPACE_TEXT, XML_NUMBERED_PARAGRAPH, XML_TOK_TEXT_NUMBERED_PARAGRAPH }, |
| // <-- |
| |
| XML_TOKEN_MAP_END |
| }; |
| |
| static __FAR_DATA SvXMLTokenMapEntry aTextPElemTokenMap[] = |
| { |
| { XML_NAMESPACE_TEXT, XML_SPAN, XML_TOK_TEXT_SPAN }, |
| { XML_NAMESPACE_TEXT, XML_TAB, XML_TOK_TEXT_TAB_STOP }, |
| { XML_NAMESPACE_TEXT, XML_LINE_BREAK, XML_TOK_TEXT_LINE_BREAK }, |
| { XML_NAMESPACE_TEXT, XML_SOFT_PAGE_BREAK, XML_TOK_TEXT_SOFT_PAGE_BREAK }, |
| { XML_NAMESPACE_TEXT, XML_S, XML_TOK_TEXT_S }, |
| { XML_NAMESPACE_TEXT, XML_A, XML_TOK_TEXT_HYPERLINK }, |
| { XML_NAMESPACE_TEXT, XML_RUBY, XML_TOK_TEXT_RUBY }, |
| |
| { XML_NAMESPACE_TEXT, XML_NOTE, XML_TOK_TEXT_NOTE }, |
| { XML_NAMESPACE_TEXT, XML_BOOKMARK, XML_TOK_TEXT_BOOKMARK }, |
| { XML_NAMESPACE_TEXT, XML_BOOKMARK_START, XML_TOK_TEXT_BOOKMARK_START }, |
| { XML_NAMESPACE_TEXT, XML_BOOKMARK_END, XML_TOK_TEXT_BOOKMARK_END }, |
| { XML_NAMESPACE_TEXT, XML_REFERENCE_MARK, XML_TOK_TEXT_REFERENCE }, |
| { XML_NAMESPACE_TEXT, XML_REFERENCE_MARK_START, |
| XML_TOK_TEXT_REFERENCE_START }, |
| { XML_NAMESPACE_TEXT, XML_REFERENCE_MARK_END, |
| XML_TOK_TEXT_REFERENCE_END }, |
| |
| { XML_NAMESPACE_DRAW, XML_FRAME, XML_TOK_TEXT_FRAME }, |
| { XML_NAMESPACE_DRAW, XML_A, XML_TOK_DRAW_A }, |
| |
| // index marks |
| { XML_NAMESPACE_TEXT, XML_TOC_MARK, XML_TOK_TEXT_TOC_MARK }, |
| { XML_NAMESPACE_TEXT, XML_TOC_MARK_START, XML_TOK_TEXT_TOC_MARK_START }, |
| { XML_NAMESPACE_TEXT, XML_TOC_MARK_END, XML_TOK_TEXT_TOC_MARK_END }, |
| { XML_NAMESPACE_TEXT, XML_USER_INDEX_MARK, XML_TOK_TEXT_USER_INDEX_MARK }, |
| { XML_NAMESPACE_TEXT, XML_USER_INDEX_MARK_START, |
| XML_TOK_TEXT_USER_INDEX_MARK_START }, |
| { XML_NAMESPACE_TEXT, XML_USER_INDEX_MARK_END, |
| XML_TOK_TEXT_USER_INDEX_MARK_END }, |
| { XML_NAMESPACE_TEXT, XML_ALPHABETICAL_INDEX_MARK, |
| XML_TOK_TEXT_ALPHA_INDEX_MARK }, |
| { XML_NAMESPACE_TEXT, XML_ALPHABETICAL_INDEX_MARK_START, |
| XML_TOK_TEXT_ALPHA_INDEX_MARK_START }, |
| { XML_NAMESPACE_TEXT, XML_ALPHABETICAL_INDEX_MARK_END, |
| XML_TOK_TEXT_ALPHA_INDEX_MARK_END }, |
| |
| // sender fields |
| { XML_NAMESPACE_TEXT, XML_SENDER_FIRSTNAME,XML_TOK_TEXT_SENDER_FIRSTNAME}, |
| { XML_NAMESPACE_TEXT, XML_SENDER_LASTNAME, XML_TOK_TEXT_SENDER_LASTNAME }, |
| { XML_NAMESPACE_TEXT, XML_SENDER_INITIALS, XML_TOK_TEXT_SENDER_INITIALS }, |
| { XML_NAMESPACE_TEXT, XML_SENDER_TITLE, XML_TOK_TEXT_SENDER_TITLE }, |
| { XML_NAMESPACE_TEXT, XML_SENDER_POSITION, XML_TOK_TEXT_SENDER_POSITION }, |
| { XML_NAMESPACE_TEXT, XML_SENDER_EMAIL, XML_TOK_TEXT_SENDER_EMAIL }, |
| { XML_NAMESPACE_TEXT, XML_SENDER_PHONE_PRIVATE, XML_TOK_TEXT_SENDER_PHONE_PRIVATE }, |
| { XML_NAMESPACE_TEXT, XML_SENDER_FAX, XML_TOK_TEXT_SENDER_FAX }, |
| { XML_NAMESPACE_TEXT, XML_SENDER_COMPANY, XML_TOK_TEXT_SENDER_COMPANY }, |
| { XML_NAMESPACE_TEXT, XML_SENDER_PHONE_WORK, XML_TOK_TEXT_SENDER_PHONE_WORK }, |
| { XML_NAMESPACE_TEXT, XML_SENDER_STREET, XML_TOK_TEXT_SENDER_STREET }, |
| { XML_NAMESPACE_TEXT, XML_SENDER_CITY, XML_TOK_TEXT_SENDER_CITY }, |
| { XML_NAMESPACE_TEXT, XML_SENDER_POSTAL_CODE, XML_TOK_TEXT_SENDER_POSTAL_CODE }, |
| { XML_NAMESPACE_TEXT, XML_SENDER_COUNTRY, XML_TOK_TEXT_SENDER_COUNTRY }, |
| { XML_NAMESPACE_TEXT, XML_SENDER_STATE_OR_PROVINCE, |
| XML_TOK_TEXT_SENDER_STATE_OR_PROVINCE }, |
| |
| // misc. document fields |
| { XML_NAMESPACE_TEXT, XML_AUTHOR_NAME, XML_TOK_TEXT_AUTHOR_NAME }, |
| { XML_NAMESPACE_TEXT, XML_AUTHOR_INITIALS, XML_TOK_TEXT_AUTHOR_INITIALS }, |
| { XML_NAMESPACE_TEXT, XML_DATE, XML_TOK_TEXT_DATE }, |
| { XML_NAMESPACE_TEXT, XML_TIME, XML_TOK_TEXT_TIME }, |
| { XML_NAMESPACE_TEXT, XML_PAGE_NUMBER, XML_TOK_TEXT_PAGE_NUMBER }, |
| { XML_NAMESPACE_TEXT, XML_PAGE_CONTINUATION_STRING, |
| XML_TOK_TEXT_PAGE_CONTINUATION_STRING }, |
| |
| // variable fields |
| { XML_NAMESPACE_TEXT, XML_VARIABLE_SET, XML_TOK_TEXT_VARIABLE_SET }, |
| { XML_NAMESPACE_TEXT, XML_VARIABLE_GET, XML_TOK_TEXT_VARIABLE_GET }, |
| { XML_NAMESPACE_TEXT, XML_VARIABLE_INPUT, XML_TOK_TEXT_VARIABLE_INPUT }, |
| { XML_NAMESPACE_TEXT, XML_USER_FIELD_GET, XML_TOK_TEXT_USER_FIELD_GET }, |
| { XML_NAMESPACE_TEXT, XML_USER_FIELD_INPUT,XML_TOK_TEXT_USER_FIELD_INPUT}, |
| { XML_NAMESPACE_TEXT, XML_SEQUENCE, XML_TOK_TEXT_SEQUENCE }, |
| { XML_NAMESPACE_TEXT, XML_EXPRESSION, XML_TOK_TEXT_EXPRESSION }, |
| { XML_NAMESPACE_TEXT, XML_TEXT_INPUT, XML_TOK_TEXT_TEXT_INPUT }, |
| |
| // database fields |
| { XML_NAMESPACE_TEXT, XML_DATABASE_DISPLAY, |
| XML_TOK_TEXT_DATABASE_DISPLAY }, |
| { XML_NAMESPACE_TEXT, XML_DATABASE_NEXT, |
| XML_TOK_TEXT_DATABASE_NEXT }, |
| { XML_NAMESPACE_TEXT, XML_DATABASE_ROW_SELECT, |
| XML_TOK_TEXT_DATABASE_SELECT }, |
| { XML_NAMESPACE_TEXT, XML_DATABASE_ROW_NUMBER, |
| XML_TOK_TEXT_DATABASE_ROW_NUMBER }, |
| { XML_NAMESPACE_TEXT, XML_DATABASE_NAME, XML_TOK_TEXT_DATABASE_NAME }, |
| |
| // docinfo fields |
| { XML_NAMESPACE_TEXT, XML_INITIAL_CREATOR, |
| XML_TOK_TEXT_DOCUMENT_CREATION_AUTHOR }, |
| { XML_NAMESPACE_TEXT, XML_DESCRIPTION, XML_TOK_TEXT_DOCUMENT_DESCRIPTION}, |
| { XML_NAMESPACE_TEXT, XML_PRINTED_BY, XML_TOK_TEXT_DOCUMENT_PRINT_AUTHOR}, |
| { XML_NAMESPACE_TEXT, XML_TITLE, XML_TOK_TEXT_DOCUMENT_TITLE }, |
| { XML_NAMESPACE_TEXT, XML_SUBJECT, XML_TOK_TEXT_DOCUMENT_SUBJECT }, |
| { XML_NAMESPACE_TEXT, XML_KEYWORDS, XML_TOK_TEXT_DOCUMENT_KEYWORDS }, |
| { XML_NAMESPACE_TEXT, XML_CREATOR, XML_TOK_TEXT_DOCUMENT_SAVE_AUTHOR }, |
| { XML_NAMESPACE_TEXT, XML_EDITING_CYCLES, |
| XML_TOK_TEXT_DOCUMENT_REVISION }, |
| { XML_NAMESPACE_TEXT, XML_CREATION_DATE, |
| XML_TOK_TEXT_DOCUMENT_CREATION_DATE }, |
| { XML_NAMESPACE_TEXT, XML_CREATION_TIME, |
| XML_TOK_TEXT_DOCUMENT_CREATION_TIME }, |
| { XML_NAMESPACE_TEXT, XML_PRINT_DATE, XML_TOK_TEXT_DOCUMENT_PRINT_DATE }, |
| { XML_NAMESPACE_TEXT, XML_PRINT_TIME, XML_TOK_TEXT_DOCUMENT_PRINT_TIME }, |
| { XML_NAMESPACE_TEXT, XML_MODIFICATION_DATE, |
| XML_TOK_TEXT_DOCUMENT_SAVE_DATE }, |
| { XML_NAMESPACE_TEXT, XML_MODIFICATION_TIME, |
| XML_TOK_TEXT_DOCUMENT_SAVE_TIME }, |
| { XML_NAMESPACE_TEXT, XML_EDITING_DURATION, |
| XML_TOK_TEXT_DOCUMENT_EDIT_DURATION }, |
| { XML_NAMESPACE_TEXT, XML_USER_DEFINED, |
| XML_TOK_TEXT_DOCUMENT_USER_DEFINED }, |
| |
| // misc fields |
| { XML_NAMESPACE_TEXT, XML_PLACEHOLDER, XML_TOK_TEXT_PLACEHOLDER }, |
| { XML_NAMESPACE_TEXT, XML_HIDDEN_TEXT, XML_TOK_TEXT_HIDDEN_TEXT }, |
| { XML_NAMESPACE_TEXT, XML_HIDDEN_PARAGRAPH, XML_TOK_TEXT_HIDDEN_PARAGRAPH }, |
| { XML_NAMESPACE_TEXT, XML_CONDITIONAL_TEXT, XML_TOK_TEXT_CONDITIONAL_TEXT }, |
| { XML_NAMESPACE_TEXT, XML_FILE_NAME, XML_TOK_TEXT_FILENAME }, |
| { XML_NAMESPACE_TEXT, XML_CHAPTER, XML_TOK_TEXT_CHAPTER }, |
| { XML_NAMESPACE_TEXT, XML_TEMPLATE_NAME, XML_TOK_TEXT_TEMPLATENAME }, |
| { XML_NAMESPACE_TEXT, XML_PARAGRAPH_COUNT, XML_TOK_TEXT_PARAGRAPH_COUNT }, |
| { XML_NAMESPACE_TEXT, XML_WORD_COUNT, XML_TOK_TEXT_WORD_COUNT }, |
| { XML_NAMESPACE_TEXT, XML_TABLE_COUNT, XML_TOK_TEXT_TABLE_COUNT }, |
| { XML_NAMESPACE_TEXT, XML_CHARACTER_COUNT, XML_TOK_TEXT_CHARACTER_COUNT }, |
| { XML_NAMESPACE_TEXT, XML_IMAGE_COUNT, XML_TOK_TEXT_IMAGE_COUNT }, |
| { XML_NAMESPACE_TEXT, XML_OBJECT_COUNT, XML_TOK_TEXT_OBJECT_COUNT }, |
| { XML_NAMESPACE_TEXT, XML_PAGE_COUNT, XML_TOK_TEXT_PAGE_COUNT }, |
| { XML_NAMESPACE_TEXT, XML_PAGE_VARIABLE_GET, XML_TOK_TEXT_GET_PAGE_VAR }, |
| { XML_NAMESPACE_TEXT, XML_PAGE_VARIABLE_SET, XML_TOK_TEXT_SET_PAGE_VAR }, |
| { XML_NAMESPACE_TEXT, XML_EXECUTE_MACRO, XML_TOK_TEXT_MACRO }, |
| { XML_NAMESPACE_TEXT, XML_DDE_CONNECTION, XML_TOK_TEXT_DDE }, |
| { XML_NAMESPACE_TEXT, XML_REFERENCE_REF, XML_TOK_TEXT_REFERENCE_REF }, |
| { XML_NAMESPACE_TEXT, XML_BOOKMARK_REF, XML_TOK_TEXT_BOOKMARK_REF }, |
| { XML_NAMESPACE_TEXT, XML_SEQUENCE_REF, XML_TOK_TEXT_SEQUENCE_REF }, |
| { XML_NAMESPACE_TEXT, XML_NOTE_REF, XML_TOK_TEXT_NOTE_REF }, |
| { XML_NAMESPACE_TEXT, XML_BIBLIOGRAPHY_MARK, XML_TOK_TEXT_BIBLIOGRAPHY_MARK }, |
| { XML_NAMESPACE_OFFICE, XML_ANNOTATION, XML_TOK_TEXT_ANNOTATION }, |
| { XML_NAMESPACE_OFFICE, XML_ANNOTATION_END, XML_TOK_TEXT_ANNOTATION_END }, |
| { XML_NAMESPACE_TEXT, XML_SCRIPT, XML_TOK_TEXT_SCRIPT }, |
| { XML_NAMESPACE_TEXT, XML_TABLE_FORMULA, XML_TOK_TEXT_TABLE_FORMULA }, |
| { XML_NAMESPACE_TEXT, XML_DROPDOWN, XML_TOK_TEXT_DROPDOWN }, |
| |
| // Calc fields |
| { XML_NAMESPACE_TEXT, XML_SHEET_NAME, XML_TOK_TEXT_SHEET_NAME }, |
| |
| // draw fields |
| { XML_NAMESPACE_TEXT, XML_MEASURE, XML_TOK_TEXT_MEASURE }, |
| |
| // RDF metadata |
| { XML_NAMESPACE_TEXT, XML_META, XML_TOK_TEXT_META }, |
| { XML_NAMESPACE_TEXT, XML_META_FIELD, XML_TOK_TEXT_META_FIELD }, |
| |
| // redlining (aka change tracking) |
| { XML_NAMESPACE_TEXT, XML_CHANGE_START, XML_TOK_TEXTP_CHANGE_START }, |
| { XML_NAMESPACE_TEXT, XML_CHANGE_END , XML_TOK_TEXTP_CHANGE_END }, |
| { XML_NAMESPACE_TEXT, XML_CHANGE, XML_TOK_TEXTP_CHANGE }, |
| |
| { XML_NAMESPACE_PRESENTATION, XML_HEADER, XML_TOK_DRAW_HEADER }, |
| { XML_NAMESPACE_PRESENTATION, XML_FOOTER, XML_TOK_DRAW_FOOTER }, |
| { XML_NAMESPACE_PRESENTATION, XML_DATE_TIME, XML_TOK_DRAW_DATE_TIME }, |
| { XML_NAMESPACE_TEXT, XML_PAGE_CONTINUATION, XML_TOK_TEXT_PAGE_CONTINUATION }, |
| |
| { XML_NAMESPACE_FIELD, XML_FIELDMARK, XML_TOK_TEXT_FIELDMARK }, |
| { XML_NAMESPACE_FIELD, XML_FIELDMARK_START, XML_TOK_TEXT_FIELDMARK_START }, |
| { XML_NAMESPACE_FIELD, XML_FIELDMARK_END, XML_TOK_TEXT_FIELDMARK_END }, |
| |
| |
| XML_TOKEN_MAP_END |
| }; |
| |
| static __FAR_DATA SvXMLTokenMapEntry aTextPAttrTokenMap[] = |
| { |
| { XML_NAMESPACE_XML , XML_ID, XML_TOK_TEXT_P_XMLID }, |
| { XML_NAMESPACE_XHTML, XML_ABOUT, XML_TOK_TEXT_P_ABOUT }, |
| { XML_NAMESPACE_XHTML, XML_PROPERTY, XML_TOK_TEXT_P_PROPERTY }, |
| { XML_NAMESPACE_XHTML, XML_CONTENT, XML_TOK_TEXT_P_CONTENT }, |
| { XML_NAMESPACE_XHTML, XML_DATATYPE, XML_TOK_TEXT_P_DATATYPE }, |
| { XML_NAMESPACE_TEXT, XML_ID, XML_TOK_TEXT_P_TEXTID }, |
| { XML_NAMESPACE_TEXT, XML_STYLE_NAME, XML_TOK_TEXT_P_STYLE_NAME }, |
| { XML_NAMESPACE_TEXT, XML_COND_STYLE_NAME, |
| XML_TOK_TEXT_P_COND_STYLE_NAME }, |
| { XML_NAMESPACE_TEXT, XML_OUTLINE_LEVEL,XML_TOK_TEXT_P_LEVEL }, |
| { XML_NAMESPACE_TEXT, XML_IS_LIST_HEADER,XML_TOK_TEXT_P_IS_LIST_HEADER }, |
| { XML_NAMESPACE_TEXT, XML_RESTART_NUMBERING,XML_TOK_TEXT_P_RESTART_NUMBERING }, |
| { XML_NAMESPACE_TEXT, XML_START_VALUE,XML_TOK_TEXT_P_START_VALUE }, |
| XML_TOKEN_MAP_END |
| }; |
| |
| static __FAR_DATA SvXMLTokenMapEntry aTextNumberedParagraphAttrTokenMap[] = |
| { |
| { XML_NAMESPACE_XML , XML_ID, XML_TOK_TEXT_NUMBERED_PARAGRAPH_XMLID }, |
| { XML_NAMESPACE_TEXT, XML_LIST_ID, |
| XML_TOK_TEXT_NUMBERED_PARAGRAPH_LIST_ID }, |
| { XML_NAMESPACE_TEXT, XML_LEVEL, XML_TOK_TEXT_NUMBERED_PARAGRAPH_LEVEL }, |
| { XML_NAMESPACE_TEXT, XML_STYLE_NAME, |
| XML_TOK_TEXT_NUMBERED_PARAGRAPH_STYLE_NAME }, |
| { XML_NAMESPACE_TEXT, XML_CONTINUE_NUMBERING, |
| XML_TOK_TEXT_NUMBERED_PARAGRAPH_CONTINUE_NUMBERING }, |
| { XML_NAMESPACE_TEXT, XML_START_VALUE, |
| XML_TOK_TEXT_NUMBERED_PARAGRAPH_START_VALUE }, |
| XML_TOKEN_MAP_END |
| }; |
| |
| static __FAR_DATA SvXMLTokenMapEntry aTextListBlockAttrTokenMap[] = |
| { |
| { XML_NAMESPACE_XML , XML_ID, XML_TOK_TEXT_LIST_BLOCK_XMLID }, |
| { XML_NAMESPACE_TEXT, XML_STYLE_NAME, |
| XML_TOK_TEXT_LIST_BLOCK_STYLE_NAME }, |
| { XML_NAMESPACE_TEXT, XML_CONTINUE_NUMBERING, |
| XML_TOK_TEXT_LIST_BLOCK_CONTINUE_NUMBERING }, |
| // --> OD 2008-04-22 #refactorlists# |
| { XML_NAMESPACE_TEXT, XML_CONTINUE_LIST, |
| XML_TOK_TEXT_LIST_BLOCK_CONTINUE_LIST }, |
| XML_TOKEN_MAP_END |
| }; |
| |
| static __FAR_DATA SvXMLTokenMapEntry aTextListBlockElemTokenMap[] = |
| { |
| { XML_NAMESPACE_TEXT, XML_LIST_HEADER, XML_TOK_TEXT_LIST_HEADER }, |
| { XML_NAMESPACE_TEXT, XML_LIST_ITEM, XML_TOK_TEXT_LIST_ITEM }, |
| XML_TOKEN_MAP_END |
| }; |
| |
| static __FAR_DATA SvXMLTokenMapEntry aTextFrameAttrTokenMap[] = |
| { |
| { XML_NAMESPACE_DRAW, XML_STYLE_NAME, XML_TOK_TEXT_FRAME_STYLE_NAME }, |
| { XML_NAMESPACE_DRAW, XML_NAME, XML_TOK_TEXT_FRAME_NAME }, |
| { XML_NAMESPACE_TEXT, XML_ANCHOR_TYPE, XML_TOK_TEXT_FRAME_ANCHOR_TYPE }, |
| { XML_NAMESPACE_TEXT, XML_ANCHOR_PAGE_NUMBER, XML_TOK_TEXT_FRAME_ANCHOR_PAGE_NUMBER }, |
| { XML_NAMESPACE_SVG, XML_X, XML_TOK_TEXT_FRAME_X }, |
| { XML_NAMESPACE_SVG, XML_Y, XML_TOK_TEXT_FRAME_Y }, |
| { XML_NAMESPACE_SVG, XML_WIDTH, XML_TOK_TEXT_FRAME_WIDTH }, |
| { XML_NAMESPACE_FO, XML_MIN_WIDTH, XML_TOK_TEXT_FRAME_MIN_WIDTH }, |
| { XML_NAMESPACE_STYLE, XML_REL_WIDTH, XML_TOK_TEXT_FRAME_REL_WIDTH }, |
| { XML_NAMESPACE_SVG, XML_HEIGHT, XML_TOK_TEXT_FRAME_HEIGHT }, |
| { XML_NAMESPACE_FO, XML_MIN_HEIGHT, XML_TOK_TEXT_FRAME_MIN_HEIGHT }, |
| { XML_NAMESPACE_STYLE, XML_REL_HEIGHT, XML_TOK_TEXT_FRAME_REL_HEIGHT }, |
| { XML_NAMESPACE_DRAW, XML_CHAIN_NEXT_NAME, XML_TOK_TEXT_FRAME_NEXT_CHAIN_NAME }, |
| { XML_NAMESPACE_XLINK, XML_HREF, XML_TOK_TEXT_FRAME_HREF }, |
| { XML_NAMESPACE_DRAW, XML_NAME, XML_TOK_TEXT_FRAME_FILTER_NAME }, |
| { XML_NAMESPACE_DRAW, XML_ZINDEX, XML_TOK_TEXT_FRAME_Z_INDEX }, |
| { XML_NAMESPACE_SVG, XML_TRANSFORM, XML_TOK_TEXT_FRAME_TRANSFORM }, |
| { XML_NAMESPACE_DRAW, XML_CLASS_ID, XML_TOK_TEXT_FRAME_CLASS_ID }, |
| { XML_NAMESPACE_DRAW, XML_CODE, XML_TOK_TEXT_FRAME_CODE }, |
| { XML_NAMESPACE_DRAW, XML_OBJECT, XML_TOK_TEXT_FRAME_OBJECT }, |
| { XML_NAMESPACE_DRAW, XML_ARCHIVE, XML_TOK_TEXT_FRAME_ARCHIVE }, |
| { XML_NAMESPACE_DRAW, XML_MAY_SCRIPT, XML_TOK_TEXT_FRAME_MAY_SCRIPT }, |
| { XML_NAMESPACE_DRAW, XML_MIME_TYPE, XML_TOK_TEXT_FRAME_MIME_TYPE }, |
| { XML_NAMESPACE_DRAW, XML_APPLET_NAME, XML_TOK_TEXT_FRAME_APPLET_NAME }, |
| { XML_NAMESPACE_DRAW, XML_FRAME_NAME, XML_TOK_TEXT_FRAME_FRAME_NAME }, |
| { XML_NAMESPACE_DRAW, XML_NOTIFY_ON_UPDATE_OF_RANGES, XML_TOK_TEXT_FRAME_NOTIFY_ON_UPDATE }, |
| { XML_NAMESPACE_DRAW, XML_NOTIFY_ON_UPDATE_OF_TABLE, XML_TOK_TEXT_FRAME_NOTIFY_ON_UPDATE }, |
| XML_TOKEN_MAP_END |
| }; |
| |
| static __FAR_DATA SvXMLTokenMapEntry aTextContourAttrTokenMap[] = |
| { |
| { XML_NAMESPACE_SVG, XML_WIDTH, XML_TOK_TEXT_CONTOUR_WIDTH }, |
| { XML_NAMESPACE_SVG, XML_HEIGHT, XML_TOK_TEXT_CONTOUR_HEIGHT }, |
| { XML_NAMESPACE_SVG, XML_VIEWBOX, XML_TOK_TEXT_CONTOUR_VIEWBOX }, |
| { XML_NAMESPACE_SVG, XML_D, XML_TOK_TEXT_CONTOUR_D }, |
| { XML_NAMESPACE_DRAW,XML_POINTS, XML_TOK_TEXT_CONTOUR_POINTS }, |
| { XML_NAMESPACE_DRAW,XML_RECREATE_ON_EDIT, XML_TOK_TEXT_CONTOUR_AUTO }, |
| XML_TOKEN_MAP_END |
| }; |
| |
| static __FAR_DATA SvXMLTokenMapEntry aTextHyperlinkAttrTokenMap[] = |
| { |
| { XML_NAMESPACE_XLINK, XML_HREF, XML_TOK_TEXT_HYPERLINK_HREF }, |
| { XML_NAMESPACE_OFFICE, XML_NAME, XML_TOK_TEXT_HYPERLINK_NAME }, |
| { XML_NAMESPACE_XLINK, XML_SHOW, XML_TOK_TEXT_HYPERLINK_SHOW }, |
| { XML_NAMESPACE_OFFICE, XML_TARGET_FRAME_NAME, XML_TOK_TEXT_HYPERLINK_TARGET_FRAME }, |
| { XML_NAMESPACE_TEXT, XML_STYLE_NAME, XML_TOK_TEXT_HYPERLINK_STYLE_NAME }, |
| { XML_NAMESPACE_TEXT, XML_VISITED_STYLE_NAME, XML_TOK_TEXT_HYPERLINK_VIS_STYLE_NAME }, |
| { XML_NAMESPACE_OFFICE, XML_SERVER_MAP, XML_TOK_TEXT_HYPERLINK_SERVER_MAP }, |
| XML_TOKEN_MAP_END |
| }; |
| |
| static __FAR_DATA SvXMLTokenMapEntry aTextMasterPageElemTokenMap[] = |
| { |
| { XML_NAMESPACE_STYLE, XML_HEADER, XML_TOK_TEXT_MP_HEADER }, |
| { XML_NAMESPACE_STYLE, XML_FOOTER, XML_TOK_TEXT_MP_FOOTER }, |
| { XML_NAMESPACE_STYLE, XML_HEADER_LEFT, XML_TOK_TEXT_MP_HEADER_LEFT }, |
| { XML_NAMESPACE_STYLE, XML_FOOTER_LEFT, XML_TOK_TEXT_MP_FOOTER_LEFT }, |
| |
| XML_TOKEN_MAP_END |
| }; |
| |
| static __FAR_DATA SvXMLTokenMapEntry aTextFieldAttrTokenMap[] = |
| { |
| { XML_NAMESPACE_TEXT, XML_FIXED, XML_TOK_TEXTFIELD_FIXED }, |
| { XML_NAMESPACE_TEXT, XML_DESCRIPTION, XML_TOK_TEXTFIELD_DESCRIPTION }, |
| { XML_NAMESPACE_TEXT, XML_HELP, XML_TOK_TEXTFIELD_HELP }, |
| { XML_NAMESPACE_TEXT, XML_HINT, XML_TOK_TEXTFIELD_HINT }, |
| { XML_NAMESPACE_TEXT, XML_PLACEHOLDER_TYPE, |
| XML_TOK_TEXTFIELD_PLACEHOLDER_TYPE }, |
| { XML_NAMESPACE_TEXT, XML_NAME, XML_TOK_TEXTFIELD_NAME }, |
| { XML_NAMESPACE_TEXT, XML_FORMULA, XML_TOK_TEXTFIELD_FORMULA }, |
| { XML_NAMESPACE_STYLE, XML_NUM_FORMAT, XML_TOK_TEXTFIELD_NUM_FORMAT }, |
| { XML_NAMESPACE_STYLE, XML_NUM_LETTER_SYNC, |
| XML_TOK_TEXTFIELD_NUM_LETTER_SYNC }, |
| { XML_NAMESPACE_TEXT, XML_DISPLAY_FORMULA, |
| XML_TOK_TEXTFIELD_DISPLAY_FORMULA }, |
| { XML_NAMESPACE_TEXT, XML_VALUE_TYPE, XML_TOK_TEXTFIELD_VALUE_TYPE }, // #i32362#: src680m48++ saves text:value-type |
| { XML_NAMESPACE_OFFICE, XML_VALUE_TYPE, XML_TOK_TEXTFIELD_VALUE_TYPE }, |
| { XML_NAMESPACE_TEXT, XML_VALUE, XML_TOK_TEXTFIELD_VALUE }, |
| { XML_NAMESPACE_OFFICE, XML_VALUE, XML_TOK_TEXTFIELD_VALUE }, |
| { XML_NAMESPACE_TEXT, XML_STRING_VALUE, XML_TOK_TEXTFIELD_STRING_VALUE }, |
| { XML_NAMESPACE_OFFICE, XML_STRING_VALUE, XML_TOK_TEXTFIELD_STRING_VALUE }, |
| { XML_NAMESPACE_TEXT, XML_DATE_VALUE, XML_TOK_TEXTFIELD_DATE_VALUE }, |
| { XML_NAMESPACE_OFFICE, XML_DATE_VALUE, XML_TOK_TEXTFIELD_DATE_VALUE }, |
| { XML_NAMESPACE_TEXT, XML_TIME_VALUE, XML_TOK_TEXTFIELD_TIME_VALUE }, |
| { XML_NAMESPACE_OFFICE, XML_TIME_VALUE, XML_TOK_TEXTFIELD_TIME_VALUE }, |
| { XML_NAMESPACE_OFFICE, XML_BOOLEAN_VALUE, XML_TOK_TEXTFIELD_BOOL_VALUE}, |
| { XML_NAMESPACE_OFFICE, XML_CURRENCY, XML_TOK_TEXTFIELD_CURRENCY}, |
| { XML_NAMESPACE_STYLE, XML_DATA_STYLE_NAME, |
| XML_TOK_TEXTFIELD_DATA_STYLE_NAME }, |
| { XML_NAMESPACE_TEXT, XML_DISPLAY_OUTLINE_LEVEL, |
| XML_TOK_TEXTFIELD_NUMBERING_LEVEL }, |
| { XML_NAMESPACE_TEXT, XML_SEPARATION_CHARACTER, |
| XML_TOK_TEXTFIELD_NUMBERING_SEPARATOR }, |
| { XML_NAMESPACE_TEXT, XML_DISPLAY, XML_TOK_TEXTFIELD_DISPLAY }, |
| { XML_NAMESPACE_TEXT, XML_TIME_ADJUST, XML_TOK_TEXTFIELD_TIME_ADJUST }, |
| { XML_NAMESPACE_TEXT, XML_DATE_ADJUST, XML_TOK_TEXTFIELD_DATE_ADJUST }, |
| { XML_NAMESPACE_TEXT, XML_PAGE_ADJUST, XML_TOK_TEXTFIELD_PAGE_ADJUST }, |
| { XML_NAMESPACE_TEXT, XML_SELECT_PAGE, XML_TOK_TEXTFIELD_SELECT_PAGE }, |
| { XML_NAMESPACE_TEXT, XML_DATABASE_NAME, XML_TOK_TEXTFIELD_DATABASE_NAME}, |
| { XML_NAMESPACE_TEXT, XML_TABLE_NAME, XML_TOK_TEXTFIELD_TABLE_NAME }, |
| { XML_NAMESPACE_TEXT, XML_COLUMN_NAME, XML_TOK_TEXTFIELD_COLUMN_NAME }, |
| { XML_NAMESPACE_TEXT, XML_ROW_NUMBER, XML_TOK_TEXTFIELD_ROW_NUMBER }, |
| { XML_NAMESPACE_TEXT, XML_CONDITION, XML_TOK_TEXTFIELD_CONDITION }, |
| { XML_NAMESPACE_TEXT, XML_STRING_VALUE_IF_TRUE, |
| XML_TOK_TEXTFIELD_STRING_VALUE_IF_TRUE }, |
| { XML_NAMESPACE_TEXT, XML_STRING_VALUE_IF_FALSE, |
| XML_TOK_TEXTFIELD_STRING_VALUE_IF_FALSE }, |
| { XML_NAMESPACE_TEXT, XML_EDITING_CYCLES, XML_TOK_TEXTFIELD_REVISION }, |
| { XML_NAMESPACE_TEXT, XML_OUTLINE_LEVEL, XML_TOK_TEXTFIELD_OUTLINE_LEVEL}, |
| { XML_NAMESPACE_TEXT, XML_ACTIVE, XML_TOK_TEXTFIELD_ACTIVE }, |
| { XML_NAMESPACE_TEXT, XML_NOTE_CLASS, XML_TOK_TEXTFIELD_NOTE_CLASS }, |
| { XML_NAMESPACE_TEXT, XML_REFERENCE_FORMAT, |
| XML_TOK_TEXTFIELD_REFERENCE_FORMAT }, |
| { XML_NAMESPACE_TEXT, XML_REF_NAME, XML_TOK_TEXTFIELD_REF_NAME }, |
| { XML_NAMESPACE_TEXT, XML_CONNECTION_NAME, |
| XML_TOK_TEXTFIELD_CONNECTION_NAME }, |
| { XML_NAMESPACE_XLINK, XML_HREF, XML_TOK_TEXTFIELD_HREF }, |
| { XML_NAMESPACE_OFFICE, XML_TARGET_FRAME_NAME, |
| XML_TOK_TEXTFIELD_TARGET_FRAME }, |
| { XML_NAMESPACE_TEXT, XML_ANNOTATION, XML_TOK_TEXTFIELD_ANNOTATION }, |
| { XML_NAMESPACE_SCRIPT, XML_LANGUAGE, XML_TOK_TEXTFIELD_LANGUAGE }, |
| { XML_NAMESPACE_TEXT, XML_KIND, XML_TOK_TEXTFIELD_MEASURE_KIND }, |
| { XML_NAMESPACE_TEXT, XML_IS_HIDDEN, XML_TOK_TEXTFIELD_IS_HIDDEN }, |
| { XML_NAMESPACE_TEXT, XML_CURRENT_VALUE, |
| XML_TOK_TEXTFIELD_CURRENT_VALUE }, |
| { XML_NAMESPACE_TEXT, XML_TABLE_TYPE, XML_TOK_TEXTFIELD_TABLE_TYPE }, |
| { XML_NAMESPACE_OFFICE, XML_NAME, XML_TOK_TEXT_NAME }, |
| |
| XML_TOKEN_MAP_END |
| }; |
| |
| |
| // maximum allowed length of combined characters field |
| #define MAX_COMBINED_CHARACTERS 6 |
| |
| struct SAL_DLLPRIVATE XMLTextImportHelper::Impl |
| : private ::boost::noncopyable |
| { |
| ::std::auto_ptr<SvXMLTokenMap> m_pTextElemTokenMap; |
| ::std::auto_ptr<SvXMLTokenMap> m_pTextPElemTokenMap; |
| ::std::auto_ptr<SvXMLTokenMap> m_pTextPAttrTokenMap; |
| ::std::auto_ptr<SvXMLTokenMap> m_pTextFieldAttrTokenMap; |
| ::std::auto_ptr<SvXMLTokenMap> m_pTextNumberedParagraphAttrTokenMap; |
| ::std::auto_ptr<SvXMLTokenMap> m_pTextListBlockAttrTokenMap; |
| ::std::auto_ptr<SvXMLTokenMap> m_pTextListBlockElemTokenMap; |
| ::std::auto_ptr<SvXMLTokenMap> m_pTextFrameAttrTokenMap; |
| ::std::auto_ptr<SvXMLTokenMap> m_pTextContourAttrTokenMap; |
| ::std::auto_ptr<SvXMLTokenMap> m_pTextHyperlinkAttrTokenMap; |
| ::std::auto_ptr<SvXMLTokenMap> m_pTextMasterPageElemTokenMap; |
| ::std::auto_ptr<SvStringsDtor> m_pPrevFrmNames; |
| ::std::auto_ptr<SvStringsDtor> m_pNextFrmNames; |
| |
| // --> OD 2008-04-25 #refactorlists# |
| ::std::auto_ptr<XMLTextListsHelper> m_pTextListsHelper; |
| // <-- |
| |
| SvXMLImportContextRef m_xAutoStyles; |
| SvXMLImportContextRef m_xFontDecls; |
| |
| XMLSectionList_Impl m_SectionList; |
| |
| UniReference< SvXMLImportPropertyMapper > m_xParaImpPrMap; |
| UniReference< SvXMLImportPropertyMapper > m_xTextImpPrMap; |
| UniReference< SvXMLImportPropertyMapper > m_xFrameImpPrMap; |
| UniReference< SvXMLImportPropertyMapper > m_xSectionImpPrMap; |
| UniReference< SvXMLImportPropertyMapper > m_xRubyImpPrMap; |
| |
| ::std::auto_ptr<SvI18NMap> m_pRenameMap; |
| // --> OD 2006-10-12 #i69629# - change and extend data structure: |
| // - data structure contains candidates of paragraph styles, which |
| // will be assigned to the outline style |
| // - data structure contains more than one candidate for each list level |
| // of the outline style |
| ::boost::scoped_array< ::std::vector< ::rtl::OUString > > |
| m_pOutlineStylesCandidates; |
| // <-- |
| |
| // start range, xml:id, RDFa stuff |
| typedef ::boost::tuple< |
| uno::Reference<text::XTextRange>, ::rtl::OUString, |
| ::boost::shared_ptr< ::xmloff::ParsedRDFaAttributes > > |
| BookmarkMapEntry_t; |
| /// start ranges for open bookmarks |
| ::std::map< ::rtl::OUString, BookmarkMapEntry_t, |
| ::comphelper::UStringLess> m_BookmarkStartRanges; |
| |
| typedef ::std::vector< ::rtl::OUString > BookmarkVector_t; |
| BookmarkVector_t m_BookmarkVector; |
| |
| /// name of the last 'open' redline that started between paragraphs |
| ::rtl::OUString m_sOpenRedlineIdentifier; |
| |
| uno::Reference<text::XText> m_xText; |
| uno::Reference<text::XTextCursor> m_xCursor; |
| uno::Reference<text::XTextRange> m_xCursorAsRange; |
| uno::Reference<container::XNameContainer> m_xParaStyles; |
| uno::Reference<container::XNameContainer> m_xTextStyles; |
| uno::Reference<container::XNameContainer> m_xNumStyles; |
| uno::Reference<container::XNameContainer> m_xFrameStyles; |
| uno::Reference<container::XNameContainer> m_xPageStyles; |
| uno::Reference<container::XIndexReplace> m_xChapterNumbering; |
| uno::Reference<container::XNameAccess> m_xTextFrames; |
| uno::Reference<container::XNameAccess> m_xGraphics; |
| uno::Reference<container::XNameAccess> m_xObjects; |
| uno::Reference<lang::XMultiServiceFactory> m_xServiceFactory; |
| |
| SvXMLImport & m_rSvXMLImport; |
| |
| bool m_bInsertMode : 1; |
| bool m_bStylesOnlyMode : 1; |
| bool m_bBlockMode : 1; |
| bool m_bProgress : 1; |
| bool m_bOrganizerMode : 1; |
| bool m_bBodyContentStarted : 1; |
| |
| // #107848# |
| // One more flag to remember if we are inside a deleted redline section |
| bool m_bInsideDeleteContext : 1; |
| |
| typedef ::std::pair< ::rtl::OUString, ::rtl::OUString> field_name_type_t; |
| typedef ::std::pair< ::rtl::OUString, ::rtl::OUString > field_param_t; |
| typedef ::std::vector< field_param_t > field_params_t; |
| typedef ::std::pair< field_name_type_t, field_params_t > field_stack_item_t; |
| typedef ::std::stack< field_stack_item_t > field_stack_t; |
| |
| field_stack_t m_FieldStack; |
| |
| ::rtl::OUString m_sCellParaStyleDefault; |
| |
| Impl( uno::Reference<frame::XModel> const& rModel, |
| SvXMLImport & rImport, |
| bool const bInsertMode, bool const bStylesOnlyMode, |
| bool const bProgress, bool const bBlockMode, |
| bool const bOrganizerMode) |
| : m_pTextElemTokenMap( 0 ) |
| , m_pTextPElemTokenMap( 0 ) |
| , m_pTextPAttrTokenMap( 0 ) |
| , m_pTextFieldAttrTokenMap( 0 ) |
| , m_pTextNumberedParagraphAttrTokenMap( 0 ) |
| , m_pTextListBlockAttrTokenMap( 0 ) |
| , m_pTextListBlockElemTokenMap( 0 ) |
| , m_pTextFrameAttrTokenMap( 0 ) |
| , m_pTextContourAttrTokenMap( 0 ) |
| , m_pTextHyperlinkAttrTokenMap( 0 ) |
| , m_pTextMasterPageElemTokenMap( 0 ) |
| , m_pPrevFrmNames( 0 ) |
| , m_pNextFrmNames( 0 ) |
| // --> OD 2008-04-25 #refactorlists# |
| , m_pTextListsHelper( new XMLTextListsHelper() ) |
| // <-- |
| , m_pRenameMap( 0 ) |
| // --> OD 2006-10-12 #i69629# |
| , m_pOutlineStylesCandidates( 0 ) |
| // <-- |
| , m_xServiceFactory( rModel, UNO_QUERY ) |
| , m_rSvXMLImport( rImport ) |
| , m_bInsertMode( bInsertMode ) |
| , m_bStylesOnlyMode( bStylesOnlyMode ) |
| , m_bBlockMode( bBlockMode ) |
| , m_bProgress( bProgress ) |
| , m_bOrganizerMode( bOrganizerMode ) |
| , m_bBodyContentStarted( true ) |
| // #107848# Initialize inside_deleted_section flag correctly |
| , m_bInsideDeleteContext( false ) |
| { |
| } |
| |
| void InitOutlineStylesCandidates() |
| { |
| if (!m_pOutlineStylesCandidates) |
| { |
| size_t const size(m_xChapterNumbering->getCount()); |
| m_pOutlineStylesCandidates.reset( |
| new ::std::vector< ::rtl::OUString >[size] ); |
| } |
| } |
| |
| }; |
| |
| |
| uno::Reference< text::XText > & XMLTextImportHelper::GetText() |
| { |
| return m_pImpl->m_xText; |
| } |
| |
| uno::Reference< text::XTextCursor > & XMLTextImportHelper::GetCursor() |
| { |
| return m_pImpl->m_xCursor; |
| } |
| |
| uno::Reference< text::XTextRange > & XMLTextImportHelper::GetCursorAsRange() |
| { |
| return m_pImpl->m_xCursorAsRange; |
| } |
| |
| bool XMLTextImportHelper::IsInsertMode() const |
| { |
| return m_pImpl->m_bInsertMode; |
| } |
| |
| bool XMLTextImportHelper::IsStylesOnlyMode() const |
| { |
| return m_pImpl->m_bStylesOnlyMode; |
| } |
| |
| bool XMLTextImportHelper::IsBlockMode() const |
| { |
| return m_pImpl->m_bBlockMode; |
| } |
| |
| bool XMLTextImportHelper::IsOrganizerMode() const |
| { |
| return m_pImpl->m_bOrganizerMode; |
| } |
| |
| bool XMLTextImportHelper::IsProgress() const |
| { |
| return m_pImpl->m_bProgress; |
| } |
| |
| XMLSectionList_Impl & XMLTextImportHelper::GetSectionList() |
| { |
| return m_pImpl->m_SectionList; |
| } |
| |
| uno::Reference<container::XNameContainer> const& |
| XMLTextImportHelper::GetParaStyles() const |
| { |
| return m_pImpl->m_xParaStyles; |
| } |
| |
| uno::Reference<container::XNameContainer> const& |
| XMLTextImportHelper::GetTextStyles() const |
| { |
| return m_pImpl->m_xTextStyles; |
| } |
| |
| uno::Reference<container::XNameContainer> const& |
| XMLTextImportHelper::GetNumberingStyles() const |
| { |
| return m_pImpl->m_xNumStyles; |
| } |
| |
| uno::Reference<container::XNameContainer> const& |
| XMLTextImportHelper::GetFrameStyles() const |
| { |
| return m_pImpl->m_xFrameStyles; |
| } |
| |
| uno::Reference<container::XNameContainer> const& |
| XMLTextImportHelper::GetPageStyles() const |
| { |
| return m_pImpl->m_xPageStyles; |
| } |
| |
| uno::Reference<container::XIndexReplace> const& |
| XMLTextImportHelper::GetChapterNumbering() const |
| { |
| return m_pImpl->m_xChapterNumbering; |
| } |
| |
| UniReference< SvXMLImportPropertyMapper > const& |
| XMLTextImportHelper::GetParaImportPropertySetMapper() const |
| { |
| return m_pImpl->m_xParaImpPrMap; |
| } |
| |
| UniReference< SvXMLImportPropertyMapper > const& |
| XMLTextImportHelper::GetTextImportPropertySetMapper() const |
| { |
| return m_pImpl->m_xTextImpPrMap; |
| } |
| |
| UniReference< SvXMLImportPropertyMapper > const& |
| XMLTextImportHelper::GetFrameImportPropertySetMapper() const |
| { |
| return m_pImpl->m_xFrameImpPrMap; |
| } |
| |
| UniReference< SvXMLImportPropertyMapper > const& |
| XMLTextImportHelper::GetSectionImportPropertySetMapper() const |
| { |
| return m_pImpl->m_xSectionImpPrMap; |
| } |
| |
| UniReference< SvXMLImportPropertyMapper > const& |
| XMLTextImportHelper::GetRubyImportPropertySetMapper() const |
| { |
| return m_pImpl->m_xRubyImpPrMap; |
| } |
| |
| void XMLTextImportHelper::SetInsideDeleteContext(bool const bNew) |
| { |
| m_pImpl->m_bInsideDeleteContext = bNew; |
| } |
| |
| bool XMLTextImportHelper::IsInsideDeleteContext() const |
| { |
| return m_pImpl->m_bInsideDeleteContext; |
| } |
| |
| SvXMLImport & XMLTextImportHelper::GetXMLImport() |
| { |
| return m_pImpl->m_rSvXMLImport; |
| } |
| |
| XMLTextListsHelper & XMLTextImportHelper::GetTextListHelper() |
| { |
| return *m_pImpl->m_pTextListsHelper; |
| } |
| |
| const SvXMLTokenMap& XMLTextImportHelper::GetTextElemTokenMap() |
| { |
| if (!m_pImpl->m_pTextElemTokenMap.get()) |
| { |
| m_pImpl->m_pTextElemTokenMap.reset( |
| new SvXMLTokenMap( aTextElemTokenMap )); |
| } |
| return *m_pImpl->m_pTextElemTokenMap; |
| } |
| |
| const SvXMLTokenMap& XMLTextImportHelper::GetTextPElemTokenMap() |
| { |
| if (!m_pImpl->m_pTextPElemTokenMap.get()) |
| { |
| m_pImpl->m_pTextPElemTokenMap.reset( |
| new SvXMLTokenMap( aTextPElemTokenMap )); |
| } |
| return *m_pImpl->m_pTextPElemTokenMap; |
| } |
| |
| const SvXMLTokenMap& XMLTextImportHelper::GetTextPAttrTokenMap() |
| { |
| if (!m_pImpl->m_pTextPAttrTokenMap.get()) |
| { |
| m_pImpl->m_pTextPAttrTokenMap.reset( |
| new SvXMLTokenMap( aTextPAttrTokenMap )); |
| } |
| return *m_pImpl->m_pTextPAttrTokenMap; |
| } |
| |
| const SvXMLTokenMap& XMLTextImportHelper::GetTextFrameAttrTokenMap() |
| { |
| if (!m_pImpl->m_pTextFrameAttrTokenMap.get()) |
| { |
| m_pImpl->m_pTextFrameAttrTokenMap.reset( |
| new SvXMLTokenMap( aTextFrameAttrTokenMap )); |
| } |
| return *m_pImpl->m_pTextFrameAttrTokenMap; |
| } |
| |
| const SvXMLTokenMap& XMLTextImportHelper::GetTextContourAttrTokenMap() |
| { |
| if (!m_pImpl->m_pTextContourAttrTokenMap.get()) |
| { |
| m_pImpl->m_pTextContourAttrTokenMap.reset( |
| new SvXMLTokenMap( aTextContourAttrTokenMap )); |
| } |
| return *m_pImpl->m_pTextContourAttrTokenMap; |
| } |
| |
| const SvXMLTokenMap& XMLTextImportHelper::GetTextHyperlinkAttrTokenMap() |
| { |
| if (!m_pImpl->m_pTextHyperlinkAttrTokenMap.get()) |
| { |
| m_pImpl->m_pTextHyperlinkAttrTokenMap.reset( |
| new SvXMLTokenMap( aTextHyperlinkAttrTokenMap )); |
| } |
| return *m_pImpl->m_pTextHyperlinkAttrTokenMap; |
| } |
| |
| const SvXMLTokenMap& XMLTextImportHelper::GetTextMasterPageElemTokenMap() |
| { |
| if (!m_pImpl->m_pTextMasterPageElemTokenMap.get()) |
| { |
| m_pImpl->m_pTextMasterPageElemTokenMap.reset( |
| new SvXMLTokenMap( aTextMasterPageElemTokenMap )); |
| } |
| return *m_pImpl->m_pTextMasterPageElemTokenMap; |
| } |
| |
| const SvXMLTokenMap& XMLTextImportHelper::GetTextFieldAttrTokenMap() |
| { |
| if (!m_pImpl->m_pTextFieldAttrTokenMap.get()) |
| { |
| m_pImpl->m_pTextFieldAttrTokenMap.reset( |
| new SvXMLTokenMap( aTextFieldAttrTokenMap )); |
| } |
| return *m_pImpl->m_pTextFieldAttrTokenMap; |
| } |
| |
| |
| namespace |
| { |
| class FieldParamImporter |
| { |
| public: |
| typedef pair<OUString,OUString> field_param_t; |
| typedef vector<field_param_t> field_params_t; |
| FieldParamImporter(const field_params_t* const pInParams, Reference<XNameContainer> xOutParams) |
| : m_pInParams(pInParams) |
| , m_xOutParams(xOutParams) |
| { }; |
| void Import(); |
| |
| private: |
| const field_params_t* const m_pInParams; |
| Reference<XNameContainer> m_xOutParams; |
| }; |
| |
| void FieldParamImporter::Import() |
| { |
| ::std::vector<OUString> vListEntries; |
| ::std::map<OUString, Any> vOutParams; |
| for(field_params_t::const_iterator pCurrent = m_pInParams->begin(); |
| pCurrent != m_pInParams->end(); |
| ++pCurrent) |
| { |
| if(pCurrent->first.equalsAscii(ODF_FORMDROPDOWN_RESULT)) |
| { |
| // sal_Int32 |
| vOutParams[pCurrent->first] = makeAny(pCurrent->second.toInt32()); |
| } |
| else if(pCurrent->first.equalsAscii(ODF_FORMCHECKBOX_RESULT)) |
| { |
| // bool |
| vOutParams[pCurrent->first] = makeAny(pCurrent->second.toBoolean()); |
| } |
| else if(pCurrent->first.equalsAscii(ODF_FORMDROPDOWN_LISTENTRY)) |
| { |
| // sequence |
| vListEntries.push_back(pCurrent->second); |
| } |
| else |
| vOutParams[pCurrent->first] = makeAny(pCurrent->second); |
| } |
| if(!vListEntries.empty()) |
| { |
| Sequence<OUString> vListEntriesSeq(vListEntries.size()); |
| copy(vListEntries.begin(), vListEntries.end(), ::comphelper::stl_begin(vListEntriesSeq)); |
| vOutParams[OUString::createFromAscii(ODF_FORMDROPDOWN_LISTENTRY)] = makeAny(vListEntriesSeq); |
| } |
| for(::std::map<OUString, Any>::const_iterator pCurrent = vOutParams.begin(); |
| pCurrent != vOutParams.end(); |
| ++pCurrent) |
| { |
| try |
| { |
| m_xOutParams->insertByName(pCurrent->first, pCurrent->second); |
| } |
| catch(ElementExistException) |
| { } |
| } |
| } |
| } |
| |
| XMLTextImportHelper::XMLTextImportHelper( |
| uno::Reference<frame::XModel> const& rModel, |
| SvXMLImport& rImport, |
| bool const bInsertMode, bool const bStylesOnlyMode, |
| bool const bProgress, bool const bBlockMode, |
| bool const bOrganizerMode) |
| : m_pImpl( new Impl(rModel, rImport, bInsertMode, bStylesOnlyMode, |
| bProgress, bBlockMode, bOrganizerMode) ) |
| , m_pBackpatcherImpl( MakeBackpatcherImpl() ) |
| { |
| static ::rtl::OUString s_PropNameDefaultListId( |
| RTL_CONSTASCII_USTRINGPARAM("DefaultListId")); |
| |
| Reference< XChapterNumberingSupplier > xCNSupplier( rModel, UNO_QUERY ); |
| |
| if( xCNSupplier.is() ) |
| { |
| m_pImpl->m_xChapterNumbering = xCNSupplier->getChapterNumberingRules(); |
| // --> OD 2008-05-15 #refactorlists# |
| if (m_pImpl->m_xChapterNumbering.is()) |
| { |
| Reference< XPropertySet > const xNumRuleProps( |
| m_pImpl->m_xChapterNumbering, UNO_QUERY); |
| if ( xNumRuleProps.is() ) |
| { |
| Reference< XPropertySetInfo > xNumRulePropSetInfo( |
| xNumRuleProps->getPropertySetInfo()); |
| if (xNumRulePropSetInfo.is() && |
| xNumRulePropSetInfo->hasPropertyByName( |
| s_PropNameDefaultListId)) |
| { |
| ::rtl::OUString sListId; |
| xNumRuleProps->getPropertyValue(s_PropNameDefaultListId) |
| >>= sListId; |
| DBG_ASSERT( sListId.getLength() != 0, |
| "no default list id found at chapter numbering rules instance. Serious defect -> please inform OD." ); |
| if ( sListId.getLength() ) |
| { |
| Reference< XNamed > const xChapterNumNamed( |
| m_pImpl->m_xChapterNumbering, UNO_QUERY); |
| if ( xChapterNumNamed.is() ) |
| { |
| m_pImpl->m_pTextListsHelper->KeepListAsProcessed( |
| sListId, |
| xChapterNumNamed->getName(), |
| ::rtl::OUString() ); |
| } |
| } |
| } |
| } |
| } |
| // <-- |
| } |
| |
| Reference< XStyleFamiliesSupplier > xFamiliesSupp( rModel, UNO_QUERY ); |
| // DBG_ASSERT( xFamiliesSupp.is(), "no chapter numbering supplier" ); for clipboard there may be documents without styles |
| |
| if( xFamiliesSupp.is() ) |
| { |
| Reference< XNameAccess > xFamilies(xFamiliesSupp->getStyleFamilies()); |
| |
| const OUString aParaStyles(RTL_CONSTASCII_USTRINGPARAM("ParagraphStyles")); |
| if( xFamilies->hasByName( aParaStyles ) ) |
| { |
| m_pImpl->m_xParaStyles.set(xFamilies->getByName(aParaStyles), |
| UNO_QUERY); |
| } |
| |
| const OUString aCharStyles(RTL_CONSTASCII_USTRINGPARAM("CharacterStyles")); |
| if( xFamilies->hasByName( aCharStyles ) ) |
| { |
| m_pImpl->m_xTextStyles.set(xFamilies->getByName(aCharStyles), |
| UNO_QUERY); |
| } |
| |
| const OUString aNumStyles(RTL_CONSTASCII_USTRINGPARAM("NumberingStyles")); |
| if( xFamilies->hasByName( aNumStyles ) ) |
| { |
| m_pImpl->m_xNumStyles.set(xFamilies->getByName(aNumStyles), |
| UNO_QUERY); |
| } |
| |
| const OUString aFrameStyles(RTL_CONSTASCII_USTRINGPARAM("FrameStyles")); |
| if( xFamilies->hasByName( aFrameStyles ) ) |
| { |
| m_pImpl->m_xFrameStyles.set(xFamilies->getByName(aFrameStyles), |
| UNO_QUERY); |
| } |
| |
| const OUString aPageStyles(RTL_CONSTASCII_USTRINGPARAM("PageStyles")); |
| if( xFamilies->hasByName( aPageStyles ) ) |
| { |
| m_pImpl->m_xPageStyles.set(xFamilies->getByName(aPageStyles), |
| UNO_QUERY); |
| } |
| } |
| |
| Reference < XTextFramesSupplier > xTFS( rModel, UNO_QUERY ); |
| if( xTFS.is() ) |
| { |
| m_pImpl->m_xTextFrames.set(xTFS->getTextFrames()); |
| } |
| |
| Reference < XTextGraphicObjectsSupplier > xTGOS( rModel, UNO_QUERY ); |
| if( xTGOS.is() ) |
| { |
| m_pImpl->m_xGraphics.set(xTGOS->getGraphicObjects()); |
| } |
| |
| Reference < XTextEmbeddedObjectsSupplier > xTEOS( rModel, UNO_QUERY ); |
| if( xTEOS.is() ) |
| { |
| m_pImpl->m_xObjects.set(xTEOS->getEmbeddedObjects()); |
| } |
| |
| XMLPropertySetMapper *pPropMapper = |
| new XMLTextPropertySetMapper( TEXT_PROP_MAP_PARA ); |
| m_pImpl->m_xParaImpPrMap = |
| new XMLTextImportPropertyMapper( pPropMapper, rImport ); |
| |
| pPropMapper = new XMLTextPropertySetMapper( TEXT_PROP_MAP_TEXT ); |
| m_pImpl->m_xTextImpPrMap = |
| new XMLTextImportPropertyMapper( pPropMapper, rImport ); |
| |
| pPropMapper = new XMLTextPropertySetMapper( TEXT_PROP_MAP_FRAME ); |
| m_pImpl->m_xFrameImpPrMap = |
| new XMLTextImportPropertyMapper( pPropMapper, rImport ); |
| |
| pPropMapper = new XMLTextPropertySetMapper( TEXT_PROP_MAP_SECTION ); |
| m_pImpl->m_xSectionImpPrMap = |
| new XMLTextImportPropertyMapper( pPropMapper, rImport ); |
| |
| pPropMapper = new XMLTextPropertySetMapper( TEXT_PROP_MAP_RUBY ); |
| m_pImpl->m_xRubyImpPrMap = |
| new SvXMLImportPropertyMapper( pPropMapper, rImport ); |
| } |
| |
| XMLTextImportHelper::~XMLTextImportHelper() |
| { |
| } |
| |
| SvXMLImportPropertyMapper *XMLTextImportHelper::CreateShapeExtPropMapper(SvXMLImport& rImport) |
| { |
| XMLPropertySetMapper *pPropMapper = |
| new XMLTextPropertySetMapper( TEXT_PROP_MAP_FRAME ); |
| return new XMLTextImportPropertyMapper( pPropMapper, rImport, |
| const_cast<XMLFontStylesContext*>(rImport.GetFontDecls()) ); |
| } |
| |
| SvXMLImportPropertyMapper *XMLTextImportHelper::CreateCharExtPropMapper(SvXMLImport& rImport, XMLFontStylesContext *pFontDecls) |
| { |
| XMLPropertySetMapper *pPropMapper = |
| new XMLTextPropertySetMapper( TEXT_PROP_MAP_TEXT ); |
| if (!pFontDecls) |
| pFontDecls = const_cast<XMLFontStylesContext*>(rImport.GetFontDecls()); |
| return new XMLTextImportPropertyMapper( pPropMapper, rImport, pFontDecls ); |
| } |
| |
| SvXMLImportPropertyMapper *XMLTextImportHelper::CreateParaExtPropMapper(SvXMLImport& rImport, XMLFontStylesContext *pFontDecls) |
| { |
| XMLPropertySetMapper *pPropMapper = |
| new XMLTextPropertySetMapper( TEXT_PROP_MAP_SHAPE_PARA ); |
| if (!pFontDecls) |
| pFontDecls = const_cast<XMLFontStylesContext*>(rImport.GetFontDecls()); |
| return new XMLTextImportPropertyMapper( pPropMapper, rImport, pFontDecls ); |
| } |
| |
| SvXMLImportPropertyMapper *XMLTextImportHelper::CreateParaDefaultExtPropMapper(SvXMLImport& rImport, XMLFontStylesContext* pFontDecls) |
| { |
| if (!pFontDecls) |
| pFontDecls = const_cast<XMLFontStylesContext*>(rImport.GetFontDecls()); |
| |
| XMLPropertySetMapper* pPropMapper = |
| new XMLTextPropertySetMapper( TEXT_PROP_MAP_SHAPE_PARA ); |
| SvXMLImportPropertyMapper* pImportMapper = new XMLTextImportPropertyMapper( pPropMapper, rImport, pFontDecls ); |
| |
| pPropMapper = |
| new XMLTextPropertySetMapper( TEXT_PROP_MAP_TEXT_ADDITIONAL_DEFAULTS ); |
| pImportMapper->ChainImportMapper( new XMLTextImportPropertyMapper( pPropMapper, rImport, pFontDecls ) ); |
| |
| return pImportMapper; |
| } |
| |
| SvXMLImportPropertyMapper* |
| XMLTextImportHelper::CreateTableDefaultExtPropMapper( |
| SvXMLImport& rImport, |
| XMLFontStylesContext* ) |
| { |
| XMLPropertySetMapper *pPropMapper = |
| new XMLTextPropertySetMapper( TEXT_PROP_MAP_TABLE_DEFAULTS ); |
| return new SvXMLImportPropertyMapper( pPropMapper, rImport ); |
| } |
| |
| SvXMLImportPropertyMapper* |
| XMLTextImportHelper::CreateTableRowDefaultExtPropMapper( |
| SvXMLImport& rImport, |
| XMLFontStylesContext* ) |
| { |
| XMLPropertySetMapper *pPropMapper = |
| new XMLTextPropertySetMapper( TEXT_PROP_MAP_TABLE_ROW_DEFAULTS ); |
| return new SvXMLImportPropertyMapper( pPropMapper, rImport ); |
| } |
| |
| void XMLTextImportHelper::SetCursor( const Reference < XTextCursor > & rCursor ) |
| { |
| m_pImpl->m_xCursor.set(rCursor); |
| m_pImpl->m_xText.set(rCursor->getText()); |
| m_pImpl->m_xCursorAsRange.set( rCursor, UNO_QUERY ); |
| } |
| |
| void XMLTextImportHelper::ResetCursor() |
| { |
| m_pImpl->m_xCursor.set(0); |
| m_pImpl->m_xText.set(0); |
| m_pImpl->m_xCursorAsRange.set(0); |
| } |
| |
| |
| sal_Bool XMLTextImportHelper::HasFrameByName( const OUString& rName ) const |
| { |
| return (m_pImpl->m_xTextFrames.is() && |
| m_pImpl->m_xTextFrames->hasByName(rName)) |
| || (m_pImpl->m_xGraphics.is() && |
| m_pImpl->m_xGraphics->hasByName(rName)) |
| || (m_pImpl->m_xObjects.is() && |
| m_pImpl->m_xObjects->hasByName(rName)); |
| } |
| |
| void XMLTextImportHelper::InsertString( const OUString& rChars ) |
| { |
| DBG_ASSERT(m_pImpl->m_xText.is(), "no text"); |
| DBG_ASSERT(m_pImpl->m_xCursorAsRange.is(), "no range"); |
| if (m_pImpl->m_xText.is()) |
| { |
| m_pImpl->m_xText->insertString(m_pImpl->m_xCursorAsRange, |
| rChars, sal_False); |
| } |
| } |
| |
| void XMLTextImportHelper::InsertString( const OUString& rChars, |
| sal_Bool& rIgnoreLeadingSpace ) |
| { |
| DBG_ASSERT(m_pImpl->m_xText.is(), "no text"); |
| DBG_ASSERT(m_pImpl->m_xCursorAsRange.is(), "no range"); |
| if (m_pImpl->m_xText.is()) |
| { |
| sal_Int32 nLen = rChars.getLength(); |
| OUStringBuffer sChars( nLen ); |
| |
| for( sal_Int32 i=0; i < nLen; i++ ) |
| { |
| sal_Unicode c = rChars[i]; |
| switch( c ) |
| { |
| case 0x20: |
| case 0x09: |
| case 0x0a: |
| case 0x0d: |
| if( !rIgnoreLeadingSpace ) |
| sChars.append( (sal_Unicode)0x20 ); |
| rIgnoreLeadingSpace = sal_True; |
| break; |
| default: |
| rIgnoreLeadingSpace = sal_False; |
| sChars.append( c ); |
| break; |
| } |
| } |
| m_pImpl->m_xText->insertString(m_pImpl->m_xCursorAsRange, |
| sChars.makeStringAndClear(), sal_False); |
| } |
| } |
| |
| void XMLTextImportHelper::InsertControlCharacter( sal_Int16 nControl ) |
| { |
| DBG_ASSERT(m_pImpl->m_xText.is(), "no text"); |
| DBG_ASSERT(m_pImpl->m_xCursorAsRange.is(), "no range"); |
| if (m_pImpl->m_xText.is()) |
| { |
| m_pImpl->m_xText->insertControlCharacter( |
| m_pImpl->m_xCursorAsRange, nControl, sal_False); |
| } |
| } |
| |
| void XMLTextImportHelper::InsertTextContent( |
| Reference < XTextContent > & xContent ) |
| { |
| DBG_ASSERT(m_pImpl->m_xText.is(), "no text"); |
| DBG_ASSERT(m_pImpl->m_xCursorAsRange.is(), "no range"); |
| if (m_pImpl->m_xText.is()) |
| { |
| m_pImpl->m_xText->insertTextContent( |
| m_pImpl->m_xCursorAsRange, xContent, sal_False); |
| } |
| } |
| |
| void XMLTextImportHelper::DeleteParagraph() |
| { |
| DBG_ASSERT(m_pImpl->m_xText.is(), "no text"); |
| DBG_ASSERT(m_pImpl->m_xCursor.is(), "no cursor"); |
| DBG_ASSERT(m_pImpl->m_xCursorAsRange.is(), "no range"); |
| |
| sal_Bool bDelete = sal_True; |
| Reference < XEnumerationAccess > const xEnumAccess( |
| m_pImpl->m_xCursor, UNO_QUERY); |
| if( xEnumAccess.is() ) |
| { |
| Reference < XEnumeration > xEnum(xEnumAccess->createEnumeration()); |
| DBG_ASSERT( xEnum->hasMoreElements(), "empty text enumeration" ); |
| if( xEnum->hasMoreElements() ) |
| { |
| Reference < XComponent > xComp( xEnum->nextElement(), UNO_QUERY ); |
| DBG_ASSERT( xComp.is(), "got no component" ); |
| if( xComp.is() ) |
| { |
| xComp->dispose(); |
| bDelete = sal_False; |
| } |
| } |
| } |
| if( bDelete ) |
| { |
| if (m_pImpl->m_xCursor->goLeft( 1, sal_True )) |
| { |
| OUString sEmpty; |
| m_pImpl->m_xText->insertString(m_pImpl->m_xCursorAsRange, |
| sEmpty, sal_True); |
| } |
| } |
| } |
| |
| OUString XMLTextImportHelper::ConvertStarFonts( const OUString& rChars, |
| const OUString& rStyleName, |
| sal_uInt8& rFlags, |
| sal_Bool bPara, |
| SvXMLImport& rImport ) const |
| { |
| OUStringBuffer sChars( rChars ); |
| sal_Bool bConverted = sal_False; |
| for( sal_Int32 j=0; j<rChars.getLength(); j++ ) |
| { |
| sal_Unicode c = rChars[j]; |
| if( c >= 0xf000 && c <= 0xf0ff ) |
| { |
| if( (rFlags & CONV_STAR_FONT_FLAGS_VALID) == 0 ) |
| { |
| XMLTextStyleContext *pStyle = 0; |
| sal_uInt16 nFamily = bPara ? XML_STYLE_FAMILY_TEXT_PARAGRAPH |
| : XML_STYLE_FAMILY_TEXT_TEXT; |
| if (rStyleName.getLength() && m_pImpl->m_xAutoStyles.Is()) |
| { |
| const SvXMLStyleContext* pTempStyle = |
| ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)-> |
| FindStyleChildContext( nFamily, rStyleName, |
| sal_True ); |
| pStyle = PTR_CAST( XMLTextStyleContext,pTempStyle); |
| } |
| |
| if( pStyle ) |
| { |
| sal_Int32 nCount = pStyle->_GetProperties().size(); |
| if( nCount ) |
| { |
| UniReference < SvXMLImportPropertyMapper > xImpPrMap = |
| ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles) |
| ->GetImportPropertyMapper(nFamily); |
| if( xImpPrMap.is() ) |
| { |
| UniReference<XMLPropertySetMapper> rPropMapper = |
| xImpPrMap->getPropertySetMapper(); |
| for( sal_Int32 i=0; i < nCount; i++ ) |
| { |
| const XMLPropertyState& rProp = pStyle->_GetProperties()[i]; |
| sal_Int32 nIdx = rProp.mnIndex; |
| sal_uInt32 nContextId = rPropMapper->GetEntryContextId(nIdx); |
| if( CTF_FONTFAMILYNAME == nContextId ) |
| { |
| rFlags &= ~(CONV_FROM_STAR_BATS|CONV_FROM_STAR_MATH); |
| OUString sFontName; |
| rProp.maValue >>= sFontName; |
| OUString sStarBats( RTL_CONSTASCII_USTRINGPARAM("StarBats" ) ); |
| OUString sStarMath( RTL_CONSTASCII_USTRINGPARAM("StarMath" ) ); |
| if( sFontName.equalsIgnoreAsciiCase( sStarBats ) ) |
| rFlags |= CONV_FROM_STAR_BATS; |
| else if( sFontName.equalsIgnoreAsciiCase( sStarMath ) ) |
| rFlags |= CONV_FROM_STAR_MATH; |
| break; |
| } |
| } |
| } |
| } |
| |
| } |
| |
| rFlags |= CONV_STAR_FONT_FLAGS_VALID; |
| } |
| if( (rFlags & CONV_FROM_STAR_BATS ) != 0 ) |
| { |
| sChars.setCharAt( j, rImport.ConvStarBatsCharToStarSymbol( c ) ); |
| bConverted = sal_True; |
| } |
| else if( (rFlags & CONV_FROM_STAR_MATH ) != 0 ) |
| { |
| sChars.setCharAt( j, rImport.ConvStarMathCharToStarSymbol( c ) ); |
| bConverted = sal_True; |
| } |
| } |
| } |
| |
| return bConverted ? sChars.makeStringAndClear() : rChars; |
| } |
| |
| // --> OD 2006-10-12 #i69629# |
| // helper method to determine, if a paragraph style has a list style (inclusive |
| // an empty one) inherits a list style (inclusive an empty one) from one of its parents |
| // --> OD 2007-01-29 #i73973# |
| // apply special case, that found list style equals the chapter numbering, also |
| // to the found list styles of the parent styles. |
| sal_Bool lcl_HasListStyle( OUString sStyleName, |
| const Reference < XNameContainer >& xParaStyles, |
| SvXMLImport& rImport, |
| const OUString& sNumberingStyleName, |
| const OUString& sOutlineStyleName ) |
| { |
| sal_Bool bRet( sal_False ); |
| |
| if ( !xParaStyles->hasByName( sStyleName ) ) |
| { |
| // error case |
| return sal_True; |
| } |
| |
| Reference< XPropertyState > xPropState( xParaStyles->getByName( sStyleName ), |
| UNO_QUERY ); |
| if ( !xPropState.is() ) |
| { |
| // error case |
| return sal_False; |
| } |
| |
| if ( xPropState->getPropertyState( sNumberingStyleName ) == PropertyState_DIRECT_VALUE ) |
| { |
| // list style found |
| bRet = sal_True; |
| // special case: the set list style equals the chapter numbering |
| Reference< XPropertySet > xPropSet( xPropState, UNO_QUERY ); |
| if ( xPropSet.is() ) |
| { |
| OUString sListStyle; |
| xPropSet->getPropertyValue( sNumberingStyleName ) >>= sListStyle; |
| if ( sListStyle.getLength() != 0 && |
| sListStyle == sOutlineStyleName ) |
| { |
| bRet = sal_False; |
| } |
| } |
| } |
| else |
| { |
| // --> OD 2007-12-07 #i77708# |
| sal_Int32 nUPD( 0 ); |
| sal_Int32 nBuild( 0 ); |
| // --> OD 2008-03-19 #i86058# |
| // rImport.getBuildIds( nUPD, nBuild ); |
| const bool bBuildIdFound = rImport.getBuildIds( nUPD, nBuild ); |
| // <-- |
| // <-- |
| // search list style at parent |
| Reference<XStyle> xStyle( xPropState, UNO_QUERY ); |
| while ( xStyle.is() ) |
| { |
| OUString aParentStyle( xStyle->getParentStyle() ); |
| if ( aParentStyle.getLength() > 0 ) |
| { |
| aParentStyle = |
| rImport.GetStyleDisplayName( XML_STYLE_FAMILY_TEXT_PARAGRAPH, |
| aParentStyle ); |
| } |
| if ( aParentStyle.getLength() == 0 || |
| !xParaStyles->hasByName( aParentStyle ) ) |
| { |
| // no list style found |
| break; |
| } |
| else |
| { |
| xPropState = Reference< XPropertyState >( |
| xParaStyles->getByName( aParentStyle ), |
| UNO_QUERY ); |
| if ( !xPropState.is() ) |
| { |
| // error case |
| return sal_True; |
| } |
| if ( xPropState->getPropertyState( sNumberingStyleName ) == PropertyState_DIRECT_VALUE ) |
| { |
| // list style found |
| bRet = sal_True; |
| // --> OD 2007-01-29 #i73973# |
| // special case: the found list style equals the chapter numbering |
| Reference< XPropertySet > xPropSet( xPropState, UNO_QUERY ); |
| if ( xPropSet.is() ) |
| { |
| OUString sListStyle; |
| xPropSet->getPropertyValue( sNumberingStyleName ) >>= sListStyle; |
| if ( sListStyle.getLength() != 0 && |
| sListStyle == sOutlineStyleName ) |
| { |
| bRet = sal_False; |
| } |
| // --> OD 2007-12-07 #i77708# |
| // special handling for text documents from OOo version prior OOo 2.4 |
| // --> OD 2008-03-19 #i86058# |
| // check explicitly on certain versions and on import of |
| // text documents in OpenOffice.org file format |
| else if ( sListStyle.getLength() == 0 && |
| ( rImport.IsTextDocInOOoFileFormat() || |
| ( bBuildIdFound && |
| ( ( nUPD == 641 ) || ( nUPD == 645 ) || // prior OOo 2.0 |
| ( nUPD == 680 && nBuild <= 9238 ) ) ) ) ) // OOo 2.0 - OOo 2.3.1 |
| { |
| bRet = sal_False; |
| } |
| // <-- |
| } |
| // <-- |
| break; |
| } |
| else |
| { |
| // search list style at parent |
| xStyle = Reference<XStyle>( xPropState, UNO_QUERY ); |
| } |
| } |
| } |
| } |
| |
| return bRet; |
| } |
| // <-- |
| OUString XMLTextImportHelper::SetStyleAndAttrs( |
| SvXMLImport& rImport, |
| const Reference < XTextCursor >& rCursor, |
| const OUString& rStyleName, |
| sal_Bool bPara, |
| sal_Bool bOutlineLevelAttrFound, |
| sal_Int8 nOutlineLevel, |
| // --> OD 2007-08-17 #i80724# |
| sal_Bool bSetListAttrs ) |
| // <-- |
| { |
| static ::rtl::OUString s_ParaStyleName( |
| RTL_CONSTASCII_USTRINGPARAM("ParaStyleName")); |
| static ::rtl::OUString s_CharStyleName( |
| RTL_CONSTASCII_USTRINGPARAM("CharStyleName")); |
| static ::rtl::OUString s_NumberingRules( |
| RTL_CONSTASCII_USTRINGPARAM("NumberingRules")); |
| static ::rtl::OUString s_NumberingIsNumber( |
| RTL_CONSTASCII_USTRINGPARAM("NumberingIsNumber")); |
| static ::rtl::OUString s_NumberingLevel( |
| RTL_CONSTASCII_USTRINGPARAM("NumberingLevel")); |
| static ::rtl::OUString s_ParaIsNumberingRestart( |
| RTL_CONSTASCII_USTRINGPARAM("ParaIsNumberingRestart")); |
| static ::rtl::OUString s_NumberingStartValue( |
| RTL_CONSTASCII_USTRINGPARAM("NumberingStartValue")); |
| static ::rtl::OUString s_PropNameListId( |
| RTL_CONSTASCII_USTRINGPARAM("ListId")); |
| static ::rtl::OUString s_PageDescName( |
| RTL_CONSTASCII_USTRINGPARAM("PageDescName")); |
| static ::rtl::OUString s_ServiceCombinedCharacters( |
| RTL_CONSTASCII_USTRINGPARAM( |
| "com.sun.star.text.TextField.CombinedCharacters")); |
| static ::rtl::OUString s_Content(RTL_CONSTASCII_USTRINGPARAM("Content")); |
| static ::rtl::OUString s_OutlineLevel( |
| RTL_CONSTASCII_USTRINGPARAM("OutlineLevel")); |
| static ::rtl::OUString s_NumberingStyleName( |
| RTL_CONSTASCII_USTRINGPARAM("NumberingStyleName")); |
| |
| const sal_uInt16 nFamily = bPara ? XML_STYLE_FAMILY_TEXT_PARAGRAPH |
| : XML_STYLE_FAMILY_TEXT_TEXT; |
| XMLTextStyleContext *pStyle = 0; |
| OUString sStyleName( rStyleName ); |
| if (sStyleName.getLength() && m_pImpl->m_xAutoStyles.Is()) |
| { |
| const SvXMLStyleContext* pTempStyle = |
| ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)-> |
| FindStyleChildContext( nFamily, sStyleName, sal_True ); |
| pStyle = PTR_CAST( XMLTextStyleContext,pTempStyle); |
| } |
| if( pStyle ) |
| sStyleName = pStyle->GetParentName(); |
| |
| Reference < XPropertySet > xPropSet( rCursor, UNO_QUERY ); |
| Reference< XPropertySetInfo > xPropSetInfo( |
| xPropSet->getPropertySetInfo()); |
| |
| // style |
| if( sStyleName.getLength() ) |
| { |
| sStyleName = rImport.GetStyleDisplayName( nFamily, sStyleName ); |
| const String& rPropName = (bPara) ? s_ParaStyleName : s_CharStyleName; |
| const Reference < XNameContainer > & rStyles = (bPara) |
| ? m_pImpl->m_xParaStyles |
| : m_pImpl->m_xTextStyles; |
| if( rStyles.is() && |
| xPropSetInfo->hasPropertyByName( rPropName ) && |
| rStyles->hasByName( sStyleName ) ) |
| { |
| xPropSet->setPropertyValue( rPropName, makeAny(sStyleName) ); |
| } |
| else |
| sStyleName = OUString(); |
| } |
| |
| // --> OD 2008-09-10 #i70748# |
| // The outline level needs to be only applied as list level, if the heading |
| // is not inside a list and if it by default applies the outline style. |
| bool bApplyOutlineLevelAsListLevel( false ); |
| // --> OD 2007-08-17 #i80724# |
| if (bSetListAttrs && bPara |
| && xPropSetInfo->hasPropertyByName( s_NumberingRules)) |
| // <-- |
| { |
| // Set numbering rules |
| Reference< XIndexReplace > const xNumRules( |
| xPropSet->getPropertyValue(s_NumberingRules), UNO_QUERY); |
| |
| XMLTextListBlockContext * pListBlock(0); |
| XMLTextListItemContext * pListItem(0); |
| XMLNumberedParaContext * pNumberedParagraph(0); |
| GetTextListHelper().ListContextTop( |
| pListBlock, pListItem, pNumberedParagraph); |
| |
| OSL_ENSURE(!(pListBlock && pNumberedParagraph), "XMLTextImportHelper::" |
| "SetStyleAndAttrs: both list and numbered-paragraph???"); |
| |
| Reference < XIndexReplace > xNewNumRules; |
| sal_Int8 nLevel(-1); |
| ::rtl::OUString sListId; |
| sal_Int16 nStartValue(-1); |
| bool bNumberingIsNumber(true); |
| |
| if (pListBlock) { |
| |
| if (!pListItem) { |
| bNumberingIsNumber = false; // list-header |
| } |
| // --> OD 2008-05-08 #refactorlists# |
| // consider text:style-override property of <text:list-item> |
| xNewNumRules.set( |
| (pListItem != 0 && pListItem->HasNumRulesOverride()) |
| ? pListItem->GetNumRulesOverride() |
| : pListBlock->GetNumRules() ); |
| // <-- |
| nLevel = static_cast<sal_Int8>(pListBlock->GetLevel()); |
| |
| if ( pListItem && pListItem->HasStartValue() ) { |
| nStartValue = pListItem->GetStartValue(); |
| } |
| |
| // --> OD 2008-08-15 #i92811# |
| sListId = m_pImpl->m_pTextListsHelper->GetListIdForListBlock( |
| *pListBlock); |
| // <-- |
| } |
| else if (pNumberedParagraph) |
| { |
| xNewNumRules.set(pNumberedParagraph->GetNumRules()); |
| nLevel = static_cast<sal_Int8>(pNumberedParagraph->GetLevel()); |
| sListId = pNumberedParagraph->GetListId(); |
| nStartValue = pNumberedParagraph->GetStartValue(); |
| } |
| |
| |
| if (pListBlock || pNumberedParagraph) |
| { |
| // --> OD 2009-08-24 #i101349# |
| // Assure that list style of automatic paragraph style is applied at paragraph. |
| sal_Bool bApplyNumRules = pStyle && pStyle->IsListStyleSet(); |
| if ( !bApplyNumRules ) |
| { |
| sal_Bool bSameNumRules = xNewNumRules == xNumRules; |
| if( !bSameNumRules && xNewNumRules.is() && xNumRules.is() ) |
| { |
| // If the interface pointers are different then this does |
| // not mean that the num rules are different. Further tests |
| // are required then. However, if only one num rule is |
| // set, no tests are required of course. |
| Reference< XNamed > xNewNamed( xNewNumRules, UNO_QUERY ); |
| Reference< XNamed > xNamed( xNumRules, UNO_QUERY ); |
| if( xNewNamed.is() && xNamed.is() ) |
| { |
| bSameNumRules = xNewNamed->getName() == xNamed->getName(); |
| } |
| else |
| { |
| Reference< XAnyCompare > xNumRuleCompare( xNumRules, UNO_QUERY ); |
| if( xNumRuleCompare.is() ) |
| { |
| bSameNumRules = (xNumRuleCompare->compare( Any(xNumRules), Any(xNewNumRules) ) == 0); |
| } |
| } |
| } |
| bApplyNumRules = !bSameNumRules; |
| } |
| |
| if ( bApplyNumRules ) |
| // <-- |
| { |
| // #102607# This may except when xNewNumRules contains |
| // a Writer-NumRule-Implementation bug gets applied to |
| // a shape. Since this may occur inside a document |
| // (e.g. when edited), this must be handled |
| // gracefully. |
| try |
| { |
| xPropSet->setPropertyValue( |
| s_NumberingRules, makeAny(xNewNumRules) ); |
| } |
| catch( Exception e ) |
| { |
| ; // I would really like to use a warning here, |
| // but I can't access the XMLErrorHandler from |
| // here. |
| } |
| } |
| |
| if (!bNumberingIsNumber && |
| xPropSetInfo->hasPropertyByName(s_NumberingIsNumber)) |
| { |
| xPropSet->setPropertyValue(s_NumberingIsNumber, Any(sal_False)); |
| } |
| |
| xPropSet->setPropertyValue( s_NumberingLevel, Any(nLevel) ); |
| |
| if( pListBlock && pListBlock->IsRestartNumbering() ) |
| { |
| // TODO: property missing |
| if (xPropSetInfo->hasPropertyByName(s_ParaIsNumberingRestart)) |
| { |
| sal_Bool bTmp = sal_True; |
| xPropSet->setPropertyValue(s_ParaIsNumberingRestart, |
| makeAny(bTmp) ); |
| } |
| pListBlock->ResetRestartNumbering(); |
| } |
| |
| if ( 0 <= nStartValue && |
| xPropSetInfo->hasPropertyByName(s_NumberingStartValue)) |
| { |
| xPropSet->setPropertyValue(s_NumberingStartValue, |
| makeAny(nStartValue)); |
| } |
| |
| // --> OD 2008-04-23 #refactorlists# |
| if (xPropSetInfo->hasPropertyByName(s_PropNameListId)) |
| { |
| if (sListId.getLength()) { |
| xPropSet->setPropertyValue(s_PropNameListId, |
| makeAny(sListId) ); |
| } |
| } |
| // <-- |
| |
| GetTextListHelper().SetListItem( (XMLTextListItemContext *)0 ); |
| } |
| else |
| { |
| // If the paragraph is not in a list but its style, remove it from |
| // the list. |
| // --> OD 2005-10-25 #126347# - do not remove it, if the list |
| // of the style is the chapter numbering rule. |
| if( xNumRules.is() ) |
| { |
| bool bRemove( true ); |
| // --> OD 2008-12-17 #i70748# - special handling for document from OOo 2.x |
| sal_Int32 nUPD( 0 ); |
| sal_Int32 nBuild( 0 ); |
| const bool bBuildIdFound = rImport.getBuildIds( nUPD, nBuild ); |
| DBG_ASSERT( ( bBuildIdFound && nUPD == 680 ) || |
| !pStyle || |
| !pStyle->IsListStyleSet() || |
| pStyle->GetListStyle().getLength() == 0, |
| "automatic paragraph style with list style name, but paragraph not in list???" ); |
| if ( ( bBuildIdFound && nUPD == 680 ) || |
| !pStyle || !pStyle->IsListStyleSet() ) |
| { |
| if (m_pImpl->m_xChapterNumbering.is()) |
| { |
| Reference< XNamed > xNumNamed( xNumRules, UNO_QUERY ); |
| Reference< XNamed > const xChapterNumNamed ( |
| m_pImpl->m_xChapterNumbering, UNO_QUERY); |
| if ( xNumNamed.is() && xChapterNumNamed.is() && |
| xNumNamed->getName() == xChapterNumNamed->getName() ) |
| { |
| bRemove = false; |
| // --> OD 2008-09-10 #i70748# |
| bApplyOutlineLevelAsListLevel = true; |
| // <-- |
| } |
| } |
| } |
| // <-- |
| if ( bRemove ) |
| { |
| xPropSet->setPropertyValue( s_NumberingRules, Any() ); |
| } |
| } |
| // <-- |
| } |
| } |
| |
| // hard paragraph properties |
| if( pStyle ) |
| { |
| pStyle->FillPropertySet( xPropSet ); |
| if( bPara && pStyle->HasMasterPageName() && |
| xPropSetInfo->hasPropertyByName(s_PageDescName)) |
| { |
| OUString sDisplayName( |
| rImport.GetStyleDisplayName( |
| XML_STYLE_FAMILY_MASTER_PAGE, |
| pStyle->GetMasterPageName()) ); |
| if( !sDisplayName.getLength() || |
| (m_pImpl->m_xPageStyles.is() && |
| m_pImpl->m_xPageStyles->hasByName( sDisplayName))) |
| { |
| xPropSet->setPropertyValue(s_PageDescName, |
| makeAny(sDisplayName)); |
| } |
| } |
| if( bPara && pStyle->GetDropCapStyleName().getLength() && |
| m_pImpl->m_xTextStyles.is()) |
| { |
| OUString sDisplayName( |
| rImport.GetStyleDisplayName( |
| XML_STYLE_FAMILY_TEXT_TEXT, |
| pStyle->GetDropCapStyleName()) ); |
| if (m_pImpl->m_xTextStyles->hasByName(sDisplayName) && |
| xPropSetInfo->hasPropertyByName( sDisplayName ) ) |
| { |
| xPropSet->setPropertyValue( pStyle->sDropCapCharStyleName, makeAny(sDisplayName) ); |
| } |
| } |
| |
| // combined characters special treatment |
| if (!bPara && pStyle->HasCombinedCharactersLetter()) |
| { |
| // insert combined characters text field |
| if (m_pImpl->m_xServiceFactory.is()) |
| { |
| uno::Reference<beans::XPropertySet> const xTmp( |
| m_pImpl->m_xServiceFactory->createInstance( |
| s_ServiceCombinedCharacters), UNO_QUERY); |
| if( xTmp.is() ) |
| { |
| // fix cursor if larger than possible for |
| // combined characters field |
| if (rCursor->getString().getLength() > |
| MAX_COMBINED_CHARACTERS) |
| { |
| rCursor->gotoRange(rCursor->getStart(), sal_False); |
| rCursor->goRight(MAX_COMBINED_CHARACTERS, sal_True); |
| } |
| |
| // set field value (the combined character string) |
| xTmp->setPropertyValue(s_Content, |
| makeAny(rCursor->getString())); |
| |
| // insert the field over it's original text |
| Reference<XTextRange> xRange(rCursor, UNO_QUERY); |
| Reference<XTextContent> xTextContent(xTmp, UNO_QUERY); |
| if (m_pImpl->m_xText.is() && xRange.is()) |
| { |
| // #i107225# the combined characters need to be inserted first |
| // the selected text has to be removed afterwards |
| m_pImpl->m_xText->insertTextContent( xRange->getStart(), xTextContent, sal_True ); |
| |
| if( xRange->getString().getLength() ) |
| { |
| try |
| { |
| uno::Reference< text::XTextCursor > xCrsr = xRange->getText()->createTextCursorByRange( xRange->getStart() ); |
| xCrsr->goLeft( 1, true ); |
| uno::Reference< beans::XPropertySet> xCrsrProperties( xCrsr, uno::UNO_QUERY_THROW ); |
| //the hard properties of the removed text need to be applied to the combined characters field |
| pStyle->FillPropertySet( xCrsrProperties ); |
| xCrsr->collapseToEnd(); |
| xCrsr->gotoRange( xRange->getEnd(), true ); |
| xCrsr->setString( ::rtl::OUString() ); |
| } |
| catch( const uno::Exception& rEx ) |
| { |
| (void)rEx; |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| |
| // outline level; set after list style has been set |
| // --> OD 2005-08-25 #i53198# |
| // Complete re-worked and corrected: |
| // - set outline level at paragraph |
| // - set numbering level at paragraph, if none is already set |
| // - assure that style is marked as an outline style for the corresponding |
| // outline level. |
| // - DO NOT set type of numbering rule to outline. |
| // - DO NOT set numbering rule directly at the paragraph. |
| |
| // --> OD 2008-12-09 #i70748# |
| // Some minor rework and adjust access to paragraph styles |
| if ( bPara ) |
| { |
| // --> OD 2009-08-18 #i103817# |
| sal_Int16 nCurrentOutlineLevelInheritedFromParagraphStyle = 0; |
| const bool bHasOutlineLevelProp( |
| xPropSetInfo->hasPropertyByName(s_OutlineLevel)); |
| if ( bHasOutlineLevelProp ) |
| { |
| xPropSet->getPropertyValue(s_OutlineLevel) |
| >>= nCurrentOutlineLevelInheritedFromParagraphStyle; |
| } |
| // <-- |
| //if ( bPara && nOutlineLevel != -1 ) //#outline level,removed by zhaojianwei |
| if ( nOutlineLevel > 0 ) //add by zhaojianwei |
| { |
| //#outline level,removed by zhaojianwei |
| if ( bHasOutlineLevelProp ) |
| { |
| // In case that the value equals the value of its paragraph style |
| // attribute outline level, the paragraph attribute value is left unset |
| if ( nCurrentOutlineLevelInheritedFromParagraphStyle != nOutlineLevel ) |
| { |
| xPropSet->setPropertyValue( s_OutlineLevel, |
| makeAny( static_cast<sal_Int16>(nOutlineLevel) ) ); |
| } |
| }//<-end,zhaojianwei |
| |
| // --> OD 2008-09-10 #i70748# |
| if ( bApplyOutlineLevelAsListLevel ) |
| { |
| sal_Int16 nNumLevel = -1; |
| xPropSet->getPropertyValue( s_NumberingLevel ) >>= nNumLevel; |
| if ( nNumLevel == -1 || |
| nNumLevel != (nOutlineLevel - 1) ) |
| { |
| xPropSet->setPropertyValue( s_NumberingLevel, |
| makeAny( static_cast<sal_Int8>(nOutlineLevel - 1) ) ); |
| } |
| } |
| // <-- |
| // --> OD 2006-10-13 #i69629# - correction: |
| // - for text document from version OOo 2.0.4/SO 8 PU4 and earlier |
| // the paragraph style of a heading should be assigned to the |
| // corresponding list level of the outline style. |
| // - for other text documents the paragraph style of a heading is only |
| // a candidate for an assignment to the list level of the outline |
| // style, if it has no direct list style property and (if exists) the |
| // automatic paragraph style has also no direct list style set. |
| if (m_pImpl->m_xParaStyles->hasByName(sStyleName)) |
| { |
| bool bOutlineStyleCandidate( false ); |
| |
| sal_Int32 nUPD( 0 ); |
| sal_Int32 nBuild( 0 ); |
| // --> OD 2007-12-19 #152540# |
| const bool bBuildIdFound = rImport.getBuildIds( nUPD, nBuild ); |
| // --> OD 2007-07-25 #i73509# |
| // --> OD 2008-03-19 #i86058# - check explicitly on certain versions |
| if ( rImport.IsTextDocInOOoFileFormat() || |
| ( bBuildIdFound && |
| ( nUPD == 645 || nUPD == 641 ) ) ) |
| { |
| bOutlineStyleCandidate = true; |
| } |
| else if ( nUPD == 680 && nBuild <= 9073 ) /* BuildId of OOo 2.0.4/SO8 PU4 */ |
| { |
| bOutlineStyleCandidate = bOutlineLevelAttrFound; |
| } |
| // <-- |
| // else |
| // { |
| // Reference< XPropertyState > xStylePropState( |
| // xParaStyles->getByName( sStyleName ), UNO_QUERY ); |
| // if ( xStylePropState.is() && |
| // xStylePropState->getPropertyState( sNumberingStyleName ) == PropertyState_DIRECT_VALUE ) |
| // { |
| // bOutlineStyleCandidate = false; |
| // } |
| // // --> OD 2007-01-11 #i73361# |
| // // The automatic paragraph style doesn't have to be considered. |
| // // else if ( pStyle && /* automatic paragraph style */ |
| // // pStyle->IsListStyleSet() ) |
| // // { |
| // // bOutlineStyleCandidate = false; |
| // // } |
| // // <-- |
| // else |
| // { |
| // bOutlineStyleCandidate = true; |
| // } |
| // } |
| |
| if ( bOutlineStyleCandidate ) |
| { |
| AddOutlineStyleCandidate( nOutlineLevel, sStyleName ); |
| } |
| // --> OD 2009-08-18 #i103817# |
| // Assure that heading applies the outline style |
| if ( ( !pStyle || !pStyle->IsListStyleSet() ) && |
| !bOutlineStyleCandidate && |
| m_pImpl->m_xChapterNumbering.is()) |
| { |
| OUString sEmptyStr; |
| if ( !lcl_HasListStyle( sStyleName, |
| m_pImpl->m_xParaStyles, GetXMLImport(), |
| s_NumberingStyleName, |
| sEmptyStr ) ) |
| { |
| // heading not in a list --> apply outline style |
| xPropSet->setPropertyValue( s_NumberingRules, |
| makeAny(m_pImpl->m_xChapterNumbering) ); |
| xPropSet->setPropertyValue( s_NumberingLevel, |
| makeAny(static_cast<sal_Int8>(nOutlineLevel - 1))); |
| } |
| } |
| // <-- |
| } |
| // <-- |
| } |
| //-> #outlinelevel added by zhaojianwei |
| //handle for text:p,if the paragraphstyle outlinelevel is set to[1~10] |
| else if( bHasOutlineLevelProp ) |
| { |
| if ( nCurrentOutlineLevelInheritedFromParagraphStyle != 0 ) |
| { |
| sal_Int16 nZero = 0; |
| xPropSet->setPropertyValue(s_OutlineLevel, |
| makeAny( static_cast<sal_Int16>(nZero) )); |
| } |
| }//<-end,zhaojianwei |
| } |
| // <-- |
| |
| return sStyleName; |
| } |
| |
| void XMLTextImportHelper::FindOutlineStyleName( ::rtl::OUString& rStyleName, |
| sal_Int8 nOutlineLevel ) |
| { |
| static ::rtl::OUString s_HeadingStyleName( |
| RTL_CONSTASCII_USTRINGPARAM("HeadingStyleName")); |
| |
| // style name empty? |
| if( rStyleName.getLength() == 0 ) |
| { |
| // Empty? Then we need o do stuff. Let's do error checking first. |
| if (m_pImpl->m_xChapterNumbering.is() && |
| ( nOutlineLevel > 0 ) && |
| (nOutlineLevel <= m_pImpl->m_xChapterNumbering->getCount())) |
| { |
| nOutlineLevel--; // for the remainder, the level's are 0-based |
| |
| // empty style name: look-up previously used name |
| |
| // if we don't have a previously used name, we'll use the default |
| m_pImpl->InitOutlineStylesCandidates(); |
| if (m_pImpl->m_pOutlineStylesCandidates[nOutlineLevel].empty()) |
| { |
| // no other name used previously? Then use default |
| |
| // iterate over property value sequence to find the style name |
| Sequence<PropertyValue> aProperties; |
| m_pImpl->m_xChapterNumbering->getByIndex( nOutlineLevel ) |
| >>= aProperties; |
| for( sal_Int32 i = 0; i < aProperties.getLength(); i++ ) |
| { |
| if (aProperties[i].Name == s_HeadingStyleName) |
| { |
| rtl::OUString aOutlineStyle; |
| aProperties[i].Value >>= aOutlineStyle; |
| m_pImpl->m_pOutlineStylesCandidates[nOutlineLevel] |
| .push_back( aOutlineStyle ); |
| break; // early out, if we found it!. |
| } |
| } |
| } |
| |
| // finally, we'll use the previously used style name for this |
| // format (or the default we've just put into that style) |
| // --> OD 2006-11-06 #i71249# - take last added one |
| rStyleName = |
| m_pImpl->m_pOutlineStylesCandidates[nOutlineLevel].back(); |
| // <-- |
| } |
| // else: nothing we can do, so we'll leave it empty |
| } |
| // else: we already had a style name, so we let it pass. |
| } |
| |
| void XMLTextImportHelper::AddOutlineStyleCandidate( const sal_Int8 nOutlineLevel, |
| const OUString& rStyleName ) |
| { |
| if (rStyleName.getLength() |
| && m_pImpl->m_xChapterNumbering.is() |
| && (nOutlineLevel > 0) |
| && (nOutlineLevel <= m_pImpl->m_xChapterNumbering->getCount())) |
| { |
| m_pImpl->InitOutlineStylesCandidates(); |
| m_pImpl->m_pOutlineStylesCandidates[nOutlineLevel-1].push_back( |
| rStyleName); |
| } |
| } |
| |
| void XMLTextImportHelper::SetOutlineStyles( sal_Bool bSetEmptyLevels ) |
| { |
| static ::rtl::OUString s_NumberingStyleName( |
| RTL_CONSTASCII_USTRINGPARAM("NumberingStyleName")); |
| static ::rtl::OUString s_HeadingStyleName( |
| RTL_CONSTASCII_USTRINGPARAM("HeadingStyleName")); |
| |
| if (( bool(m_pImpl->m_pOutlineStylesCandidates) || bSetEmptyLevels) && |
| m_pImpl->m_xChapterNumbering.is() && |
| !IsInsertMode()) |
| { |
| bool bChooseLastOne( false ); |
| { |
| if ( GetXMLImport().IsTextDocInOOoFileFormat() ) |
| { |
| bChooseLastOne = true; |
| } |
| else |
| { |
| sal_Int32 nUPD( 0 ); |
| sal_Int32 nBuild( 0 ); |
| if ( GetXMLImport().getBuildIds( nUPD, nBuild ) ) |
| { |
| // check explicitly on certain versions |
| bChooseLastOne = ( nUPD == 641 ) || ( nUPD == 645 ) || // prior OOo 2.0 |
| ( nUPD == 680 && nBuild <= 9073 ); // OOo 2.0 - OOo 2.0.4 |
| } |
| } |
| } |
| |
| OUString sOutlineStyleName; |
| { |
| Reference<XPropertySet> xChapterNumRule( |
| m_pImpl->m_xChapterNumbering, UNO_QUERY); |
| const OUString sName(RTL_CONSTASCII_USTRINGPARAM("Name")); |
| xChapterNumRule->getPropertyValue(sName) >>= sOutlineStyleName; |
| } |
| |
| const sal_Int32 nCount = m_pImpl->m_xChapterNumbering->getCount(); |
| // --> OD 2009-11-13 #i106218# |
| // First collect all paragraph styles choosen for assignment to each |
| // list level of the outline style, then perform the intrinsic assignment. |
| // Reason: The assignment of a certain paragraph style to a list level |
| // of the outline style causes side effects on the children |
| // paragraph styles in Writer. |
| ::std::vector<OUString> sChosenStyles(nCount); |
| // <-- |
| for( sal_Int32 i=0; i < nCount; ++i ) |
| { |
| if ( bSetEmptyLevels || |
| (m_pImpl->m_pOutlineStylesCandidates && |
| !m_pImpl->m_pOutlineStylesCandidates[i].empty())) |
| { |
| // determine, which candidate is one to be assigned to the list |
| // level of the outline style |
| if (m_pImpl->m_pOutlineStylesCandidates && |
| !m_pImpl->m_pOutlineStylesCandidates[i].empty()) |
| { |
| if ( bChooseLastOne ) |
| { |
| sChosenStyles[i] = |
| m_pImpl->m_pOutlineStylesCandidates[i].back(); |
| } |
| else |
| { |
| for (sal_uInt32 j = 0; |
| j < m_pImpl->m_pOutlineStylesCandidates[i].size(); |
| ++j) |
| { |
| if (!lcl_HasListStyle( |
| m_pImpl->m_pOutlineStylesCandidates[i][j], |
| m_pImpl->m_xParaStyles, |
| GetXMLImport(), |
| s_NumberingStyleName, |
| sOutlineStyleName)) |
| { |
| sChosenStyles[i] = |
| m_pImpl->m_pOutlineStylesCandidates[i][j]; |
| break; |
| } |
| } |
| } |
| } |
| } |
| } |
| // --> OD 2009-11-13 #i106218# |
| Sequence < PropertyValue > aProps( 1 ); |
| PropertyValue *pProps = aProps.getArray(); |
| pProps->Name = s_HeadingStyleName; |
| for ( sal_Int32 i = 0; i < nCount; ++i ) |
| { |
| // --> OD 2009-12-11 #i107610# |
| if ( bSetEmptyLevels || |
| sChosenStyles[i].getLength() > 0 ) |
| // <-- |
| { |
| pProps->Value <<= sChosenStyles[i]; |
| m_pImpl->m_xChapterNumbering->replaceByIndex(i, |
| makeAny( aProps )); |
| } |
| } |
| // <-- |
| } |
| } |
| |
| void XMLTextImportHelper::SetHyperlink( |
| SvXMLImport& rImport, |
| const Reference < XTextCursor >& rCursor, |
| const OUString& rHRef, |
| const OUString& rName, |
| const OUString& rTargetFrameName, |
| const OUString& rStyleName, |
| const OUString& rVisitedStyleName, |
| XMLEventsImportContext* pEvents) |
| { |
| static ::rtl::OUString s_HyperLinkURL( |
| RTL_CONSTASCII_USTRINGPARAM("HyperLinkURL")); |
| static ::rtl::OUString s_HyperLinkName( |
| RTL_CONSTASCII_USTRINGPARAM("HyperLinkName")); |
| static ::rtl::OUString s_HyperLinkTarget( |
| RTL_CONSTASCII_USTRINGPARAM("HyperLinkTarget")); |
| static ::rtl::OUString s_UnvisitedCharStyleName( |
| RTL_CONSTASCII_USTRINGPARAM("UnvisitedCharStyleName")); |
| static ::rtl::OUString s_VisitedCharStyleName( |
| RTL_CONSTASCII_USTRINGPARAM("VisitedCharStyleName")); |
| static ::rtl::OUString s_HyperLinkEvents( |
| RTL_CONSTASCII_USTRINGPARAM("HyperLinkEvents")); |
| |
| Reference < XPropertySet > xPropSet( rCursor, UNO_QUERY ); |
| Reference < XPropertySetInfo > xPropSetInfo( |
| xPropSet->getPropertySetInfo()); |
| if (!xPropSetInfo.is() || !xPropSetInfo->hasPropertyByName(s_HyperLinkURL)) |
| return; |
| |
| xPropSet->setPropertyValue(s_HyperLinkURL, makeAny(rHRef)); |
| |
| if (xPropSetInfo->hasPropertyByName(s_HyperLinkName)) |
| { |
| xPropSet->setPropertyValue(s_HyperLinkName, makeAny(rName)); |
| } |
| |
| if (xPropSetInfo->hasPropertyByName(s_HyperLinkTarget)) |
| { |
| xPropSet->setPropertyValue(s_HyperLinkTarget, |
| makeAny(rTargetFrameName)); |
| } |
| |
| if ( (pEvents != NULL) && |
| xPropSetInfo->hasPropertyByName(s_HyperLinkEvents)) |
| { |
| // The API treats events at hyperlinks differently from most |
| // other properties: You have to set a name replace with the |
| // events in it. The easiest way to to this is to 1) get |
| // events, 2) set new ones, and 3) then put events back. |
| uno::Reference<XNameReplace> const xReplace( |
| xPropSet->getPropertyValue(s_HyperLinkEvents), UNO_QUERY); |
| if (xReplace.is()) |
| { |
| // set events |
| pEvents->SetEvents(xReplace); |
| |
| // put events |
| xPropSet->setPropertyValue(s_HyperLinkEvents, makeAny(xReplace)); |
| } |
| } |
| |
| if (m_pImpl->m_xTextStyles.is()) |
| { |
| OUString sDisplayName( |
| rImport.GetStyleDisplayName( |
| XML_STYLE_FAMILY_TEXT_TEXT, rStyleName ) ); |
| if( sDisplayName.getLength() && |
| xPropSetInfo->hasPropertyByName(s_UnvisitedCharStyleName) && |
| m_pImpl->m_xTextStyles->hasByName(sDisplayName)) |
| { |
| xPropSet->setPropertyValue(s_UnvisitedCharStyleName, |
| makeAny(sDisplayName)); |
| } |
| |
| sDisplayName = |
| rImport.GetStyleDisplayName( |
| XML_STYLE_FAMILY_TEXT_TEXT, rVisitedStyleName ); |
| if( sDisplayName.getLength() && |
| xPropSetInfo->hasPropertyByName(s_VisitedCharStyleName) && |
| m_pImpl->m_xTextStyles->hasByName(sDisplayName)) |
| { |
| xPropSet->setPropertyValue(s_VisitedCharStyleName, |
| makeAny(sDisplayName)); |
| } |
| } |
| } |
| |
| void XMLTextImportHelper::SetRuby( |
| SvXMLImport& rImport, |
| const Reference < XTextCursor >& rCursor, |
| const OUString& rStyleName, |
| const OUString& rTextStyleName, |
| const OUString& rText ) |
| { |
| Reference<XPropertySet> xPropSet(rCursor, UNO_QUERY); |
| |
| OUString sRubyText(RTL_CONSTASCII_USTRINGPARAM("RubyText")); |
| OUString sRubyCharStyleName(RTL_CONSTASCII_USTRINGPARAM("RubyCharStyleName")); |
| |
| // if we have one Ruby property, we assume all of them are present |
| if (xPropSet.is() && |
| xPropSet->getPropertySetInfo()->hasPropertyByName( sRubyText )) |
| { |
| // the ruby text |
| xPropSet->setPropertyValue(sRubyText, makeAny(rText)); |
| |
| // the ruby style (ruby-adjust) |
| XMLPropStyleContext *pStyle = 0; |
| if (rStyleName.getLength() && m_pImpl->m_xAutoStyles.Is()) |
| { |
| const SvXMLStyleContext* pTempStyle = |
| ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)-> |
| FindStyleChildContext( XML_STYLE_FAMILY_TEXT_RUBY, |
| rStyleName, sal_True ); |
| pStyle = PTR_CAST(XMLPropStyleContext,pTempStyle); |
| |
| if (NULL != pStyle) |
| pStyle->FillPropertySet( xPropSet ); |
| } |
| |
| // the ruby text character style |
| if (m_pImpl->m_xTextStyles.is()) |
| { |
| OUString sDisplayName( |
| rImport.GetStyleDisplayName( |
| XML_STYLE_FAMILY_TEXT_TEXT, rTextStyleName ) ); |
| if( (sDisplayName.getLength() > 0) && |
| // xPropSetInfo->hasPropertyByName( sRubyCharStyleName ) && |
| m_pImpl->m_xTextStyles->hasByName( sDisplayName )) |
| { |
| xPropSet->setPropertyValue(sRubyCharStyleName, makeAny(sDisplayName)); |
| } |
| } |
| } |
| } |
| |
| void XMLTextImportHelper::SetAutoStyles( SvXMLStylesContext *pStyles ) |
| { |
| m_pImpl->m_xAutoStyles = pStyles; |
| } |
| |
| void XMLTextImportHelper::SetFontDecls( XMLFontStylesContext *pFontDecls ) |
| { |
| m_pImpl->m_xFontDecls = pFontDecls; |
| ((XMLTextImportPropertyMapper *)m_pImpl->m_xParaImpPrMap.get()) |
| ->SetFontDecls( pFontDecls ); |
| ((XMLTextImportPropertyMapper *)m_pImpl->m_xTextImpPrMap.get()) |
| ->SetFontDecls( pFontDecls ); |
| } |
| |
| const XMLFontStylesContext *XMLTextImportHelper::GetFontDecls() const |
| { |
| return (XMLFontStylesContext *)&m_pImpl->m_xFontDecls; |
| } |
| |
| sal_Bool XMLTextImportHelper::HasDrawNameAttribute( |
| const Reference< XAttributeList > & xAttrList, |
| SvXMLNamespaceMap& rNamespaceMap ) |
| { |
| sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0; |
| for( sal_Int16 i=0; i < nAttrCount; i++ ) |
| { |
| const OUString& rAttrName = xAttrList->getNameByIndex( i ); |
| |
| OUString aLocalName; |
| sal_uInt16 nPrefix = |
| rNamespaceMap.GetKeyByAttrName( rAttrName, &aLocalName ); |
| if( XML_NAMESPACE_DRAW == nPrefix && |
| IsXMLToken( aLocalName, XML_NAME ) ) |
| { |
| return xAttrList->getValueByIndex(i).getLength() != 0; |
| } |
| } |
| |
| return sal_False; |
| } |
| |
| SvXMLImportContext *XMLTextImportHelper::CreateTextChildContext( |
| SvXMLImport& rImport, |
| sal_uInt16 nPrefix, const OUString& rLocalName, |
| const Reference< XAttributeList > & xAttrList, |
| XMLTextType eType ) |
| { |
| SvXMLImportContext *pContext = 0; |
| |
| const SvXMLTokenMap& rTokenMap = GetTextElemTokenMap(); |
| sal_Bool bHeading = sal_False; |
| sal_Bool bContent = sal_True; |
| sal_uInt16 nToken = rTokenMap.Get( nPrefix, rLocalName ); |
| switch( nToken ) |
| { |
| case XML_TOK_TEXT_H: |
| bHeading = sal_True; |
| case XML_TOK_TEXT_P: |
| pContext = new XMLParaContext( rImport, |
| nPrefix, rLocalName, |
| xAttrList, bHeading ); |
| if (m_pImpl->m_bProgress && XML_TEXT_TYPE_SHAPE != eType) |
| { |
| rImport.GetProgressBarHelper()->Increment(); |
| } |
| break; |
| case XML_TOK_TEXT_NUMBERED_PARAGRAPH: |
| pContext = new XMLNumberedParaContext( |
| rImport, nPrefix, rLocalName, xAttrList ); |
| break; |
| case XML_TOK_TEXT_LIST: |
| pContext = new XMLTextListBlockContext( rImport, *this, |
| nPrefix, rLocalName, |
| xAttrList ); |
| break; |
| case XML_TOK_TABLE_TABLE: |
| if( XML_TEXT_TYPE_BODY == eType || |
| XML_TEXT_TYPE_TEXTBOX == eType || |
| XML_TEXT_TYPE_SECTION == eType || |
| XML_TEXT_TYPE_HEADER_FOOTER == eType || |
| XML_TEXT_TYPE_CHANGED_REGION == eType || |
| XML_TEXT_TYPE_CELL == eType ) |
| pContext = CreateTableChildContext( rImport, nPrefix, rLocalName, |
| xAttrList ); |
| break; |
| case XML_TOK_TEXT_SEQUENCE_DECLS: |
| if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted) || |
| XML_TEXT_TYPE_HEADER_FOOTER == eType ) |
| { |
| pContext = new XMLVariableDeclsImportContext( |
| rImport, *this, nPrefix, rLocalName, VarTypeSequence); |
| bContent = sal_False; |
| } |
| break; |
| |
| case XML_TOK_TEXT_VARFIELD_DECLS: |
| if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted) || |
| XML_TEXT_TYPE_HEADER_FOOTER == eType ) |
| { |
| pContext = new XMLVariableDeclsImportContext( |
| rImport, *this, nPrefix, rLocalName, VarTypeSimple); |
| bContent = sal_False; |
| } |
| break; |
| |
| case XML_TOK_TEXT_USERFIELD_DECLS: |
| if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted)|| |
| XML_TEXT_TYPE_HEADER_FOOTER == eType ) |
| { |
| pContext = new XMLVariableDeclsImportContext( |
| rImport, *this, nPrefix, rLocalName, VarTypeUserField); |
| bContent = sal_False; |
| } |
| break; |
| |
| case XML_TOK_TEXT_DDE_DECLS: |
| if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted) || |
| XML_TEXT_TYPE_HEADER_FOOTER == eType ) |
| { |
| pContext = new XMLDdeFieldDeclsImportContext( |
| rImport, nPrefix, rLocalName); |
| bContent = sal_False; |
| } |
| break; |
| |
| case XML_TOK_TEXT_FRAME_PAGE: |
| if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted) || |
| XML_TEXT_TYPE_TEXTBOX == eType || |
| XML_TEXT_TYPE_CHANGED_REGION == eType ) |
| { |
| TextContentAnchorType eAnchorType = |
| XML_TEXT_TYPE_TEXTBOX == eType ? TextContentAnchorType_AT_FRAME |
| : TextContentAnchorType_AT_PAGE; |
| pContext = new XMLTextFrameContext( rImport, nPrefix, |
| rLocalName, xAttrList, |
| eAnchorType ); |
| bContent = sal_False; |
| } |
| break; |
| |
| case XML_TOK_DRAW_A_PAGE: |
| if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted) || |
| XML_TEXT_TYPE_TEXTBOX == eType || |
| XML_TEXT_TYPE_CHANGED_REGION == eType) |
| { |
| TextContentAnchorType eAnchorType = |
| XML_TEXT_TYPE_TEXTBOX == eType ? TextContentAnchorType_AT_FRAME |
| : TextContentAnchorType_AT_PAGE; |
| pContext = new XMLTextFrameHyperlinkContext( rImport, nPrefix, |
| rLocalName, xAttrList, |
| eAnchorType ); |
| bContent = sal_False; |
| } |
| break; |
| |
| case XML_TOK_TEXT_INDEX_TITLE: |
| case XML_TOK_TEXT_SECTION: |
| #ifndef SVX_LIGHT |
| pContext = new XMLSectionImportContext( rImport, nPrefix, rLocalName ); |
| #else |
| // create default context to skip content |
| pContext = new SvXMLImportContext( rImport, nPrefix, rLocalName ); |
| #endif // #ifndef SVX_LIGHT |
| break; |
| |
| case XML_TOK_TEXT_TOC: |
| case XML_TOK_TEXT_OBJECT_INDEX: |
| case XML_TOK_TEXT_TABLE_INDEX: |
| case XML_TOK_TEXT_ILLUSTRATION_INDEX: |
| case XML_TOK_TEXT_USER_INDEX: |
| case XML_TOK_TEXT_ALPHABETICAL_INDEX: |
| case XML_TOK_TEXT_BIBLIOGRAPHY_INDEX: |
| #ifndef SVX_LIGHT |
| if( XML_TEXT_TYPE_SHAPE != eType ) |
| pContext = new XMLIndexTOCContext( rImport, nPrefix, rLocalName ); |
| #else |
| // create default context to skip content |
| pContext = new SvXMLImportContext( rImport, nPrefix, rLocalName ); |
| #endif // #ifndef SVX_LIGHT |
| break; |
| |
| case XML_TOK_TEXT_TRACKED_CHANGES: |
| #ifndef SVX_LIGHT |
| pContext = new XMLTrackedChangesImportContext( rImport, nPrefix, |
| rLocalName); |
| #else |
| // create default context to skip content |
| pContext = new SvXMLImportContext( rImport, nPrefix, rLocalName ); |
| #endif // #ifndef SVX_LIGHT |
| bContent = sal_False; |
| break; |
| |
| case XML_TOK_TEXT_CHANGE: |
| case XML_TOK_TEXT_CHANGE_START: |
| case XML_TOK_TEXT_CHANGE_END: |
| pContext = new XMLChangeImportContext( |
| rImport, nPrefix, rLocalName, |
| (XML_TOK_TEXT_CHANGE_END != nToken), |
| (XML_TOK_TEXT_CHANGE_START != nToken), |
| sal_True); |
| break; |
| |
| case XML_TOK_TEXT_FORMS: |
| #ifndef SVX_LIGHT |
| pContext = rImport.GetFormImport()->createOfficeFormsContext(rImport, nPrefix, rLocalName); |
| #else |
| // create default context to skip content |
| pContext = new SvXMLImportContext( rImport, nPrefix, rLocalName ); |
| #endif // #ifndef SVX_LIGHT |
| bContent = sal_False; |
| break; |
| |
| case XML_TOK_TEXT_AUTOMARK: |
| if( XML_TEXT_TYPE_BODY == eType ) |
| { |
| pContext = new XMLAutoMarkFileContext(rImport, nPrefix,rLocalName); |
| } |
| bContent = sal_False; |
| break; |
| |
| case XML_TOK_TEXT_CALCULATION_SETTINGS: |
| #ifndef SVX_LIGHT |
| pContext = new XMLCalculationSettingsContext ( rImport, nPrefix, rLocalName, xAttrList); |
| #else |
| // create default context to skip content |
| pContext = new SvXMLImportContext( rImport, nPrefix, rLocalName ); |
| #endif // #ifndef SVX_LIGHT |
| bContent = sal_False; |
| break; |
| |
| default: |
| if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted) || |
| XML_TEXT_TYPE_TEXTBOX == eType || |
| XML_TEXT_TYPE_CHANGED_REGION == eType ) |
| { |
| Reference < XShapes > xShapes; |
| pContext = rImport.GetShapeImport()->CreateGroupChildContext( |
| rImport, nPrefix, rLocalName, xAttrList, xShapes ); |
| bContent = sal_False; |
| } |
| } |
| |
| // if( !pContext ) |
| // pContext = new SvXMLImportContext( GetImport(), nPrefix, rLocalName ); |
| |
| // handle open redlines |
| if ( (XML_TOK_TEXT_CHANGE != nToken) && |
| (XML_TOK_TEXT_CHANGE_END != nToken) && |
| (XML_TOK_TEXT_CHANGE_START != nToken) ) |
| { |
| // ResetOpenRedlineId(); |
| } |
| |
| if( XML_TEXT_TYPE_BODY == eType && bContent ) |
| { |
| m_pImpl->m_bBodyContentStarted = sal_False; |
| } |
| |
| return pContext; |
| } |
| |
| SvXMLImportContext *XMLTextImportHelper::CreateTableChildContext( |
| SvXMLImport&, |
| sal_uInt16 /*nPrefix*/, const OUString& /*rLocalName*/, |
| const Reference< XAttributeList > & ) |
| { |
| return 0; |
| } |
| |
| /// get data style key for use with NumberFormat property |
| sal_Int32 XMLTextImportHelper::GetDataStyleKey(const OUString& sStyleName, |
| sal_Bool* pIsSystemLanguage ) |
| { |
| const SvXMLStyleContext* pStyle = |
| ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)-> |
| FindStyleChildContext( XML_STYLE_FAMILY_DATA_STYLE, |
| sStyleName, sal_True ); |
| |
| // get appropriate context |
| |
| |
| // first check if its a impress and draw only number format |
| // this is needed since its also a SvXMLNumFormatContext, |
| // that was needed to support them for controls in impress/draw also |
| SdXMLNumberFormatImportContext* pSdNumStyle = PTR_CAST( SdXMLNumberFormatImportContext, pStyle ); |
| if( pSdNumStyle ) |
| { |
| return pSdNumStyle->GetDrawKey(); |
| } |
| else |
| { |
| SvXMLNumFormatContext* pNumStyle = PTR_CAST( SvXMLNumFormatContext, pStyle ); |
| if( pNumStyle ) |
| { |
| if( pIsSystemLanguage != NULL ) |
| *pIsSystemLanguage = pNumStyle->IsSystemLanguage(); |
| |
| // return key |
| return pNumStyle->GetKey(); |
| } |
| } |
| return -1; |
| } |
| |
| const SvxXMLListStyleContext *XMLTextImportHelper::FindAutoListStyle( const OUString& rName ) const |
| { |
| const SvxXMLListStyleContext *pStyle = 0; |
| if (m_pImpl->m_xAutoStyles.Is()) |
| { |
| const SvXMLStyleContext* pTempStyle = |
| ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)-> |
| FindStyleChildContext( XML_STYLE_FAMILY_TEXT_LIST, rName, |
| sal_True ); |
| pStyle = PTR_CAST( SvxXMLListStyleContext ,pTempStyle); |
| } |
| |
| return pStyle; |
| } |
| |
| XMLPropStyleContext *XMLTextImportHelper::FindAutoFrameStyle( const OUString& rName ) const |
| { |
| XMLPropStyleContext *pStyle = 0; |
| if (m_pImpl->m_xAutoStyles.Is()) |
| { |
| const SvXMLStyleContext* pTempStyle = |
| ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)-> |
| FindStyleChildContext( XML_STYLE_FAMILY_SD_GRAPHICS_ID, rName, |
| sal_True ); |
| pStyle = PTR_CAST( XMLPropStyleContext ,pTempStyle); |
| } |
| |
| return pStyle; |
| } |
| |
| XMLPropStyleContext* XMLTextImportHelper::FindSectionStyle( |
| const OUString& rName ) const |
| { |
| XMLPropStyleContext* pStyle = NULL; |
| if (m_pImpl->m_xAutoStyles.Is()) |
| { |
| const SvXMLStyleContext* pTempStyle = |
| ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)-> |
| FindStyleChildContext( |
| XML_STYLE_FAMILY_TEXT_SECTION, |
| rName, sal_True ); |
| pStyle = PTR_CAST( XMLPropStyleContext,pTempStyle); |
| } |
| |
| return pStyle; |
| } |
| |
| XMLPropStyleContext* XMLTextImportHelper::FindPageMaster( |
| const OUString& rName ) const |
| { |
| XMLPropStyleContext* pStyle = NULL; |
| if (m_pImpl->m_xAutoStyles.Is()) |
| { |
| const SvXMLStyleContext* pTempStyle = |
| ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)-> |
| FindStyleChildContext( |
| XML_STYLE_FAMILY_PAGE_MASTER, |
| rName, sal_True ); |
| pStyle = PTR_CAST( XMLPropStyleContext,pTempStyle); |
| } |
| |
| return pStyle; |
| } |
| |
| |
| void XMLTextImportHelper::PushListContext(XMLTextListBlockContext *i_pListBlock) |
| { |
| GetTextListHelper().PushListContext(i_pListBlock); |
| } |
| |
| void XMLTextImportHelper::PopListContext() |
| { |
| GetTextListHelper().PopListContext(); |
| } |
| |
| |
| const SvXMLTokenMap& XMLTextImportHelper::GetTextNumberedParagraphAttrTokenMap() |
| { |
| if (!m_pImpl->m_pTextNumberedParagraphAttrTokenMap.get()) |
| { |
| m_pImpl->m_pTextNumberedParagraphAttrTokenMap.reset( |
| new SvXMLTokenMap( aTextNumberedParagraphAttrTokenMap ) ); |
| } |
| return *m_pImpl->m_pTextNumberedParagraphAttrTokenMap; |
| } |
| |
| const SvXMLTokenMap& XMLTextImportHelper::GetTextListBlockAttrTokenMap() |
| { |
| if (!m_pImpl->m_pTextListBlockAttrTokenMap.get()) |
| { |
| m_pImpl->m_pTextListBlockAttrTokenMap.reset( |
| new SvXMLTokenMap( aTextListBlockAttrTokenMap ) ); |
| } |
| return *m_pImpl->m_pTextListBlockAttrTokenMap; |
| } |
| |
| const SvXMLTokenMap& XMLTextImportHelper::GetTextListBlockElemTokenMap() |
| { |
| if (!m_pImpl->m_pTextListBlockElemTokenMap.get()) |
| { |
| m_pImpl->m_pTextListBlockElemTokenMap.reset( |
| new SvXMLTokenMap( aTextListBlockElemTokenMap ) ); |
| } |
| return *m_pImpl->m_pTextListBlockElemTokenMap; |
| } |
| |
| SvI18NMap& XMLTextImportHelper::GetRenameMap() |
| { |
| if (!m_pImpl->m_pRenameMap.get()) |
| { |
| m_pImpl->m_pRenameMap.reset( new SvI18NMap() ); |
| } |
| return *m_pImpl->m_pRenameMap; |
| } |
| |
| void XMLTextImportHelper::InsertBookmarkStartRange( |
| const OUString sName, |
| const Reference<XTextRange> & rRange, |
| OUString const& i_rXmlId, |
| ::boost::shared_ptr< ::xmloff::ParsedRDFaAttributes > & i_rpRDFaAttributes) |
| { |
| m_pImpl->m_BookmarkStartRanges[sName] = |
| ::boost::make_tuple(rRange, i_rXmlId, i_rpRDFaAttributes); |
| m_pImpl->m_BookmarkVector.push_back(sName); |
| } |
| |
| sal_Bool XMLTextImportHelper::FindAndRemoveBookmarkStartRange( |
| const OUString sName, |
| Reference<XTextRange> & o_rRange, |
| OUString & o_rXmlId, |
| ::boost::shared_ptr< ::xmloff::ParsedRDFaAttributes > & o_rpRDFaAttributes) |
| { |
| if (m_pImpl->m_BookmarkStartRanges.count(sName)) |
| { |
| Impl::BookmarkMapEntry_t & rEntry = |
| (*m_pImpl->m_BookmarkStartRanges.find(sName)).second; |
| o_rRange.set(rEntry.get<0>()); |
| o_rXmlId = rEntry.get<1>(); |
| o_rpRDFaAttributes = rEntry.get<2>(); |
| m_pImpl->m_BookmarkStartRanges.erase(sName); |
| Impl::BookmarkVector_t::iterator it(m_pImpl->m_BookmarkVector.begin()); |
| while (it != m_pImpl->m_BookmarkVector.end() && it->compareTo(sName)!=0) |
| { |
| it++; |
| } |
| if (it!=m_pImpl->m_BookmarkVector.end()) { |
| m_pImpl->m_BookmarkVector.erase(it); |
| } |
| return sal_True; |
| } |
| else |
| { |
| return sal_False; |
| } |
| } |
| |
| ::rtl::OUString XMLTextImportHelper::FindActiveBookmarkName() |
| { |
| if (!m_pImpl->m_BookmarkVector.empty()) { |
| return m_pImpl->m_BookmarkVector.back(); |
| } else return ::rtl::OUString(); // return the empty string on error... |
| } |
| |
| ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > XMLTextImportHelper::GetRangeFor(::rtl::OUString &sName) |
| { |
| return m_pImpl->m_BookmarkStartRanges[sName].get<0>(); |
| } |
| |
| |
| void XMLTextImportHelper::pushFieldCtx( ::rtl::OUString name, ::rtl::OUString type ) |
| { |
| m_pImpl->m_FieldStack.push(Impl::field_stack_item_t( |
| Impl::field_name_type_t(name, type), Impl::field_params_t())); |
| } |
| |
| void XMLTextImportHelper::popFieldCtx() |
| { |
| m_pImpl->m_FieldStack.pop(); |
| } |
| |
| void XMLTextImportHelper::addFieldParam( ::rtl::OUString name, ::rtl::OUString value ) |
| { |
| DBG_ASSERT(!m_pImpl->m_FieldStack.empty(), |
| "stack is empty: not good! Do a pushFieldCtx before..."); |
| if (!m_pImpl->m_FieldStack.empty()) { |
| Impl::field_stack_item_t & FieldStackItem(m_pImpl->m_FieldStack.top()); |
| FieldStackItem.second.push_back(Impl::field_param_t( name, value )); |
| } |
| } |
| ::rtl::OUString XMLTextImportHelper::getCurrentFieldName() |
| { |
| DBG_ASSERT(!m_pImpl->m_FieldStack.empty(), |
| "stack is empty: not good! Do a pushFieldCtx before..."); |
| if (!m_pImpl->m_FieldStack.empty()) { |
| return m_pImpl->m_FieldStack.top().first.first; |
| } else return ::rtl::OUString(); |
| } |
| |
| ::rtl::OUString XMLTextImportHelper::getCurrentFieldType() |
| { |
| DBG_ASSERT(!m_pImpl->m_FieldStack.empty(), |
| "stack is empty: not good! Do a pushFieldCtx before..."); |
| if (!m_pImpl->m_FieldStack.empty()) { |
| return m_pImpl->m_FieldStack.top().first.second; |
| } else return ::rtl::OUString(); |
| } |
| |
| bool XMLTextImportHelper::hasCurrentFieldCtx() |
| { |
| return !m_pImpl->m_FieldStack.empty(); |
| } |
| |
| void XMLTextImportHelper::setCurrentFieldParamsTo(::com::sun::star::uno::Reference< ::com::sun::star::text::XFormField> &xFormField) |
| { |
| DBG_ASSERT(!m_pImpl->m_FieldStack.empty(), |
| "stack is empty: not good! Do a pushFieldCtx before..."); |
| if (!m_pImpl->m_FieldStack.empty() && xFormField.is()) |
| { |
| FieldParamImporter(&m_pImpl->m_FieldStack.top().second, |
| xFormField->getParameters()).Import(); |
| } |
| } |
| |
| |
| void XMLTextImportHelper::ConnectFrameChains( |
| const OUString& rFrmName, |
| const OUString& rNextFrmName, |
| const Reference < XPropertySet >& rFrmPropSet ) |
| { |
| static ::rtl::OUString s_ChainNextName( |
| RTL_CONSTASCII_USTRINGPARAM("ChainNextName")); |
| static ::rtl::OUString s_ChainPrevName( |
| RTL_CONSTASCII_USTRINGPARAM("ChainPrevName")); |
| |
| if( !rFrmName.getLength() ) |
| return; |
| |
| if( rNextFrmName.getLength() ) |
| { |
| OUString sNextFrmName(GetRenameMap().Get( XML_TEXT_RENAME_TYPE_FRAME, |
| rNextFrmName )); |
| if (m_pImpl->m_xTextFrames.is() |
| && m_pImpl->m_xTextFrames->hasByName(sNextFrmName)) |
| { |
| rFrmPropSet->setPropertyValue(s_ChainNextName, |
| makeAny(sNextFrmName)); |
| } |
| else |
| { |
| if (!m_pImpl->m_pPrevFrmNames.get()) |
| { |
| m_pImpl->m_pPrevFrmNames.reset( new SvStringsDtor ); |
| m_pImpl->m_pNextFrmNames.reset( new SvStringsDtor ); |
| } |
| m_pImpl->m_pPrevFrmNames->Insert( new String( rFrmName ), |
| m_pImpl->m_pPrevFrmNames->Count() ); |
| m_pImpl->m_pNextFrmNames->Insert( new String( sNextFrmName ), |
| m_pImpl->m_pNextFrmNames->Count() ); |
| } |
| } |
| if (m_pImpl->m_pPrevFrmNames.get() && m_pImpl->m_pPrevFrmNames->Count()) |
| { |
| sal_uInt16 nCount = m_pImpl->m_pPrevFrmNames->Count(); |
| for( sal_uInt16 i=0; i<nCount; i++ ) |
| { |
| String *pNext = (*m_pImpl->m_pNextFrmNames)[i]; |
| if( OUString(*pNext) == rFrmName ) |
| { |
| // The previuous frame must exist, because it existing than |
| // inserting the entry |
| String *pPrev = (*m_pImpl->m_pPrevFrmNames)[i]; |
| |
| rFrmPropSet->setPropertyValue(s_ChainPrevName, |
| makeAny(OUString( *pPrev ))); |
| |
| m_pImpl->m_pPrevFrmNames->Remove( i, 1 ); |
| m_pImpl->m_pNextFrmNames->Remove( i, 1 ); |
| delete pPrev; |
| delete pNext; |
| |
| // There cannot be more than one previous frames |
| break; |
| } |
| } |
| } |
| } |
| |
| sal_Bool XMLTextImportHelper::IsInFrame() const |
| { |
| static ::rtl::OUString s_TextFrame( |
| RTL_CONSTASCII_USTRINGPARAM("TextFrame")); |
| |
| sal_Bool bIsInFrame = sal_False; |
| |
| // are we currently in a text frame? yes, if the cursor has a |
| // TextFrame property and it's non-NULL |
| Reference<XPropertySet> xPropSet(((XMLTextImportHelper *)this)->GetCursor(), UNO_QUERY); |
| if (xPropSet.is()) |
| { |
| if (xPropSet->getPropertySetInfo()->hasPropertyByName(s_TextFrame)) |
| { |
| uno::Reference<XTextFrame> const xFrame( |
| xPropSet->getPropertyValue(s_TextFrame), UNO_QUERY); |
| |
| if (xFrame.is()) |
| { |
| bIsInFrame = sal_True; |
| } |
| } |
| } |
| |
| return bIsInFrame; |
| } |
| |
| sal_Bool XMLTextImportHelper::IsInHeaderFooter() const |
| { |
| return sal_False; |
| } |
| |
| Reference< XPropertySet> XMLTextImportHelper::createAndInsertOLEObject( |
| SvXMLImport&, |
| const OUString& /*rHRef*/, |
| const OUString& /*rStyleName*/, |
| const OUString& /*rTblName*/, |
| sal_Int32 /*nWidth*/, sal_Int32 /*nHeight*/ ) |
| { |
| Reference< XPropertySet> xPropSet; |
| return xPropSet; |
| } |
| |
| Reference< XPropertySet> XMLTextImportHelper::createAndInsertOOoLink( |
| SvXMLImport&, |
| const OUString& /*rHRef*/, |
| const OUString& /*rStyleName*/, |
| const OUString& /*rTblName*/, |
| sal_Int32 /*nWidth*/, sal_Int32 /*nHeight*/ ) |
| { |
| Reference< XPropertySet> xPropSet; |
| return xPropSet; |
| } |
| |
| Reference< XPropertySet> XMLTextImportHelper::createAndInsertApplet( |
| const OUString& /*rCode*/, |
| const OUString& /*rName*/, |
| sal_Bool /*bMayScript*/, |
| const OUString& /*rHRef*/, |
| sal_Int32 /*nWidth*/, sal_Int32 /*nHeight*/ ) |
| { |
| Reference< XPropertySet> xPropSet; |
| return xPropSet; |
| } |
| Reference< XPropertySet> XMLTextImportHelper::createAndInsertPlugin( |
| const OUString& /*rMimeType*/, |
| const OUString& /*rHRef*/, |
| sal_Int32 /*nWidth*/, sal_Int32 /*nHeight*/ ) |
| { |
| Reference< XPropertySet> xPropSet; |
| return xPropSet; |
| } |
| Reference< XPropertySet> XMLTextImportHelper::createAndInsertFloatingFrame( |
| const OUString& /*rName*/, |
| const OUString& /*rHRef*/, |
| const OUString& /*rStyleName*/, |
| sal_Int32 /*nWidth*/, sal_Int32 /*nHeight*/ ) |
| { |
| Reference< XPropertySet> xPropSet; |
| return xPropSet; |
| } |
| |
| void XMLTextImportHelper::endAppletOrPlugin( |
| const Reference < XPropertySet> &, |
| std::map < const rtl::OUString, rtl::OUString, UStringLess > &) |
| { |
| } |
| // redline helper: dummy implementation to be overridden in sw/filter/xml |
| void XMLTextImportHelper::RedlineAdd( |
| const OUString& /*rType*/, |
| const OUString& /*rId*/, |
| const OUString& /*rAuthor*/, |
| const OUString& /*rComment*/, |
| const DateTime& /*rDateTime*/, |
| sal_Bool /*bMergeLastPara*/) |
| { |
| // dummy implementation: do nothing |
| } |
| |
| Reference<XTextCursor> XMLTextImportHelper::RedlineCreateText( |
| Reference<XTextCursor> & /*rOldCursor*/, |
| const OUString& /*rId*/) |
| { |
| // dummy implementation: do nothing |
| Reference<XTextCursor> xRet; |
| return xRet; |
| } |
| |
| void XMLTextImportHelper::RedlineSetCursor( |
| const OUString& /*rId*/, |
| sal_Bool /*bStart*/, |
| sal_Bool /*bIsOutsideOfParagraph*/) |
| { |
| // dummy implementation: do nothing |
| } |
| |
| void XMLTextImportHelper::RedlineAdjustStartNodeCursor(sal_Bool) |
| { |
| // dummy implementation: do nothing |
| } |
| |
| void XMLTextImportHelper::SetShowChanges( sal_Bool ) |
| { |
| // dummy implementation: do nothing |
| } |
| |
| void XMLTextImportHelper::SetRecordChanges( sal_Bool ) |
| { |
| // dummy implementation: do nothing |
| } |
| void XMLTextImportHelper::SetChangesProtectionKey(const Sequence<sal_Int8> &) |
| { |
| // dummy implementation: do nothing |
| } |
| |
| |
| OUString XMLTextImportHelper::GetOpenRedlineId() |
| { |
| return m_pImpl->m_sOpenRedlineIdentifier; |
| } |
| |
| void XMLTextImportHelper::SetOpenRedlineId( ::rtl::OUString& rId) |
| { |
| m_pImpl->m_sOpenRedlineIdentifier = rId; |
| } |
| |
| void XMLTextImportHelper::ResetOpenRedlineId() |
| { |
| OUString sEmpty; |
| SetOpenRedlineId(sEmpty); |
| } |
| |
| void |
| XMLTextImportHelper::SetCellParaStyleDefault(::rtl::OUString const& rNewValue) |
| { |
| m_pImpl->m_sCellParaStyleDefault = rNewValue; |
| } |
| |
| ::rtl::OUString const& XMLTextImportHelper::GetCellParaStyleDefault() |
| { |
| return m_pImpl->m_sCellParaStyleDefault; |
| } |
| |