diff options
author | Tamás Zolnai <tamas.zolnai@collabora.com> | 2019-03-09 14:44:50 +0100 |
---|---|---|
committer | Tamás Zolnai <tamas.zolnai@collabora.com> | 2019-03-09 15:40:56 +0100 |
commit | f66a83c95c21b4311918a64bb85016857b49f4d4 (patch) | |
tree | 0d0c507947bad6c711003ede66f09a7f20238cbc /writerfilter/source/dmapper/FormControlHelper.cxx | |
parent | 499501e8cf1d511eb95a7b72b755c2dc69985719 (diff) |
MSForms: Introduce a new IFieldMark for drop-down form field
* It was weird anyway that a drop-down form field was represented
as an CheckboxFieldmark.
* It will be useful for later commits, to have a separate field type
for drop-down field.
* Needed to fix-up the API a bit because it was designed to specify
the field type after initialization. I solved it in a way to not break
the API behavior. Hopefully it's not very slow.
Change-Id: I3103e6b1c36289b27b62ab9ca7dfeebc14901c8a
Reviewed-on: https://gerrit.libreoffice.org/68960
Tested-by: Jenkins
Reviewed-by: Tamás Zolnai <tamas.zolnai@collabora.com>
Diffstat (limited to 'writerfilter/source/dmapper/FormControlHelper.cxx')
-rw-r--r-- | writerfilter/source/dmapper/FormControlHelper.cxx | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/writerfilter/source/dmapper/FormControlHelper.cxx b/writerfilter/source/dmapper/FormControlHelper.cxx index 3088a4a27361..98e7bb0ba319 100644 --- a/writerfilter/source/dmapper/FormControlHelper.cxx +++ b/writerfilter/source/dmapper/FormControlHelper.cxx @@ -202,6 +202,20 @@ bool FormControlHelper::createCheckbox(uno::Reference<text::XTextRange> const& x void FormControlHelper::processField(uno::Reference<text::XFormField> const& xFormField) { + // Set field type first before adding parameters. + if (m_pImpl->m_eFieldId == FIELD_FORMTEXT ) + { + xFormField->setFieldType(ODF_FORMTEXT); + } + else if (m_pImpl->m_eFieldId == FIELD_FORMCHECKBOX ) + { + xFormField->setFieldType(ODF_FORMCHECKBOX); + } + else if (m_pImpl->m_eFieldId == FIELD_FORMDROPDOWN ) + { + xFormField->setFieldType(ODF_FORMDROPDOWN); + } + uno::Reference<container::XNameContainer> xNameCont = xFormField->getParameters(); uno::Reference<container::XNamed> xNamed( xFormField, uno::UNO_QUERY ); if ( m_pFFData && xNamed.is() && xNameCont.is() ) @@ -223,7 +237,6 @@ void FormControlHelper::processField(uno::Reference<text::XFormField> const& xFo if (m_pImpl->m_eFieldId == FIELD_FORMTEXT ) { - xFormField->setFieldType(ODF_FORMTEXT); sTmp = m_pFFData->getName(); try { @@ -255,7 +268,6 @@ void FormControlHelper::processField(uno::Reference<text::XFormField> const& xFo } else if (m_pImpl->m_eFieldId == FIELD_FORMCHECKBOX ) { - xFormField->setFieldType(ODF_FORMCHECKBOX); uno::Reference<beans::XPropertySet> xPropSet(xFormField, uno::UNO_QUERY); uno::Any aAny; aAny <<= m_pFFData->getCheckboxChecked(); @@ -264,7 +276,6 @@ void FormControlHelper::processField(uno::Reference<text::XFormField> const& xFo } else if (m_pImpl->m_eFieldId == FIELD_FORMDROPDOWN ) { - xFormField->setFieldType(ODF_FORMDROPDOWN); const FFDataHandler::DropDownEntries_t& rEntries = m_pFFData->getDropDownEntries(); if (!rEntries.empty()) { |