summaryrefslogtreecommitdiff
path: root/xmloff/source
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.com>2022-05-26 08:25:50 +0200
committerMiklos Vajna <vmiklos@collabora.com>2022-05-30 14:26:07 +0200
commitc2bc478f217c5dd898321dfba19078ae1c32b0c4 (patch)
tree5e731922a31a065890269bd981c0c8329c356b46 /xmloff/source
parent87061501b4030736fd448c0df2f1e8fd007594fa (diff)
sw content controls, date: add ODT filter
Map the Date, DateFormat and DateLanguage UNO properties to: <loext:content-control loext:date="..." loext:date-format="..." loext:date-rfc-language-tag="..."> And do the opposite on import. (cherry picked from commit b3c6511659c58bcc75a9742e0ae0cc436b6f6825) Change-Id: I16d3f755d77ed20380d877ba65dfe6d063f2bec2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135117 Tested-by: Miklos Vajna <vmiklos@collabora.com> Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Diffstat (limited to 'xmloff/source')
-rw-r--r--xmloff/source/core/xmltoken.cxx2
-rw-r--r--xmloff/source/text/txtparae.cxx23
-rw-r--r--xmloff/source/text/xmlcontentcontrolcontext.cxx31
-rw-r--r--xmloff/source/text/xmlcontentcontrolcontext.hxx3
-rw-r--r--xmloff/source/token/tokens.txt2
5 files changed, 61 insertions, 0 deletions
diff --git a/xmloff/source/core/xmltoken.cxx b/xmloff/source/core/xmltoken.cxx
index f2a3386a532e..179bd5094245 100644
--- a/xmloff/source/core/xmltoken.cxx
+++ b/xmloff/source/core/xmltoken.cxx
@@ -3476,6 +3476,8 @@ namespace xmloff::token {
TOKEN("unchecked-state", XML_UNCHECKED_STATE),
TOKEN("display-text", XML_DISPLAY_TEXT),
TOKEN("picture", XML_PICTURE),
+ TOKEN("date-format", XML_DATE_FORMAT),
+ TOKEN("date-rfc-language-tag", XML_DATE_RFC_LANGUAGE_TAG),
#if OSL_DEBUG_LEVEL > 0
diff --git a/xmloff/source/text/txtparae.cxx b/xmloff/source/text/txtparae.cxx
index ef5471c5aeed..e2ec85cb8105 100644
--- a/xmloff/source/text/txtparae.cxx
+++ b/xmloff/source/text/txtparae.cxx
@@ -3917,6 +3917,29 @@ void XMLTextParagraphExport::ExportContentControl(
GetExport().AddAttribute(XML_NAMESPACE_LO_EXT, XML_PICTURE,
aBuffer.makeStringAndClear());
}
+
+ bool bDate = false;
+ xPropertySet->getPropertyValue("Date") >>= bDate;
+ if (bDate)
+ {
+ OUStringBuffer aBuffer;
+ sax::Converter::convertBool(aBuffer, bDate);
+ GetExport().AddAttribute(XML_NAMESPACE_LO_EXT, XML_DATE, aBuffer.makeStringAndClear());
+ }
+
+ OUString aDateFormat;
+ xPropertySet->getPropertyValue("DateFormat") >>= aDateFormat;
+ if (!aDateFormat.isEmpty())
+ {
+ GetExport().AddAttribute(XML_NAMESPACE_LO_EXT, XML_DATE_FORMAT, aDateFormat);
+ }
+
+ OUString aDateLanguage;
+ xPropertySet->getPropertyValue("DateLanguage") >>= aDateLanguage;
+ if (!aDateLanguage.isEmpty())
+ {
+ GetExport().AddAttribute(XML_NAMESPACE_LO_EXT, XML_DATE_RFC_LANGUAGE_TAG, aDateLanguage);
+ }
}
SvXMLElementExport aElem(GetExport(), bExport, XML_NAMESPACE_LO_EXT, XML_CONTENT_CONTROL, false,
diff --git a/xmloff/source/text/xmlcontentcontrolcontext.cxx b/xmloff/source/text/xmlcontentcontrolcontext.cxx
index c9f4b8a8b2b9..24b81e04a67c 100644
--- a/xmloff/source/text/xmlcontentcontrolcontext.cxx
+++ b/xmloff/source/text/xmlcontentcontrolcontext.cxx
@@ -94,6 +94,24 @@ void XMLContentControlContext::startFastElement(
}
break;
}
+ case XML_ELEMENT(LO_EXT, XML_DATE):
+ {
+ if (sax::Converter::convertBool(bTmp, rIter.toView()))
+ {
+ m_bDate = bTmp;
+ }
+ break;
+ }
+ case XML_ELEMENT(LO_EXT, XML_DATE_FORMAT):
+ {
+ m_aDateFormat = rIter.toString();
+ break;
+ }
+ case XML_ELEMENT(LO_EXT, XML_DATE_RFC_LANGUAGE_TAG):
+ {
+ m_aDateLanguage = rIter.toString();
+ break;
+ }
default:
XMLOFF_WARN_UNKNOWN("xmloff", rIter);
}
@@ -162,6 +180,19 @@ void XMLContentControlContext::endFastElement(sal_Int32)
{
xPropertySet->setPropertyValue("Picture", uno::Any(m_bPicture));
}
+
+ if (m_bDate)
+ {
+ xPropertySet->setPropertyValue("Date", uno::Any(m_bDate));
+ }
+ if (!m_aDateFormat.isEmpty())
+ {
+ xPropertySet->setPropertyValue("DateFormat", uno::Any(m_aDateFormat));
+ }
+ if (!m_aDateLanguage.isEmpty())
+ {
+ xPropertySet->setPropertyValue("DateLanguage", uno::Any(m_aDateLanguage));
+ }
}
css::uno::Reference<css::xml::sax::XFastContextHandler>
diff --git a/xmloff/source/text/xmlcontentcontrolcontext.hxx b/xmloff/source/text/xmlcontentcontrolcontext.hxx
index d3874d31257e..623ef97e8df3 100644
--- a/xmloff/source/text/xmlcontentcontrolcontext.hxx
+++ b/xmloff/source/text/xmlcontentcontrolcontext.hxx
@@ -44,6 +44,9 @@ class XMLContentControlContext : public SvXMLImportContext
OUString m_aUncheckedState;
std::vector<css::beans::PropertyValues> m_aListItems;
bool m_bPicture = false;
+ bool m_bDate = false;
+ OUString m_aDateFormat;
+ OUString m_aDateLanguage;
public:
XMLContentControlContext(SvXMLImport& rImport, sal_Int32 nElement, XMLHints_Impl& rHints,
diff --git a/xmloff/source/token/tokens.txt b/xmloff/source/token/tokens.txt
index ffd10a485dd0..6d74b224296d 100644
--- a/xmloff/source/token/tokens.txt
+++ b/xmloff/source/token/tokens.txt
@@ -3220,4 +3220,6 @@ checked-state
unchecked-state
display-text
picture
+date-format
+date-rfc-language-tag
TOKEN_END_DUMMY