summaryrefslogtreecommitdiff
path: root/writerfilter/source/dmapper/FormControlHelper.cxx
diff options
context:
space:
mode:
authorJustin Luth <justin.luth@collabora.com>2018-10-20 19:18:02 +0300
committerMiklos Vajna <vmiklos@collabora.com>2018-11-16 15:41:42 +0100
commit46c1a75b144a4c5fd1f4ab0113b87fe030bebd27 (patch)
tree42e35e1795d0f73b563e7efd4dba0ac26affb336 /writerfilter/source/dmapper/FormControlHelper.cxx
parent8def8ca39d28ad34106767d14273b7b7d1b0b882 (diff)
tdf79435 doc/docx: round-trip legacy input formfields
GrabBag the settings which LO doesn't implement (which is all of them) so that the document round-trips without losing the config settings. Change-Id: I00de6c483af68073634430dd74fd445e981573ab Reviewed-on: https://gerrit.libreoffice.org/62241 Tested-by: Jenkins Reviewed-by: Justin Luth <justin_luth@sil.org> Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Diffstat (limited to 'writerfilter/source/dmapper/FormControlHelper.cxx')
-rw-r--r--writerfilter/source/dmapper/FormControlHelper.cxx43
1 files changed, 41 insertions, 2 deletions
diff --git a/writerfilter/source/dmapper/FormControlHelper.cxx b/writerfilter/source/dmapper/FormControlHelper.cxx
index 3877763edab1..3088a4a27361 100644
--- a/writerfilter/source/dmapper/FormControlHelper.cxx
+++ b/writerfilter/source/dmapper/FormControlHelper.cxx
@@ -37,6 +37,7 @@
#include "FormControlHelper.hxx"
#include <xmloff/odffields.hxx>
#include <comphelper/sequence.hxx>
+#include <tools/diagnose_ex.h>
namespace writerfilter {
namespace dmapper {
@@ -205,14 +206,52 @@ void FormControlHelper::processField(uno::Reference<text::XFormField> const& xFo
uno::Reference<container::XNamed> xNamed( xFormField, uno::UNO_QUERY );
if ( m_pFFData && xNamed.is() && xNameCont.is() )
{
+ OUString sTmp = m_pFFData->getEntryMacro();
+ if ( !sTmp.isEmpty() )
+ xNameCont->insertByName( "EntryMacro", uno::makeAny(sTmp) );
+ sTmp = m_pFFData->getExitMacro();
+ if ( !sTmp.isEmpty() )
+ xNameCont->insertByName( "ExitMacro", uno::makeAny(sTmp) );
+
+ sTmp = m_pFFData->getHelpText();
+ if ( !sTmp.isEmpty() )
+ xNameCont->insertByName( "Help", uno::makeAny(sTmp) );
+
+ sTmp = m_pFFData->getStatusText();
+ if ( !sTmp.isEmpty() )
+ xNameCont->insertByName( "Hint", uno::makeAny(sTmp) );
if (m_pImpl->m_eFieldId == FIELD_FORMTEXT )
{
xFormField->setFieldType(ODF_FORMTEXT);
- if ( !m_pFFData->getName().isEmpty() )
+ sTmp = m_pFFData->getName();
+ try
+ {
+ if ( !sTmp.isEmpty() )
+ xNamed->setName( sTmp );
+ }
+ catch ( uno::Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION("writerfilter","Set Formfield name failed");
+ }
+
+ sTmp = m_pFFData->getTextType();
+ if ( !sTmp.isEmpty() )
+ xNameCont->insertByName( "Type", uno::makeAny(sTmp) );
+
+ const sal_uInt16 nMaxLength = m_pFFData->getTextMaxLength();
+ if ( nMaxLength )
{
- xNamed->setName( m_pFFData->getName() );
+ xNameCont->insertByName( "MaxLength", uno::makeAny(nMaxLength) );
}
+
+ sTmp = m_pFFData->getTextDefault();
+ if ( !sTmp.isEmpty() )
+ xNameCont->insertByName( "Content", uno::makeAny(sTmp) );
+
+ sTmp = m_pFFData->getTextFormat();
+ if ( !sTmp.isEmpty() )
+ xNameCont->insertByName( "Format", uno::makeAny(sTmp) );
}
else if (m_pImpl->m_eFieldId == FIELD_FORMCHECKBOX )
{