[Libreoffice-commits] core.git: 2 commits - sw/source
Caolán McNamara
caolanm at redhat.com
Sat May 9 12:46:06 PDT 2015
sw/source/filter/ww8/docxattributeoutput.cxx | 268 +++++++++++++--------------
1 file changed, 136 insertions(+), 132 deletions(-)
New commits:
commit 1bcf8e1261cb10eaf59f2a22b1f50dc80e56fe17
Author: Caolán McNamara <caolanm at 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 <caolanm at 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
More information about the Libreoffice-commits
mailing list