LCOV - code coverage report
Current view: top level - xmloff/source/text - txtimp.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 675 1012 66.7 %
Date: 2012-08-25 Functions: 74 106 69.8 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 786 2064 38.1 %

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

Generated by: LCOV version 1.10