LCOV - code coverage report
Current view: top level - usr/local/src/libreoffice/sc/source/filter/xml - celltextparacontext.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 148 159 93.1 %
Date: 2013-07-09 Functions: 35 39 89.7 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  */
       9             : 
      10             : #include "celltextparacontext.hxx"
      11             : #include "xmlimprt.hxx"
      12             : #include "xmlcelli.hxx"
      13             : 
      14             : #include "xmloff/nmspmap.hxx"
      15             : 
      16             : #include <com/sun/star/xml/sax/XAttributeList.hpp>
      17             : 
      18             : using namespace com::sun::star;
      19             : 
      20        3119 : ScXMLCellTextParaContext::ScXMLCellTextParaContext(
      21             :     ScXMLImport& rImport, sal_uInt16 nPrefix, const OUString& rLName, ScXMLTableRowCellContext& rParent) :
      22             :     ScXMLImportContext(rImport, nPrefix, rLName),
      23        3119 :     mrParentCxt(rParent)
      24             : {
      25        3119 : }
      26             : 
      27        3119 : void ScXMLCellTextParaContext::StartElement(const uno::Reference<xml::sax::XAttributeList>& /*xAttrList*/)
      28             : {
      29        3119 : }
      30             : 
      31        3119 : void ScXMLCellTextParaContext::EndElement()
      32             : {
      33        3119 :     if (!maContent.isEmpty())
      34        3102 :         mrParentCxt.PushParagraphSpan(maContent, OUString());
      35             : 
      36        3119 :     mrParentCxt.PushParagraphEnd();
      37        3119 : }
      38             : 
      39        3133 : void ScXMLCellTextParaContext::Characters(const OUString& rChars)
      40             : {
      41        3133 :     maContent += rChars;
      42        3133 : }
      43             : 
      44          23 : SvXMLImportContext* ScXMLCellTextParaContext::CreateChildContext(
      45             :     sal_uInt16 nPrefix, const OUString& rLocalName, const uno::Reference<xml::sax::XAttributeList>& /*xAttrList*/)
      46             : {
      47          23 :     if (!maContent.isEmpty())
      48             :     {
      49          13 :         mrParentCxt.PushParagraphSpan(maContent, OUString());
      50          13 :         maContent = OUString();
      51             :     }
      52             : 
      53          23 :     const SvXMLTokenMap& rTokenMap = GetScImport().GetCellTextParaElemTokenMap();
      54          23 :     switch (rTokenMap.Get(nPrefix, rLocalName))
      55             :     {
      56             :         case XML_TOK_CELL_TEXT_SPAN:
      57          16 :             return new ScXMLCellTextSpanContext(GetScImport(), nPrefix, rLocalName, *this);
      58             :         case XML_TOK_CELL_TEXT_SHEET_NAME:
      59           1 :             return new ScXMLCellFieldSheetNameContext(GetScImport(), nPrefix, rLocalName, *this);
      60             :         case XML_TOK_CELL_TEXT_DATE:
      61           1 :             return new ScXMLCellFieldDateContext(GetScImport(), nPrefix, rLocalName, *this);
      62             :         case XML_TOK_CELL_TEXT_TITLE:
      63           1 :             return new ScXMLCellFieldTitleContext(GetScImport(), nPrefix, rLocalName, *this);
      64             :         case XML_TOK_CELL_TEXT_URL:
      65           2 :             return new ScXMLCellFieldURLContext(GetScImport(), nPrefix, rLocalName, *this);
      66             :         default:
      67             :             ;
      68             :     }
      69             : 
      70           2 :     return new SvXMLImportContext(GetImport(), nPrefix, rLocalName);
      71             : }
      72             : 
      73          12 : void ScXMLCellTextParaContext::PushSpan(const OUString& rSpan, const OUString& rStyleName)
      74             : {
      75          12 :     mrParentCxt.PushParagraphSpan(rSpan, rStyleName);
      76          12 : }
      77             : 
      78           2 : void ScXMLCellTextParaContext::PushFieldSheetName(const OUString& rStyleName)
      79             : {
      80           2 :     mrParentCxt.PushParagraphFieldSheetName(rStyleName);
      81           2 : }
      82             : 
      83           2 : void ScXMLCellTextParaContext::PushFieldDate(const OUString& rStyleName)
      84             : {
      85           2 :     mrParentCxt.PushParagraphFieldDate(rStyleName);
      86           2 : }
      87             : 
      88           2 : void ScXMLCellTextParaContext::PushFieldTitle(const OUString& rStyleName)
      89             : {
      90           2 :     mrParentCxt.PushParagraphFieldDocTitle(rStyleName);
      91           2 : }
      92             : 
      93           3 : void ScXMLCellTextParaContext::PushFieldURL(
      94             :     const OUString& rURL, const OUString& rRep, const OUString& rStyleName)
      95             : {
      96           3 :     mrParentCxt.PushParagraphFieldURL(rURL, rRep, rStyleName);
      97           3 : }
      98             : 
      99          16 : ScXMLCellTextSpanContext::ScXMLCellTextSpanContext(
     100             :     ScXMLImport& rImport, sal_uInt16 nPrefix, const OUString& rLName, ScXMLCellTextParaContext& rParent) :
     101             :     ScXMLImportContext(rImport, nPrefix, rLName),
     102          16 :     mrParentCxt(rParent)
     103             : {
     104          16 : }
     105             : 
     106          16 : void ScXMLCellTextSpanContext::StartElement(const uno::Reference<xml::sax::XAttributeList>& xAttrList)
     107             : {
     108          16 :     if (!xAttrList.is())
     109          16 :         return;
     110             : 
     111          16 :     OUString aLocalName;
     112          16 :     sal_Int16 nAttrCount = xAttrList->getLength();
     113             : 
     114          16 :     const SvXMLTokenMap& rTokenMap = GetScImport().GetCellTextSpanAttrTokenMap();
     115          32 :     for (sal_Int16 i = 0; i < nAttrCount; ++i)
     116             :     {
     117          16 :         sal_uInt16 nAttrPrefix = GetImport().GetNamespaceMap().GetKeyByAttrName(
     118          32 :             xAttrList->getNameByIndex(i), &aLocalName);
     119             : 
     120          16 :         const OUString& rAttrValue = xAttrList->getValueByIndex(i);
     121          16 :         sal_uInt16 nToken = rTokenMap.Get(nAttrPrefix, aLocalName);
     122          16 :         switch (nToken)
     123             :         {
     124             :             case XML_TOK_CELL_TEXT_SPAN_ATTR_STYLE_NAME:
     125          16 :                 maStyleName = rAttrValue;
     126          16 :             break;
     127             :             default:
     128             :                 ;
     129             :         }
     130          32 :     }
     131             : }
     132             : 
     133          16 : void ScXMLCellTextSpanContext::EndElement()
     134             : {
     135          16 :     if (!maContent.isEmpty())
     136             :     {
     137          12 :         mrParentCxt.PushSpan(maContent, maStyleName);
     138             :     }
     139          16 : }
     140             : 
     141          12 : void ScXMLCellTextSpanContext::Characters(const OUString& rChars)
     142             : {
     143          12 :     maContent += rChars;
     144          12 : }
     145             : 
     146           4 : SvXMLImportContext* ScXMLCellTextSpanContext::CreateChildContext(
     147             :     sal_uInt16 nPrefix, const OUString& rLocalName, const uno::Reference<xml::sax::XAttributeList>& /*xAttrList*/)
     148             : {
     149           4 :     if (!maContent.isEmpty())
     150             :     {
     151           0 :         mrParentCxt.PushSpan(maContent, maStyleName);
     152           0 :         maContent = OUString();
     153             :     }
     154             : 
     155           4 :     const SvXMLTokenMap& rTokenMap = GetScImport().GetCellTextSpanElemTokenMap();
     156           4 :     switch (rTokenMap.Get(nPrefix, rLocalName))
     157             :     {
     158             :         case XML_TOK_CELL_TEXT_SPAN_ELEM_SHEET_NAME:
     159             :         {
     160           1 :             ScXMLCellFieldSheetNameContext* p = new ScXMLCellFieldSheetNameContext(GetScImport(), nPrefix, rLocalName, mrParentCxt);
     161           1 :             p->SetStyleName(maStyleName);
     162           1 :             return p;
     163             :         }
     164             :         case XML_TOK_CELL_TEXT_SPAN_ELEM_DATE:
     165             :         {
     166           1 :             ScXMLCellFieldDateContext* p = new ScXMLCellFieldDateContext(GetScImport(), nPrefix, rLocalName, mrParentCxt);
     167           1 :             p->SetStyleName(maStyleName);
     168           1 :             return p;
     169             :         }
     170             :         case XML_TOK_CELL_TEXT_SPAN_ELEM_TITLE:
     171             :         {
     172           1 :             ScXMLCellFieldTitleContext* p = new ScXMLCellFieldTitleContext(GetScImport(), nPrefix, rLocalName, mrParentCxt);
     173           1 :             p->SetStyleName(maStyleName);
     174           1 :             return p;
     175             :         }
     176             :         case XML_TOK_CELL_TEXT_SPAN_ELEM_URL:
     177             :         {
     178           1 :             ScXMLCellFieldURLContext* p = new ScXMLCellFieldURLContext(GetScImport(), nPrefix, rLocalName, mrParentCxt);
     179           1 :             p->SetStyleName(maStyleName);
     180           1 :             return p;
     181             :         }
     182             :         default:
     183             :             ;
     184             :     }
     185             : 
     186           0 :     return new SvXMLImportContext(GetImport(), nPrefix, rLocalName);
     187             : }
     188             : 
     189           2 : ScXMLCellFieldSheetNameContext::ScXMLCellFieldSheetNameContext(
     190             :     ScXMLImport& rImport, sal_uInt16 nPrefix, const OUString& rLName, ScXMLCellTextParaContext& rParent) :
     191             :     ScXMLImportContext(rImport, nPrefix, rLName),
     192           2 :     mrParentCxt(rParent)
     193             : {
     194           2 : }
     195             : 
     196           1 : void ScXMLCellFieldSheetNameContext::SetStyleName(const OUString& rStyleName)
     197             : {
     198           1 :     maStyleName = rStyleName;
     199           1 : }
     200             : 
     201           2 : void ScXMLCellFieldSheetNameContext::StartElement(const uno::Reference<xml::sax::XAttributeList>& /*xAttrList*/)
     202             : {
     203             :     // <text:sheet-name> has no attributes (that I'm aware of).
     204           2 : }
     205             : 
     206           2 : void ScXMLCellFieldSheetNameContext::EndElement()
     207             : {
     208           2 :     mrParentCxt.PushFieldSheetName(maStyleName);
     209           2 : }
     210             : 
     211           2 : void ScXMLCellFieldSheetNameContext::Characters(const OUString& /*rChars*/)
     212             : {
     213           2 : }
     214             : 
     215           0 : SvXMLImportContext* ScXMLCellFieldSheetNameContext::CreateChildContext(
     216             :     sal_uInt16 nPrefix, const OUString& rLocalName, const uno::Reference<xml::sax::XAttributeList>& /*xAttrList*/)
     217             : {
     218           0 :     return new SvXMLImportContext(GetImport(), nPrefix, rLocalName);
     219             : }
     220             : 
     221           2 : ScXMLCellFieldDateContext::ScXMLCellFieldDateContext(
     222             :     ScXMLImport& rImport, sal_uInt16 nPrefix, const OUString& rLName, ScXMLCellTextParaContext& rParent) :
     223             :     ScXMLImportContext(rImport, nPrefix, rLName),
     224           2 :     mrParentCxt(rParent)
     225             : {
     226           2 : }
     227             : 
     228           1 : void ScXMLCellFieldDateContext::SetStyleName(const OUString& rStyleName)
     229             : {
     230           1 :     maStyleName = rStyleName;
     231           1 : }
     232             : 
     233           2 : void ScXMLCellFieldDateContext::StartElement(const uno::Reference<xml::sax::XAttributeList>& /*xAttrList*/)
     234             : {
     235           2 : }
     236             : 
     237           2 : void ScXMLCellFieldDateContext::EndElement()
     238             : {
     239           2 :     mrParentCxt.PushFieldDate(maStyleName);
     240           2 : }
     241             : 
     242           2 : void ScXMLCellFieldDateContext::Characters(const OUString& /*rChars*/)
     243             : {
     244           2 : }
     245             : 
     246           0 : SvXMLImportContext* ScXMLCellFieldDateContext::CreateChildContext(
     247             :     sal_uInt16 nPrefix, const OUString& rLocalName, const uno::Reference<xml::sax::XAttributeList>& /*xAttrList*/)
     248             : {
     249           0 :     return new SvXMLImportContext(GetImport(), nPrefix, rLocalName);
     250             : }
     251             : 
     252           2 : ScXMLCellFieldTitleContext::ScXMLCellFieldTitleContext(
     253             :     ScXMLImport& rImport, sal_uInt16 nPrefix, const OUString& rLName, ScXMLCellTextParaContext& rParent) :
     254             :     ScXMLImportContext(rImport, nPrefix, rLName),
     255           2 :     mrParentCxt(rParent)
     256             : {
     257           2 : }
     258             : 
     259           1 : void ScXMLCellFieldTitleContext::SetStyleName(const OUString& rStyleName)
     260             : {
     261           1 :     maStyleName = rStyleName;
     262           1 : }
     263             : 
     264           2 : void ScXMLCellFieldTitleContext::StartElement(const uno::Reference<xml::sax::XAttributeList>& /*xAttrList*/)
     265             : {
     266           2 : }
     267             : 
     268           2 : void ScXMLCellFieldTitleContext::EndElement()
     269             : {
     270           2 :     mrParentCxt.PushFieldTitle(maStyleName);
     271           2 : }
     272             : 
     273           2 : void ScXMLCellFieldTitleContext::Characters(const OUString& /*rChars*/)
     274             : {
     275           2 : }
     276             : 
     277           0 : SvXMLImportContext* ScXMLCellFieldTitleContext::CreateChildContext(
     278             :     sal_uInt16 nPrefix, const OUString& rLocalName, const uno::Reference<xml::sax::XAttributeList>& /*xAttrList*/)
     279             : {
     280           0 :     return new SvXMLImportContext(GetImport(), nPrefix, rLocalName);
     281             : }
     282             : 
     283           3 : ScXMLCellFieldURLContext::ScXMLCellFieldURLContext(
     284             :     ScXMLImport& rImport, sal_uInt16 nPrefix, const OUString& rLName, ScXMLCellTextParaContext& rParent) :
     285             :     ScXMLImportContext(rImport, nPrefix, rLName),
     286           3 :     mrParentCxt(rParent)
     287             : {
     288           3 : }
     289             : 
     290           1 : void ScXMLCellFieldURLContext::SetStyleName(const OUString& rStyleName)
     291             : {
     292           1 :     maStyleName = rStyleName;
     293           1 : }
     294             : 
     295           3 : void ScXMLCellFieldURLContext::StartElement(const uno::Reference<xml::sax::XAttributeList>& xAttrList)
     296             : {
     297           3 :     if (!xAttrList.is())
     298           3 :         return;
     299             : 
     300           3 :     OUString aLocalName;
     301           3 :     sal_Int16 nAttrCount = xAttrList->getLength();
     302             : 
     303           3 :     const SvXMLTokenMap& rTokenMap = GetScImport().GetCellTextURLAttrTokenMap();
     304           9 :     for (sal_Int16 i = 0; i < nAttrCount; ++i)
     305             :     {
     306           6 :         sal_uInt16 nAttrPrefix = GetImport().GetNamespaceMap().GetKeyByAttrName(
     307          12 :             xAttrList->getNameByIndex(i), &aLocalName);
     308             : 
     309           6 :         const OUString& rAttrValue = xAttrList->getValueByIndex(i);
     310           6 :         sal_uInt16 nToken = rTokenMap.Get(nAttrPrefix, aLocalName);
     311           6 :         switch (nToken)
     312             :         {
     313             :             case XML_TOK_CELL_TEXT_URL_ATTR_UREF:
     314           3 :                 maURL = rAttrValue;
     315           3 :             break;
     316             :             case XML_TOK_CELL_TEXT_URL_ATTR_TYPE:
     317             :                 // Ignored for now.
     318           3 :             break;
     319             :             default:
     320             :                 ;
     321             :         }
     322           9 :     }
     323             : }
     324             : 
     325           3 : void ScXMLCellFieldURLContext::EndElement()
     326             : {
     327           3 :     mrParentCxt.PushFieldURL(maURL, maRep, maStyleName);
     328           3 : }
     329             : 
     330           3 : void ScXMLCellFieldURLContext::Characters(const OUString& rChars)
     331             : {
     332           3 :     maRep += rChars;
     333           3 : }
     334             : 
     335           0 : SvXMLImportContext* ScXMLCellFieldURLContext::CreateChildContext(
     336             :     sal_uInt16 nPrefix, const OUString& rLocalName, const uno::Reference<xml::sax::XAttributeList>& /*xAttrList*/)
     337             : {
     338           0 :     return new SvXMLImportContext(GetImport(), nPrefix, rLocalName);
     339             : }
     340             : 
     341             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10