summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@suse.com>2012-02-24 21:40:58 -0500
committerKohei Yoshida <kohei.yoshida@suse.com>2012-02-25 00:45:43 -0500
commit397e5668b7269e19d66705cbed5b577db0510a9f (patch)
tree37d5309cf661a07ef49a30b2647a8b6d64c8357a /sc
parente7cd45417957fa1c57ca63fc6de2428647639f25 (diff)
ScDPOutput is now String-free.
Diffstat (limited to 'sc')
-rw-r--r--sc/inc/dpoutput.hxx16
-rw-r--r--sc/source/core/data/dpobject.cxx4
-rw-r--r--sc/source/core/data/dpoutput.cxx76
3 files changed, 49 insertions, 47 deletions
diff --git a/sc/inc/dpoutput.hxx b/sc/inc/dpoutput.hxx
index 4a026475666a..1aec7e7695d8 100644
--- a/sc/inc/dpoutput.hxx
+++ b/sc/inc/dpoutput.hxx
@@ -57,11 +57,11 @@ struct ScDPOutLevelData;
struct ScDPGetPivotDataField
{
- String maFieldName;
+ rtl::OUString maFieldName;
com::sun::star::sheet::GeneralFunction meFunction;
bool mbValIsStr;
- String maValStr;
+ rtl::OUString maValStr;
double mnValNum;
ScDPGetPivotDataField() :
@@ -74,10 +74,9 @@ struct ScDPGetPivotDataField
-class ScDPOutput //! name???
+class ScDPOutput
{
private:
- //! use impl-object?
ScDocument* pDoc;
com::sun::star::uno::Reference<
com::sun::star::sheet::XDimensionsSupplier> xSource;
@@ -94,7 +93,7 @@ private:
com::sun::star::sheet::DataResult> > aData;
bool bResultsError;
bool mbHasDataLayout;
- String aDataDescription;
+ rtl::OUString aDataDescription;
// Number format related parameters
sal_uInt32* pColNumFmt;
@@ -167,9 +166,10 @@ public:
void SetHeaderLayout(bool bUseGrid);
bool GetHeaderLayout() const;
- static void GetDataDimensionNames( String& rSourceName, String& rGivenName,
- const com::sun::star::uno::Reference<
- com::sun::star::uno::XInterface>& xDim );
+ static void GetDataDimensionNames(
+ rtl::OUString& rSourceName, rtl::OUString& rGivenName,
+ const com::sun::star::uno::Reference<
+ com::sun::star::uno::XInterface>& xDim );
};
diff --git a/sc/source/core/data/dpobject.cxx b/sc/source/core/data/dpobject.cxx
index bd28f39a0b4c..a042a45a3ddd 100644
--- a/sc/source/core/data/dpobject.cxx
+++ b/sc/source/core/data/dpobject.cxx
@@ -1353,8 +1353,8 @@ bool ScDPObject::ParseFilters( ScDPGetPivotDataField& rTarget,
{
if ( nOrient == sheet::DataPilotFieldOrientation_DATA )
{
- String aSourceName;
- String aGivenName;
+ rtl::OUString aSourceName;
+ rtl::OUString aGivenName;
ScDPOutput::GetDataDimensionNames( aSourceName, aGivenName, xIntDim );
aDataNames.push_back( aSourceName );
aGivenNames.push_back( aGivenName );
diff --git a/sc/source/core/data/dpoutput.cxx b/sc/source/core/data/dpoutput.cxx
index 392b99a2ff94..f53f8faf0f5d 100644
--- a/sc/source/core/data/dpoutput.cxx
+++ b/sc/source/core/data/dpoutput.cxx
@@ -305,7 +305,7 @@ void lcl_SetStyleById( ScDocument* pDoc, SCTAB nTab,
return;
}
- String aStyleName = ScGlobal::GetRscString( nStrId );
+ rtl::OUString aStyleName = ScGlobal::GetRscString( nStrId );
ScStyleSheetPool* pStlPool = pDoc->GetStyleSheetPool();
ScStyleSheet* pStyle = (ScStyleSheet*) pStlPool->Find( aStyleName, SFX_STYLE_FAMILY_PARA );
if (!pStyle)
@@ -363,7 +363,7 @@ void lcl_FillNumberFormats( sal_uInt32*& rFormats, long& rCount,
// get names/formats for all data dimensions
//! merge this with the loop to collect ScDPOutLevelData?
- String aDataNames[SC_DPOUT_MAXLEVELS];
+ rtl::OUString aDataNames[SC_DPOUT_MAXLEVELS];
sal_uInt32 nDataFormats[SC_DPOUT_MAXLEVELS];
long nDataCount = 0;
sal_Bool bAnySet = false;
@@ -383,7 +383,7 @@ void lcl_FillNumberFormats( sal_uInt32*& rFormats, long& rCount,
sheet::DataPilotFieldOrientation_HIDDEN );
if ( eDimOrient == sheet::DataPilotFieldOrientation_DATA )
{
- aDataNames[nDataCount] = String( xDimName->getName() );
+ aDataNames[nDataCount] = xDimName->getName();
long nFormat = ScUnoHelpFunctions::GetLongProperty(
xDimProp,
rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNONAME_NUMFMT)) );
@@ -399,7 +399,7 @@ void lcl_FillNumberFormats( sal_uInt32*& rFormats, long& rCount,
{
const sheet::MemberResult* pArray = aResult.getConstArray();
- String aName;
+ rtl::OUString aName;
sal_uInt32* pNumFmt = new sal_uInt32[nSize];
if (nDataCount == 1)
{
@@ -415,7 +415,7 @@ void lcl_FillNumberFormats( sal_uInt32*& rFormats, long& rCount,
// if CONTINUE bit is set, keep previous name
//! keep number format instead!
if ( !(pArray[nPos].Flags & sheet::MemberResultFlags::CONTINUE) )
- aName = String( pArray[nPos].Name );
+ aName = pArray[nPos].Name;
sal_uInt32 nFormat = 0;
for (long i=0; i<nDataCount; i++)
@@ -716,7 +716,7 @@ ScDPOutput::ScDPOutput( ScDocument* pD, const uno::Reference<sheet::XDimensionsS
rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNO_DP_DATADESC)) );
rtl::OUString aUStr;
aAny >>= aUStr;
- aDataDescription = String( aUStr );
+ aDataDescription = aUStr;
}
catch(uno::Exception&)
{
@@ -998,11 +998,11 @@ void ScDPOutput::Output()
FieldCell(nHdrCol, nHdrRow, nTab, pPageFields[nField], false);
SCCOL nFldCol = nHdrCol + 1;
- String aPageValue;
+ rtl::OUString aPageValue;
if ( pPageFields[nField].aResult.getLength() == 1 )
aPageValue = pPageFields[nField].aResult[0].Caption;
else
- aPageValue = String( ScResId( SCSTR_ALL ) ); //! separate string?
+ aPageValue = ScResId::toString(ScResId(SCSTR_ALL)); //! separate string?
pDoc->SetString( nFldCol, nHdrRow, nTab, aPageValue );
@@ -1014,12 +1014,11 @@ void ScDPOutput::Output()
// data description
// (may get overwritten by first row field)
- String aDesc = aDataDescription;
- if ( !aDesc.Len() )
+ if (aDataDescription.isEmpty())
{
//! use default string ("result") ?
}
- pDoc->SetString( nTabStartCol, nTabStartRow, nTab, aDesc );
+ pDoc->SetString(nTabStartCol, nTabStartRow, nTab, aDataDescription);
// set STR_PIVOT_STYLE_INNER for whole data area (subtotals are overwritten)
@@ -1217,9 +1216,9 @@ bool ScDPOutput::GetHeaderLayout() const
namespace {
void lcl_GetTableVars( sal_Int32& rGrandTotalCols, sal_Int32& rGrandTotalRows, sal_Int32& rDataLayoutIndex,
- std::vector<String>& rDataNames, std::vector<String>& rGivenNames,
- sheet::DataPilotFieldOrientation& rDataOrient,
- const uno::Reference<sheet::XDimensionsSupplier>& xSource )
+ std::vector<rtl::OUString>& rDataNames, std::vector<rtl::OUString>& rGivenNames,
+ sheet::DataPilotFieldOrientation& rDataOrient,
+ const uno::Reference<sheet::XDimensionsSupplier>& xSource )
{
rDataLayoutIndex = -1; // invalid
rGrandTotalCols = 0;
@@ -1264,8 +1263,8 @@ void lcl_GetTableVars( sal_Int32& rGrandTotalCols, sal_Int32& rGrandTotalRows, s
}
if ( eDimOrient == sheet::DataPilotFieldOrientation_DATA )
{
- String aSourceName;
- String aGivenName;
+ rtl::OUString aSourceName;
+ rtl::OUString aGivenName;
ScDPOutput::GetDataDimensionNames( aSourceName, aGivenName, xDim );
rDataNames.push_back( aSourceName );
rGivenNames.push_back( aGivenName );
@@ -1408,8 +1407,8 @@ bool ScDPOutput::GetDataResultPositionData(vector<sheet::DataPilotFieldFilter>&
sal_Int32 nGrandTotalCols;
sal_Int32 nGrandTotalRows;
sal_Int32 nDataLayoutIndex;
- std::vector<String> aDataNames;
- std::vector<String> aGivenNames;
+ std::vector<rtl::OUString> aDataNames;
+ std::vector<rtl::OUString> aGivenNames;
sheet::DataPilotFieldOrientation eDataOrient;
lcl_GetTableVars( nGrandTotalCols, nGrandTotalRows, nDataLayoutIndex, aDataNames, aGivenNames, eDataOrient, xSource );
@@ -1482,6 +1481,8 @@ bool ScDPOutput::GetDataResultPositionData(vector<sheet::DataPilotFieldFilter>&
return true;
}
+namespace {
+
//
// helper functions for ScDPOutput::GetPivotData
//
@@ -1596,7 +1597,7 @@ void lcl_FilterInclude( std::vector< sal_Bool >& rResult, std::vector< sal_Int32
std::vector< sal_Bool >& rFilterUsed,
bool& rBeforeDataLayout,
sal_Int32 nGrandTotals, sal_Int32 nDataLayoutIndex,
- const std::vector<String>& rDataNames, const std::vector<String>& rGivenNames,
+ const std::vector<rtl::OUString>& rDataNames, const std::vector<rtl::OUString>& rGivenNames,
const ScDPGetPivotDataField& rTarget, const uno::Reference<sheet::XDimensionsSupplier>& xSource )
{
// returns true if a filter was given for the field
@@ -1664,8 +1665,8 @@ void lcl_FilterInclude( std::vector< sal_Bool >& rResult, std::vector< sal_Int32
// grand total is always automatic
sal_Int32 nDataPos = j - ( nSize - nGrandTotals );
OSL_ENSURE( nDataPos < (sal_Int32)rDataNames.size(), "wrong data count" );
- String aSourceName( rDataNames[nDataPos] ); // vector contains source names
- String aGivenName( rGivenNames[nDataPos] );
+ rtl::OUString aSourceName( rDataNames[nDataPos] ); // vector contains source names
+ rtl::OUString aGivenName( rGivenNames[nDataPos] );
rResult[j] = lcl_IsNamedDataField( rTarget, aSourceName, aGivenName );
}
@@ -1700,8 +1701,8 @@ void lcl_FilterInclude( std::vector< sal_Bool >& rResult, std::vector< sal_Int32
sal_Int32 nFuncPos = nSubTotalCount / nDataCount; // outer order: subtotal functions
sal_Int32 nDataPos = nSubTotalCount % nDataCount; // inner order: data fields
- String aSourceName( rDataNames[nDataPos] ); // vector contains source names
- String aGivenName( rGivenNames[nDataPos] );
+ rtl::OUString aSourceName( rDataNames[nDataPos] ); // vector contains source names
+ rtl::OUString aGivenName( rGivenNames[nDataPos] );
OSL_ENSURE( nFuncPos < aSubTotals.getLength(), "wrong subtotal count" );
rResult[j] = lcl_IsNamedDataField( rTarget, aSourceName, aGivenName ) &&
@@ -1720,8 +1721,8 @@ void lcl_FilterInclude( std::vector< sal_Bool >& rResult, std::vector< sal_Int32
if ( rBeforeDataLayout )
{
OSL_ENSURE( nSubTotalCount < (sal_Int32)rDataNames.size(), "wrong data count" );
- String aSourceName( rDataNames[nSubTotalCount] ); // vector contains source names
- String aGivenName( rGivenNames[nSubTotalCount] );
+ rtl::OUString aSourceName( rDataNames[nSubTotalCount] ); // vector contains source names
+ rtl::OUString aGivenName( rGivenNames[nSubTotalCount] );
rResult[j] = lcl_IsNamedDataField( rTarget, aSourceName, aGivenName );
}
@@ -1784,7 +1785,7 @@ void lcl_StripSubTotals( std::vector< sal_Bool >& rResult, const std::vector< sa
}
}
-String lcl_GetDataFieldName( const String& rSourceName, sheet::GeneralFunction eFunc )
+rtl::OUString lcl_GetDataFieldName( const rtl::OUString& rSourceName, sheet::GeneralFunction eFunc )
{
sal_uInt16 nStrId = 0;
switch ( eFunc )
@@ -1808,16 +1809,18 @@ String lcl_GetDataFieldName( const String& rSourceName, sheet::GeneralFunction e
}
}
if ( !nStrId )
- return String();
+ return rtl::OUString();
+
+ rtl::OUStringBuffer aRet( ScGlobal::GetRscString( nStrId ) );
+ aRet.appendAscii(RTL_CONSTASCII_STRINGPARAM(" - "));
+ aRet.append(rSourceName);
+ return aRet.makeStringAndClear();
+}
- String aRet( ScGlobal::GetRscString( nStrId ) );
- aRet.AppendAscii(RTL_CONSTASCII_STRINGPARAM( " - " ));
- aRet.Append( rSourceName );
- return aRet;
}
-void ScDPOutput::GetDataDimensionNames( String& rSourceName, String& rGivenName,
- const uno::Reference<uno::XInterface>& xDim )
+void ScDPOutput::GetDataDimensionNames(
+ rtl::OUString& rSourceName, rtl::OUString& rGivenName, const uno::Reference<uno::XInterface>& xDim )
{
uno::Reference<beans::XPropertySet> xDimProp( xDim, uno::UNO_QUERY );
uno::Reference<container::XNamed> xDimName( xDim, uno::UNO_QUERY );
@@ -1825,8 +1828,7 @@ void ScDPOutput::GetDataDimensionNames( String& rSourceName, String& rGivenName,
{
// Asterisks are added in ScDPSaveData::WriteToSource to create unique names.
//! preserve original name there?
- rSourceName = xDimName->getName();
- rSourceName.EraseTrailingChars( '*' );
+ rSourceName = ScDPUtil::getSourceDimensionName(xDimName->getName());
// Generate "given name" the same way as in dptabres.
//! Should use a stored name when available
@@ -1849,8 +1851,8 @@ sal_Bool ScDPOutput::GetPivotData( ScDPGetPivotDataField& rTarget,
sal_Int32 nGrandTotalCols;
sal_Int32 nGrandTotalRows;
sal_Int32 nDataLayoutIndex;
- std::vector<String> aDataNames;
- std::vector<String> aGivenNames;
+ std::vector<rtl::OUString> aDataNames;
+ std::vector<rtl::OUString> aGivenNames;
sheet::DataPilotFieldOrientation eDataOrient;
lcl_GetTableVars( nGrandTotalCols, nGrandTotalRows, nDataLayoutIndex, aDataNames, aGivenNames, eDataOrient, xSource );