[Libreoffice-commits] core.git: 4 commits - sw/source writerfilter/source

Miklos Vajna vmiklos at collabora.co.uk
Fri Aug 8 06:28:27 PDT 2014


 sw/source/core/docnode/nodedump.cxx          |   23 +++
 writerfilter/source/dmapper/DomainMapper.cxx |   43 +++++
 writerfilter/source/ooxml/model.xml          |  194 ++++++---------------------
 3 files changed, 102 insertions(+), 158 deletions(-)

New commits:
commit 3820a1611b399a318c86a41c3355d6887a4dd1b4
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Fri Aug 8 15:18:01 2014 +0200

    DOCX import: handle date SDT in headers/footers
    
    Turns out form controls are not allowed in headers/footers (see the
    comment in the patch), so if that happens, then just fall back to what
    we already do for other SDT types.
    
    Change-Id: Icc79c2a825e9eb2a85980489812a4178fde37576

diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx
index 40c3afa..0da5178 100644
--- a/writerfilter/source/dmapper/DomainMapper.cxx
+++ b/writerfilter/source/dmapper/DomainMapper.cxx
@@ -944,7 +944,10 @@ void DomainMapper::lcl_attribute(Id nName, Value & val)
             m_pImpl->m_pSdtHelper->getDropDownItems().push_back(sStringValue);
         break;
         case NS_ooxml::LN_CT_SdtDate_fullDate:
-            m_pImpl->m_pSdtHelper->getDate().append(sStringValue);
+            if (!IsInHeaderFooter())
+                m_pImpl->m_pSdtHelper->getDate().append(sStringValue);
+            else
+                m_pImpl->appendGrabBag(m_pImpl->m_aInteropGrabBag, "ooxml:CT_SdtDate_fullDate", sStringValue);
         break;
         case NS_ooxml::LN_CT_Background_color:
             m_pImpl->m_oBackgroundColor.reset(nIntValue);
@@ -2351,19 +2354,44 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, PropertyMapPtr rContext )
     break;
     case NS_ooxml::LN_CT_SdtPr_date:
     {
-        writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps();
-        if (pProperties.get() != NULL)
-            pProperties->resolve(*this);
+        if (!IsInHeaderFooter())
+            resourcemodel::resolveSprmProps(*this, rSprm);
+        else
+        {
+            OUString sName = "ooxml::CT_SdtPr_date";
+            enableInteropGrabBag(sName);
+            resourcemodel::resolveSprmProps(*this, rSprm);
+            m_pImpl->m_pSdtHelper->appendToInteropGrabBag(getInteropGrabBag());
+            m_pImpl->disableInteropGrabBag();
+        }
     }
     break;
     case NS_ooxml::LN_CT_SdtDate_dateFormat:
     {
-        m_pImpl->m_pSdtHelper->getDateFormat().append(sStringValue);
+        if (!IsInHeaderFooter())
+            m_pImpl->m_pSdtHelper->getDateFormat().append(sStringValue);
+        else
+            m_pImpl->appendGrabBag(m_pImpl->m_aInteropGrabBag, "ooxml:CT_SdtDate_dateFormat", sStringValue);
+    }
+    break;
+    case NS_ooxml::LN_CT_SdtDate_storeMappedDataAs:
+    {
+        if (IsInHeaderFooter())
+            m_pImpl->appendGrabBag(m_pImpl->m_aInteropGrabBag, "ooxml:CT_SdtDate_storeMappedDataAs", sStringValue);
+    }
+    break;
+    case NS_ooxml::LN_CT_SdtDate_calendar:
+    {
+        if (IsInHeaderFooter())
+            m_pImpl->appendGrabBag(m_pImpl->m_aInteropGrabBag, "ooxml:CT_SdtDate_calendar", sStringValue);
     }
     break;
     case NS_ooxml::LN_CT_SdtDate_lid:
     {
-        m_pImpl->m_pSdtHelper->getLocale().append(sStringValue);
+        if (!IsInHeaderFooter())
+            m_pImpl->m_pSdtHelper->getLocale().append(sStringValue);
+        else
+            m_pImpl->appendGrabBag(m_pImpl->m_aInteropGrabBag, "ooxml:CT_SdtDate_lid", sStringValue);
     }
     break;
     case NS_ooxml::LN_CT_SdtPr_dataBinding:
@@ -2914,7 +2942,8 @@ void DomainMapper::lcl_utext(const sal_uInt8 * data_, size_t len)
         m_pImpl->m_pSdtHelper->getSdtTexts().append(sText);
         return;
     }
-    else if (!m_pImpl->m_pSdtHelper->getDateFormat().isEmpty())
+    // Form controls are not allowed in headers / footers; see sw::DocumentContentOperationsManager::InsertDrawObj()
+    else if (!m_pImpl->m_pSdtHelper->getDateFormat().isEmpty() && !IsInHeaderFooter())
     {
         /*
          * Here we assume w:sdt only contains a single text token. We need to
commit d1ebad2077d2b2b9edbaec090f38468393874a07
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Fri Aug 8 14:55:35 2014 +0200

    DOCX import: tokenize CT_SdtDate / storeMappedDataAs and calendar
    
    Change-Id: I7d47e7db08637488975b834f7cc72fe1251a14d3

diff --git a/writerfilter/source/ooxml/model.xml b/writerfilter/source/ooxml/model.xml
index 0c84d0f..9083de0 100644
--- a/writerfilter/source/ooxml/model.xml
+++ b/writerfilter/source/ooxml/model.xml
@@ -22866,6 +22866,8 @@
       <attribute name="fullDate" tokenid="ooxml:CT_SdtDate_fullDate"/>
       <element name="dateFormat" tokenid="ooxml:CT_SdtDate_dateFormat"/>
       <element name="lid" tokenid="ooxml:CT_SdtDate_lid"/>
+      <element name="storeMappedDataAs" tokenid="ooxml:CT_SdtDate_storeMappedDataAs"/>
+      <element name="calendar" tokenid="ooxml:CT_SdtDate_calendar"/>
     </resource>
     <resource name="CT_SdtDocPart" resource="Properties">
       <element name="docPartGallery" tokenid="ooxml:CT_SdtDocPart_docPartGallery"/>
commit b32539d065be7bc73154a52c6492b10050cadb9b
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Fri Aug 8 14:09:10 2014 +0200

    sw: improve doc model xml dump of SwFmtAnchor
    
    Change-Id: Icdfc370c4b525fd43d9d5935ff461534cf535233

diff --git a/sw/source/core/docnode/nodedump.cxx b/sw/source/core/docnode/nodedump.cxx
index 159cdcd..e082caf 100644
--- a/sw/source/core/docnode/nodedump.cxx
+++ b/sw/source/core/docnode/nodedump.cxx
@@ -438,9 +438,30 @@ void lcl_dumpSfxItemSet(WriterHelper& writer, const SfxItemSet* pSet)
             {
                 pWhich = "frame anchor";
                 const SwFmtAnchor* pAnchor = static_cast<const SwFmtAnchor*>(pItem);
+                switch (pAnchor->GetAnchorId())
+                {
+                case FLY_AT_PARA:
+                    oValue = "anchor type: at-para";
+                    break;
+                case FLY_AS_CHAR:
+                    oValue = "anchor type: as-char";
+                    break;
+                case FLY_AT_PAGE:
+                    oValue = "anchor type: at-page";
+                    break;
+                case FLY_AT_FLY:
+                    oValue = "anchor type: at-fly";
+                    break;
+                case FLY_AT_CHAR:
+                    oValue = "anchor type: at-char";
+                    break;
+                default:
+                    oValue = "anchor type: " + OString::number(pAnchor->GetAnchorId());
+                    break;
+                }
                 const SwPosition* pPosition = pAnchor->GetCntntAnchor();
                 if (pPosition)
-                    oValue = "node index: " + OString::number(pPosition->nNode.GetNode().GetIndex()) + ", index: " + OString::number(pPosition->nContent.GetIndex());
+                    oValue = *oValue + ", node index: " + OString::number(pPosition->nNode.GetNode().GetIndex()) + ", index: " + OString::number(pPosition->nContent.GetIndex());
                 break;
             }
             case RES_SURROUND:
commit 2ba698a293cd20e25da2f8417b46d3d9ec32a9b7
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Fri Aug 8 10:38:42 2014 +0200

    Unused param elements
    
    Change-Id: Iaefcd143eea3a09040cc0b6aa5d07b2d131e525c

diff --git a/writerfilter/source/ooxml/model.xml b/writerfilter/source/ooxml/model.xml
index e2479ab..0c84d0f 100644
--- a/writerfilter/source/ooxml/model.xml
+++ b/writerfilter/source/ooxml/model.xml
@@ -1163,27 +1163,16 @@
       <include href="dml-shapeEffects.rng"/>
       <include href="dml-shapeLineProperties.rng"/>
       <define name="ST_TextPoint">
-        <data type="int">
-          <param name="minInclusive">-400000</param>
-          <param name="maxInclusive">400000</param>
-        </data>
+        <data type="int"/>
       </define>
       <define name="ST_TextNonNegativePoint">
-        <data type="int">
-          <param name="minInclusive">0</param>
-          <param name="maxInclusive">400000</param>
-        </data>
+        <data type="int"/>
       </define>
       <define name="ST_TextFontSize">
-        <data type="int">
-          <param name="minInclusive">100</param>
-          <param name="maxInclusive">400000</param>
-        </data>
+        <data type="int"/>
       </define>
       <define name="ST_Panose">
-        <data type="hexBinary">
-          <param name="length">10</param>
-        </data>
+        <data type="hexBinary"/>
       </define>
       <define name="ST_TextTypeface">
         <data type="string"/>
@@ -3125,19 +3114,13 @@
         </attribute>
       </define>
       <define name="ST_Coordinate">
-        <data type="long">
-          <param name="minInclusive">-27273042329600</param>
-          <param name="maxInclusive">27273042316900</param>
-        </data>
+        <data type="long"/>
       </define>
       <define name="ST_Coordinate32">
         <data type="int"/>
       </define>
       <define name="ST_PositiveCoordinate">
-        <data type="long">
-          <param name="minInclusive">0</param>
-          <param name="maxInclusive">27273042316900</param>
-        </data>
+        <data type="long"/>
       </define>
       <define name="ST_PositiveCoordinate32">
         <empty/>
@@ -3335,9 +3318,7 @@
         </attribute>
       </define>
       <define name="ST_HexBinary3">
-        <data type="hexBinary">
-          <param name="length">3</param>
-        </data>
+        <data type="hexBinary"/>
       </define>
       <define name="CT_SRgbColor">
         <zeroOrMore>
@@ -3940,9 +3921,7 @@
           </choice>
       </define>
       <define name="ST_Guid">
-        <data type="token">
-          <param name="pattern">\{[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}\}</param>
-        </data>
+        <data type="token"/>
       </define>
       <define name="EG_ColorChoice">
         <choice>
@@ -5118,51 +5097,28 @@
       </define>
 
       <define name="ST_PositiveCoordinate">
-        <data type="long">
-          <param name="minInclusive">0</param>
-          <param name="maxInclusive">27273042316900</param>
-        </data>
+        <data type="long"/>
       </define>
       <define name="ST_HexColorRGB">
-        <data type="hexBinary">
-          <param name="length">3</param>
-        </data>
+        <data type="hexBinary"/>
       </define>
       <define name="ST_PositiveFixedPercentage">
-        <data type="long">
-          <param name="minInclusive">0</param>
-          <param name="maxInclusive">27273042316900</param>
-        </data>
+        <data type="long"/>
       </define>
       <define name="ST_PositivePercentage">
-        <data type="long">
-          <param name="minInclusive">0</param>
-          <param name="maxInclusive">27273042316900</param>
-        </data>
+        <data type="long"/>
       </define>
       <define name="ST_Percentage">
-        <data type="long">
-          <param name="minInclusive">0</param>
-          <param name="maxInclusive">27273042316900</param>
-        </data>
+        <data type="long"/>
       </define>
       <define name="ST_PositiveFixedAngle">
-        <data type="int">
-          <param name="minInclusive">0</param>
-          <param name="maxInclusive">21600000</param>
-        </data>
+        <data type="int"/>
       </define>
       <define name="ST_FixedAngle">
-        <data type="int">
-          <param name="minInclusive">-5400000</param>
-          <param name="maxInclusive">5400000</param>
-        </data>
+        <data type="int"/>
       </define>
       <define name="ST_LineWidth">
-        <data type="int">
-          <param name="minInclusive">0</param>
-          <param name="maxInclusive">20116800</param>
-        </data>
+        <data type="int"/>
       </define>
       <define name="ST_UnsignedDecimalNumber">
         <data type="unsignedLong"/>
@@ -6254,46 +6210,25 @@
     <grammar xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2006/xpath-functions" xmlns="http://relaxng.org/ns/structure/1.0" ns="http://schemas.microsoft.com/office/drawingml/2010/main" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
       <!-- Simple types -->
       <define name="ST_ArtisticEffectParam10">
-        <data type="integer">
-          <param name="minInclusive">0</param>
-          <param name="maxInclusive">10</param>
-        </data>
+        <data type="integer"/>
       </define>
       <define name="ST_ArtisticEffectParam100">
-        <data type="integer">
-          <param name="minInclusive">0</param>
-          <param name="maxInclusive">100</param>
-        </data>
+        <data type="integer"/>
       </define>
       <define name="ST_ArtisticEffectParam4">
-        <data type="integer">
-          <param name="minInclusive">0</param>
-          <param name="maxInclusive">4</param>
-        </data>
+        <data type="integer"/>
       </define>
       <define name="ST_ArtisticEffectParam6">
-        <data type="integer">
-          <param name="minInclusive">0</param>
-          <param name="maxInclusive">6</param>
-        </data>
+        <data type="integer"/>
       </define>
       <define name="ST_ColorTemperature">
-        <data type="integer">
-          <param name="minInclusive">1500</param>
-          <param name="maxInclusive">11500</param>
-        </data>
+        <data type="integer"/>
       </define>
       <define name="ST_LegacySpreadsheetColorIndex">
-        <data type="integer">
-          <param name="minInclusive">0</param>
-          <param name="maxInclusive">80</param>
-        </data>
+        <data type="integer"/>
       </define>
       <define name="ST_SaturationAmount">
-        <data type="integer">
-          <param name="minInclusive">0</param>
-          <param name="maxInclusive">400000</param>
-        </data>
+        <data type="integer"/>
       </define>
 
       <!-- Complex types for effects -->
@@ -7753,9 +7688,7 @@
         <data type="unsignedInt"/>
       </define>
       <define name="ST_EditId">
-        <data type="hexBinary">
-          <param name="length">4</param>
-        </data>
+        <data type="hexBinary"/>
       </define>
       <define name="CT_Inline">
         <group>
@@ -8322,10 +8255,7 @@
       <include href="wml.rng"/>
       <!-- start = mathPr | oMathPara | oMath -->
       <define name="ST_Integer255">
-        <data type="integer">
-          <param name="minInclusive">1</param>
-          <param name="maxInclusive">255</param>
-        </data>
+        <data type="integer"/>
       </define>
       <define name="CT_Integer255">
         <attribute name="val">
@@ -8333,10 +8263,7 @@
         </attribute>
       </define>
       <define name="ST_Integer2">
-        <data type="integer">
-          <param name="minInclusive">-2</param>
-          <param name="maxInclusive">2</param>
-        </data>
+        <data type="integer"/>
       </define>
       <define name="CT_Integer2">
         <attribute name="val">
@@ -8344,10 +8271,7 @@
         </attribute>
       </define>
       <define name="ST_SpacingRule">
-        <data type="integer">
-          <param name="minInclusive">0</param>
-          <param name="maxInclusive">4</param>
-        </data>
+        <data type="integer"/>
       </define>
       <define name="CT_SpacingRule">
         <attribute name="val">
@@ -8363,9 +8287,7 @@
         </attribute>
       </define>
       <define name="ST_Char">
-        <data type="string">
-          <param name="maxLength">1</param>
-        </data>
+        <data type="string"/>
       </define>
       <define name="CT_Char">
         <attribute name="val">
@@ -12635,9 +12557,7 @@
           </choice>
       </define>
       <define name="ST_Guid">
-        <data type="token">
-          <param name="pattern">\{[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}\}</param>
-        </data>
+        <data type="token"/>
       </define>
       <define name="ST_RelationshipId">
         <data type="string"/>
@@ -13213,9 +13133,7 @@
         </attribute>
       </define>
       <define name="ST_LongHexNumber">
-        <data type="hexBinary">
-          <param name="length">4</param>
-        </data>
+        <data type="hexBinary"/>
       </define>
       <define name="CT_LongHexNumber">
         <attribute name="val">
@@ -13223,9 +13141,7 @@
         </attribute>
       </define>
       <define name="ST_ShortHexNumber">
-        <data type="hexBinary">
-          <param name="length">2</param>
-        </data>
+        <data type="hexBinary"/>
       </define>
       <define name="CT_ShortHexNumber">
         <attribute name="val">
@@ -13233,9 +13149,7 @@
         </attribute>
       </define>
       <define name="ST_UcharHexNumber">
-        <data type="hexBinary">
-          <param name="length">1</param>
-        </data>
+        <data type="hexBinary"/>
       </define>
       <define name="CT_UcharHexNumber">
         <attribute name="val">
@@ -13297,9 +13211,7 @@
         <data type="dateTime"/>
       </define>
       <define name="ST_MacroName">
-        <data type="string">
-          <param name="maxLength">33</param>
-        </data>
+        <data type="string"/>
       </define>
       <define name="CT_MacroName">
         <attribute name="val">
@@ -13321,10 +13233,7 @@
         </attribute>
       </define>
       <define name="ST_TextScale">
-        <data type="integer">
-          <param name="minInclusive">0</param>
-          <param name="maxInclusive">600</param>
-        </data>
+        <data type="integer"/>
       </define>
       <define name="CT_TextScale">
         <attribute name="val">
@@ -13381,9 +13290,7 @@
         </list>
       </define>
       <define name="ST_HexColorRGB">
-        <data type="hexBinary">
-          <param name="length">3</param>
-        </data>
+        <data type="hexBinary"/>
       </define>
       <define name="ST_HexColor">
         <choice>
@@ -13413,9 +13320,7 @@
         </optional>
       </define>
       <define name="ST_LangCode">
-        <data type="hexBinary">
-          <param name="length">2</param>
-        </data>
+        <data type="hexBinary"/>
       </define>
       <define name="ST_Lang">
         <choice>
@@ -13430,9 +13335,7 @@
         </attribute>
       </define>
       <define name="ST_Guid">
-        <data type="token">
-          <param name="pattern">\{[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}\}</param>
-        </data>
+        <data type="token"/>
       </define>
       <define name="CT_Guid">
         <attribute name="val">
@@ -15557,19 +15460,13 @@
           </choice>
       </define>
       <define name="ST_FFHelpTextVal">
-        <data type="string">
-          <param name="maxLength">256</param>
-        </data>
+        <data type="string"/>
       </define>
       <define name="ST_FFStatusTextVal">
-        <data type="string">
-          <param name="maxLength">140</param>
-        </data>
+        <data type="string"/>
       </define>
       <define name="ST_FFName">
-        <data type="string">
-          <param name="maxLength">65</param>
-        </data>
+        <data type="string"/>
       </define>
       <define name="ST_FFTextType">
           <choice>
@@ -18026,10 +17923,7 @@
         </oneOrMore>
       </define>
       <define name="ST_Cnf">
-        <data type="string">
-          <param name="length">12</param>
-          <param name="pattern">[01]*</param>
-        </data>
+        <data type="string"/>
       </define>
       <define name="CT_Cnf">
         <attribute name="val">
@@ -20596,9 +20490,7 @@
         </zeroOrMore>
       </define>
       <define name="ST_Panose">
-        <data type="hexBinary">
-          <param name="length">10</param>
-        </data>
+        <data type="hexBinary"/>
       </define>
       <define name="CT_Panose">
         <attribute name="val">


More information about the Libreoffice-commits mailing list