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,\
writerfilter/source/dmapper/SdtHelper \
writerfilter/source/dmapper/SectionColumnHandler \
writerfilter/source/dmapper/SettingsTable \
writerfilter/source/dmapper/SmartTagHandler \
writerfilter/source/dmapper/StyleSheetTable \
writerfilter/source/dmapper/TDefTableHandler \
writerfilter/source/dmapper/TableManager \
......
......@@ -626,8 +626,10 @@ void DomainMapper::lcl_attribute(Id nName, Value & val)
}
break;
case NS_ooxml::LN_CT_SmartTagRun_uri:
m_pImpl->getSmartTagHandler().setURI(val.getString());
break;
case NS_ooxml::LN_CT_SmartTagRun_element:
//TODO: add handling of SmartTags
m_pImpl->getSmartTagHandler().setElement(val.getString());
break;
case NS_ooxml::LN_CT_Br_type :
//TODO: attributes for break (0x12) are not supported
......@@ -2639,6 +2641,13 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, PropertyMapPtr rContext )
m_pImpl->SetRubyInfo(aInfo);
}
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:
{
#ifdef DEBUG_WRITERFILTER
......
......@@ -48,6 +48,7 @@
#include "GraphicImport.hxx"
#include "OLEHandler.hxx"
#include "FFDataHandler.hxx"
#include "SmartTagHandler.hxx"
#include "FormControlHelper.hxx"
#include <map>
......@@ -460,6 +461,7 @@ private:
css::uno::Reference<css::beans::XPropertySet> GetDocumentSettings();
std::map<sal_Int32, css::uno::Any> deferredCharacterProperties;
SmartTagHandler m_aSmartTagHandler;
public:
css::uno::Reference<css::text::XTextRange> m_xInsertTextRange;
......@@ -849,6 +851,7 @@ public:
std::queue<OUString> m_aPositivePercentages;
bool isInIndexContext() { return m_bStartIndex;}
bool isInBibliographyContext() { return m_bStartBibliography;}
SmartTagHandler& getSmartTagHandler() { return m_aSmartTagHandler; }
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 @@
<attribute name="uri" tokenid="ooxml:CT_SmartTagRun_uri"/>
<attribute name="element" tokenid="ooxml:CT_SmartTagRun_element"/>
</resource>
<resource name="CT_SmartTagPr" resource="Properties">
<element name="attr" tokenid="ooxml:CT_SmartTagPr_attr"/>
</resource>
<resource name="EG_PContent" resource="Properties">
<element name="fldSimple" tokenid="ooxml:EG_PContent_fldSimple"/>
<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