Kaydet (Commit) 3eb6f422 authored tarafından Miklos Vajna's avatar Miklos Vajna

DOCX import: tokenize <w:smartTag>

Change-Id: I2c408a25880ad0e87f0b5a246a350e45c8378ce5
üst 5507e539
...@@ -101,6 +101,7 @@ $(eval $(call gb_Library_add_exception_objects,writerfilter,\ ...@@ -101,6 +101,7 @@ $(eval $(call gb_Library_add_exception_objects,writerfilter,\
writerfilter/source/dmapper/SdtHelper \ writerfilter/source/dmapper/SdtHelper \
writerfilter/source/dmapper/SectionColumnHandler \ writerfilter/source/dmapper/SectionColumnHandler \
writerfilter/source/dmapper/SettingsTable \ writerfilter/source/dmapper/SettingsTable \
writerfilter/source/dmapper/SmartTagHandler \
writerfilter/source/dmapper/StyleSheetTable \ writerfilter/source/dmapper/StyleSheetTable \
writerfilter/source/dmapper/TDefTableHandler \ writerfilter/source/dmapper/TDefTableHandler \
writerfilter/source/dmapper/TableManager \ writerfilter/source/dmapper/TableManager \
......
...@@ -626,8 +626,10 @@ void DomainMapper::lcl_attribute(Id nName, Value & val) ...@@ -626,8 +626,10 @@ void DomainMapper::lcl_attribute(Id nName, Value & val)
} }
break; break;
case NS_ooxml::LN_CT_SmartTagRun_uri: case NS_ooxml::LN_CT_SmartTagRun_uri:
m_pImpl->getSmartTagHandler().setURI(val.getString());
break;
case NS_ooxml::LN_CT_SmartTagRun_element: case NS_ooxml::LN_CT_SmartTagRun_element:
//TODO: add handling of SmartTags m_pImpl->getSmartTagHandler().setElement(val.getString());
break; break;
case NS_ooxml::LN_CT_Br_type : case NS_ooxml::LN_CT_Br_type :
//TODO: attributes for break (0x12) are not supported //TODO: attributes for break (0x12) are not supported
...@@ -2639,6 +2641,13 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, PropertyMapPtr rContext ) ...@@ -2639,6 +2641,13 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, PropertyMapPtr rContext )
m_pImpl->SetRubyInfo(aInfo); m_pImpl->SetRubyInfo(aInfo);
} }
break; break;
case NS_ooxml::LN_CT_SmartTagRun_smartTagPr:
{
writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps();
if (pProperties.get())
pProperties->resolve(m_pImpl->getSmartTagHandler());
}
break;
default: default:
{ {
#ifdef DEBUG_WRITERFILTER #ifdef DEBUG_WRITERFILTER
......
...@@ -48,6 +48,7 @@ ...@@ -48,6 +48,7 @@
#include "GraphicImport.hxx" #include "GraphicImport.hxx"
#include "OLEHandler.hxx" #include "OLEHandler.hxx"
#include "FFDataHandler.hxx" #include "FFDataHandler.hxx"
#include "SmartTagHandler.hxx"
#include "FormControlHelper.hxx" #include "FormControlHelper.hxx"
#include <map> #include <map>
...@@ -460,6 +461,7 @@ private: ...@@ -460,6 +461,7 @@ private:
css::uno::Reference<css::beans::XPropertySet> GetDocumentSettings(); css::uno::Reference<css::beans::XPropertySet> GetDocumentSettings();
std::map<sal_Int32, css::uno::Any> deferredCharacterProperties; std::map<sal_Int32, css::uno::Any> deferredCharacterProperties;
SmartTagHandler m_aSmartTagHandler;
public: public:
css::uno::Reference<css::text::XTextRange> m_xInsertTextRange; css::uno::Reference<css::text::XTextRange> m_xInsertTextRange;
...@@ -849,6 +851,7 @@ public: ...@@ -849,6 +851,7 @@ public:
std::queue<OUString> m_aPositivePercentages; std::queue<OUString> m_aPositivePercentages;
bool isInIndexContext() { return m_bStartIndex;} bool isInIndexContext() { return m_bStartIndex;}
bool isInBibliographyContext() { return m_bStartBibliography;} bool isInBibliographyContext() { return m_bStartBibliography;}
SmartTagHandler& getSmartTagHandler() { return m_aSmartTagHandler; }
void substream(Id rName, ::writerfilter::Reference<Stream>::Pointer_t const& ref); void substream(Id rName, ::writerfilter::Reference<Stream>::Pointer_t const& ref);
......
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
#include <SmartTagHandler.hxx>
#include <ooxml/resourceids.hxx>
namespace writerfilter
{
namespace dmapper
{
using namespace ::com::sun::star;
SmartTagHandler::SmartTagHandler()
: LoggedProperties("SmartTagHandler")
{
}
SmartTagHandler::~SmartTagHandler()
{
}
void SmartTagHandler::lcl_attribute(Id nName, Value& rValue)
{
switch (nName)
{
case NS_ooxml::LN_CT_Attr_name:
break;
case NS_ooxml::LN_CT_Attr_val:
break;
default:
SAL_WARN("writerfilter", "SmartTagHandler::lcl_attribute: unhandled attribute " << nName << " (string value: '"<<rValue.getString()<<"')");
break;
}
}
void SmartTagHandler::lcl_sprm(Sprm& rSprm)
{
switch (rSprm.getId())
{
case NS_ooxml::LN_CT_SmartTagPr_attr:
{
writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps();
if (pProperties.get())
pProperties->resolve(*this);
break;
}
}
}
void SmartTagHandler::setURI(const OUString& rURI)
{
m_aURI = rURI;
}
void SmartTagHandler::setElement(const OUString& rElement)
{
m_aElement = rElement;
}
} // namespace dmapper
} // namespace writerfilter
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
#ifndef INCLUDED_WRITERFILTER_SOURCE_DMAPPER_SMARTTAGHANDLER_HXX
#define INCLUDED_WRITERFILTER_SOURCE_DMAPPER_SMARTTAGHANDLER_HXX
#include "LoggedResources.hxx"
namespace writerfilter
{
namespace dmapper
{
/// Handler for smart tags, i.e. <w:smartTag> and below.
class SmartTagHandler
: public LoggedProperties
{
OUString m_aURI;
OUString m_aElement;
public:
SmartTagHandler();
virtual ~SmartTagHandler();
virtual void lcl_attribute(Id Name, Value& val) override;
virtual void lcl_sprm(Sprm& sprm) override;
void setURI(const OUString& rURI);
void setElement(const OUString& rElement);
};
} // namespace dmapper
} // namespace writerfilter
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
...@@ -18166,6 +18166,9 @@ ...@@ -18166,6 +18166,9 @@
<attribute name="uri" tokenid="ooxml:CT_SmartTagRun_uri"/> <attribute name="uri" tokenid="ooxml:CT_SmartTagRun_uri"/>
<attribute name="element" tokenid="ooxml:CT_SmartTagRun_element"/> <attribute name="element" tokenid="ooxml:CT_SmartTagRun_element"/>
</resource> </resource>
<resource name="CT_SmartTagPr" resource="Properties">
<element name="attr" tokenid="ooxml:CT_SmartTagPr_attr"/>
</resource>
<resource name="EG_PContent" resource="Properties"> <resource name="EG_PContent" resource="Properties">
<element name="fldSimple" tokenid="ooxml:EG_PContent_fldSimple"/> <element name="fldSimple" tokenid="ooxml:EG_PContent_fldSimple"/>
<element name="hyperlink" tokenid="ooxml:EG_PContent_hyperlink"/> <element name="hyperlink" tokenid="ooxml:EG_PContent_hyperlink"/>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment