readlicense_oo/license/CREDITS.fodt | 3209 ++++++++--------- sc/source/filter/xml/XMLCalculationSettingsContext.cxx | 172 sc/source/filter/xml/XMLCellRangeSourceContext.cxx | 80 sc/source/filter/xml/XMLChangeTrackingExportHelper.cxx | 140 sc/source/filter/xml/XMLChangeTrackingImportHelper.cxx | 324 - sc/source/filter/xml/XMLConsolidationContext.cxx | 110 sc/source/filter/xml/XMLConverter.cxx | 101 sc/source/filter/xml/XMLDDELinksContext.cxx | 170 sc/source/filter/xml/XMLDetectiveContext.cxx | 44 sc/source/filter/xml/XMLExportDDELinks.cxx | 64 sc/source/filter/xml/XMLExportDataPilot.cxx | 452 +- sc/source/filter/xml/XMLExportIterator.cxx | 128 sc/source/filter/xml/XMLStylesExportHelper.cxx | 310 - sc/source/filter/xml/XMLTableMasterPageExport.cxx | 74 sc/source/filter/xml/XMLTableShapeResizer.cxx | 76 sc/source/filter/xml/XMLTableSourceContext.cxx | 100 sc/source/filter/xml/XMLTrackedChangesContext.cxx | 44 sc/source/filter/xml/datastreamimport.cxx | 50 sc/source/filter/xml/xmlbodyi.cxx | 46 sc/source/filter/xml/xmlcelli.cxx | 272 - sc/source/filter/xml/xmlcoli.cxx | 48 sc/source/filter/xml/xmlcondformat.cxx | 28 sc/source/filter/xml/xmlcvali.cxx | 260 - sc/source/filter/xml/xmldpimp.cxx | 534 +- sc/source/filter/xml/xmldrani.cxx | 112 sc/source/filter/xml/xmlexprt.cxx | 1464 +++---- sc/source/filter/xml/xmlexternaltabi.cxx | 172 sc/source/filter/xml/xmlfilti.cxx | 246 - sc/source/filter/xml/xmlfonte.cxx | 72 sc/source/filter/xml/xmlimprt.cxx | 460 +- sc/source/filter/xml/xmllabri.cxx | 28 sc/source/filter/xml/xmlrowi.cxx | 128 sc/source/filter/xml/xmlsceni.cxx | 108 sc/source/filter/xml/xmlsorti.cxx | 130 sc/source/filter/xml/xmlstyle.cxx | 152 sc/source/filter/xml/xmlsubti.cxx | 136 sc/source/filter/xml/xmltransformationi.cxx | 168 37 files changed, 5126 insertions(+), 5086 deletions(-)
New commits: commit b6a4ddf4d8c45030dbe3fc68b51f9366109041bd Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Wed Jul 29 16:13:12 2020 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Wed Jul 29 20:47:22 2020 +0200 loplugin:flatten in sc/filter/xml Change-Id: I93117f601a8f450ebfcde32c156802137b87da76 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/99701 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/sc/source/filter/xml/XMLCalculationSettingsContext.cxx b/sc/source/filter/xml/XMLCalculationSettingsContext.cxx index 9917eaaa0ba1..26161c092360 100644 --- a/sc/source/filter/xml/XMLCalculationSettingsContext.cxx +++ b/sc/source/filter/xml/XMLCalculationSettingsContext.cxx @@ -48,43 +48,43 @@ ScXMLCalculationSettingsContext::ScXMLCalculationSettingsContext( ScXMLImport& r aNullDate.Day = 30; aNullDate.Month = 12; aNullDate.Year = 1899; - if ( rAttrList.is() ) + if ( !rAttrList.is() ) + return; + + for (auto &aIter : *rAttrList) { - for (auto &aIter : *rAttrList) + switch (aIter.getToken()) { - switch (aIter.getToken()) - { - case XML_ELEMENT( TABLE, XML_CASE_SENSITIVE ): - if( IsXMLToken( aIter, XML_FALSE ) ) - bIgnoreCase = true; - break; - case XML_ELEMENT( TABLE, XML_PRECISION_AS_SHOWN ): - if( IsXMLToken( aIter, XML_TRUE ) ) - bCalcAsShown = true; - break; - case XML_ELEMENT( TABLE, XML_SEARCH_CRITERIA_MUST_APPLY_TO_WHOLE_CELL ): - if( IsXMLToken( aIter, XML_FALSE ) ) - bMatchWholeCell = false; - break; - case XML_ELEMENT( TABLE, XML_AUTOMATIC_FIND_LABELS ): - if( IsXMLToken( aIter, XML_FALSE ) ) - bLookUpLabels = false; - break; - case XML_ELEMENT( TABLE, XML_NULL_YEAR ): - sal_Int32 nTemp; - ::sax::Converter::convertNumber( nTemp, aIter.toString() ); - nYear2000 = static_cast<sal_uInt16>(nTemp); - break; - case XML_ELEMENT( TABLE, XML_USE_REGULAR_EXPRESSIONS ): - // Overwrite only the default (regex true) value, not wildcard. - if( eSearchType == utl::SearchParam::SearchType::Regexp && IsXMLToken( aIter, XML_FALSE ) ) - eSearchType = utl::SearchParam::SearchType::Normal; - break; - case XML_ELEMENT( TABLE, XML_USE_WILDCARDS ): - if( IsXMLToken( aIter, XML_TRUE ) ) - eSearchType = utl::SearchParam::SearchType::Wildcard; - break; - } + case XML_ELEMENT( TABLE, XML_CASE_SENSITIVE ): + if( IsXMLToken( aIter, XML_FALSE ) ) + bIgnoreCase = true; + break; + case XML_ELEMENT( TABLE, XML_PRECISION_AS_SHOWN ): + if( IsXMLToken( aIter, XML_TRUE ) ) + bCalcAsShown = true; + break; + case XML_ELEMENT( TABLE, XML_SEARCH_CRITERIA_MUST_APPLY_TO_WHOLE_CELL ): + if( IsXMLToken( aIter, XML_FALSE ) ) + bMatchWholeCell = false; + break; + case XML_ELEMENT( TABLE, XML_AUTOMATIC_FIND_LABELS ): + if( IsXMLToken( aIter, XML_FALSE ) ) + bLookUpLabels = false; + break; + case XML_ELEMENT( TABLE, XML_NULL_YEAR ): + sal_Int32 nTemp; + ::sax::Converter::convertNumber( nTemp, aIter.toString() ); + nYear2000 = static_cast<sal_uInt16>(nTemp); + break; + case XML_ELEMENT( TABLE, XML_USE_REGULAR_EXPRESSIONS ): + // Overwrite only the default (regex true) value, not wildcard. + if( eSearchType == utl::SearchParam::SearchType::Regexp && IsXMLToken( aIter, XML_FALSE ) ) + eSearchType = utl::SearchParam::SearchType::Normal; + break; + case XML_ELEMENT( TABLE, XML_USE_WILDCARDS ): + if( IsXMLToken( aIter, XML_TRUE ) ) + eSearchType = utl::SearchParam::SearchType::Wildcard; + break; } } } @@ -110,31 +110,31 @@ uno::Reference< xml::sax::XFastContextHandler > SAL_CALL ScXMLCalculationSetting void SAL_CALL ScXMLCalculationSettingsContext::endFastElement( sal_Int32 /*nElement*/ ) { - if (GetScImport().GetModel().is()) + if (!GetScImport().GetModel().is()) + return; + + uno::Reference <beans::XPropertySet> xPropertySet (GetScImport().GetModel(), uno::UNO_QUERY); + if (!xPropertySet.is()) + return; + + xPropertySet->setPropertyValue( SC_UNO_CALCASSHOWN, uno::makeAny(bCalcAsShown) ); + xPropertySet->setPropertyValue( SC_UNO_IGNORECASE, uno::makeAny(bIgnoreCase) ); + xPropertySet->setPropertyValue( SC_UNO_LOOKUPLABELS, uno::makeAny(bLookUpLabels) ); + xPropertySet->setPropertyValue( SC_UNO_MATCHWHOLE, uno::makeAny(bMatchWholeCell) ); + bool bWildcards, bRegex; + utl::SearchParam::ConvertToBool( eSearchType, bWildcards, bRegex); + xPropertySet->setPropertyValue( SC_UNO_REGEXENABLED, uno::makeAny(bRegex) ); + xPropertySet->setPropertyValue( SC_UNO_WILDCARDSENABLED, uno::makeAny(bWildcards) ); + xPropertySet->setPropertyValue( SC_UNO_ITERENABLED, uno::makeAny(bIsIterationEnabled) ); + xPropertySet->setPropertyValue( SC_UNO_ITERCOUNT, uno::makeAny(nIterationCount) ); + xPropertySet->setPropertyValue( SC_UNO_ITEREPSILON, uno::makeAny(fIterationEpsilon) ); + xPropertySet->setPropertyValue( SC_UNO_NULLDATE, uno::makeAny(aNullDate) ); + if (GetScImport().GetDocument()) { - uno::Reference <beans::XPropertySet> xPropertySet (GetScImport().GetModel(), uno::UNO_QUERY); - if (xPropertySet.is()) - { - xPropertySet->setPropertyValue( SC_UNO_CALCASSHOWN, uno::makeAny(bCalcAsShown) ); - xPropertySet->setPropertyValue( SC_UNO_IGNORECASE, uno::makeAny(bIgnoreCase) ); - xPropertySet->setPropertyValue( SC_UNO_LOOKUPLABELS, uno::makeAny(bLookUpLabels) ); - xPropertySet->setPropertyValue( SC_UNO_MATCHWHOLE, uno::makeAny(bMatchWholeCell) ); - bool bWildcards, bRegex; - utl::SearchParam::ConvertToBool( eSearchType, bWildcards, bRegex); - xPropertySet->setPropertyValue( SC_UNO_REGEXENABLED, uno::makeAny(bRegex) ); - xPropertySet->setPropertyValue( SC_UNO_WILDCARDSENABLED, uno::makeAny(bWildcards) ); - xPropertySet->setPropertyValue( SC_UNO_ITERENABLED, uno::makeAny(bIsIterationEnabled) ); - xPropertySet->setPropertyValue( SC_UNO_ITERCOUNT, uno::makeAny(nIterationCount) ); - xPropertySet->setPropertyValue( SC_UNO_ITEREPSILON, uno::makeAny(fIterationEpsilon) ); - xPropertySet->setPropertyValue( SC_UNO_NULLDATE, uno::makeAny(aNullDate) ); - if (GetScImport().GetDocument()) - { - ScXMLImport::MutexGuard aGuard(GetScImport()); - ScDocOptions aDocOptions (GetScImport().GetDocument()->GetDocOptions()); - aDocOptions.SetYear2000(nYear2000); - GetScImport().GetDocument()->SetDocOptions(aDocOptions); - } - } + ScXMLImport::MutexGuard aGuard(GetScImport()); + ScDocOptions aDocOptions (GetScImport().GetDocument()->GetDocOptions()); + aDocOptions.SetYear2000(nYear2000); + GetScImport().GetDocument()->SetDocOptions(aDocOptions); } } @@ -143,19 +143,19 @@ ScXMLNullDateContext::ScXMLNullDateContext( ScXMLImport& rImport, ScXMLCalculationSettingsContext* pCalcSet) : ScXMLImportContext( rImport ) { - if ( rAttrList.is() ) + if ( !rAttrList.is() ) + return; + + auto aIter( rAttrList->find( XML_ELEMENT( TABLE, XML_DATE_VALUE ) ) ); + if (aIter != rAttrList->end()) { - auto aIter( rAttrList->find( XML_ELEMENT( TABLE, XML_DATE_VALUE ) ) ); - if (aIter != rAttrList->end()) - { - util::DateTime aDateTime; - ::sax::Converter::parseDateTime(aDateTime, aIter.toString()); - util::Date aDate; - aDate.Day = aDateTime.Day; - aDate.Month = aDateTime.Month; - aDate.Year = aDateTime.Year; - pCalcSet->SetNullDate(aDate); - } + util::DateTime aDateTime; + ::sax::Converter::parseDateTime(aDateTime, aIter.toString()); + util::Date aDate; + aDate.Day = aDateTime.Day; + aDate.Month = aDateTime.Month; + aDate.Year = aDateTime.Year; + pCalcSet->SetNullDate(aDate); } } @@ -168,23 +168,23 @@ ScXMLIterationContext::ScXMLIterationContext( ScXMLImport& rImport, ScXMLCalculationSettingsContext* pCalcSet) : ScXMLImportContext( rImport ) { - if ( rAttrList.is() ) + if ( !rAttrList.is() ) + return; + + for (auto &aIter : *rAttrList) { - for (auto &aIter : *rAttrList) + switch (aIter.getToken()) { - switch (aIter.getToken()) - { - case XML_ELEMENT( TABLE, XML_STATUS ): - if (IsXMLToken(aIter, XML_ENABLE)) - pCalcSet->SetIterationStatus(true); - break; - case XML_ELEMENT( TABLE, XML_STEPS ): - pCalcSet->SetIterationCount(aIter.toInt32()); - break; - case XML_ELEMENT( TABLE, XML_MAXIMUM_DIFFERENCE ): - pCalcSet->SetIterationEpsilon( aIter.toDouble() ); - break; - } + case XML_ELEMENT( TABLE, XML_STATUS ): + if (IsXMLToken(aIter, XML_ENABLE)) + pCalcSet->SetIterationStatus(true); + break; + case XML_ELEMENT( TABLE, XML_STEPS ): + pCalcSet->SetIterationCount(aIter.toInt32()); + break; + case XML_ELEMENT( TABLE, XML_MAXIMUM_DIFFERENCE ): + pCalcSet->SetIterationEpsilon( aIter.toDouble() ); + break; } } } diff --git a/sc/source/filter/xml/XMLCellRangeSourceContext.cxx b/sc/source/filter/xml/XMLCellRangeSourceContext.cxx index 936f565c93a6..70608c430cb9 100644 --- a/sc/source/filter/xml/XMLCellRangeSourceContext.cxx +++ b/sc/source/filter/xml/XMLCellRangeSourceContext.cxx @@ -40,50 +40,50 @@ ScXMLCellRangeSourceContext::ScXMLCellRangeSourceContext( ScMyImpCellRangeSource* pCellRangeSource ) : ScXMLImportContext( rImport ) { - if ( rAttrList.is() ) + if ( !rAttrList.is() ) + return; + + for (auto &aIter : *rAttrList) { - for (auto &aIter : *rAttrList) + switch (aIter.getToken()) { - switch (aIter.getToken()) + case XML_ELEMENT( TABLE, XML_NAME ): + pCellRangeSource->sSourceStr = aIter.toString(); + break; + case XML_ELEMENT( TABLE, XML_FILTER_NAME ): + pCellRangeSource->sFilterName = aIter.toString(); + break; + case XML_ELEMENT( TABLE, XML_FILTER_OPTIONS ): + pCellRangeSource->sFilterOptions = aIter.toString(); + break; + case XML_ELEMENT( XLINK, XML_HREF ): + pCellRangeSource->sURL = GetScImport().GetAbsoluteReference(aIter.toString()); + break; + case XML_ELEMENT( TABLE, XML_LAST_COLUMN_SPANNED ): + { + sal_Int32 nValue; + if (::sax::Converter::convertNumber( nValue, aIter.toString(), 1 )) + pCellRangeSource->nColumns = nValue; + else + pCellRangeSource->nColumns = 1; + } + break; + case XML_ELEMENT( TABLE, XML_LAST_ROW_SPANNED ): + { + sal_Int32 nValue; + if (::sax::Converter::convertNumber( nValue, aIter.toString(), 1 )) + pCellRangeSource->nRows = nValue; + else + pCellRangeSource->nRows = 1; + } + break; + case XML_ELEMENT( TABLE, XML_REFRESH_DELAY ): { - case XML_ELEMENT( TABLE, XML_NAME ): - pCellRangeSource->sSourceStr = aIter.toString(); - break; - case XML_ELEMENT( TABLE, XML_FILTER_NAME ): - pCellRangeSource->sFilterName = aIter.toString(); - break; - case XML_ELEMENT( TABLE, XML_FILTER_OPTIONS ): - pCellRangeSource->sFilterOptions = aIter.toString(); - break; - case XML_ELEMENT( XLINK, XML_HREF ): - pCellRangeSource->sURL = GetScImport().GetAbsoluteReference(aIter.toString()); - break; - case XML_ELEMENT( TABLE, XML_LAST_COLUMN_SPANNED ): - { - sal_Int32 nValue; - if (::sax::Converter::convertNumber( nValue, aIter.toString(), 1 )) - pCellRangeSource->nColumns = nValue; - else - pCellRangeSource->nColumns = 1; - } - break; - case XML_ELEMENT( TABLE, XML_LAST_ROW_SPANNED ): - { - sal_Int32 nValue; - if (::sax::Converter::convertNumber( nValue, aIter.toString(), 1 )) - pCellRangeSource->nRows = nValue; - else - pCellRangeSource->nRows = 1; - } - break; - case XML_ELEMENT( TABLE, XML_REFRESH_DELAY ): - { - double fTime; - if (::sax::Converter::convertDuration( fTime, aIter.toString() )) - pCellRangeSource->nRefresh = std::max( static_cast<sal_Int32>(fTime * 86400.0), sal_Int32(0) ); - } - break; + double fTime; + if (::sax::Converter::convertDuration( fTime, aIter.toString() )) + pCellRangeSource->nRefresh = std::max( static_cast<sal_Int32>(fTime * 86400.0), sal_Int32(0) ); } + break; } } } diff --git a/sc/source/filter/xml/XMLChangeTrackingExportHelper.cxx b/sc/source/filter/xml/XMLChangeTrackingExportHelper.cxx index 1efca32d0efe..4a8af8b60dcd 100644 --- a/sc/source/filter/xml/XMLChangeTrackingExportHelper.cxx +++ b/sc/source/filter/xml/XMLChangeTrackingExportHelper.cxx @@ -503,64 +503,64 @@ void ScChangeTrackingExportHelper::AddDeletionAttributes(const ScChangeActionDel break; } rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_POSITION, OUString::number(nPosition)); - if (pDelAction->GetType() != SC_CAT_DELETE_TABS) + if (pDelAction->GetType() == SC_CAT_DELETE_TABS) + return; + + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_TABLE, OUString::number(nStartSheet)); + if (!(pDelAction->IsMultiDelete() && !pDelAction->GetDx() && !pDelAction->GetDy())) + return; + + const ScChangeAction* p = pDelAction->GetNext(); + sal_Int32 nSlavesCount (1); + while (p) { - rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_TABLE, OUString::number(nStartSheet)); - if (pDelAction->IsMultiDelete() && !pDelAction->GetDx() && !pDelAction->GetDy()) + if (p->GetType() != pDelAction->GetType()) + break; + else { - const ScChangeAction* p = pDelAction->GetNext(); - sal_Int32 nSlavesCount (1); - while (p) + const ScChangeActionDel* pDel = static_cast<const ScChangeActionDel*>(p); + if ( (pDel->GetDx() > pDelAction->GetDx() || pDel->GetDy() > pDelAction->GetDy()) && + pDel->GetBigRange() == pDelAction->GetBigRange() ) { - if (p->GetType() != pDelAction->GetType()) - break; - else - { - const ScChangeActionDel* pDel = static_cast<const ScChangeActionDel*>(p); - if ( (pDel->GetDx() > pDelAction->GetDx() || pDel->GetDy() > pDelAction->GetDy()) && - pDel->GetBigRange() == pDelAction->GetBigRange() ) - { - ++nSlavesCount; - p = p->GetNext(); - } - else - break; - } + ++nSlavesCount; + p = p->GetNext(); } - - rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_MULTI_DELETION_SPANNED, OUString::number(nSlavesCount)); + else + break; } } + + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_MULTI_DELETION_SPANNED, OUString::number(nSlavesCount)); } void ScChangeTrackingExportHelper::WriteCutOffs(const ScChangeActionDel* pAction) { const ScChangeActionIns* pCutOffIns = pAction->GetCutOffInsert(); const ScChangeActionDelMoveEntry* pLinkMove = pAction->GetFirstMoveEntry(); - if (pCutOffIns || pLinkMove) + if (!(pCutOffIns || pLinkMove)) + return; + + SvXMLElementExport aCutOffsElem (rExport, XML_NAMESPACE_TABLE, XML_CUT_OFFS, true, true); + if (pCutOffIns) + { + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_ID, GetChangeID(pCutOffIns->GetActionNumber())); + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_POSITION, OUString::number(pAction->GetCutOffCount())); + SvXMLElementExport aInsertCutOffElem (rExport, XML_NAMESPACE_TABLE, XML_INSERTION_CUT_OFF, true, true); + } + while (pLinkMove) { - SvXMLElementExport aCutOffsElem (rExport, XML_NAMESPACE_TABLE, XML_CUT_OFFS, true, true); - if (pCutOffIns) + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_ID, GetChangeID(pLinkMove->GetAction()->GetActionNumber())); + if (pLinkMove->GetCutOffFrom() == pLinkMove->GetCutOffTo()) { - rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_ID, GetChangeID(pCutOffIns->GetActionNumber())); - rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_POSITION, OUString::number(pAction->GetCutOffCount())); - SvXMLElementExport aInsertCutOffElem (rExport, XML_NAMESPACE_TABLE, XML_INSERTION_CUT_OFF, true, true); + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_POSITION, OUString::number(pLinkMove->GetCutOffFrom())); } - while (pLinkMove) + else { - rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_ID, GetChangeID(pLinkMove->GetAction()->GetActionNumber())); - if (pLinkMove->GetCutOffFrom() == pLinkMove->GetCutOffTo()) - { - rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_POSITION, OUString::number(pLinkMove->GetCutOffFrom())); - } - else - { - rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_START_POSITION, OUString::number(pLinkMove->GetCutOffFrom())); - rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_END_POSITION, OUString::number(pLinkMove->GetCutOffTo())); - } - SvXMLElementExport aMoveCutOffElem (rExport, XML_NAMESPACE_TABLE, XML_MOVEMENT_CUT_OFF, true, true); - pLinkMove = pLinkMove->GetNext(); + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_START_POSITION, OUString::number(pLinkMove->GetCutOffFrom())); + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_END_POSITION, OUString::number(pLinkMove->GetCutOffTo())); } + SvXMLElementExport aMoveCutOffElem (rExport, XML_NAMESPACE_TABLE, XML_MOVEMENT_CUT_OFF, true, true); + pLinkMove = pLinkMove->GetNext(); } } @@ -652,45 +652,45 @@ void ScChangeTrackingExportHelper::WorkWithChangeAction(ScChangeAction* pAction) void ScChangeTrackingExportHelper::CollectAutoStyles() { - if (pChangeTrack) + if (!pChangeTrack) + return; + + sal_uInt32 nCount (pChangeTrack->GetActionMax()); + if (!nCount) + return; + + ScChangeAction* pAction = pChangeTrack->GetFirst(); + CollectActionAutoStyles(pAction); + ScChangeAction* pLastAction = pChangeTrack->GetLast(); + while (pAction != pLastAction) { - sal_uInt32 nCount (pChangeTrack->GetActionMax()); - if (nCount) - { - ScChangeAction* pAction = pChangeTrack->GetFirst(); - CollectActionAutoStyles(pAction); - ScChangeAction* pLastAction = pChangeTrack->GetLast(); - while (pAction != pLastAction) - { - pAction = pAction->GetNext(); - CollectActionAutoStyles(pAction); - } - pAction = pChangeTrack->GetFirstGenerated(); - while (pAction) - { - CollectActionAutoStyles(pAction); - pAction = pAction->GetNext(); - } - } + pAction = pAction->GetNext(); + CollectActionAutoStyles(pAction); + } + pAction = pChangeTrack->GetFirstGenerated(); + while (pAction) + { + CollectActionAutoStyles(pAction); + pAction = pAction->GetNext(); } } void ScChangeTrackingExportHelper::CollectAndWriteChanges() { - if (pChangeTrack) + if (!pChangeTrack) + return; + + SvXMLElementExport aCangeListElem(rExport, XML_NAMESPACE_TABLE, XML_TRACKED_CHANGES, true, true); { - SvXMLElementExport aCangeListElem(rExport, XML_NAMESPACE_TABLE, XML_TRACKED_CHANGES, true, true); + ScChangeAction* pAction = pChangeTrack->GetFirst(); + if (pAction) { - ScChangeAction* pAction = pChangeTrack->GetFirst(); - if (pAction) + WorkWithChangeAction(pAction); + ScChangeAction* pLastAction = pChangeTrack->GetLast(); + while (pAction != pLastAction) { + pAction = pAction->GetNext(); WorkWithChangeAction(pAction); - ScChangeAction* pLastAction = pChangeTrack->GetLast(); - while (pAction != pLastAction) - { - pAction = pAction->GetNext(); - WorkWithChangeAction(pAction); - } } } } diff --git a/sc/source/filter/xml/XMLChangeTrackingImportHelper.cxx b/sc/source/filter/xml/XMLChangeTrackingImportHelper.cxx index a9a7cb3f126c..dc1a93a7c913 100644 --- a/sc/source/filter/xml/XMLChangeTrackingImportHelper.cxx +++ b/sc/source/filter/xml/XMLChangeTrackingImportHelper.cxx @@ -531,46 +531,46 @@ void ScXMLChangeTrackingImportHelper::SetDeletionDependencies(ScMyDelAction* pAc OSL_FAIL("no cut off insert action"); } } - if (!pAction->aMoveCutOffs.empty()) + if (pAction->aMoveCutOffs.empty()) + return; + + OSL_ENSURE(((pAction->nActionType == SC_CAT_DELETE_COLS) || + (pAction->nActionType == SC_CAT_DELETE_ROWS) || + (pAction->nActionType == SC_CAT_DELETE_TABS)), "wrong action type"); + for (auto it = pAction->aMoveCutOffs.crbegin(); it != pAction->aMoveCutOffs.crend(); ++it) { - OSL_ENSURE(((pAction->nActionType == SC_CAT_DELETE_COLS) || - (pAction->nActionType == SC_CAT_DELETE_ROWS) || - (pAction->nActionType == SC_CAT_DELETE_TABS)), "wrong action type"); - for (auto it = pAction->aMoveCutOffs.crbegin(); it != pAction->aMoveCutOffs.crend(); ++it) + const ScMyMoveCutOff & rCutOff = *it; + ScChangeAction* pChangeAction = pTrack->GetAction(rCutOff.nID); + if (pChangeAction && (pChangeAction->GetType() == SC_CAT_MOVE)) { - const ScMyMoveCutOff & rCutOff = *it; - ScChangeAction* pChangeAction = pTrack->GetAction(rCutOff.nID); - if (pChangeAction && (pChangeAction->GetType() == SC_CAT_MOVE)) - { - ScChangeActionMove* pMoveAction = static_cast<ScChangeActionMove*>(pChangeAction); - if (pDelAct) - pDelAct->AddCutOffMove(pMoveAction, static_cast<sal_Int16>(rCutOff.nStartPosition), - static_cast<sal_Int16>(rCutOff.nEndPosition)); - } - else - { - OSL_FAIL("no cut off move action"); - } + ScChangeActionMove* pMoveAction = static_cast<ScChangeActionMove*>(pChangeAction); + if (pDelAct) + pDelAct->AddCutOffMove(pMoveAction, static_cast<sal_Int16>(rCutOff.nStartPosition), + static_cast<sal_Int16>(rCutOff.nEndPosition)); + } + else + { + OSL_FAIL("no cut off move action"); } - pAction->aMoveCutOffs.clear(); } + pAction->aMoveCutOffs.clear(); } void ScXMLChangeTrackingImportHelper::SetMovementDependencies(ScMyMoveAction* pAction, ScChangeActionMove* pMoveAct) { - if (!pAction->aGeneratedList.empty()) + if (pAction->aGeneratedList.empty()) + return; + + if (pAction->nActionType == SC_CAT_MOVE) { - if (pAction->nActionType == SC_CAT_MOVE) + if (pMoveAct) { - if (pMoveAct) + for (const ScMyGenerated & rGenerated : pAction->aGeneratedList) { - for (const ScMyGenerated & rGenerated : pAction->aGeneratedList) - { - OSL_ENSURE(rGenerated.nID, "a not inserted generated action"); - pMoveAct->SetDeletedInThis(rGenerated.nID, pTrack); - } - pAction->aGeneratedList.clear(); + OSL_ENSURE(rGenerated.nID, "a not inserted generated action"); + pMoveAct->SetDeletedInThis(rGenerated.nID, pTrack); } + pAction->aGeneratedList.clear(); } } } @@ -648,169 +648,169 @@ void ScXMLChangeTrackingImportHelper::SetDependencies(ScMyBaseAction* pAction) void ScXMLChangeTrackingImportHelper::SetNewCell(const ScMyContentAction* pAction) { ScChangeAction* pChangeAction = pTrack->GetAction(pAction->nActionNumber); - if (pChangeAction) + if (!pChangeAction) + return; + + assert(dynamic_cast<ScChangeActionContent*>(pChangeAction)); + ScChangeActionContent* pChangeActionContent = static_cast<ScChangeActionContent*>(pChangeAction); + if (!(pChangeActionContent->IsTopContent() && !pChangeActionContent->IsDeletedIn())) + return; + + sal_Int32 nCol, nRow, nTab, nCol2, nRow2, nTab2; + pAction->aBigRange.GetVars(nCol, nRow, nTab, nCol2, nRow2, nTab2); + if ((nCol >= 0) && (nCol <= pDoc->MaxCol()) && + (nRow >= 0) && (nRow <= pDoc->MaxRow()) && + (nTab >= 0) && (nTab <= MAXTAB)) { - assert(dynamic_cast<ScChangeActionContent*>(pChangeAction)); - ScChangeActionContent* pChangeActionContent = static_cast<ScChangeActionContent*>(pChangeAction); - if (pChangeActionContent->IsTopContent() && !pChangeActionContent->IsDeletedIn()) + ScAddress aAddress (static_cast<SCCOL>(nCol), + static_cast<SCROW>(nRow), + static_cast<SCTAB>(nTab)); + ScCellValue aCell; + aCell.assign(*pDoc, aAddress); + if (!aCell.isEmpty()) { - sal_Int32 nCol, nRow, nTab, nCol2, nRow2, nTab2; - pAction->aBigRange.GetVars(nCol, nRow, nTab, nCol2, nRow2, nTab2); - if ((nCol >= 0) && (nCol <= pDoc->MaxCol()) && - (nRow >= 0) && (nRow <= pDoc->MaxRow()) && - (nTab >= 0) && (nTab <= MAXTAB)) + ScCellValue aNewCell; + if (aCell.meType != CELLTYPE_FORMULA) { - ScAddress aAddress (static_cast<SCCOL>(nCol), - static_cast<SCROW>(nRow), - static_cast<SCTAB>(nTab)); - ScCellValue aCell; - aCell.assign(*pDoc, aAddress); - if (!aCell.isEmpty()) - { - ScCellValue aNewCell; - if (aCell.meType != CELLTYPE_FORMULA) - { - aNewCell = aCell; - pChangeActionContent->SetNewCell(aNewCell, pDoc, EMPTY_OUSTRING); - pChangeActionContent->SetNewValue(aCell, pDoc); - } - else - { - ScMatrixMode nMatrixFlag = aCell.mpFormula->GetMatrixFlag(); - OUString sFormula; - // With GRAM_ODFF reference detection is faster on compilation. - /* FIXME: new cell should be created with a clone - * of the token array instead. Any reason why this - * wasn't done? */ - aCell.mpFormula->GetFormula(sFormula, formula::FormulaGrammar::GRAM_ODFF); - - // #i87826# [Collaboration] Rejected move destroys formulas - // FIXME: adjust ScFormulaCell::GetFormula(), so that the right formula string - // is returned and no further string handling is necessary - OUString sFormula2; - if ( nMatrixFlag != ScMatrixMode::NONE ) - { - sFormula2 = sFormula.copy( 2, sFormula.getLength() - 3 ); - } - else - { - sFormula2 = sFormula.copy( 1 ); - } - - aNewCell.meType = CELLTYPE_FORMULA; - aNewCell.mpFormula = new ScFormulaCell(pDoc, aAddress, sFormula2,formula::FormulaGrammar::GRAM_ODFF, nMatrixFlag); - if (nMatrixFlag == ScMatrixMode::Formula) - { - SCCOL nCols; - SCROW nRows; - aCell.mpFormula->GetMatColsRows(nCols, nRows); - aNewCell.mpFormula->SetMatColsRows(nCols, nRows); - } - aNewCell.mpFormula->SetInChangeTrack(true); - pChangeActionContent->SetNewCell(aNewCell, pDoc, EMPTY_OUSTRING); - // #i40704# don't overwrite the formula string via SetNewValue() - } - } + aNewCell = aCell; + pChangeActionContent->SetNewCell(aNewCell, pDoc, EMPTY_OUSTRING); + pChangeActionContent->SetNewValue(aCell, pDoc); } else { - OSL_FAIL("wrong cell position"); + ScMatrixMode nMatrixFlag = aCell.mpFormula->GetMatrixFlag(); + OUString sFormula; + // With GRAM_ODFF reference detection is faster on compilation. + /* FIXME: new cell should be created with a clone + * of the token array instead. Any reason why this + * wasn't done? */ + aCell.mpFormula->GetFormula(sFormula, formula::FormulaGrammar::GRAM_ODFF); + + // #i87826# [Collaboration] Rejected move destroys formulas + // FIXME: adjust ScFormulaCell::GetFormula(), so that the right formula string + // is returned and no further string handling is necessary + OUString sFormula2; + if ( nMatrixFlag != ScMatrixMode::NONE ) + { + sFormula2 = sFormula.copy( 2, sFormula.getLength() - 3 ); + } + else + { + sFormula2 = sFormula.copy( 1 ); + } + + aNewCell.meType = CELLTYPE_FORMULA; + aNewCell.mpFormula = new ScFormulaCell(pDoc, aAddress, sFormula2,formula::FormulaGrammar::GRAM_ODFF, nMatrixFlag); + if (nMatrixFlag == ScMatrixMode::Formula) + { + SCCOL nCols; + SCROW nRows; + aCell.mpFormula->GetMatColsRows(nCols, nRows); + aNewCell.mpFormula->SetMatColsRows(nCols, nRows); + } + aNewCell.mpFormula->SetInChangeTrack(true); + pChangeActionContent->SetNewCell(aNewCell, pDoc, EMPTY_OUSTRING); + // #i40704# don't overwrite the formula string via SetNewValue() } } } + else + { + OSL_FAIL("wrong cell position"); + } } void ScXMLChangeTrackingImportHelper::CreateChangeTrack(ScDocument* pTempDoc) { pDoc = pTempDoc; - if (pDoc) + if (!pDoc) + return; + + pTrack = new ScChangeTrack(pDoc, aUsers); + // old files didn't store nanoseconds, disable until encountered + pTrack->SetTimeNanoSeconds( false ); + + for (const auto & rAction : aActions) { - pTrack = new ScChangeTrack(pDoc, aUsers); - // old files didn't store nanoseconds, disable until encountered - pTrack->SetTimeNanoSeconds( false ); + std::unique_ptr<ScChangeAction> pAction; - for (const auto & rAction : aActions) + switch (rAction->nActionType) { - std::unique_ptr<ScChangeAction> pAction; - - switch (rAction->nActionType) + case SC_CAT_INSERT_COLS: + case SC_CAT_INSERT_ROWS: + case SC_CAT_INSERT_TABS: { - case SC_CAT_INSERT_COLS: - case SC_CAT_INSERT_ROWS: - case SC_CAT_INSERT_TABS: - { - pAction = CreateInsertAction(static_cast<ScMyInsAction*>(rAction.get())); - } - break; - case SC_CAT_DELETE_COLS: - case SC_CAT_DELETE_ROWS: - case SC_CAT_DELETE_TABS: - { - ScMyDelAction* pDelAct = static_cast<ScMyDelAction*>(rAction.get()); - pAction = CreateDeleteAction(pDelAct); - CreateGeneratedActions(pDelAct->aGeneratedList); - } - break; - case SC_CAT_MOVE: - { - ScMyMoveAction* pMovAct = static_cast<ScMyMoveAction*>(rAction.get()); - pAction = CreateMoveAction(pMovAct); - CreateGeneratedActions(pMovAct->aGeneratedList); - } - break; - case SC_CAT_CONTENT: - { - pAction = CreateContentAction(static_cast<ScMyContentAction*>(rAction.get())); - } - break; - case SC_CAT_REJECT: - { - pAction = CreateRejectionAction(static_cast<ScMyRejAction*>(rAction.get())); - } - break; - default: - { - // added to avoid warnings - } + pAction = CreateInsertAction(static_cast<ScMyInsAction*>(rAction.get())); } - - if (pAction) - pTrack->AppendLoaded(std::move(pAction)); - else + break; + case SC_CAT_DELETE_COLS: + case SC_CAT_DELETE_ROWS: + case SC_CAT_DELETE_TABS: + { + ScMyDelAction* pDelAct = static_cast<ScMyDelAction*>(rAction.get()); + pAction = CreateDeleteAction(pDelAct); + CreateGeneratedActions(pDelAct->aGeneratedList); + } + break; + case SC_CAT_MOVE: { - OSL_FAIL("no action"); + ScMyMoveAction* pMovAct = static_cast<ScMyMoveAction*>(rAction.get()); + pAction = CreateMoveAction(pMovAct); + CreateGeneratedActions(pMovAct->aGeneratedList); + } + break; + case SC_CAT_CONTENT: + { + pAction = CreateContentAction(static_cast<ScMyContentAction*>(rAction.get())); + } + break; + case SC_CAT_REJECT: + { + pAction = CreateRejectionAction(static_cast<ScMyRejAction*>(rAction.get())); + } + break; + default: + { + // added to avoid warnings } } - if (pTrack->GetLast()) - pTrack->SetActionMax(pTrack->GetLast()->GetActionNumber()); - auto aItr = aActions.begin(); - while (aItr != aActions.end()) + if (pAction) + pTrack->AppendLoaded(std::move(pAction)); + else { - SetDependencies(aItr->get()); - - if ((*aItr)->nActionType == SC_CAT_CONTENT) - ++aItr; - else - aItr = aActions.erase(aItr); + OSL_FAIL("no action"); } + } + if (pTrack->GetLast()) + pTrack->SetActionMax(pTrack->GetLast()->GetActionNumber()); - for (const auto& rxAction : aActions) - { - OSL_ENSURE(rxAction->nActionType == SC_CAT_CONTENT, "wrong action type"); - SetNewCell(static_cast<ScMyContentAction*>(rxAction.get())); - } - aActions.clear(); - if (aProtect.hasElements()) - pTrack->SetProtection(aProtect); - else if (pDoc->GetChangeTrack() && pDoc->GetChangeTrack()->IsProtected()) - pTrack->SetProtection(pDoc->GetChangeTrack()->GetProtection()); + auto aItr = aActions.begin(); + while (aItr != aActions.end()) + { + SetDependencies(aItr->get()); - if ( pTrack->GetLast() ) - pTrack->SetLastSavedActionNumber(pTrack->GetLast()->GetActionNumber()); + if ((*aItr)->nActionType == SC_CAT_CONTENT) + ++aItr; + else + aItr = aActions.erase(aItr); + } - pDoc->SetChangeTrack(std::unique_ptr<ScChangeTrack>(pTrack)); + for (const auto& rxAction : aActions) + { + OSL_ENSURE(rxAction->nActionType == SC_CAT_CONTENT, "wrong action type"); + SetNewCell(static_cast<ScMyContentAction*>(rxAction.get())); } + aActions.clear(); + if (aProtect.hasElements()) + pTrack->SetProtection(aProtect); + else if (pDoc->GetChangeTrack() && pDoc->GetChangeTrack()->IsProtected()) + pTrack->SetProtection(pDoc->GetChangeTrack()->GetProtection()); + + if ( pTrack->GetLast() ) + pTrack->SetLastSavedActionNumber(pTrack->GetLast()->GetActionNumber()); + + pDoc->SetChangeTrack(std::unique_ptr<ScChangeTrack>(pTrack)); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/filter/xml/XMLConsolidationContext.cxx b/sc/source/filter/xml/XMLConsolidationContext.cxx index 71dafb482636..e32db595b494 100644 --- a/sc/source/filter/xml/XMLConsolidationContext.cxx +++ b/sc/source/filter/xml/XMLConsolidationContext.cxx @@ -37,32 +37,32 @@ ScXMLConsolidationContext::ScXMLConsolidationContext( bTargetAddr(false) { rImport.LockSolarMutex(); - if ( rAttrList.is() ) + if ( !rAttrList.is() ) + return; + + for (auto &aIter : *rAttrList) { - for (auto &aIter : *rAttrList) + switch (aIter.getToken()) { - switch (aIter.getToken()) - { - case XML_ELEMENT( TABLE, XML_FUNCTION ): - eFunction = ScXMLConverter::GetSubTotalFuncFromString( aIter.toString() ); - break; - case XML_ELEMENT( TABLE, XML_SOURCE_CELL_RANGE_ADDRESSES ): - sSourceList = aIter.toString(); - break; - case XML_ELEMENT( TABLE, XML_TARGET_CELL_ADDRESS ): - { - sal_Int32 nOffset(0); - bTargetAddr = ScRangeStringConverter::GetAddressFromString( - aTargetAddr, aIter.toString(), GetScImport().GetDocument(), ::formula::FormulaGrammar::CONV_OOO, nOffset ); - } - break; - case XML_ELEMENT( TABLE, XML_USE_LABEL ): - sUseLabel = aIter.toString(); - break; - case XML_ELEMENT( TABLE, XML_LINK_TO_SOURCE_DATA ): - bLinkToSource = IsXMLToken( aIter, XML_TRUE ); + case XML_ELEMENT( TABLE, XML_FUNCTION ): + eFunction = ScXMLConverter::GetSubTotalFuncFromString( aIter.toString() ); + break; + case XML_ELEMENT( TABLE, XML_SOURCE_CELL_RANGE_ADDRESSES ): + sSourceList = aIter.toString(); + break; + case XML_ELEMENT( TABLE, XML_TARGET_CELL_ADDRESS ): + { + sal_Int32 nOffset(0); + bTargetAddr = ScRangeStringConverter::GetAddressFromString( + aTargetAddr, aIter.toString(), GetScImport().GetDocument(), ::formula::FormulaGrammar::CONV_OOO, nOffset ); + } break; - } + case XML_ELEMENT( TABLE, XML_USE_LABEL ): + sUseLabel = aIter.toString(); + break; + case XML_ELEMENT( TABLE, XML_LINK_TO_SOURCE_DATA ): + bLinkToSource = IsXMLToken( aIter, XML_TRUE ); + break; } } } @@ -74,46 +74,46 @@ ScXMLConsolidationContext::~ScXMLConsolidationContext() void SAL_CALL ScXMLConsolidationContext::endFastElement( sal_Int32 /*nElement*/ ) { - if (bTargetAddr) - { - std::unique_ptr<ScConsolidateParam> pConsParam(new ScConsolidateParam); - pConsParam->nCol = aTargetAddr.Col(); - pConsParam->nRow = aTargetAddr.Row(); - pConsParam->nTab = aTargetAddr.Tab(); - pConsParam->eFunction = eFunction; + if (!bTargetAddr) + return; - sal_uInt16 nCount = static_cast<sal_uInt16>(std::min( ScRangeStringConverter::GetTokenCount( sSourceList ), sal_Int32(0xFFFF) )); - if( nCount ) + std::unique_ptr<ScConsolidateParam> pConsParam(new ScConsolidateParam); + pConsParam->nCol = aTargetAddr.Col(); + pConsParam->nRow = aTargetAddr.Row(); + pConsParam->nTab = aTargetAddr.Tab(); + pConsParam->eFunction = eFunction; + + sal_uInt16 nCount = static_cast<sal_uInt16>(std::min( ScRangeStringConverter::GetTokenCount( sSourceList ), sal_Int32(0xFFFF) )); + if( nCount ) + { + std::unique_ptr<ScArea[]> ppAreas(new ScArea[ nCount ]); + sal_Int32 nOffset = 0; + sal_uInt16 nIndex; + for( nIndex = 0; nIndex < nCount; ++nIndex ) { - std::unique_ptr<ScArea[]> ppAreas(new ScArea[ nCount ]); - sal_Int32 nOffset = 0; - sal_uInt16 nIndex; - for( nIndex = 0; nIndex < nCount; ++nIndex ) + if ( !ScRangeStringConverter::GetAreaFromString( + ppAreas[ nIndex ], sSourceList, GetScImport().GetDocument(), ::formula::FormulaGrammar::CONV_OOO, nOffset ) ) { - if ( !ScRangeStringConverter::GetAreaFromString( - ppAreas[ nIndex ], sSourceList, GetScImport().GetDocument(), ::formula::FormulaGrammar::CONV_OOO, nOffset ) ) - { - //! handle error - } + //! handle error } - - pConsParam->SetAreas( std::move(ppAreas), nCount ); } - pConsParam->bByCol = pConsParam->bByRow = false; - if( IsXMLToken(sUseLabel, XML_COLUMN ) ) - pConsParam->bByCol = true; - else if( IsXMLToken( sUseLabel, XML_ROW ) ) - pConsParam->bByRow = true; - else if( IsXMLToken( sUseLabel, XML_BOTH ) ) - pConsParam->bByCol = pConsParam->bByRow = true; + pConsParam->SetAreas( std::move(ppAreas), nCount ); + } + + pConsParam->bByCol = pConsParam->bByRow = false; + if( IsXMLToken(sUseLabel, XML_COLUMN ) ) + pConsParam->bByCol = true; + else if( IsXMLToken( sUseLabel, XML_ROW ) ) + pConsParam->bByRow = true; + else if( IsXMLToken( sUseLabel, XML_BOTH ) ) + pConsParam->bByCol = pConsParam->bByRow = true; - pConsParam->bReferenceData = bLinkToSource; + pConsParam->bReferenceData = bLinkToSource; - ScDocument* pDoc = GetScImport().GetDocument(); - if( pDoc ) - pDoc->SetConsolidateDlgData( std::move(pConsParam) ); - } + ScDocument* pDoc = GetScImport().GetDocument(); + if( pDoc ) + pDoc->SetConsolidateDlgData( std::move(pConsParam) ); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/filter/xml/XMLConverter.cxx b/sc/source/filter/xml/XMLConverter.cxx index 8f288b6b02b9..004479c7a2c6 100644 --- a/sc/source/filter/xml/XMLConverter.cxx +++ b/sc/source/filter/xml/XMLConverter.cxx @@ -543,69 +543,70 @@ void ScXMLConditionHelper::parseCondition( const sal_Unicode* pcBegin = rAttribute.getStr(); const sal_Unicode* pcString = pcBegin + nStartIndex; const sal_Unicode* pcEnd = pcBegin + rAttribute.getLength(); - if( const ScXMLConditionInfo* pCondInfo = lclGetConditionInfo( pcString, pcEnd ) ) + const ScXMLConditionInfo* pCondInfo = lclGetConditionInfo( pcString, pcEnd ); + if( !pCondInfo ) + return; + + // insert default values into parse result (may be changed below) + rParseResult.meValidation = pCondInfo->meValidation; + rParseResult.meOperator = pCondInfo->meOperator; + // continue parsing dependent on token type + switch( pCondInfo->meType ) { - // insert default values into parse result (may be changed below) - rParseResult.meValidation = pCondInfo->meValidation; - rParseResult.meOperator = pCondInfo->meOperator; - // continue parsing dependent on token type - switch( pCondInfo->meType ) - { - case XML_COND_TYPE_KEYWORD: - // nothing specific has to follow, success - rParseResult.meToken = pCondInfo->meToken; - break; + case XML_COND_TYPE_KEYWORD: + // nothing specific has to follow, success + rParseResult.meToken = pCondInfo->meToken; + break; - case XML_COND_TYPE_COMPARISON: - // format is <condition>()<operator><expression> - if( lclSkipEmptyParentheses( pcString, pcEnd ) ) + case XML_COND_TYPE_COMPARISON: + // format is <condition>()<operator><expression> + if( lclSkipEmptyParentheses( pcString, pcEnd ) ) + { + rParseResult.meOperator = lclGetConditionOperator( pcString, pcEnd ); + if( rParseResult.meOperator != sheet::ConditionOperator_NONE ) { - rParseResult.meOperator = lclGetConditionOperator( pcString, pcEnd ); - if( rParseResult.meOperator != sheet::ConditionOperator_NONE ) + lclSkipWhitespace( pcString, pcEnd ); + if( pcString < pcEnd ) { - lclSkipWhitespace( pcString, pcEnd ); - if( pcString < pcEnd ) - { - rParseResult.meToken = pCondInfo->meToken; - // comparison must be at end of attribute, remaining text is the formula - rParseResult.maOperand1 = OUString( pcString, static_cast< sal_Int32 >( pcEnd - pcString ) ); - } + rParseResult.meToken = pCondInfo->meToken; + // comparison must be at end of attribute, remaining text is the formula + rParseResult.maOperand1 = OUString( pcString, static_cast< sal_Int32 >( pcEnd - pcString ) ); } } - break; + } + break; + + case XML_COND_TYPE_FUNCTION0: + // format is <condition>() + if( lclSkipEmptyParentheses( pcString, pcEnd ) ) + rParseResult.meToken = pCondInfo->meToken; + break; - case XML_COND_TYPE_FUNCTION0: - // format is <condition>() - if( lclSkipEmptyParentheses( pcString, pcEnd ) ) + case XML_COND_TYPE_FUNCTION1: + // format is <condition>(<expression>) + if( (pcString < pcEnd) && (*pcString == '(') ) + { + rParseResult.maOperand1 = getExpression( ++pcString, pcEnd, ')' ); + if( !rParseResult.maOperand1.isEmpty() ) rParseResult.meToken = pCondInfo->meToken; - break; + } + break; - case XML_COND_TYPE_FUNCTION1: - // format is <condition>(<expression>) - if( (pcString < pcEnd) && (*pcString == '(') ) + case XML_COND_TYPE_FUNCTION2: + // format is <condition>(<expression1>,<expression2>) + if( (pcString < pcEnd) && (*pcString == '(') ) + { + rParseResult.maOperand1 = getExpression( ++pcString, pcEnd, ',' ); + if( !rParseResult.maOperand1.isEmpty() ) { - rParseResult.maOperand1 = getExpression( ++pcString, pcEnd, ')' ); - if( !rParseResult.maOperand1.isEmpty() ) + rParseResult.maOperand2 = getExpression( pcString, pcEnd, ')' ); + if( !rParseResult.maOperand2.isEmpty() ) rParseResult.meToken = pCondInfo->meToken; } - break; - - case XML_COND_TYPE_FUNCTION2: - // format is <condition>(<expression1>,<expression2>) - if( (pcString < pcEnd) && (*pcString == '(') ) - { - rParseResult.maOperand1 = getExpression( ++pcString, pcEnd, ',' ); - if( !rParseResult.maOperand1.isEmpty() ) - { - rParseResult.maOperand2 = getExpression( pcString, pcEnd, ')' ); - if( !rParseResult.maOperand2.isEmpty() ) - rParseResult.meToken = pCondInfo->meToken; - } - } - break; - } - rParseResult.mnEndIndex = static_cast< sal_Int32 >( pcString - pcBegin ); + } + break; } + rParseResult.mnEndIndex = static_cast< sal_Int32 >( pcString - pcBegin ); } OUString ScXMLConditionHelper::getExpression( const sal_Unicode*& rpcString, const sal_Unicode* pcEnd, sal_Unicode cEndChar ) diff --git a/sc/source/filter/xml/XMLDDELinksContext.cxx b/sc/source/filter/xml/XMLDDELinksContext.cxx index 592197e5d39d..7bbf78d60fe2 100644 --- a/sc/source/filter/xml/XMLDDELinksContext.cxx +++ b/sc/source/filter/xml/XMLDDELinksContext.cxx @@ -126,51 +126,51 @@ void ScXMLDDELinkContext::AddRowsToTable(const sal_Int32 nRowsP) void SAL_CALL ScXMLDDELinkContext::endFastElement( sal_Int32 /*nElement*/ ) { ScDocument* pDoc = GetScImport().GetDocument(); - if (nPosition > -1 && nColumns && nRows) + if (!(nPosition > -1 && nColumns && nRows)) + return; + + bool bSizeMatch = (static_cast<size_t>(nColumns * nRows) == aDDELinkTable.size()); + OSL_ENSURE( bSizeMatch, "ScXMLDDELinkContext::EndElement: matrix dimension doesn't match cells count"); + // Excel writes bad ODF in that it does not write the + // table:number-columns-repeated attribute of the + // <table:table-column> element, but apparently uses the number of + // <table:table-cell> elements within a <table:table-row> element to + // determine the column count instead. Be lenient ... + if (!bSizeMatch && nColumns == 1) { - bool bSizeMatch = (static_cast<size_t>(nColumns * nRows) == aDDELinkTable.size()); - OSL_ENSURE( bSizeMatch, "ScXMLDDELinkContext::EndElement: matrix dimension doesn't match cells count"); - // Excel writes bad ODF in that it does not write the - // table:number-columns-repeated attribute of the - // <table:table-column> element, but apparently uses the number of - // <table:table-cell> elements within a <table:table-row> element to - // determine the column count instead. Be lenient ... - if (!bSizeMatch && nColumns == 1) - { - nColumns = aDDELinkTable.size() / nRows; - OSL_ENSURE( static_cast<size_t>(nColumns * nRows) == aDDELinkTable.size(), - "ScXMLDDELinkContext::EndElement: adapted matrix dimension doesn't match either"); - } - ScMatrixRef pMatrix = new ScMatrix(static_cast<SCSIZE>(nColumns), static_cast<SCSIZE>(nRows), 0.0); - sal_Int32 nCol(0); - sal_Int32 nRow(-1); - sal_Int32 nIndex(0); + nColumns = aDDELinkTable.size() / nRows; + OSL_ENSURE( static_cast<size_t>(nColumns * nRows) == aDDELinkTable.size(), + "ScXMLDDELinkContext::EndElement: adapted matrix dimension doesn't match either"); + } + ScMatrixRef pMatrix = new ScMatrix(static_cast<SCSIZE>(nColumns), static_cast<SCSIZE>(nRows), 0.0); + sal_Int32 nCol(0); + sal_Int32 nRow(-1); + sal_Int32 nIndex(0); - svl::SharedStringPool& rPool = pDoc->GetSharedStringPool(); - for (const auto& rDDELinkCell : aDDELinkTable) + svl::SharedStringPool& rPool = pDoc->GetSharedStringPool(); + for (const auto& rDDELinkCell : aDDELinkTable) + { + if (nIndex % nColumns == 0) { - if (nIndex % nColumns == 0) - { - ++nRow; - nCol = 0; - } - else - ++nCol; - - SCSIZE nScCol( static_cast< SCSIZE >( nCol ) ); - SCSIZE nScRow( static_cast< SCSIZE >( nRow ) ); - if( rDDELinkCell.bEmpty ) - pMatrix->PutEmpty( nScCol, nScRow ); - else if( rDDELinkCell.bString ) - pMatrix->PutString(rPool.intern(rDDELinkCell.sValue), nScCol, nScRow); - else - pMatrix->PutDouble( rDDELinkCell.fValue, nScCol, nScRow ); - - ++nIndex; + ++nRow; + nCol = 0; } + else + ++nCol; + + SCSIZE nScCol( static_cast< SCSIZE >( nCol ) ); + SCSIZE nScRow( static_cast< SCSIZE >( nRow ) ); + if( rDDELinkCell.bEmpty ) + pMatrix->PutEmpty( nScCol, nScRow ); + else if( rDDELinkCell.bString ) + pMatrix->PutString(rPool.intern(rDDELinkCell.sValue), nScCol, nScRow); + else + pMatrix->PutDouble( rDDELinkCell.fValue, nScCol, nScRow ); - GetScImport().GetDocument()->SetDdeLinkResultMatrix( static_cast< sal_uInt16 >( nPosition ), pMatrix ); + ++nIndex; } + + GetScImport().GetDocument()->SetDdeLinkResultMatrix( static_cast< sal_uInt16 >( nPosition ), pMatrix ); } ScXMLDDESourceContext::ScXMLDDESourceContext( ScXMLImport& rImport, @@ -179,30 +179,30 @@ ScXMLDDESourceContext::ScXMLDDESourceContext( ScXMLImport& rImport, ScXMLImportContext( rImport ), pDDELink(pTempDDELink) { - if ( rAttrList.is() ) + if ( !rAttrList.is() ) + return; + + for (auto &aIter : *rAttrList) { - for (auto &aIter : *rAttrList) + switch (aIter.getToken()) { - switch (aIter.getToken()) - { - case XML_ELEMENT( OFFICE, XML_DDE_APPLICATION ): - pDDELink->SetApplication(aIter.toString()); - break; - case XML_ELEMENT( OFFICE, XML_DDE_TOPIC ): - pDDELink->SetTopic(aIter.toString()); - break; - case XML_ELEMENT( OFFICE, XML_DDE_ITEM ): - pDDELink->SetItem(aIter.toString()); - break; - case XML_ELEMENT( TABLE, XML_CONVERSION_MODE ): - if (IsXMLToken(aIter, XML_INTO_ENGLISH_NUMBER)) - pDDELink->SetMode(SC_DDE_ENGLISH); - else if (IsXMLToken(aIter, XML_KEEP_TEXT)) - pDDELink->SetMode(SC_DDE_TEXT); - else - pDDELink->SetMode(SC_DDE_DEFAULT); - break; - } + case XML_ELEMENT( OFFICE, XML_DDE_APPLICATION ): + pDDELink->SetApplication(aIter.toString()); + break; + case XML_ELEMENT( OFFICE, XML_DDE_TOPIC ): + pDDELink->SetTopic(aIter.toString()); + break; + case XML_ELEMENT( OFFICE, XML_DDE_ITEM ): + pDDELink->SetItem(aIter.toString()); + break; + case XML_ELEMENT( TABLE, XML_CONVERSION_MODE ): + if (IsXMLToken(aIter, XML_INTO_ENGLISH_NUMBER)) + pDDELink->SetMode(SC_DDE_ENGLISH); + else if (IsXMLToken(aIter, XML_KEEP_TEXT)) + pDDELink->SetMode(SC_DDE_TEXT); + else + pDDELink->SetMode(SC_DDE_DEFAULT); + break; } } } @@ -319,32 +319,32 @@ ScXMLDDECellContext::ScXMLDDECellContext( ScXMLImport& rImport, bEmpty(true), pDDELink(pTempDDELink) { - if ( rAttrList.is() ) + if ( !rAttrList.is() ) + return; + + for (auto &aIter : *rAttrList) { - for (auto &aIter : *rAttrList) + switch (aIter.getToken()) { - switch (aIter.getToken()) - { - case XML_ELEMENT( OFFICE, XML_VALUE_TYPE ): - if (IsXMLToken(aIter, XML_STRING)) - bString = true; - else - bString = false; - break; - case XML_ELEMENT( OFFICE, XML_STRING_VALUE ): - sValue = aIter.toString(); - bEmpty = false; - bString2 = true; - break; - case XML_ELEMENT( OFFICE, XML_VALUE ): - fValue = aIter.toDouble(); - bEmpty = false; - bString2 = false; - break; - case XML_ELEMENT( TABLE, XML_NUMBER_COLUMNS_REPEATED ): - nCells = aIter.toInt32(); - break; - } + case XML_ELEMENT( OFFICE, XML_VALUE_TYPE ): + if (IsXMLToken(aIter, XML_STRING)) + bString = true; + else + bString = false; + break; + case XML_ELEMENT( OFFICE, XML_STRING_VALUE ): + sValue = aIter.toString(); + bEmpty = false; + bString2 = true; + break; + case XML_ELEMENT( OFFICE, XML_VALUE ): + fValue = aIter.toDouble(); + bEmpty = false; + bString2 = false; + break; + case XML_ELEMENT( TABLE, XML_NUMBER_COLUMNS_REPEATED ): + nCells = aIter.toInt32(); + break; } } } diff --git a/sc/source/filter/xml/XMLDetectiveContext.cxx b/sc/source/filter/xml/XMLDetectiveContext.cxx index 3d62ce7076c9..90de30f44c77 100644 --- a/sc/source/filter/xml/XMLDetectiveContext.cxx +++ b/sc/source/filter/xml/XMLDetectiveContext.cxx @@ -97,32 +97,32 @@ ScXMLDetectiveHighlightedContext::ScXMLDetectiveHighlightedContext( aDetectiveObj(), bValid( false ) { - if ( rAttrList.is() ) + if ( !rAttrList.is() ) + return; + + for (auto &aIter : *rAttrList) { - for (auto &aIter : *rAttrList) + switch (aIter.getToken()) { - switch (aIter.getToken()) + case XML_ELEMENT( TABLE, XML_CELL_RANGE_ADDRESS ): { - case XML_ELEMENT( TABLE, XML_CELL_RANGE_ADDRESS ): - { - sal_Int32 nOffset(0); - ScXMLImport::MutexGuard aGuard(GetScImport()); - bValid = ScRangeStringConverter::GetRangeFromString( aDetectiveObj.aSourceRange, aIter.toString(), GetScImport().GetDocument(), ::formula::FormulaGrammar::CONV_OOO, nOffset ); - } - break; - case XML_ELEMENT( TABLE, XML_DIRECTION ): - aDetectiveObj.eObjType = ScXMLConverter::GetDetObjTypeFromString( aIter.toString() ); - break; - case XML_ELEMENT( TABLE, XML_CONTAINS_ERROR ): - aDetectiveObj.bHasError = IsXMLToken(aIter, XML_TRUE); - break; - case XML_ELEMENT( TABLE, XML_MARKED_INVALID ): - { - if (IsXMLToken(aIter, XML_TRUE)) - aDetectiveObj.eObjType = SC_DETOBJ_CIRCLE; - } - break; + sal_Int32 nOffset(0); + ScXMLImport::MutexGuard aGuard(GetScImport()); + bValid = ScRangeStringConverter::GetRangeFromString( aDetectiveObj.aSourceRange, aIter.toString(), GetScImport().GetDocument(), ::formula::FormulaGrammar::CONV_OOO, nOffset ); + } + break; + case XML_ELEMENT( TABLE, XML_DIRECTION ): + aDetectiveObj.eObjType = ScXMLConverter::GetDetObjTypeFromString( aIter.toString() ); + break; + case XML_ELEMENT( TABLE, XML_CONTAINS_ERROR ): + aDetectiveObj.bHasError = IsXMLToken(aIter, XML_TRUE); + break; + case XML_ELEMENT( TABLE, XML_MARKED_INVALID ): + { + if (IsXMLToken(aIter, XML_TRUE)) + aDetectiveObj.eObjType = SC_DETOBJ_CIRCLE; } + break; } } } diff --git a/sc/source/filter/xml/XMLExportDDELinks.cxx b/sc/source/filter/xml/XMLExportDDELinks.cxx index 9d2ef95b64bc..c5999a7e2294 100644 --- a/sc/source/filter/xml/XMLExportDDELinks.cxx +++ b/sc/source/filter/xml/XMLExportDDELinks.cxx @@ -116,46 +116,46 @@ void ScXMLExportDDELinks::WriteTable(const sal_Int32 nPos) void ScXMLExportDDELinks::WriteDDELinks(const uno::Reference<sheet::XSpreadsheetDocument>& xSpreadDoc) { uno::Reference <beans::XPropertySet> xPropertySet (xSpreadDoc, uno::UNO_QUERY); - if (xPropertySet.is()) + if (!xPropertySet.is()) + return; + + uno::Reference<container::XIndexAccess> xIndex(xPropertySet->getPropertyValue(SC_UNO_DDELINKS), uno::UNO_QUERY); + if (!xIndex.is()) + return; + + sal_Int32 nCount = xIndex->getCount(); + if (!nCount) + return; + + SvXMLElementExport aElemDDEs(rExport, XML_NAMESPACE_TABLE, XML_DDE_LINKS, true, true); + for (sal_Int32 nDDELink = 0; nDDELink < nCount; ++nDDELink) { - uno::Reference<container::XIndexAccess> xIndex(xPropertySet->getPropertyValue(SC_UNO_DDELINKS), uno::UNO_QUERY); - if (xIndex.is()) + uno::Reference<sheet::XDDELink> xDDELink(xIndex->getByIndex(nDDELink), uno::UNO_QUERY); + if (xDDELink.is()) { - sal_Int32 nCount = xIndex->getCount(); - if (nCount) + SvXMLElementExport aElemDDE(rExport, XML_NAMESPACE_TABLE, XML_DDE_LINK, true, true); { - SvXMLElementExport aElemDDEs(rExport, XML_NAMESPACE_TABLE, XML_DDE_LINKS, true, true); - for (sal_Int32 nDDELink = 0; nDDELink < nCount; ++nDDELink) + rExport.AddAttribute(XML_NAMESPACE_OFFICE, XML_DDE_APPLICATION, xDDELink->getApplication()); + rExport.AddAttribute(XML_NAMESPACE_OFFICE, XML_DDE_TOPIC, xDDELink->getTopic()); + rExport.AddAttribute(XML_NAMESPACE_OFFICE, XML_DDE_ITEM, xDDELink->getItem()); + rExport.AddAttribute(XML_NAMESPACE_OFFICE, XML_AUTOMATIC_UPDATE, XML_TRUE); + sal_uInt8 nMode; + if (rExport.GetDocument() && + rExport.GetDocument()->GetDdeLinkMode(nDDELink, nMode)) { - uno::Reference<sheet::XDDELink> xDDELink(xIndex->getByIndex(nDDELink), uno::UNO_QUERY); - if (xDDELink.is()) + switch (nMode) { - SvXMLElementExport aElemDDE(rExport, XML_NAMESPACE_TABLE, XML_DDE_LINK, true, true); - { - rExport.AddAttribute(XML_NAMESPACE_OFFICE, XML_DDE_APPLICATION, xDDELink->getApplication()); - rExport.AddAttribute(XML_NAMESPACE_OFFICE, XML_DDE_TOPIC, xDDELink->getTopic()); - rExport.AddAttribute(XML_NAMESPACE_OFFICE, XML_DDE_ITEM, xDDELink->getItem()); - rExport.AddAttribute(XML_NAMESPACE_OFFICE, XML_AUTOMATIC_UPDATE, XML_TRUE); - sal_uInt8 nMode; - if (rExport.GetDocument() && - rExport.GetDocument()->GetDdeLinkMode(nDDELink, nMode)) - { - switch (nMode) - { - case SC_DDE_ENGLISH : - rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_CONVERSION_MODE, XML_INTO_ENGLISH_NUMBER); - break; - case SC_DDE_TEXT : - rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_CONVERSION_MODE, XML_KEEP_TEXT); - break; - } - } - SvXMLElementExport(rExport, XML_NAMESPACE_OFFICE, XML_DDE_SOURCE, true, true); - } - WriteTable(nDDELink); + case SC_DDE_ENGLISH : + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_CONVERSION_MODE, XML_INTO_ENGLISH_NUMBER); + break; + case SC_DDE_TEXT : + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_CONVERSION_MODE, XML_KEEP_TEXT); + break; } } + SvXMLElementExport(rExport, XML_NAMESPACE_OFFICE, XML_DDE_SOURCE, true, true); } + WriteTable(nDDELink); } } } diff --git a/sc/source/filter/xml/XMLExportDataPilot.cxx b/sc/source/filter/xml/XMLExportDataPilot.cxx index 185e43efdaca..8b5e169bd7bf 100644 --- a/sc/source/filter/xml/XMLExportDataPilot.cxx +++ b/sc/source/filter/xml/XMLExportDataPilot.cxx @@ -144,125 +144,125 @@ void ScXMLExportDataPilot::WriteDPCondition(const ScQueryEntry& aQueryEntry, boo void ScXMLExportDataPilot::WriteDPFilter(const ScQueryParam& aQueryParam) { SCSIZE nQueryEntryCount = aQueryParam.GetEntryCount(); - if (nQueryEntryCount > 0) - { - bool bAnd(false); - bool bOr(false); - bool bHasEntries(true); - SCSIZE nEntries(0); - SCSIZE j; + if (nQueryEntryCount <= 0) + return; - for ( j = 0; (j < nQueryEntryCount) && bHasEntries; ++j) + bool bAnd(false); + bool bOr(false); + bool bHasEntries(true); + SCSIZE nEntries(0); + SCSIZE j; + + for ( j = 0; (j < nQueryEntryCount) && bHasEntries; ++j) + { + ScQueryEntry aEntry = aQueryParam.GetEntry(j); + if (aEntry.bDoQuery) { - ScQueryEntry aEntry = aQueryParam.GetEntry(j); - if (aEntry.bDoQuery) + if (nEntries > 0) { - if (nEntries > 0) - { - if (aEntry.eConnect == SC_AND) - bAnd = true; - else - bOr = true; - } - ++nEntries; + if (aEntry.eConnect == SC_AND) + bAnd = true; + else + bOr = true; } - else - bHasEntries = false; + ++nEntries; } - nQueryEntryCount = nEntries; - if (nQueryEntryCount) + else + bHasEntries = false; + } + nQueryEntryCount = nEntries; + if (!nQueryEntryCount) + return; + + if(!((aQueryParam.nCol1 == aQueryParam.nCol2) && (aQueryParam.nRow1 == aQueryParam.nRow2) && + (static_cast<SCCOLROW>(aQueryParam.nCol1) == static_cast<SCCOLROW>(aQueryParam.nRow1)) && + (aQueryParam.nCol1 == 0) && (aQueryParam.nTab == SCTAB_MAX))) + { + ScRange aConditionRange(aQueryParam.nCol1, aQueryParam.nRow1, aQueryParam.nTab, + aQueryParam.nCol2, aQueryParam.nRow2, aQueryParam.nTab); + OUString sConditionRange; + ScRangeStringConverter::GetStringFromRange( sConditionRange, aConditionRange, pDoc, ::formula::FormulaGrammar::CONV_OOO ); + if (!sConditionRange.isEmpty()) + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_CONDITION_SOURCE_RANGE_ADDRESS, sConditionRange); + } + if (!aQueryParam.bDuplicate) + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_DISPLAY_DUPLICATES, XML_FALSE); + SvXMLElementExport aElemDPF(rExport, XML_NAMESPACE_TABLE, XML_FILTER, true, true); + rExport.CheckAttrList(); + if (nQueryEntryCount == 1) + { + WriteDPCondition(aQueryParam.GetEntry(0), aQueryParam.bCaseSens, aQueryParam.eSearchType); + } + else if (bOr && !bAnd) + { + SvXMLElementExport aElemOr(rExport, XML_NAMESPACE_TABLE, XML_FILTER_OR, true, true); + for (j = 0; j < nQueryEntryCount; ++j) { - if(!((aQueryParam.nCol1 == aQueryParam.nCol2) && (aQueryParam.nRow1 == aQueryParam.nRow2) && - (static_cast<SCCOLROW>(aQueryParam.nCol1) == static_cast<SCCOLROW>(aQueryParam.nRow1)) && - (aQueryParam.nCol1 == 0) && (aQueryParam.nTab == SCTAB_MAX))) - { - ScRange aConditionRange(aQueryParam.nCol1, aQueryParam.nRow1, aQueryParam.nTab, - aQueryParam.nCol2, aQueryParam.nRow2, aQueryParam.nTab); - OUString sConditionRange; - ScRangeStringConverter::GetStringFromRange( sConditionRange, aConditionRange, pDoc, ::formula::FormulaGrammar::CONV_OOO ); - if (!sConditionRange.isEmpty()) - rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_CONDITION_SOURCE_RANGE_ADDRESS, sConditionRange); - } - if (!aQueryParam.bDuplicate) - rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_DISPLAY_DUPLICATES, XML_FALSE); - SvXMLElementExport aElemDPF(rExport, XML_NAMESPACE_TABLE, XML_FILTER, true, true); - rExport.CheckAttrList(); - if (nQueryEntryCount == 1) - { - WriteDPCondition(aQueryParam.GetEntry(0), aQueryParam.bCaseSens, aQueryParam.eSearchType); - } - else if (bOr && !bAnd) - { - SvXMLElementExport aElemOr(rExport, XML_NAMESPACE_TABLE, XML_FILTER_OR, true, true); - for (j = 0; j < nQueryEntryCount; ++j) - { - WriteDPCondition(aQueryParam.GetEntry(j), aQueryParam.bCaseSens, aQueryParam.eSearchType); - } - } - else if (bAnd && !bOr) - { - SvXMLElementExport aElemAnd(rExport, XML_NAMESPACE_TABLE, XML_FILTER_AND, true, true); - for (j = 0; j < nQueryEntryCount; ++j) - { - WriteDPCondition(aQueryParam.GetEntry(j), aQueryParam.bCaseSens, aQueryParam.eSearchType); - } - } - else + WriteDPCondition(aQueryParam.GetEntry(j), aQueryParam.bCaseSens, aQueryParam.eSearchType); + } + } + else if (bAnd && !bOr) + { + SvXMLElementExport aElemAnd(rExport, XML_NAMESPACE_TABLE, XML_FILTER_AND, true, true); + for (j = 0; j < nQueryEntryCount; ++j) + { + WriteDPCondition(aQueryParam.GetEntry(j), aQueryParam.bCaseSens, aQueryParam.eSearchType); + } + } + else + { + SvXMLElementExport aElemC(rExport, XML_NAMESPACE_TABLE, XML_FILTER_OR, true, true); + ScQueryEntry aPrevFilterField(aQueryParam.GetEntry(0)); + ScQueryConnect aConnection = aQueryParam.GetEntry(1).eConnect; + bool bOpenAndElement; + OUString aName(rExport.GetNamespaceMap().GetQNameByKey(XML_NAMESPACE_TABLE, GetXMLToken(XML_FILTER_AND))); + if (aConnection == SC_AND) + { + rExport.StartElement( aName, true ); + bOpenAndElement = true; + } + else + bOpenAndElement = false; + for (j = 1; j < nQueryEntryCount; ++j) + { + if (aConnection != aQueryParam.GetEntry(j).eConnect) { - SvXMLElementExport aElemC(rExport, XML_NAMESPACE_TABLE, XML_FILTER_OR, true, true); - ScQueryEntry aPrevFilterField(aQueryParam.GetEntry(0)); - ScQueryConnect aConnection = aQueryParam.GetEntry(1).eConnect; - bool bOpenAndElement; - OUString aName(rExport.GetNamespaceMap().GetQNameByKey(XML_NAMESPACE_TABLE, GetXMLToken(XML_FILTER_AND))); - if (aConnection == SC_AND) + aConnection = aQueryParam.GetEntry(j).eConnect; + if (aQueryParam.GetEntry(j).eConnect == SC_AND) { rExport.StartElement( aName, true ); bOpenAndElement = true; + WriteDPCondition(aPrevFilterField, aQueryParam.bCaseSens, aQueryParam.eSearchType); + aPrevFilterField = aQueryParam.GetEntry(j); + if (j == nQueryEntryCount - 1) + { + WriteDPCondition(aPrevFilterField, aQueryParam.bCaseSens, aQueryParam.eSearchType); + rExport.EndElement(aName, true); + bOpenAndElement = false; + } } else - bOpenAndElement = false; - for (j = 1; j < nQueryEntryCount; ++j) { - if (aConnection != aQueryParam.GetEntry(j).eConnect) + WriteDPCondition(aPrevFilterField, aQueryParam.bCaseSens, aQueryParam.eSearchType); + aPrevFilterField = aQueryParam.GetEntry(j); + if (bOpenAndElement) { - aConnection = aQueryParam.GetEntry(j).eConnect; - if (aQueryParam.GetEntry(j).eConnect == SC_AND) - { - rExport.StartElement( aName, true ); - bOpenAndElement = true; - WriteDPCondition(aPrevFilterField, aQueryParam.bCaseSens, aQueryParam.eSearchType); - aPrevFilterField = aQueryParam.GetEntry(j); - if (j == nQueryEntryCount - 1) - { - WriteDPCondition(aPrevFilterField, aQueryParam.bCaseSens, aQueryParam.eSearchType); - rExport.EndElement(aName, true); - bOpenAndElement = false; - } - } - else - { - WriteDPCondition(aPrevFilterField, aQueryParam.bCaseSens, aQueryParam.eSearchType); - aPrevFilterField = aQueryParam.GetEntry(j); - if (bOpenAndElement) - { - rExport.EndElement(aName, true); - bOpenAndElement = false; - } - if (j == nQueryEntryCount - 1) - { - WriteDPCondition(aPrevFilterField, aQueryParam.bCaseSens, aQueryParam.eSearchType); - } - } + rExport.EndElement(aName, true); + bOpenAndElement = false; } - else + if (j == nQueryEntryCount - 1) { WriteDPCondition(aPrevFilterField, aQueryParam.bCaseSens, aQueryParam.eSearchType); - aPrevFilterField = aQueryParam.GetEntry(j); - if (j == nQueryEntryCount - 1) - WriteDPCondition(aPrevFilterField, aQueryParam.bCaseSens, aQueryParam.eSearchType); } } } + else + { + WriteDPCondition(aPrevFilterField, aQueryParam.bCaseSens, aQueryParam.eSearchType); + aPrevFilterField = aQueryParam.GetEntry(j); + if (j == nQueryEntryCount - 1) + WriteDPCondition(aPrevFilterField, aQueryParam.bCaseSens, aQueryParam.eSearchType); + } } } } @@ -337,95 +337,95 @@ void ScXMLExportDataPilot::WriteFieldReference(const ScDPSaveDimension* pDim) void ScXMLExportDataPilot::WriteSortInfo(const ScDPSaveDimension* pDim) { const sheet::DataPilotFieldSortInfo* pSortInfo = pDim->GetSortInfo(); - if (pSortInfo) - { - if (pSortInfo->IsAscending) - rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_ORDER, XML_ASCENDING); - else - rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_ORDER, XML_DESCENDING); + if (!pSortInfo) + return; - OUString sValueStr; - switch (pSortInfo->Mode) - { - case sheet::DataPilotFieldSortMode::NONE: - sValueStr = GetXMLToken(XML_NONE); - break; - case sheet::DataPilotFieldSortMode::MANUAL: - sValueStr = GetXMLToken(XML_MANUAL); - break; - case sheet::DataPilotFieldSortMode::NAME: - sValueStr = GetXMLToken(XML_NAME); - break; - case sheet::DataPilotFieldSortMode::DATA: - sValueStr = GetXMLToken(XML_DATA); - if (!pSortInfo->Field.isEmpty()) - rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_DATA_FIELD, pSortInfo->Field); - break; - } - if (!sValueStr.isEmpty()) - rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_SORT_MODE, sValueStr); - SvXMLElementExport aElemDPLSI(rExport, XML_NAMESPACE_TABLE, XML_DATA_PILOT_SORT_INFO, true, true); + if (pSortInfo->IsAscending) + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_ORDER, XML_ASCENDING); + else + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_ORDER, XML_DESCENDING); + + OUString sValueStr; + switch (pSortInfo->Mode) + { + case sheet::DataPilotFieldSortMode::NONE: + sValueStr = GetXMLToken(XML_NONE); + break; + case sheet::DataPilotFieldSortMode::MANUAL: + sValueStr = GetXMLToken(XML_MANUAL); + break; + case sheet::DataPilotFieldSortMode::NAME: + sValueStr = GetXMLToken(XML_NAME); + break; + case sheet::DataPilotFieldSortMode::DATA: + sValueStr = GetXMLToken(XML_DATA); + if (!pSortInfo->Field.isEmpty()) + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_DATA_FIELD, pSortInfo->Field); + break; } + if (!sValueStr.isEmpty()) + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_SORT_MODE, sValueStr); + SvXMLElementExport aElemDPLSI(rExport, XML_NAMESPACE_TABLE, XML_DATA_PILOT_SORT_INFO, true, true); } void ScXMLExportDataPilot::WriteAutoShowInfo(const ScDPSaveDimension* pDim) { const sheet::DataPilotFieldAutoShowInfo* pAutoInfo = pDim->GetAutoShowInfo(); - if (pAutoInfo) - { - if (pAutoInfo->IsEnabled) - rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_ENABLED, XML_TRUE); - else - rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_ENABLED, XML_FALSE); + if (!pAutoInfo) + return; - OUString sValueStr; - switch (pAutoInfo->ShowItemsMode) - { - case sheet::DataPilotFieldShowItemsMode::FROM_TOP: - sValueStr = GetXMLToken(XML_FROM_TOP); - break; - case sheet::DataPilotFieldShowItemsMode::FROM_BOTTOM: - sValueStr = GetXMLToken(XML_FROM_BOTTOM); - break; - } - if (!sValueStr.isEmpty()) - rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_DISPLAY_MEMBER_MODE, sValueStr); + if (pAutoInfo->IsEnabled) + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_ENABLED, XML_TRUE); + else + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_ENABLED, XML_FALSE); - rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_MEMBER_COUNT, OUString::number(pAutoInfo->ItemCount)); + OUString sValueStr; + switch (pAutoInfo->ShowItemsMode) + { + case sheet::DataPilotFieldShowItemsMode::FROM_TOP: + sValueStr = GetXMLToken(XML_FROM_TOP); + break; + case sheet::DataPilotFieldShowItemsMode::FROM_BOTTOM: + sValueStr = GetXMLToken(XML_FROM_BOTTOM); + break; + } + if (!sValueStr.isEmpty()) + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_DISPLAY_MEMBER_MODE, sValueStr); - rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_DATA_FIELD, pAutoInfo->DataField); + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_MEMBER_COUNT, OUString::number(pAutoInfo->ItemCount)); - SvXMLElementExport aElemDPLAI(rExport, XML_NAMESPACE_TABLE, XML_DATA_PILOT_DISPLAY_INFO, true, true); - } + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_DATA_FIELD, pAutoInfo->DataField); + + SvXMLElementExport aElemDPLAI(rExport, XML_NAMESPACE_TABLE, XML_DATA_PILOT_DISPLAY_INFO, true, true); } void ScXMLExportDataPilot::WriteLayoutInfo(const ScDPSaveDimension* pDim) { const sheet::DataPilotFieldLayoutInfo* pLayoutInfo = pDim->GetLayoutInfo(); - if (pLayoutInfo) - { - if (pLayoutInfo->AddEmptyLines) - rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_ADD_EMPTY_LINES, XML_TRUE); - else - rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_ADD_EMPTY_LINES, XML_FALSE); + if (!pLayoutInfo) + return; - OUString sValueStr; - switch (pLayoutInfo->LayoutMode) - { - case sheet::DataPilotFieldLayoutMode::TABULAR_LAYOUT: - sValueStr = GetXMLToken(XML_TABULAR_LAYOUT); - break; - case sheet::DataPilotFieldLayoutMode::OUTLINE_SUBTOTALS_TOP: - sValueStr = GetXMLToken(XML_OUTLINE_SUBTOTALS_TOP); - break; - case sheet::DataPilotFieldLayoutMode::OUTLINE_SUBTOTALS_BOTTOM: - sValueStr = GetXMLToken(XML_OUTLINE_SUBTOTALS_BOTTOM); - break; - } - if (!sValueStr.isEmpty()) - rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_LAYOUT_MODE, sValueStr); - SvXMLElementExport aElemDPLLI(rExport, XML_NAMESPACE_TABLE, XML_DATA_PILOT_LAYOUT_INFO, true, true); + if (pLayoutInfo->AddEmptyLines) + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_ADD_EMPTY_LINES, XML_TRUE); + else + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_ADD_EMPTY_LINES, XML_FALSE); + + OUString sValueStr; + switch (pLayoutInfo->LayoutMode) + { + case sheet::DataPilotFieldLayoutMode::TABULAR_LAYOUT: + sValueStr = GetXMLToken(XML_TABULAR_LAYOUT); + break; + case sheet::DataPilotFieldLayoutMode::OUTLINE_SUBTOTALS_TOP: + sValueStr = GetXMLToken(XML_OUTLINE_SUBTOTALS_TOP); + break; + case sheet::DataPilotFieldLayoutMode::OUTLINE_SUBTOTALS_BOTTOM: + sValueStr = GetXMLToken(XML_OUTLINE_SUBTOTALS_BOTTOM); + break; } + if (!sValueStr.isEmpty()) + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_LAYOUT_MODE, sValueStr); + SvXMLElementExport aElemDPLLI(rExport, XML_NAMESPACE_TABLE, XML_DATA_PILOT_LAYOUT_INFO, true, true); } void ScXMLExportDataPilot::WriteSubTotals(const ScDPSaveDimension* pDim) @@ -436,50 +436,50 @@ void ScXMLExportDataPilot::WriteSubTotals(const ScDPSaveDimension* pDim) // Export display names only for 1.2 extended or later. pLayoutName = pDim->GetSubtotalName(); - if (nSubTotalCount > 0) + if (nSubTotalCount <= 0) + return; + + SvXMLElementExport aElemSTs(rExport, XML_NAMESPACE_TABLE, XML_DATA_PILOT_SUBTOTALS, true, true); + rExport.CheckAttrList(); + for (sal_Int32 nSubTotal = 0; nSubTotal < nSubTotalCount; nSubTotal++) { - SvXMLElementExport aElemSTs(rExport, XML_NAMESPACE_TABLE, XML_DATA_PILOT_SUBTOTALS, true, true); - rExport.CheckAttrList(); - for (sal_Int32 nSubTotal = 0; nSubTotal < nSubTotalCount; nSubTotal++) - { - OUString sFunction; - sal_Int16 nFunc = static_cast<sal_Int16>(pDim->GetSubTotalFunc(nSubTotal)); - ScXMLConverter::GetStringFromFunction( sFunction, nFunc); - rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_FUNCTION, sFunction); - if (pLayoutName && nFunc == sheet::GeneralFunction2::AUTO) - rExport.AddAttribute(XML_NAMESPACE_TABLE_EXT, XML_DISPLAY_NAME, *pLayoutName); - SvXMLElementExport aElemST(rExport, XML_NAMESPACE_TABLE, XML_DATA_PILOT_SUBTOTAL, true, true); - } + OUString sFunction; + sal_Int16 nFunc = static_cast<sal_Int16>(pDim->GetSubTotalFunc(nSubTotal)); + ScXMLConverter::GetStringFromFunction( sFunction, nFunc); + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_FUNCTION, sFunction); + if (pLayoutName && nFunc == sheet::GeneralFunction2::AUTO) + rExport.AddAttribute(XML_NAMESPACE_TABLE_EXT, XML_DISPLAY_NAME, *pLayoutName); + SvXMLElementExport aElemST(rExport, XML_NAMESPACE_TABLE, XML_DATA_PILOT_SUBTOTAL, true, true); } } void ScXMLExportDataPilot::WriteMembers(const ScDPSaveDimension* pDim) { const ScDPSaveDimension::MemberList &rMembers = pDim->GetMembers(); - if (!rMembers.empty()) - { - SvXMLElementExport aElemDPMs(rExport, XML_NAMESPACE_TABLE, XML_DATA_PILOT_MEMBERS, true, true); - rExport.CheckAttrList(); - for (const auto& rpMember : rMembers) - { - rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_NAME, rpMember->GetName()); + if (rMembers.empty()) + return; - if (rExport.getSaneDefaultVersion() & SvtSaveOptions::ODFSVER_EXTENDED) - { - // Export display names only for ODF 1.2 extended or later. - const std::optional<OUString> & pLayoutName = rpMember->GetLayoutName(); - if (pLayoutName) - rExport.AddAttribute(XML_NAMESPACE_TABLE_EXT, XML_DISPLAY_NAME, *pLayoutName); - } + SvXMLElementExport aElemDPMs(rExport, XML_NAMESPACE_TABLE, XML_DATA_PILOT_MEMBERS, true, true); + rExport.CheckAttrList(); + for (const auto& rpMember : rMembers) + { + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_NAME, rpMember->GetName()); - OUStringBuffer sBuffer; - ::sax::Converter::convertBool(sBuffer, rpMember->GetIsVisible()); - rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_DISPLAY, sBuffer.makeStringAndClear()); - ::sax::Converter::convertBool(sBuffer, rpMember->GetShowDetails()); - rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_SHOW_DETAILS, sBuffer.makeStringAndClear()); - SvXMLElementExport aElemDPM(rExport, XML_NAMESPACE_TABLE, XML_DATA_PILOT_MEMBER, true, true); - rExport.CheckAttrList(); + if (rExport.getSaneDefaultVersion() & SvtSaveOptions::ODFSVER_EXTENDED) + { + // Export display names only for ODF 1.2 extended or later. + const std::optional<OUString> & pLayoutName = rpMember->GetLayoutName(); + if (pLayoutName) + rExport.AddAttribute(XML_NAMESPACE_TABLE_EXT, XML_DISPLAY_NAME, *pLayoutName); } + + OUStringBuffer sBuffer; + ::sax::Converter::convertBool(sBuffer, rpMember->GetIsVisible()); + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_DISPLAY, sBuffer.makeStringAndClear()); + ::sax::Converter::convertBool(sBuffer, rpMember->GetShowDetails()); + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_SHOW_DETAILS, sBuffer.makeStringAndClear()); + SvXMLElementExport aElemDPM(rExport, XML_NAMESPACE_TABLE, XML_DATA_PILOT_MEMBER, true, true); + rExport.CheckAttrList(); } } @@ -642,30 +642,30 @@ void ScXMLExportDataPilot::WriteGroupDimElements(const ScDPSaveDimension* pDim, OSL_ENSURE((!pGroupDim || !pNumGroupDim), "there should be no NumGroup and Group at the same field"); } - if (pGroupDim || pNumGroupDim) + if (!(pGroupDim || pNumGroupDim)) + return; + + SvXMLElementExport aElemDPGs(rExport, XML_NAMESPACE_TABLE, XML_DATA_PILOT_GROUPS, true, true); + if (!pGroupDim) + return; + + if (pGroupDim->GetDatePart()) + return; + + sal_Int32 nCount = pGroupDim->GetGroupCount(); + for (sal_Int32 i = 0; i < nCount; ++i) { - SvXMLElementExport aElemDPGs(rExport, XML_NAMESPACE_TABLE, XML_DATA_PILOT_GROUPS, true, true); - if (pGroupDim) - { - if (!pGroupDim->GetDatePart()) + const ScDPSaveGroupItem& rGroup = pGroupDim->GetGroupByIndex( i ); + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_NAME, rGroup.GetGroupName()); + SvXMLElementExport aElemDPG(rExport, XML_NAMESPACE_TABLE, XML_DATA_PILOT_GROUP, true, true); + sal_Int32 nElemCount = rGroup.GetElementCount(); + for(sal_Int32 j = 0; j < nElemCount; ++j) + { + const OUString* pElem = rGroup.GetElementByIndex(j); + if (pElem) { - sal_Int32 nCount = pGroupDim->GetGroupCount(); - for (sal_Int32 i = 0; i < nCount; ++i) - { - const ScDPSaveGroupItem& rGroup = pGroupDim->GetGroupByIndex( i ); - rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_NAME, rGroup.GetGroupName()); - SvXMLElementExport aElemDPG(rExport, XML_NAMESPACE_TABLE, XML_DATA_PILOT_GROUP, true, true); - sal_Int32 nElemCount = rGroup.GetElementCount(); - for(sal_Int32 j = 0; j < nElemCount; ++j) - { - const OUString* pElem = rGroup.GetElementByIndex(j); - if (pElem) - { - rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_NAME, *pElem); - SvXMLElementExport aElemDPM(rExport, XML_NAMESPACE_TABLE, XML_DATA_PILOT_GROUP_MEMBER, true, true); - } - } - } + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_NAME, *pElem); + SvXMLElementExport aElemDPM(rExport, XML_NAMESPACE_TABLE, XML_DATA_PILOT_GROUP_MEMBER, true, true); } } } diff --git a/sc/source/filter/xml/XMLExportIterator.cxx b/sc/source/filter/xml/XMLExportIterator.cxx index ae68f6cbec84..dd924507e77e 100644 --- a/sc/source/filter/xml/XMLExportIterator.cxx +++ b/sc/source/filter/xml/XMLExportIterator.cxx @@ -210,24 +210,24 @@ void ScMyMergedRangesContainer::SetCellData( ScMyCell& rMyCell ) { rMyCell.bIsMergedBase = rMyCell.bIsCovered = false; ScMyMergedRangeList::iterator aItr(aRangeList.begin()); - if( aItr != aRangeList.end() ) + if( aItr == aRangeList.end() ) + return; + + if( aItr->aCellRange.aStart != rMyCell.aCellAddress ) + return; + + rMyCell.aMergeRange = aItr->aCellRange; + if (aItr->bIsFirst) + rMyCell.aMergeRange.aEnd.SetRow( rMyCell.aMergeRange.aStart.Row() + aItr->nRows - 1 ); + rMyCell.bIsMergedBase = aItr->bIsFirst; + rMyCell.bIsCovered = !aItr->bIsFirst; + if( aItr->aCellRange.aStart.Col() < aItr->aCellRange.aEnd.Col() ) { - if( aItr->aCellRange.aStart == rMyCell.aCellAddress ) - { - rMyCell.aMergeRange = aItr->aCellRange; - if (aItr->bIsFirst) - rMyCell.aMergeRange.aEnd.SetRow( rMyCell.aMergeRange.aStart.Row() + aItr->nRows - 1 ); - rMyCell.bIsMergedBase = aItr->bIsFirst; - rMyCell.bIsCovered = !aItr->bIsFirst; - if( aItr->aCellRange.aStart.Col() < aItr->aCellRange.aEnd.Col() ) - { - aItr->aCellRange.aStart.IncCol( 1 ); - aItr->bIsFirst = false; - } - else - aRangeList.erase(aItr); - } + aItr->aCellRange.aStart.IncCol( 1 ); + aItr->bIsFirst = false; } + else + aRangeList.erase(aItr); } void ScMyMergedRangesContainer::SkipTable(SCTAB nSkip) @@ -280,25 +280,25 @@ void ScMyAreaLinksContainer::SetCellData( ScMyCell& rMyCell ) { rMyCell.bHasAreaLink = false; ScMyAreaLinkList::iterator aItr(aAreaLinkList.begin()); - if( aItr != aAreaLinkList.end() ) + if( aItr == aAreaLinkList.end() ) + return; + + if( aItr->aDestRange.aStart != rMyCell.aCellAddress ) + return; + + rMyCell.bHasAreaLink = true; + rMyCell.aAreaLink = *aItr; + aItr = aAreaLinkList.erase( aItr ); + bool bFound = true; + while (aItr != aAreaLinkList.end() && bFound) { - if( aItr->aDestRange.aStart == rMyCell.aCellAddress ) + if ( aItr->aDestRange.aStart == rMyCell.aCellAddress ) { - rMyCell.bHasAreaLink = true; - rMyCell.aAreaLink = *aItr; + OSL_FAIL("more than one linked range on one cell"); aItr = aAreaLinkList.erase( aItr ); - bool bFound = true; - while (aItr != aAreaLinkList.end() && bFound) - { - if ( aItr->aDestRange.aStart == rMyCell.aCellAddress ) - { - OSL_FAIL("more than one linked range on one cell"); - aItr = aAreaLinkList.erase( aItr ); - } - else - bFound = false; - } } + else + bFound = false; } } @@ -395,32 +395,32 @@ void ScMyDetectiveObjContainer::AddObject( ScDetectiveObjType eObjType, const SC const ScAddress& rPosition, const ScRange& rSourceRange, bool bHasError ) { - if( (eObjType == SC_DETOBJ_ARROW) || + if( !((eObjType == SC_DETOBJ_ARROW) || (eObjType == SC_DETOBJ_FROMOTHERTAB) || (eObjType == SC_DETOBJ_TOOTHERTAB) || - (eObjType == SC_DETOBJ_CIRCLE) ) + (eObjType == SC_DETOBJ_CIRCLE)) ) + return; + + ScMyDetectiveObj aDetObj; + aDetObj.eObjType = eObjType; + if( eObjType == SC_DETOBJ_TOOTHERTAB ) + aDetObj.aPosition = rSourceRange.aStart; + else + aDetObj.aPosition = rPosition; + aDetObj.aSourceRange = rSourceRange; + + // #111064#; take the sheet where the object is found and not the sheet given in the ranges, because they are not always true + if (eObjType != SC_DETOBJ_FROMOTHERTAB) { - ScMyDetectiveObj aDetObj; - aDetObj.eObjType = eObjType; - if( eObjType == SC_DETOBJ_TOOTHERTAB ) - aDetObj.aPosition = rSourceRange.aStart; - else - aDetObj.aPosition = rPosition; - aDetObj.aSourceRange = rSourceRange; - - // #111064#; take the sheet where the object is found and not the sheet given in the ranges, because they are not always true - if (eObjType != SC_DETOBJ_FROMOTHERTAB) - { - // if the ObjType == SC_DETOBJ_FROMOTHERTAB then the SourceRange is not used and so it has not to be tested and changed - OSL_ENSURE(aDetObj.aPosition.Tab() == aDetObj.aSourceRange.aStart.Tab(), "It seems to be possible to have different sheets"); - aDetObj.aSourceRange.aStart.SetTab( nSheet ); - aDetObj.aSourceRange.aEnd.SetTab( nSheet ); - } - aDetObj.aPosition.SetTab( nSheet ); - - aDetObj.bHasError = bHasError; - aDetectiveObjList.push_back( aDetObj ); + // if the ObjType == SC_DETOBJ_FROMOTHERTAB then the SourceRange is not used and so it has not to be tested and changed + OSL_ENSURE(aDetObj.aPosition.Tab() == aDetObj.aSourceRange.aStart.Tab(), "It seems to be possible to have different sheets"); + aDetObj.aSourceRange.aStart.SetTab( nSheet ); + aDetObj.aSourceRange.aEnd.SetTab( nSheet ); } + aDetObj.aPosition.SetTab( nSheet ); + + aDetObj.bHasError = bHasError; + aDetectiveObjList.push_back( aDetObj ); } bool ScMyDetectiveObjContainer::GetFirstAddress( ScAddress& rCellAddress ) @@ -643,19 +643,19 @@ void ScMyNotEmptyCellsIterator::SetCurrentTable(const SCTAB nTable, aLastAddress.SetRow( 0 ); aLastAddress.SetCol( 0 ); aLastAddress.SetTab( nTable ); - if (nCurrentTable != nTable) - { - nCurrentTable = nTable; + if (nCurrentTable == nTable) + return; - mpCellItr.reset( - new ScHorizontalCellIterator( - rExport.GetDocument(), nCurrentTable, 0, 0, - static_cast<SCCOL>(rExport.GetSharedData()->GetLastColumn(nCurrentTable)), - static_cast<SCROW>(rExport.GetSharedData()->GetLastRow(nCurrentTable)))); + nCurrentTable = nTable; - xTable.set(rxTable); - xCellRange.set(xTable); - } + mpCellItr.reset( + new ScHorizontalCellIterator( + rExport.GetDocument(), nCurrentTable, 0, 0, + static_cast<SCCOL>(rExport.GetSharedData()->GetLastColumn(nCurrentTable)), + static_cast<SCROW>(rExport.GetSharedData()->GetLastRow(nCurrentTable)))); + + xTable.set(rxTable); + xCellRange.set(xTable); } void ScMyNotEmptyCellsIterator::SkipTable(SCTAB nSkip) diff --git a/sc/source/filter/xml/XMLStylesExportHelper.cxx b/sc/source/filter/xml/XMLStylesExportHelper.cxx index 4f1b820bf071..b21f2dea976e 100644 --- a/sc/source/filter/xml/XMLStylesExportHelper.cxx +++ b/sc/source/filter/xml/XMLStylesExportHelper.cxx @@ -99,65 +99,65 @@ void ScMyValidationsContainer::AddValidation(const uno::Any& aTempAny, sal_Int32& nValidationIndex) { uno::Reference<beans::XPropertySet> xPropertySet(aTempAny, uno::UNO_QUERY); - if (xPropertySet.is()) + if (!xPropertySet.is()) + return; + + OUString sErrorMessage; + xPropertySet->getPropertyValue(gsERRMESS) >>= sErrorMessage; + OUString sErrorTitle; + xPropertySet->getPropertyValue(gsERRTITLE) >>= sErrorTitle; + OUString sImputMessage; + xPropertySet->getPropertyValue(gsINPMESS) >>= sImputMessage; + OUString sImputTitle; + xPropertySet->getPropertyValue(gsINPTITLE) >>= sImputTitle; + bool bShowErrorMessage = ::cppu::any2bool(xPropertySet->getPropertyValue(gsSHOWERR)); + bool bShowImputMessage = ::cppu::any2bool(xPropertySet->getPropertyValue(gsSHOWINP)); + sheet::ValidationType aValidationType; + xPropertySet->getPropertyValue(gsTYPE) >>= aValidationType; + if (!(bShowErrorMessage || bShowImputMessage || aValidationType != sheet::ValidationType_ANY || + !sErrorMessage.isEmpty() || !sErrorTitle.isEmpty() || !sImputMessage.isEmpty() || !sImputTitle.isEmpty())) + return; + + ScMyValidation aValidation; + aValidation.sErrorMessage = sErrorMessage; + aValidation.sErrorTitle = sErrorTitle; + aValidation.sImputMessage = sImputMessage; + aValidation.sImputTitle = sImputTitle; + aValidation.bShowErrorMessage = bShowErrorMessage; + aValidation.bShowImputMessage = bShowImputMessage; ... etc. - the rest is truncated _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits