sw/source/filter/ww8/docxattributeoutput.cxx | 268 +++++++++++++-------------- 1 file changed, 136 insertions(+), 132 deletions(-)
New commits: commit 1bcf8e1261cb10eaf59f2a22b1f50dc80e56fe17 Author: Caolán McNamara <caol...@redhat.com> Date: Sat May 9 20:44:17 2015 +0100 de-indent this somewhat, no logic change Change-Id: If814f508f46aa6efb01444bc09e9c8d4b4d3d7cf diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx index 86ad682..bc5d40f 100644 --- a/sw/source/filter/ww8/docxattributeoutput.cxx +++ b/sw/source/filter/ww8/docxattributeoutput.cxx @@ -4391,161 +4391,163 @@ void DocxAttributeOutput::WritePostponedMath(const SwOLENode* pPostponedMath) void DocxAttributeOutput::WritePostponedFormControl(const SdrObject* pObject) { - if (pObject && pObject->GetObjInventor() == FmFormInventor) + if (!pObject || pObject->GetObjInventor() != FmFormInventor) + return; + + SdrUnoObj *pFormObj = const_cast<SdrUnoObj*>(PTR_CAST(SdrUnoObj,pObject)); + if (!pFormObj) + return; + + uno::Reference<awt::XControlModel> xControlModel = pFormObj->GetUnoControlModel(); + uno::Reference<lang::XServiceInfo> xInfo(xControlModel, uno::UNO_QUERY); + if (!xInfo.is()) + return; + + if (xInfo->supportsService("com.sun.star.form.component.DateField")) { - if (SdrUnoObj *pFormObj = const_cast<SdrUnoObj*>(PTR_CAST(SdrUnoObj,pObject))) + // gather component properties + + Date aOriginalDate(Date::EMPTY); + OUString sOriginalContent, sDateFormat, sAlias; + OUString sLocale("en-US"); + uno::Sequence<beans::PropertyValue> aGrabBag; + uno::Reference<beans::XPropertySet> xShapePropertySet(pFormObj->getUnoShape(), uno::UNO_QUERY); + uno::Sequence<beans::PropertyValue> aCharFormat; + if (xShapePropertySet->getPropertyValue(UNO_NAME_MISC_OBJ_INTEROPGRABBAG) >>= aGrabBag) { - uno::Reference<awt::XControlModel> xControlModel = pFormObj->GetUnoControlModel(); - uno::Reference<lang::XServiceInfo> xInfo(xControlModel, uno::UNO_QUERY); - if (!xInfo.is()) - return; - if (xInfo->supportsService("com.sun.star.form.component.DateField")) + for (sal_Int32 i=0; i < aGrabBag.getLength(); ++i) { - // gather component properties - - Date aOriginalDate(Date::EMPTY); - OUString sOriginalContent, sDateFormat, sAlias; - OUString sLocale("en-US"); - uno::Sequence<beans::PropertyValue> aGrabBag; - uno::Reference<beans::XPropertySet> xShapePropertySet(pFormObj->getUnoShape(), uno::UNO_QUERY); - uno::Sequence<beans::PropertyValue> aCharFormat; - if (xShapePropertySet->getPropertyValue(UNO_NAME_MISC_OBJ_INTEROPGRABBAG) >>= aGrabBag) + if (aGrabBag[i].Name == "DateFormat") + aGrabBag[i].Value >>= sDateFormat; + else if (aGrabBag[i].Name == "Locale") + aGrabBag[i].Value >>= sLocale; + else if (aGrabBag[i].Name == "OriginalContent") + aGrabBag[i].Value >>= sOriginalContent; + else if (aGrabBag[i].Name == "OriginalDate") { - for (sal_Int32 i=0; i < aGrabBag.getLength(); ++i) - { - if (aGrabBag[i].Name == "DateFormat") - aGrabBag[i].Value >>= sDateFormat; - else if (aGrabBag[i].Name == "Locale") - aGrabBag[i].Value >>= sLocale; - else if (aGrabBag[i].Name == "OriginalContent") - aGrabBag[i].Value >>= sOriginalContent; - else if (aGrabBag[i].Name == "OriginalDate") - { - css::util::Date aUNODate; - aGrabBag[i].Value >>= aUNODate; - aOriginalDate.SetDay(aUNODate.Day); - aOriginalDate.SetMonth(aUNODate.Month); - aOriginalDate.SetYear(aUNODate.Year); - } - else if (aGrabBag[i].Name == "CharFormat") - aGrabBag[i].Value >>= aCharFormat; - else if (aGrabBag[i].Name == "ooxml:CT_SdtPr_alias") - aGrabBag[i].Value >>= sAlias; - } + css::util::Date aUNODate; + aGrabBag[i].Value >>= aUNODate; + aOriginalDate.SetDay(aUNODate.Day); + aOriginalDate.SetMonth(aUNODate.Month); + aOriginalDate.SetYear(aUNODate.Year); } - uno::Reference<beans::XPropertySet> xPropertySet(xControlModel, uno::UNO_QUERY); + else if (aGrabBag[i].Name == "CharFormat") + aGrabBag[i].Value >>= aCharFormat; + else if (aGrabBag[i].Name == "ooxml:CT_SdtPr_alias") + aGrabBag[i].Value >>= sAlias; + } + } + uno::Reference<beans::XPropertySet> xPropertySet(xControlModel, uno::UNO_QUERY); - OString sDate; - OUString aContentText; - bool bHasDate = false; - css::util::Date aUNODate; - if (xPropertySet->getPropertyValue("Date") >>= aUNODate) - { - bHasDate = true; - Date aDate(aUNODate.Day, aUNODate.Month, aUNODate.Year); - sDate = DateToOString(aDate); + OString sDate; + OUString aContentText; + bool bHasDate = false; + css::util::Date aUNODate; + if (xPropertySet->getPropertyValue("Date") >>= aUNODate) + { + bHasDate = true; + Date aDate(aUNODate.Day, aUNODate.Month, aUNODate.Year); + sDate = DateToOString(aDate); - if (aOriginalDate == aDate) - { - aContentText = sOriginalContent; - // sDateFormat was extracted from the grab bag - } - else - { - aContentText = OUString::createFromAscii(DateToDDMMYYYYOString(aDate).getStr()); - sDateFormat = "dd/MM/yyyy"; - } - } - else - aContentText = xPropertySet->getPropertyValue("HelpText").get<OUString>(); + if (aOriginalDate == aDate) + { + aContentText = sOriginalContent; + // sDateFormat was extracted from the grab bag + } + else + { + aContentText = OUString::createFromAscii(DateToDDMMYYYYOString(aDate).getStr()); + sDateFormat = "dd/MM/yyyy"; + } + } + else + aContentText = xPropertySet->getPropertyValue("HelpText").get<OUString>(); - // output component + // output component - m_pSerializer->startElementNS(XML_w, XML_sdt, FSEND); - m_pSerializer->startElementNS(XML_w, XML_sdtPr, FSEND); + m_pSerializer->startElementNS(XML_w, XML_sdt, FSEND); + m_pSerializer->startElementNS(XML_w, XML_sdtPr, FSEND); - if (!sAlias.isEmpty()) - m_pSerializer->singleElementNS(XML_w, XML_alias, - FSNS(XML_w, XML_val), OUStringToOString(sAlias, RTL_TEXTENCODING_UTF8), - FSEND); + if (!sAlias.isEmpty()) + m_pSerializer->singleElementNS(XML_w, XML_alias, + FSNS(XML_w, XML_val), OUStringToOString(sAlias, RTL_TEXTENCODING_UTF8), + FSEND); - if (bHasDate) - m_pSerializer->startElementNS(XML_w, XML_date, - FSNS( XML_w, XML_fullDate ), sDate.getStr(), - FSEND); - else - m_pSerializer->startElementNS(XML_w, XML_date, FSEND); - - m_pSerializer->singleElementNS(XML_w, XML_dateFormat, - FSNS(XML_w, XML_val), - OUStringToOString( sDateFormat, RTL_TEXTENCODING_UTF8 ).getStr(), - FSEND); - m_pSerializer->singleElementNS(XML_w, XML_lid, - FSNS(XML_w, XML_val), - OUStringToOString( sLocale, RTL_TEXTENCODING_UTF8 ).getStr(), - FSEND); - m_pSerializer->singleElementNS(XML_w, XML_storeMappedDataAs, - FSNS(XML_w, XML_val), "dateTime", - FSEND); - m_pSerializer->singleElementNS(XML_w, XML_calendar, - FSNS(XML_w, XML_val), "gregorian", - FSEND); - - m_pSerializer->endElementNS(XML_w, XML_date); - m_pSerializer->endElementNS(XML_w, XML_sdtPr); - - m_pSerializer->startElementNS(XML_w, XML_sdtContent, FSEND); - m_pSerializer->startElementNS(XML_w, XML_r, FSEND); - - if (aCharFormat.hasElements()) - { - m_pTableStyleExport->SetSerializer(m_pSerializer); - m_pTableStyleExport->CharFormat(aCharFormat); - } + if (bHasDate) + m_pSerializer->startElementNS(XML_w, XML_date, + FSNS( XML_w, XML_fullDate ), sDate.getStr(), + FSEND); + else + m_pSerializer->startElementNS(XML_w, XML_date, FSEND); + + m_pSerializer->singleElementNS(XML_w, XML_dateFormat, + FSNS(XML_w, XML_val), + OUStringToOString( sDateFormat, RTL_TEXTENCODING_UTF8 ).getStr(), + FSEND); + m_pSerializer->singleElementNS(XML_w, XML_lid, + FSNS(XML_w, XML_val), + OUStringToOString( sLocale, RTL_TEXTENCODING_UTF8 ).getStr(), + FSEND); + m_pSerializer->singleElementNS(XML_w, XML_storeMappedDataAs, + FSNS(XML_w, XML_val), "dateTime", + FSEND); + m_pSerializer->singleElementNS(XML_w, XML_calendar, + FSNS(XML_w, XML_val), "gregorian", + FSEND); + + m_pSerializer->endElementNS(XML_w, XML_date); + m_pSerializer->endElementNS(XML_w, XML_sdtPr); + + m_pSerializer->startElementNS(XML_w, XML_sdtContent, FSEND); + m_pSerializer->startElementNS(XML_w, XML_r, FSEND); + + if (aCharFormat.hasElements()) + { + m_pTableStyleExport->SetSerializer(m_pSerializer); + m_pTableStyleExport->CharFormat(aCharFormat); + } - RunText(aContentText); - m_pSerializer->endElementNS(XML_w, XML_r); - m_pSerializer->endElementNS(XML_w, XML_sdtContent); + RunText(aContentText); + m_pSerializer->endElementNS(XML_w, XML_r); + m_pSerializer->endElementNS(XML_w, XML_sdtContent); - m_pSerializer->endElementNS(XML_w, XML_sdt); - } - else if (xInfo->supportsService("com.sun.star.form.component.ComboBox")) - { - // gather component properties + m_pSerializer->endElementNS(XML_w, XML_sdt); + } + else if (xInfo->supportsService("com.sun.star.form.component.ComboBox")) + { + // gather component properties - uno::Reference<beans::XPropertySet> xPropertySet(xControlModel, uno::UNO_QUERY); - OUString sText = xPropertySet->getPropertyValue("Text").get<OUString>(); - uno::Sequence<OUString> aItems = xPropertySet->getPropertyValue("StringItemList").get< uno::Sequence<OUString> >(); + uno::Reference<beans::XPropertySet> xPropertySet(xControlModel, uno::UNO_QUERY); + OUString sText = xPropertySet->getPropertyValue("Text").get<OUString>(); + uno::Sequence<OUString> aItems = xPropertySet->getPropertyValue("StringItemList").get< uno::Sequence<OUString> >(); - // output component + // output component - m_pSerializer->startElementNS(XML_w, XML_sdt, FSEND); - m_pSerializer->startElementNS(XML_w, XML_sdtPr, FSEND); + m_pSerializer->startElementNS(XML_w, XML_sdt, FSEND); + m_pSerializer->startElementNS(XML_w, XML_sdtPr, FSEND); - m_pSerializer->startElementNS(XML_w, XML_dropDownList, FSEND); + m_pSerializer->startElementNS(XML_w, XML_dropDownList, FSEND); - for (sal_Int32 i=0; i < aItems.getLength(); ++i) - { - m_pSerializer->singleElementNS(XML_w, XML_listItem, - FSNS(XML_w, XML_displayText), - OUStringToOString( aItems[i], RTL_TEXTENCODING_UTF8 ).getStr(), - FSNS(XML_w, XML_value), - OUStringToOString( aItems[i], RTL_TEXTENCODING_UTF8 ).getStr(), - FSEND); - } + for (sal_Int32 i=0; i < aItems.getLength(); ++i) + { + m_pSerializer->singleElementNS(XML_w, XML_listItem, + FSNS(XML_w, XML_displayText), + OUStringToOString( aItems[i], RTL_TEXTENCODING_UTF8 ).getStr(), + FSNS(XML_w, XML_value), + OUStringToOString( aItems[i], RTL_TEXTENCODING_UTF8 ).getStr(), + FSEND); + } - m_pSerializer->endElementNS(XML_w, XML_dropDownList); - m_pSerializer->endElementNS(XML_w, XML_sdtPr); + m_pSerializer->endElementNS(XML_w, XML_dropDownList); + m_pSerializer->endElementNS(XML_w, XML_sdtPr); - m_pSerializer->startElementNS(XML_w, XML_sdtContent, FSEND); - m_pSerializer->startElementNS(XML_w, XML_r, FSEND); - RunText(sText); - m_pSerializer->endElementNS(XML_w, XML_r); - m_pSerializer->endElementNS(XML_w, XML_sdtContent); + m_pSerializer->startElementNS(XML_w, XML_sdtContent, FSEND); + m_pSerializer->startElementNS(XML_w, XML_r, FSEND); + RunText(sText); + m_pSerializer->endElementNS(XML_w, XML_r); + m_pSerializer->endElementNS(XML_w, XML_sdtContent); - m_pSerializer->endElementNS(XML_w, XML_sdt); - } - } + m_pSerializer->endElementNS(XML_w, XML_sdt); } } commit d62728d367a3ea24c433d90afcbf008eb436c21c Author: Caolán McNamara <caol...@redhat.com> Date: Sat May 9 20:42:49 2015 +0100 don't crash on export of ooo121238-1.odt to docx Change-Id: I263424ad8f65ded7bab89b5902482357b4f9abaa diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx index 92a1b64..86ad682 100644 --- a/sw/source/filter/ww8/docxattributeoutput.cxx +++ b/sw/source/filter/ww8/docxattributeoutput.cxx @@ -4397,6 +4397,8 @@ void DocxAttributeOutput::WritePostponedFormControl(const SdrObject* pObject) { uno::Reference<awt::XControlModel> xControlModel = pFormObj->GetUnoControlModel(); uno::Reference<lang::XServiceInfo> xInfo(xControlModel, uno::UNO_QUERY); + if (!xInfo.is()) + return; if (xInfo->supportsService("com.sun.star.form.component.DateField")) { // gather component properties
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits