diff options
author | Kohei Yoshida <kohei.yoshida@suse.com> | 2011-11-04 12:18:47 -0400 |
---|---|---|
committer | Kohei Yoshida <kohei.yoshida@suse.com> | 2011-11-04 22:40:28 -0400 |
commit | a917af4fe40faf5a7538b0bf852796949192787d (patch) | |
tree | 9652d5c32f7b20f50bce257f989d6768fc16070e | |
parent | 9dd9e4baccc4009be524f6ab3070e7458138d82d (diff) |
More on avoiding direct access to pStr, also fixed several memory leaks.
-rw-r--r-- | sc/inc/lookupcache.hxx | 2 | ||||
-rw-r--r-- | sc/source/core/data/table3.cxx | 15 | ||||
-rw-r--r-- | sc/source/core/tool/interpr1.cxx | 51 | ||||
-rw-r--r-- | sc/source/filter/excel/excrecds.cxx | 20 | ||||
-rw-r--r-- | sc/source/filter/inc/excrecds.hxx | 2 | ||||
-rw-r--r-- | sc/source/filter/xml/XMLExportDataPilot.cxx | 10 | ||||
-rw-r--r-- | sc/source/filter/xml/XMLExportDatabaseRanges.cxx | 4 | ||||
-rw-r--r-- | sc/source/filter/xml/xmlfilti.cxx | 6 | ||||
-rw-r--r-- | sc/source/ui/dbgui/filtdlg.cxx | 20 | ||||
-rw-r--r-- | sc/source/ui/dbgui/pfiltdlg.cxx | 12 | ||||
-rw-r--r-- | sc/source/ui/view/gridwin.cxx | 20 |
11 files changed, 87 insertions, 75 deletions
diff --git a/sc/inc/lookupcache.hxx b/sc/inc/lookupcache.hxx index 01ab42522b8f..cdf3b420f2b5 100644 --- a/sc/inc/lookupcache.hxx +++ b/sc/inc/lookupcache.hxx @@ -110,7 +110,7 @@ public: DBG_ERRORFILE( "ScLookupCache::QueryCriteria not prepared for this ScQueryOp"); } if (rEntry.bQueryByString) - setString( rEntry.pStr); + setString(rEntry.GetQueryString()); else setDouble( rEntry.nVal); } diff --git a/sc/source/core/data/table3.cxx b/sc/source/core/data/table3.cxx index 8f3c9857fa5f..ec9657ff12f6 100644 --- a/sc/source/core/data/table3.cxx +++ b/sc/source/core/data/table3.cxx @@ -1274,12 +1274,13 @@ bool ScTable::ValidQuery(SCROW nRow, const ScQueryParam& rParam, } if ( !bRealRegExp ) { + rtl::OUString aQueryStr = rEntry.GetQueryString(); if ( rEntry.eOp == SC_EQUAL || rEntry.eOp == SC_NOT_EQUAL || rEntry.eOp == SC_CONTAINS || rEntry.eOp == SC_DOES_NOT_CONTAIN || rEntry.eOp == SC_BEGINS_WITH || rEntry.eOp == SC_ENDS_WITH || rEntry.eOp == SC_DOES_NOT_BEGIN_WITH || rEntry.eOp == SC_DOES_NOT_END_WITH ) { - if ( !rEntry.bQueryByString && rEntry.pStr->Len() == 0 ) + if (!rEntry.bQueryByString && aQueryStr.isEmpty()) { // #i18374# When used from functions (match, countif, sumif, vlookup, hlookup, lookup), // the query value is assigned directly, and the string is empty. In that case, @@ -1290,7 +1291,7 @@ bool ScTable::ValidQuery(SCROW nRow, const ScQueryParam& rParam, } else if ( bMatchWholeCell ) { - bOk = pTransliteration->isEqual( aCellStr, *rEntry.pStr ); + bOk = pTransliteration->isEqual(aCellStr, aQueryStr); if ( rEntry.eOp == SC_NOT_EQUAL ) bOk = !bOk; } @@ -1300,7 +1301,7 @@ bool ScTable::ValidQuery(SCROW nRow, const ScQueryParam& rParam, aCellStr, ScGlobal::eLnge, 0, aCellStr.Len(), NULL ) ); String aQuer( pTransliteration->transliterate( - *rEntry.pStr, ScGlobal::eLnge, 0, rEntry.pStr->Len(), + aQueryStr, ScGlobal::eLnge, 0, aQueryStr.getLength(), NULL ) ); xub_StrLen nIndex = (rEntry.eOp == SC_ENDS_WITH || rEntry.eOp == SC_DOES_NOT_END_WITH)? (aCell.Len()-aQuer.Len()):0; @@ -1337,7 +1338,7 @@ bool ScTable::ValidQuery(SCROW nRow, const ScQueryParam& rParam, else { // use collator here because data was probably sorted sal_Int32 nCompare = pCollator->compareString( - aCellStr, *rEntry.pStr ); + aCellStr, aQueryStr); switch (rEntry.eOp) { case SC_LESS : @@ -1559,7 +1560,7 @@ static void lcl_PrepareQuery( ScDocument* pDoc, ScTable* pTab, ScQueryParam& rPa { sal_uInt32 nIndex = 0; rEntry.bQueryByString = !( pDoc->GetFormatTable()-> - IsNumberFormat( *rEntry.pStr, nIndex, rEntry.nVal ) ); + IsNumberFormat(rEntry.GetQueryString(), nIndex, rEntry.nVal)); if (rEntry.bQueryByDate) { if (!rEntry.bQueryByString && ((nIndex % SV_COUNTRY_LANGUAGE_OFFSET) != 0)) @@ -1903,7 +1904,9 @@ bool ScTable::CreateStarQuery(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2 // Vierte Spalte Wert if (bValid) { - GetString(nCol1 + 3, nRow, *rEntry.pStr); + String aStr; + GetString(nCol1 + 3, nRow, aStr); + rEntry.SetQueryString(aStr); rEntry.bDoQuery = true; } nIndex++; diff --git a/sc/source/core/tool/interpr1.cxx b/sc/source/core/tool/interpr1.cxx index 3fc28bbcea1f..6c4236980c9c 100644 --- a/sc/source/core/tool/interpr1.cxx +++ b/sc/source/core/tool/interpr1.cxx @@ -721,7 +721,7 @@ double ScInterpreter::CompareFunc( const ScCompare& rComp, ScCompareOptions* pOp // is/must be identical to *rEntry.pStr, which is essential for // regex to work through GetSearchTextPtr(). ScQueryEntry& rEntry = pOptions->aQueryEntry; - OSL_ENSURE( *rComp.pVal[1] == *rEntry.pStr, "ScInterpreter::CompareFunc: broken options"); + OSL_ENSURE(rEntry.GetQueryString().equals(*rComp.pVal[1]), "ScInterpreter::CompareFunc: broken options"); if (pOptions->bRegEx) { xub_StrLen nStart = 0; @@ -999,7 +999,7 @@ ScMatrixRef ScInterpreter::QueryMat( const ScMatrixRef& pMat, ScCompareOptions& short nSaveFuncFmtType = nFuncFmtType; PushMatrix( pMat); if (rOptions.aQueryEntry.bQueryByString) - PushString( *rOptions.aQueryEntry.pStr); + PushString(rOptions.aQueryEntry.GetQueryString()); else PushDouble( rOptions.aQueryEntry.nVal); ScMatrixRef pResultMatrix = CompareMat( &rOptions); @@ -4321,8 +4321,8 @@ static sal_Int32 lcl_CompareMatrix2Query( // this should not happen! return 1; - const String& rStr1 = rMat.GetString(i); - const String& rStr2 = *rEntry.pStr; + const rtl::OUString rStr1 = rMat.GetString(i); + const rtl::OUString rStr2 = rEntry.GetQueryString(); return ScGlobal::GetCollator()->compareString( rStr1, rStr2); // case-insensitive } @@ -4465,7 +4465,7 @@ void ScInterpreter::ScMatch() { sStr = GetString(); rEntry.bQueryByString = true; - *rEntry.pStr = sStr; + rEntry.SetQueryString(sStr); } break; case svDoubleRef : @@ -4488,7 +4488,7 @@ void ScInterpreter::ScMatch() { GetCellString(sStr, pCell); rEntry.bQueryByString = true; - *rEntry.pStr = sStr; + rEntry.SetQueryString(sStr); } } break; @@ -4509,7 +4509,7 @@ void ScInterpreter::ScMatch() else { rEntry.bQueryByString = true; - *rEntry.pStr = pToken->GetString(); + rEntry.SetQueryString(pToken->GetString()); } } break; @@ -4520,8 +4520,10 @@ void ScInterpreter::ScMatch() break; case svMatrix : { + String aStr; ScMatValType nType = GetDoubleOrStringFromMatrix( - rEntry.nVal, *rEntry.pStr); + rEntry.nVal, aStr); + rEntry.SetQueryString(aStr); rEntry.bQueryByString = ScMatrix::IsNonValueType( nType); } break; @@ -4541,7 +4543,7 @@ void ScInterpreter::ScMatch() if ( bIsVBAMode ) rParam.bRegExp = false; else - rParam.bRegExp = MayBeRegExp( *rEntry.pStr, pDok ); + rParam.bRegExp = MayBeRegExp(rEntry.GetQueryString(), pDok); } if (pMatSrc) // The source data is matrix array. @@ -4887,9 +4889,9 @@ void ScInterpreter::ScCountIf() sal_uInt32 nIndex = 0; rEntry.bQueryByString = !(pFormatter->IsNumberFormat( - *rEntry.pStr, nIndex, rEntry.nVal)); + rEntry.GetQueryString(), nIndex, rEntry.nVal)); if ( rEntry.bQueryByString ) - rParam.bRegExp = MayBeRegExp( *rEntry.pStr, pDok ); + rParam.bRegExp = MayBeRegExp(rEntry.GetQueryString(), pDok); } rParam.nCol1 = nCol1; rParam.nCol2 = nCol2; @@ -5209,9 +5211,9 @@ void ScInterpreter::ScSumIf() sal_uInt32 nIndex = 0; rEntry.bQueryByString = !(pFormatter->IsNumberFormat( - *rEntry.pStr, nIndex, rEntry.nVal)); + rEntry.GetQueryString(), nIndex, rEntry.nVal)); if ( rEntry.bQueryByString ) - rParam.bRegExp = MayBeRegExp( *rEntry.pStr, pDok ); + rParam.bRegExp = MayBeRegExp(rEntry.GetQueryString(), pDok); } ScAddress aAdr; aAdr.SetTab( nTab3 ); @@ -5528,7 +5530,7 @@ void ScInterpreter::ScLookup() if ( !rEntry.bQueryByString ) bFound = false; else - bFound = (ScGlobal::GetCollator()->compareString( aDataStr, *rEntry.pStr) <= 0); + bFound = (ScGlobal::GetCollator()->compareString(aDataStr, rEntry.GetQueryString()) <= 0); } if (!bFound) @@ -5773,7 +5775,7 @@ void ScInterpreter::ScLookup() rEntry.eOp = SC_LESS_EQUAL; rEntry.nField = nCol1; if ( rEntry.bQueryByString ) - aParam.bRegExp = MayBeRegExp( *rEntry.pStr, pDok ); + aParam.bRegExp = MayBeRegExp(rEntry.GetQueryString(), pDok); ScQueryCellIterator aCellIter(pDok, nTab1, aParam, false); SCCOL nC; @@ -5996,7 +5998,7 @@ void ScInterpreter::CalculateLookup(bool HLookup) if ( !FillEntry(rEntry) ) return; if ( rEntry.bQueryByString ) - rParam.bRegExp = MayBeRegExp( *rEntry.pStr, pDok ); + rParam.bRegExp = MayBeRegExp(rEntry.GetQueryString(), pDok); if (pMat) { SCSIZE nMatCount = HLookup ? nC : nR; @@ -6006,7 +6008,7 @@ void ScInterpreter::CalculateLookup(bool HLookup) //!!!!!!! //! TODO: enable regex on matrix strings //!!!!!!! - String aParamStr = *rEntry.pStr; + rtl::OUString aParamStr = rEntry.GetQueryString(); if ( bSorted ) { static CollatorWrapper* pCollator = ScGlobal::GetCollator(); @@ -6148,9 +6150,9 @@ bool ScInterpreter::FillEntry(ScQueryEntry& rEntry) break; case svString: { - const String sStr = GetString(); + const String& sStr = GetString(); rEntry.bQueryByString = true; - *rEntry.pStr = sStr; + rEntry.SetQueryString(sStr); } break; case svDoubleRef : @@ -6180,14 +6182,16 @@ bool ScInterpreter::FillEntry(ScQueryEntry& rEntry) String sStr; GetCellString(sStr, pCell); rEntry.bQueryByString = true; - *rEntry.pStr = sStr; + rEntry.SetQueryString(sStr); } } } break; case svMatrix : { - const ScMatValType nType = GetDoubleOrStringFromMatrix(rEntry.nVal, *rEntry.pStr); + String aStr; + const ScMatValType nType = GetDoubleOrStringFromMatrix(rEntry.nVal, aStr); + rEntry.SetQueryString(aStr); rEntry.bQueryByString = ScMatrix::IsNonValueType( nType); } break; @@ -6371,10 +6375,11 @@ ScDBQueryParamBase* ScInterpreter::GetDBParams( bool& rMissingField ) if ( rEntry.bDoQuery ) { sal_uInt32 nIndex = 0; + rtl::OUString aQueryStr = rEntry.GetQueryString(); rEntry.bQueryByString = !pFormatter->IsNumberFormat( - *rEntry.pStr, nIndex, rEntry.nVal ); + aQueryStr, nIndex, rEntry.nVal ); if ( rEntry.bQueryByString && !pParam->bRegExp ) - pParam->bRegExp = MayBeRegExp( *rEntry.pStr, pDok ); + pParam->bRegExp = MayBeRegExp(aQueryStr, pDok); } else break; // for diff --git a/sc/source/filter/excel/excrecds.cxx b/sc/source/filter/excel/excrecds.cxx index 4ec4d53ae9df..dfa2fc0d8833 100644 --- a/sc/source/filter/excel/excrecds.cxx +++ b/sc/source/filter/excel/excrecds.cxx @@ -677,14 +677,14 @@ sal_Bool XclExpAutofilter::AddCondition( ScQueryConnect eConn, sal_uInt8 nType, return sal_True; } -sal_Bool XclExpAutofilter::AddEntry( const ScQueryEntry& rEntry ) +bool XclExpAutofilter::AddEntry( const ScQueryEntry& rEntry ) { - sal_Bool bConflict = false; + bool bConflict = false; String sText; - - if( rEntry.pStr ) + rtl::OUString aQueryStr = rEntry.GetQueryString(); + if (!aQueryStr.isEmpty()) { - sText.Assign( *rEntry.pStr ); + sText.Assign(aQueryStr); switch( rEntry.eOp ) { case SC_CONTAINS: @@ -709,19 +709,19 @@ sal_Bool XclExpAutofilter::AddEntry( const ScQueryEntry& rEntry ) } } - sal_Bool bLen = sText.Len() > 0; + bool bLen = sText.Len() > 0; // empty/nonempty fields if( !bLen && (rEntry.nVal == SC_EMPTYFIELDS) ) - bConflict = !AddCondition( rEntry.eConnect, EXC_AFTYPE_EMPTY, EXC_AFOPER_NONE, 0.0, NULL, sal_True ); + bConflict = !AddCondition( rEntry.eConnect, EXC_AFTYPE_EMPTY, EXC_AFOPER_NONE, 0.0, NULL, true ); else if( !bLen && (rEntry.nVal == SC_NONEMPTYFIELDS) ) - bConflict = !AddCondition( rEntry.eConnect, EXC_AFTYPE_NOTEMPTY, EXC_AFOPER_NONE, 0.0, NULL, sal_True ); + bConflict = !AddCondition( rEntry.eConnect, EXC_AFTYPE_NOTEMPTY, EXC_AFOPER_NONE, 0.0, NULL, true ); // other conditions else { double fVal = 0.0; sal_uInt32 nIndex = 0; - sal_Bool bIsNum = bLen ? GetFormatter().IsNumberFormat( sText, nIndex, fVal ) : sal_True; + bool bIsNum = bLen ? GetFormatter().IsNumberFormat( sText, nIndex, fVal ) : true; String* pText = bIsNum ? NULL : &sText; // top10 flags @@ -742,7 +742,7 @@ sal_Bool XclExpAutofilter::AddEntry( const ScQueryEntry& rEntry ) break; default:; } - sal_Bool bNewTop10 = ::get_flag( nNewFlags, EXC_AFFLAG_TOP10 ); + bool bNewTop10 = ::get_flag( nNewFlags, EXC_AFFLAG_TOP10 ); bConflict = HasTop10() && bNewTop10; if( !bConflict ) diff --git a/sc/source/filter/inc/excrecds.hxx b/sc/source/filter/inc/excrecds.hxx index 9689d0109fa0..747ca082e551 100644 --- a/sc/source/filter/inc/excrecds.hxx +++ b/sc/source/filter/inc/excrecds.hxx @@ -420,7 +420,7 @@ public: inline sal_Bool HasCondition() const { return !aCond[ 0 ].IsEmpty(); } inline sal_Bool HasTop10() const { return ::get_flag( nFlags, EXC_AFFLAG_TOP10 ); } - sal_Bool AddEntry( const ScQueryEntry& rEntry ); + bool AddEntry( const ScQueryEntry& rEntry ); virtual void SaveXml( XclExpXmlStream& rStrm ); }; diff --git a/sc/source/filter/xml/XMLExportDataPilot.cxx b/sc/source/filter/xml/XMLExportDataPilot.cxx index 844b9fcd2bbd..8a70167f2f09 100644 --- a/sc/source/filter/xml/XMLExportDataPilot.cxx +++ b/sc/source/filter/xml/XMLExportDataPilot.cxx @@ -134,17 +134,19 @@ void ScXMLExportDataPilot::WriteDPCondition(const ScQueryEntry& aQueryEntry, boo rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_FIELD_NUMBER, rtl::OUString::valueOf(sal_Int32(aQueryEntry.nField))); if (bIsCaseSensitive) rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_CASE_SENSITIVE, XML_TRUE); + rtl::OUString aQueryStr = aQueryEntry.GetQueryString(); if (aQueryEntry.bQueryByString) { - rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_VALUE, *aQueryEntry.pStr); + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_VALUE, aQueryStr); } else { rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_DATA_TYPE, XML_NUMBER); - rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_VALUE, rtl::OUString(*aQueryEntry.pStr)); + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_VALUE, aQueryStr); } - rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_OPERATOR, getDPOperatorXML(aQueryEntry.eOp, bUseRegularExpressions, - aQueryEntry.bQueryByString, aQueryEntry.nVal, *aQueryEntry.pStr)); + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_OPERATOR, + getDPOperatorXML(aQueryEntry.eOp, bUseRegularExpressions, + aQueryEntry.bQueryByString, aQueryEntry.nVal, aQueryStr)); SvXMLElementExport aElemC(rExport, XML_NAMESPACE_TABLE, XML_FILTER_CONDITION, true, true); } diff --git a/sc/source/filter/xml/XMLExportDatabaseRanges.cxx b/sc/source/filter/xml/XMLExportDatabaseRanges.cxx index 4b56c64f50cf..71110f8a7bd8 100644 --- a/sc/source/filter/xml/XMLExportDatabaseRanges.cxx +++ b/sc/source/filter/xml/XMLExportDatabaseRanges.cxx @@ -405,7 +405,7 @@ private: case SC_ENDS_WITH: return GetXMLToken(XML_ENDS_WITH); case SC_EQUAL: - if (!rEntry.bQueryByString && *rEntry.pStr == EMPTY_STRING) + if (!rEntry.bQueryByString && rEntry.GetQueryString().isEmpty()) { if (rEntry.nVal == SC_EMPTYFIELDS) return GetXMLToken(XML_EMPTY); @@ -445,7 +445,7 @@ private: if (bCaseSens) mrExport.AddAttribute(XML_NAMESPACE_TABLE, XML_CASE_SENSITIVE, XML_TRUE); if (rEntry.bQueryByString) - mrExport.AddAttribute(XML_NAMESPACE_TABLE, XML_VALUE, *rEntry.pStr); + mrExport.AddAttribute(XML_NAMESPACE_TABLE, XML_VALUE, rEntry.GetQueryString()); else { mrExport.AddAttribute(XML_NAMESPACE_TABLE, XML_DATA_TYPE, XML_NUMBER); diff --git a/sc/source/filter/xml/xmlfilti.cxx b/sc/source/filter/xml/xmlfilti.cxx index b7cd8faa474a..baf9f9c4c7d2 100644 --- a/sc/source/filter/xml/xmlfilti.cxx +++ b/sc/source/filter/xml/xmlfilti.cxx @@ -765,17 +765,17 @@ void ScXMLDPConditionContext::EndElement() if (IsXMLToken(sDataType, XML_NUMBER)) { aFilterField.nVal = sConditionValue.toDouble(); - *aFilterField.pStr = sConditionValue; + aFilterField.SetQueryString(sConditionValue); aFilterField.bQueryByString = false; if (dVal != 0.0) { aFilterField.nVal = dVal; - *aFilterField.pStr = EMPTY_STRING; + aFilterField.SetQueryString(rtl::OUString()); } } else { - aFilterField.pStr = new String(sConditionValue); + aFilterField.SetQueryString(sConditionValue); aFilterField.bQueryByString = true; aFilterField.nVal = 0; } diff --git a/sc/source/ui/dbgui/filtdlg.cxx b/sc/source/ui/dbgui/filtdlg.cxx index 4f949c4d6c94..2b332ff58021 100644 --- a/sc/source/ui/dbgui/filtdlg.cxx +++ b/sc/source/ui/dbgui/filtdlg.cxx @@ -311,18 +311,19 @@ void ScFilterDlg::Init( const SfxItemSet& rArgSet ) { nCondPos = (sal_uInt16)rEntry.eOp; nFieldSelPos = GetFieldSelPos( static_cast<SCCOL>(rEntry.nField) ); - if ( rEntry.nVal == SC_EMPTYFIELDS && !rEntry.bQueryByString && *rEntry.pStr == EMPTY_STRING ) + bool bEmptyString = rEntry.GetQueryString().isEmpty(); + if (rEntry.nVal == SC_EMPTYFIELDS && !rEntry.bQueryByString && bEmptyString) { aValStr = aStrEmpty; aCondLbArr[i]->Disable(); } - else if ( rEntry.nVal == SC_NONEMPTYFIELDS && !rEntry.bQueryByString && *rEntry.pStr == EMPTY_STRING ) + else if (rEntry.nVal == SC_NONEMPTYFIELDS && !rEntry.bQueryByString && bEmptyString) { aValStr = aStrNotEmpty; aCondLbArr[i]->Disable(); } else - aValStr = *rEntry.pStr; + aValStr = rEntry.GetQueryString(); } else if ( i == 0 ) { @@ -1145,19 +1146,19 @@ IMPL_LINK( ScFilterDlg, ValModifyHdl, ComboBox*, pEd ) { if ( aStrEmpty.equals(aStrVal) ) { - rEntry.pStr->Erase(); + rEntry.SetQueryString(rtl::OUString()); rEntry.nVal = SC_EMPTYFIELDS; rEntry.bQueryByString = false; } else if ( aStrNotEmpty.equals(aStrVal) ) { - rEntry.pStr->Erase(); + rEntry.SetQueryString(rtl::OUString()); rEntry.nVal = SC_NONEMPTYFIELDS; rEntry.bQueryByString = false; } else { - *rEntry.pStr = aStrVal; + rEntry.SetQueryString(aStrVal); rEntry.nVal = 0; rEntry.bQueryByString = true; } @@ -1217,19 +1218,20 @@ void ScFilterDlg::RefreshEditRow( size_t nOffset ) if(rEntry.bDoQuery) nFieldSelPos = GetFieldSelPos( static_cast<SCCOL>(rEntry.nField) ); - if ( rEntry.nVal == SC_EMPTYFIELDS && !rEntry.bQueryByString && *rEntry.pStr == EMPTY_STRING ) + rtl::OUString aQueryStr = rEntry.GetQueryString(); + if ( rEntry.nVal == SC_EMPTYFIELDS && !rEntry.bQueryByString && aQueryStr.isEmpty()) { aValStr = aStrEmpty; aCondLbArr[i]->Disable(); } - else if ( rEntry.nVal == SC_NONEMPTYFIELDS && !rEntry.bQueryByString && *rEntry.pStr == EMPTY_STRING ) + else if ( rEntry.nVal == SC_NONEMPTYFIELDS && !rEntry.bQueryByString && aQueryStr.isEmpty()) { aValStr = aStrNotEmpty; aCondLbArr[i]->Disable(); } else { - aValStr = *rEntry.pStr; + aValStr = aQueryStr; aCondLbArr[i]->Enable(); } aFieldLbArr[i]->Enable(); diff --git a/sc/source/ui/dbgui/pfiltdlg.cxx b/sc/source/ui/dbgui/pfiltdlg.cxx index 171a2b5f5616..c776021d7044 100644 --- a/sc/source/ui/dbgui/pfiltdlg.cxx +++ b/sc/source/ui/dbgui/pfiltdlg.cxx @@ -215,8 +215,8 @@ void ScPivotFilterDlg::Init( const SfxItemSet& rArgSet ) { const ScQueryEntry& rEntry = theQueryData.GetEntry(i); - String aValStr = *rEntry.pStr; - if (!rEntry.bQueryByString && aValStr == EMPTY_STRING) + rtl::OUString aValStr = rEntry.GetQueryString(); + if (!rEntry.bQueryByString && aValStr.isEmpty()) { if (rEntry.nVal == SC_EMPTYFIELDS) aValStr = aStrEmpty; @@ -230,7 +230,7 @@ void ScPivotFilterDlg::Init( const SfxItemSet& rArgSet ) aCondLbArr [i]->SelectEntryPos( nCondPos ); UpdateValueList( static_cast<sal_uInt16>(i+1) ); aValueEdArr[i]->SetText( aValStr ); - if (aValStr == aStrEmpty || aValStr == aStrNotEmpty) + if (aValStr.equals(aStrEmpty) || aValStr.equals(aStrNotEmpty)) aCondLbArr[i]->Disable(); } else @@ -426,19 +426,19 @@ const ScQueryItem& ScPivotFilterDlg::GetOutputItem() */ if ( aStrVal == aStrEmpty ) { - *rEntry.pStr = EMPTY_STRING; + rEntry.SetQueryString(rtl::OUString()); rEntry.nVal = SC_EMPTYFIELDS; rEntry.bQueryByString = false; } else if ( aStrVal == aStrNotEmpty ) { - *rEntry.pStr = EMPTY_STRING; + rEntry.SetQueryString(rtl::OUString()); rEntry.nVal = SC_NONEMPTYFIELDS; rEntry.bQueryByString = false; } else { - *rEntry.pStr = aStrVal; + rEntry.SetQueryString(aStrVal); rEntry.nVal = 0; rEntry.bQueryByString = sal_True; } diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx index 14aeaa1e6f42..dc7ff54ceb0e 100644 --- a/sc/source/ui/view/gridwin.cxx +++ b/sc/source/ui/view/gridwin.cxx @@ -695,7 +695,7 @@ void ScGridWindow::UpdateAutoFilterFromMenu() ScQueryEntry& rEntry = aParam.GetEntry(0); rEntry.bDoQuery = true; rEntry.bQueryByString = true; - rEntry.pStr = new String(aSelected[0]); + rEntry.SetQueryString(aSelected[0]); pViewData->GetView()->Query(aParam, NULL, true); pDBData->SetQueryParam(aParam); @@ -1169,16 +1169,15 @@ void ScGridWindow::LaunchDataSelectMenu( SCCOL nCol, SCROW nRow, bool bDataSelec bValid = false; if (rEntry.nField == nCol) { + rtl::OUString aQueryStr = rEntry.GetQueryString(); if (rEntry.eOp == SC_EQUAL) { - String* pStr = rEntry.pStr; - if (pStr) + if (!aQueryStr.isEmpty()) { - nSelPos = pFilterBox->GetEntryPos( *pStr ); + nSelPos = pFilterBox->GetEntryPos(aQueryStr); } } - else if (rEntry.eOp == SC_TOPVAL && rEntry.pStr && - rEntry.pStr->EqualsAscii("10")) + else if (rEntry.eOp == SC_TOPVAL && aQueryStr.equalsAscii("10")) nSelPos = SC_AUTOFILTER_TOP10; else nSelPos = SC_AUTOFILTER_CUSTOM; @@ -1391,11 +1390,12 @@ void ScGridWindow::ExecFilter( sal_uLong nSel, if ( nSel == SC_AUTOFILTER_TOP10 ) { rNewEntry.eOp = SC_TOPVAL; - *rNewEntry.pStr = String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("10")); + rNewEntry.SetQueryString( + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("10"))); } else if (nSel == SC_AUTOFILTER_EMPTY) { - rNewEntry.pStr->Erase(); + rNewEntry.SetQueryString(rtl::OUString()); rNewEntry.bQueryByString = false; rNewEntry.eOp = SC_EQUAL; rNewEntry.nVal = SC_EMPTYFIELDS; @@ -1403,7 +1403,7 @@ void ScGridWindow::ExecFilter( sal_uLong nSel, } else if (nSel == SC_AUTOFILTER_NOTEMPTY) { - rNewEntry.pStr->Erase(); + rNewEntry.SetQueryString(rtl::OUString()); rNewEntry.bQueryByString = false; rNewEntry.eOp = SC_EQUAL; rNewEntry.nVal = SC_NONEMPTYFIELDS; @@ -1411,7 +1411,7 @@ void ScGridWindow::ExecFilter( sal_uLong nSel, else { rNewEntry.eOp = SC_EQUAL; - *rNewEntry.pStr = aValue; + rNewEntry.SetQueryString(aValue); } if (nQueryPos > 0) rNewEntry.eConnect = SC_AND; |