[Libreoffice-commits] core.git: 2 commits - sc/inc sc/source
Eike Rathke
erack at redhat.com
Wed Apr 10 03:22:29 PDT 2013
sc/inc/addincol.hxx | 54 +++++----
sc/source/core/tool/addincol.cxx | 225 ++++++++++++++++++---------------------
2 files changed, 136 insertions(+), 143 deletions(-)
New commits:
commit c979adad481bd41bff90047b1e59ce1741e642e1
Author: Eike Rathke <erack at redhat.com>
Date: Tue Apr 9 23:37:14 2013 +0200
sal_Bool to bool
Change-Id: I2d9baed5032e267ac5053267d367723999526c8f
diff --git a/sc/inc/addincol.hxx b/sc/inc/addincol.hxx
index daa2931..15abd4c 100644
--- a/sc/inc/addincol.hxx
+++ b/sc/inc/addincol.hxx
@@ -27,7 +27,6 @@
#include <com/sun/star/sheet/ResultEvent.hpp>
#include <com/sun/star/container/XNameAccess.hpp>
#include <com/sun/star/reflection/XIdlMethod.hpp>
-#include <com/sun/star/sheet/LocalizedName.hpp>
#include <i18nlangtag/lang.h>
#include <rtl/ustring.h>
#include "scdllapi.h"
@@ -71,7 +70,7 @@ struct ScAddInArgDesc
OUString aName;
OUString aDescription;
ScAddInArgumentType eType;
- sal_Bool bOptional;
+ bool bOptional;
};
class ScUnoAddInFuncData
@@ -99,7 +98,7 @@ private:
sal_uInt16 nCategory;
OString sHelpId;
mutable ::std::vector< LocalizedName > maCompNames;
- mutable sal_Bool bCompInitialized;
+ mutable bool bCompInitialized;
public:
ScUnoAddInFuncData( const OUString& rNam, const OUString& rLoc,
@@ -127,7 +126,7 @@ public:
const OString GetHelpId() const { return sHelpId; }
const ::std::vector< LocalizedName >& GetCompNames() const;
- sal_Bool GetExcelName( LanguageType eDestLang, OUString& rRetExcelName ) const;
+ bool GetExcelName( LanguageType eDestLang, OUString& rRetExcelName ) const;
void SetFunction( const com::sun::star::uno::Reference< com::sun::star::reflection::XIdlMethod>& rNewFunc,
const com::sun::star::uno::Any& rNewObj );
@@ -146,7 +145,7 @@ private:
ScAddInHashMap* pExactHashMap; ///< exact internal name
ScAddInHashMap* pNameHashMap; ///< internal name upper
ScAddInHashMap* pLocalHashMap; ///< localized name upper
- sal_Bool bInitialized;
+ bool bInitialized;
void Initialize();
void ReadConfiguration();
@@ -162,7 +161,7 @@ public:
~ScUnoAddInCollection();
/// User enetered name. rUpperName MUST already be upper case!
- OUString FindFunction( const OUString& rUpperName, sal_Bool bLocalFirst );
+ OUString FindFunction( const OUString& rUpperName, bool bLocalFirst );
/** Only if bComplete is set, the function reference and argument types
are initialized (component may have to be loaded).
@@ -180,13 +179,13 @@ public:
void LocalizeString( OUString& rName ); ///< modify rName - input: exact name
long GetFuncCount();
- sal_Bool FillFunctionDesc( long nFunc, ScFuncDesc& rDesc );
+ bool FillFunctionDesc( long nFunc, ScFuncDesc& rDesc );
- static sal_Bool FillFunctionDescFromData( const ScUnoAddInFuncData& rFuncData, ScFuncDesc& rDesc );
+ static bool FillFunctionDescFromData( const ScUnoAddInFuncData& rFuncData, ScFuncDesc& rDesc );
/// leave rRetExcelName unchanged, if no matching name is found
- sal_Bool GetExcelName( const OUString& rCalcName, LanguageType eDestLang, OUString& rRetExcelName );
+ bool GetExcelName( const OUString& rCalcName, LanguageType eDestLang, OUString& rRetExcelName );
/// leave rRetCalcName unchanged, if no matching name is found
- sal_Bool GetCalcName( const OUString& rExcelName, OUString& rRetCalcName );
+ bool GetCalcName( const OUString& rExcelName, OUString& rRetCalcName );
};
@@ -197,12 +196,12 @@ private:
com::sun::star::uno::Sequence<com::sun::star::uno::Any> aArgs;
com::sun::star::uno::Sequence<com::sun::star::uno::Any> aVarArg;
com::sun::star::uno::Reference<com::sun::star::uno::XInterface> xCaller;
- sal_Bool bValidCount;
+ bool bValidCount;
// result:
- sal_uInt16 nErrCode;
- sal_Bool bHasString;
+ sal_uInt16 nErrCode;
+ bool bHasString;
double fValue;
- OUString aString;
+ OUString aString;
ScMatrixRef xMatrix;
com::sun::star::uno::Reference<com::sun::star::sheet::XVolatileResult> xVarRes;
@@ -215,12 +214,12 @@ public:
long nParamCount );
~ScUnoAddInCall();
- sal_Bool NeedsCaller() const;
+ bool NeedsCaller() const;
void SetCaller( const com::sun::star::uno::Reference<
com::sun::star::uno::XInterface>& rInterface );
void SetCallerFromObjectShell( SfxObjectShell* pSh );
- sal_Bool ValidParamCount();
+ bool ValidParamCount();
ScAddInArgumentType GetArgType( long nPos );
void SetParam( long nPos, const com::sun::star::uno::Any& rValue );
@@ -228,12 +227,12 @@ public:
void SetResult( const com::sun::star::uno::Any& rNewRes );
- sal_uInt16 GetErrCode() const { return nErrCode; }
- sal_Bool HasString() const { return bHasString; }
+ sal_uInt16 GetErrCode() const { return nErrCode; }
+ bool HasString() const { return bHasString; }
bool HasMatrix() const { return xMatrix.get(); }
- sal_Bool HasVarRes() const { return ( xVarRes.is() ); }
+ bool HasVarRes() const { return ( xVarRes.is() ); }
double GetValue() const { return fValue; }
- const OUString& GetString() const { return aString; }
+ const OUString& GetString() const { return aString; }
ScMatrixRef GetMatrix() const { return xMatrix; }
com::sun::star::uno::Reference<com::sun::star::sheet::XVolatileResult>
GetVarRes() const { return xVarRes; }
diff --git a/sc/source/core/tool/addincol.cxx b/sc/source/core/tool/addincol.cxx
index a4ff289..d5c5401 100644
--- a/sc/source/core/tool/addincol.cxx
+++ b/sc/source/core/tool/addincol.cxx
@@ -121,7 +121,7 @@ const ::std::vector<ScUnoAddInFuncData::LocalizedName>& ScUnoAddInFuncData::GetC
}
}
- bCompInitialized = sal_True; // also if not successful
+ bCompInitialized = true; // also if not successful
}
return maCompNames;
}
@@ -132,10 +132,10 @@ void ScUnoAddInFuncData::SetCompNames( const ::std::vector< ScUnoAddInFuncData::
maCompNames = rNew;
- bCompInitialized = sal_True;
+ bCompInitialized = true;
}
-sal_Bool ScUnoAddInFuncData::GetExcelName( LanguageType eDestLang, OUString& rRetExcelName ) const
+bool ScUnoAddInFuncData::GetExcelName( LanguageType eDestLang, OUString& rRetExcelName ) const
{
const ::std::vector<LocalizedName>& rCompNames = GetCompNames();
if ( !rCompNames.empty() )
@@ -194,7 +194,7 @@ sal_Bool ScUnoAddInFuncData::GetExcelName( LanguageType eDestLang, OUString& rRe
// Third, last resort, use first (default) entry.
rRetExcelName = rCompNames[0].maName;
- return sal_True;
+ return true;
}
return false;
}
@@ -319,7 +319,7 @@ void ScUnoAddInCollection::Initialize()
// when argument information is needed).
ReadConfiguration();
- bInitialized = sal_True; // with or without functions
+ bInitialized = true; // with or without functions
}
// -----------------------------------------------------------------------------
@@ -610,7 +610,7 @@ void ScUnoAddInCollection::LoadComponent( const ScUnoAddInFuncData& rFuncData )
}
}
-sal_Bool ScUnoAddInCollection::GetExcelName( const OUString& rCalcName,
+bool ScUnoAddInCollection::GetExcelName( const OUString& rCalcName,
LanguageType eDestLang, OUString& rRetExcelName )
{
const ScUnoAddInFuncData* pFuncData = GetFuncData( rCalcName );
@@ -619,7 +619,7 @@ sal_Bool ScUnoAddInCollection::GetExcelName( const OUString& rCalcName,
return false;
}
-sal_Bool ScUnoAddInCollection::GetCalcName( const OUString& rExcelName, OUString& rRetCalcName )
+bool ScUnoAddInCollection::GetCalcName( const OUString& rExcelName, OUString& rRetCalcName )
{
if (!bInitialized)
Initialize();
@@ -643,7 +643,7 @@ sal_Bool ScUnoAddInCollection::GetCalcName( const OUString& rExcelName, OUString
// use the first function that has this name for any language
rRetCalcName = pFuncData->GetOriginalName();
- return sal_True;
+ return true;
}
}
}
@@ -652,12 +652,12 @@ sal_Bool ScUnoAddInCollection::GetCalcName( const OUString& rExcelName, OUString
return false;
}
-inline sal_Bool IsTypeName( const OUString& rName, const uno::Type& rType )
+inline bool IsTypeName( const OUString& rName, const uno::Type& rType )
{
return rName == rType.getTypeName();
}
-static sal_Bool lcl_ValidReturnType( const uno::Reference<reflection::XIdlClass>& xClass )
+static bool lcl_ValidReturnType( const uno::Reference<reflection::XIdlClass>& xClass )
{
// this must match with ScUnoAddInCall::SetResult
@@ -677,7 +677,7 @@ static sal_Bool lcl_ValidReturnType( const uno::Reference<reflection::XIdlClass>
case uno::TypeClass_FLOAT:
case uno::TypeClass_DOUBLE:
case uno::TypeClass_STRING:
- return sal_True; // values or string
+ return true; // values or string
case uno::TypeClass_INTERFACE:
{
@@ -811,7 +811,7 @@ void ScUnoAddInCollection::ReadFromAddIn( const uno::Reference<uno::XInterface>&
// leave out internal functions
uno::Reference<reflection::XIdlClass> xClass =
xFunc->getDeclaringClass();
- sal_Bool bSkip = sal_True;
+ bool bSkip = true;
if ( xClass.is() )
{
//! XIdlClass needs getType() method!
@@ -831,7 +831,7 @@ void ScUnoAddInCollection::ReadFromAddIn( const uno::Reference<uno::XInterface>&
uno::Reference<reflection::XIdlClass> xReturn =
xFunc->getReturnType();
if ( !lcl_ValidReturnType( xReturn ) )
- bSkip = sal_True;
+ bSkip = true;
}
if (!bSkip)
{
@@ -844,7 +844,7 @@ void ScUnoAddInCollection::ReadFromAddIn( const uno::Reference<uno::XInterface>&
aFuncNameBuffer.append(aFuncU);
OUString aFuncName = aFuncNameBuffer.makeStringAndClear();
- sal_Bool bValid = sal_True;
+ bool bValid = true;
long nVisibleCount = 0;
long nCallerPos = SC_CALLERPOS_NONE;
@@ -930,7 +930,7 @@ void ScUnoAddInCollection::ReadFromAddIn( const uno::Reference<uno::XInterface>&
aArgDesc = "###";
}
- sal_Bool bOptional =
+ bool bOptional =
( eArgType == SC_ADDINARG_VALUE_OR_ARRAY ||
eArgType == SC_ADDINARG_VARARGS );
@@ -1059,7 +1059,7 @@ void ScUnoAddInCollection::UpdateFromAddIn( const uno::Reference<uno::XInterface
// Local names and descriptions from pOldData are looked up using the
// internal argument name.
- sal_Bool bValid = sal_True;
+ bool bValid = true;
long nVisibleCount = 0;
long nCallerPos = SC_CALLERPOS_NONE;
@@ -1107,7 +1107,7 @@ void ScUnoAddInCollection::UpdateFromAddIn( const uno::Reference<uno::XInterface
else
aDesc.aName = aDesc.aDescription = "###";
- sal_Bool bOptional =
+ bool bOptional =
( eArgType == SC_ADDINARG_VALUE_OR_ARRAY ||
eArgType == SC_ADDINARG_VARARGS );
@@ -1137,7 +1137,7 @@ void ScUnoAddInCollection::UpdateFromAddIn( const uno::Reference<uno::XInterface
}
}
-OUString ScUnoAddInCollection::FindFunction( const OUString& rUpperName, sal_Bool bLocalFirst )
+OUString ScUnoAddInCollection::FindFunction( const OUString& rUpperName, bool bLocalFirst )
{
if (!bInitialized)
Initialize();
@@ -1224,7 +1224,7 @@ long ScUnoAddInCollection::GetFuncCount()
return nFuncCount;
}
-sal_Bool ScUnoAddInCollection::FillFunctionDesc( long nFunc, ScFuncDesc& rDesc )
+bool ScUnoAddInCollection::FillFunctionDesc( long nFunc, ScFuncDesc& rDesc )
{
if (!bInitialized)
Initialize();
@@ -1237,11 +1237,11 @@ sal_Bool ScUnoAddInCollection::FillFunctionDesc( long nFunc, ScFuncDesc& rDesc )
return FillFunctionDescFromData( rFuncData, rDesc );
}
-sal_Bool ScUnoAddInCollection::FillFunctionDescFromData( const ScUnoAddInFuncData& rFuncData, ScFuncDesc& rDesc )
+bool ScUnoAddInCollection::FillFunctionDescFromData( const ScUnoAddInFuncData& rFuncData, ScFuncDesc& rDesc )
{
rDesc.Clear();
- sal_Bool bIncomplete = !rFuncData.GetFunction().is(); //! extra flag?
+ bool bIncomplete = !rFuncData.GetFunction().is(); //! extra flag?
long nArgCount = rFuncData.GetArgumentCount();
if ( nArgCount > USHRT_MAX )
@@ -1266,7 +1266,7 @@ sal_Bool ScUnoAddInCollection::FillFunctionDescFromData( const ScUnoAddInFuncDat
rDesc.nArgCount = (sal_uInt16)nArgCount;
if ( nArgCount )
{
- sal_Bool bMultiple = false;
+ bool bMultiple = false;
const ScAddInArgDesc* pArgs = rFuncData.GetArguments();
rDesc.ppDefArgNames = new OUString*[nArgCount];
@@ -1289,7 +1289,7 @@ sal_Bool ScUnoAddInCollection::FillFunctionDescFromData( const ScUnoAddInFuncDat
// last argument repeated?
if ( nArg+1 == nArgCount && ( pArgs[nArg].eType == SC_ADDINARG_VARARGS ) )
- bMultiple = sal_True;
+ bMultiple = true;
}
if ( bMultiple )
@@ -1298,7 +1298,7 @@ sal_Bool ScUnoAddInCollection::FillFunctionDescFromData( const ScUnoAddInFuncDat
rDesc.bIncomplete = bIncomplete;
- return sal_True;
+ return true;
}
@@ -1308,7 +1308,7 @@ ScUnoAddInCall::ScUnoAddInCall( ScUnoAddInCollection& rColl, const OUString& rNa
long nParamCount ) :
bValidCount( false ),
nErrCode( errNoCode ), // before function was called
- bHasString( sal_True ),
+ bHasString( true ),
fValue( 0.0 ),
xMatrix( NULL )
{
@@ -1325,12 +1325,12 @@ ScUnoAddInCall::ScUnoAddInCall( ScUnoAddInCollection& rColl, const OUString& rNa
{
long nVarCount = nParamCount - ( nDescCount - 1 ); // size of last argument
aVarArg.realloc( nVarCount );
- bValidCount = sal_True;
+ bValidCount = true;
}
else if ( nParamCount <= nDescCount )
{
// all args behind nParamCount must be optional
- bValidCount = sal_True;
+ bValidCount = true;
for (long i=nParamCount; i<nDescCount; i++)
if ( !pArgs[i].bOptional )
bValidCount = false;
@@ -1347,7 +1347,7 @@ ScUnoAddInCall::~ScUnoAddInCall()
// pFuncData is deleted with ScUnoAddInCollection
}
-sal_Bool ScUnoAddInCall::ValidParamCount()
+bool ScUnoAddInCall::ValidParamCount()
{
return bValidCount;
}
@@ -1369,7 +1369,7 @@ ScAddInArgumentType ScUnoAddInCall::GetArgType( long nPos )
return SC_ADDINARG_VALUE_OR_ARRAY; //! error code !!!!
}
-sal_Bool ScUnoAddInCall::NeedsCaller() const
+bool ScUnoAddInCall::NeedsCaller() const
{
return pFuncData && pFuncData->GetCallerPos() != SC_CALLERPOS_NONE;
}
@@ -1546,7 +1546,7 @@ void ScUnoAddInCall::SetResult( const uno::Any& rNewRes )
case uno::TypeClass_STRING:
{
rNewRes >>= aString;
- bHasString = sal_True;
+ bHasString = true;
}
break;
commit 104c9cc2482d3843f441f9263fb7cb3c0f3f397f
Author: Eike Rathke <erack at redhat.com>
Date: Tue Apr 9 23:30:53 2013 +0200
use language tags
Change-Id: Ifa5ded07e3af153e747fdbd82a75560dfb7e2b75
diff --git a/sc/inc/addincol.hxx b/sc/inc/addincol.hxx
index c6d9b3d..daa2931 100644
--- a/sc/inc/addincol.hxx
+++ b/sc/inc/addincol.hxx
@@ -76,6 +76,15 @@ struct ScAddInArgDesc
class ScUnoAddInFuncData
{
+public:
+ struct LocalizedName
+ {
+ OUString maLocale;
+ OUString maName;
+
+ LocalizedName( const OUString& rLocale, const OUString& rName )
+ : maLocale( rLocale), maName( rName) { }
+ };
private:
OUString aOriginalName; ///< kept in formula
OUString aLocalName; ///< for display
@@ -89,7 +98,7 @@ private:
long nCallerPos;
sal_uInt16 nCategory;
OString sHelpId;
- mutable com::sun::star::uno::Sequence< com::sun::star::sheet::LocalizedName> aCompNames;
+ mutable ::std::vector< LocalizedName > maCompNames;
mutable sal_Bool bCompInitialized;
public:
@@ -117,14 +126,14 @@ public:
sal_uInt16 GetCategory() const { return nCategory; }
const OString GetHelpId() const { return sHelpId; }
- const com::sun::star::uno::Sequence< com::sun::star::sheet::LocalizedName>& GetCompNames() const;
+ const ::std::vector< LocalizedName >& GetCompNames() const;
sal_Bool GetExcelName( LanguageType eDestLang, OUString& rRetExcelName ) const;
void SetFunction( const com::sun::star::uno::Reference< com::sun::star::reflection::XIdlMethod>& rNewFunc,
const com::sun::star::uno::Any& rNewObj );
void SetArguments( long nNewCount, const ScAddInArgDesc* pNewDescs );
void SetCallerPos( long nNewPos );
- void SetCompNames( const com::sun::star::uno::Sequence< com::sun::star::sheet::LocalizedName>& rNew );
+ void SetCompNames( const ::std::vector< LocalizedName >& rNew );
};
//------------------------------------------------------------------------
diff --git a/sc/source/core/tool/addincol.cxx b/sc/source/core/tool/addincol.cxx
index fd4c27e..a4ff289 100644
--- a/sc/source/core/tool/addincol.cxx
+++ b/sc/source/core/tool/addincol.cxx
@@ -92,7 +92,7 @@ ScUnoAddInFuncData::~ScUnoAddInFuncData()
delete[] pArgDescs;
}
-const uno::Sequence<sheet::LocalizedName>& ScUnoAddInFuncData::GetCompNames() const
+const ::std::vector<ScUnoAddInFuncData::LocalizedName>& ScUnoAddInFuncData::GetCompNames() const
{
if ( !bCompInitialized )
{
@@ -105,21 +105,17 @@ const uno::Sequence<sheet::LocalizedName>& ScUnoAddInFuncData::GetCompNames() co
if ( xComp.is() && xFunction.is() )
{
OUString aMethodName = xFunction->getName();
- aCompNames = xComp->getCompatibilityNames( aMethodName );
-
- // change all locale entries to default case
- // (language in lower case, country in upper case)
- // for easier searching
-
- long nSeqLen = aCompNames.getLength();
+ uno::Sequence< sheet::LocalizedName> aCompNames( xComp->getCompatibilityNames( aMethodName ));
+ maCompNames.clear();
+ sal_Int32 nSeqLen = aCompNames.getLength();
if ( nSeqLen )
{
- sheet::LocalizedName* pArray = aCompNames.getArray();
- for (long i=0; i<nSeqLen; i++)
+ const sheet::LocalizedName* pArray = aCompNames.getArray();
+ for (sal_Int32 i=0; i<nSeqLen; i++)
{
- lang::Locale& rLocale = pArray[i].Locale;
- rLocale.Language = rLocale.Language.toAsciiLowerCase();
- rLocale.Country = rLocale.Country.toAsciiUpperCase();
+ maCompNames.push_back( LocalizedName(
+ LanguageTag( pArray[i].Locale).getBcp47( false),
+ pArray[i].Name));
}
}
}
@@ -127,76 +123,77 @@ const uno::Sequence<sheet::LocalizedName>& ScUnoAddInFuncData::GetCompNames() co
bCompInitialized = sal_True; // also if not successful
}
- return aCompNames;
+ return maCompNames;
}
-void ScUnoAddInFuncData::SetCompNames( const uno::Sequence< sheet::LocalizedName>& rNew )
+void ScUnoAddInFuncData::SetCompNames( const ::std::vector< ScUnoAddInFuncData::LocalizedName >& rNew )
{
OSL_ENSURE( !bCompInitialized, "SetCompNames after initializing" );
- aCompNames = rNew;
-
- // change all locale entries to default case
- // (language in lower case, country in upper case)
- // for easier searching
-
- long nSeqLen = aCompNames.getLength();
- if ( nSeqLen )
- {
- sheet::LocalizedName* pArray = aCompNames.getArray();
- for (long i=0; i<nSeqLen; i++)
- {
- lang::Locale& rLocale = pArray[i].Locale;
- rLocale.Language = rLocale.Language.toAsciiLowerCase();
- rLocale.Country = rLocale.Country.toAsciiUpperCase();
- }
- }
+ maCompNames = rNew;
bCompInitialized = sal_True;
}
sal_Bool ScUnoAddInFuncData::GetExcelName( LanguageType eDestLang, OUString& rRetExcelName ) const
{
- const uno::Sequence<sheet::LocalizedName>& rSequence = GetCompNames();
- long nSeqLen = rSequence.getLength();
- if ( nSeqLen )
+ const ::std::vector<LocalizedName>& rCompNames = GetCompNames();
+ if ( !rCompNames.empty() )
{
- const sheet::LocalizedName* pArray = rSequence.getConstArray();
- long i;
-
- /* FIXME-BCP47: we may want to handle language tags here as well. */
- OUString aLangStr, aCountryStr;
- LanguageTag( eDestLang ).getIsoLanguageCountry( aLangStr, aCountryStr );
- OUString aUserLang = aLangStr.toAsciiLowerCase();
- OUString aUserCountry = aCountryStr.toAsciiUpperCase();
+ LanguageTag aLanguageTag( eDestLang);
+ const OUString aSearch( aLanguageTag.getBcp47());
- // first check for match of both language and country
-
- for ( i=0; i<nSeqLen; i++)
- if ( pArray[i].Locale.Language == aUserLang &&
- pArray[i].Locale.Country == aUserCountry )
+ // First, check exact match without fallback overhead.
+ ::std::vector<LocalizedName>::const_iterator itNames( rCompNames.begin());
+ for ( ; itNames != rCompNames.end(); ++itNames)
+ {
+ if ((*itNames).maLocale == aSearch)
{
- rRetExcelName = pArray[i].Name;
- return sal_True;
+ rRetExcelName = (*itNames).maName;
+ return true;
}
+ }
- // second: check only language
-
- for ( i=0; i<nSeqLen; i++)
- if ( pArray[i].Locale.Language == aUserLang )
+ // Second, try match of fallback search with fallback locales,
+ // appending also 'en-US' and 'en' to search if not queried.
+ ::std::vector< OUString > aFallbackSearch( aLanguageTag.getFallbackStrings());
+ if (aSearch != "en-US")
+ {
+ aFallbackSearch.push_back( "en-US");
+ if (aSearch != "en")
{
- rRetExcelName = pArray[i].Name;
- return sal_True;
+ aFallbackSearch.push_back( "en");
}
+ }
+ bool bFirst = true;
+ ::std::vector< OUString >::const_iterator itSearch( aFallbackSearch.begin());
+ for ( ; itSearch != aFallbackSearch.end(); ++itSearch)
+ {
+ itNames = rCompNames.begin();
+ for ( ; itNames != rCompNames.end(); ++itNames)
+ {
+ ::std::vector< OUString > aFallbackLocales( LanguageTag( (*itNames).maLocale).getFallbackStrings());
+ ::std::vector< OUString >::const_iterator itLocales( aFallbackLocales.begin());
+ if (bFirst)
+ {
+ // We checked already the full tag, start with second.
+ if (itLocales != aFallbackLocales.end())
+ ++itLocales;
+ }
+ for ( ; itLocales != aFallbackLocales.end(); ++itLocales)
+ {
+ if (*itLocales == *itSearch)
+ {
+ rRetExcelName = (*itNames).maName;
+ return true;
+ }
+ }
+ }
+ bFirst = false;
+ }
- // third: #i57772# fall-back to en-US
-
- if ( eDestLang != LANGUAGE_ENGLISH_US )
- return GetExcelName( LANGUAGE_ENGLISH_US, rRetExcelName );
-
- // forth: use first (default) entry
-
- rRetExcelName = pArray[0].Name;
+ // Third, last resort, use first (default) entry.
+ rRetExcelName = rCompNames[0].maName;
return sal_True;
}
return false;
@@ -471,7 +468,7 @@ void ScUnoAddInCollection::ReadConfiguration()
// get compatibility names
- uno::Sequence<sheet::LocalizedName> aCompNames;
+ ::std::vector<ScUnoAddInFuncData::LocalizedName> aCompNames;
OUString aCompPath = aFuncPropPath;
aCompPath += OUString(CFGSTR_COMPATIBILITYNAME);
@@ -484,30 +481,17 @@ void ScUnoAddInCollection::ReadConfiguration()
if ( aCompProperties[0] >>= aLocalEntries )
{
sal_Int32 nLocaleCount = aLocalEntries.getLength();
- aCompNames.realloc( nLocaleCount );
const beans::PropertyValue* pConfigArray = aLocalEntries.getConstArray();
- sheet::LocalizedName* pCompArray = aCompNames.getArray();
for ( sal_Int32 nLocale = 0; nLocale < nLocaleCount; nLocale++ )
{
- const sal_Unicode cLocaleSep = '-'; // separator in configuration locale strings
-
- // PropertyValue name is the locale (convert from string to Locale struct)
-
- const OUString& rLocaleStr = pConfigArray[nLocale].Name;
- lang::Locale& rLocale = pCompArray[nLocale].Locale;
- sal_Int32 nSepPos = rLocaleStr.indexOf( cLocaleSep );
- if ( nSepPos >= 0 )
- {
- rLocale.Language = rLocaleStr.copy( 0, nSepPos );
- rLocale.Country = rLocaleStr.copy( nSepPos+1 );
- }
- else
- rLocale.Language = rLocaleStr; // leave country empty (default ctor from sequence)
-
+ // PropertyValue name is the locale ("convert" from
+ // string to string to canonicalize)
+ OUString aLocale( LanguageTag( pConfigArray[nLocale].Name, true).getBcp47( false));
// PropertyValue value is the localized value (string in this case)
-
- pConfigArray[nLocale].Value >>= pCompArray[nLocale].Name;
+ OUString aName;
+ pConfigArray[nLocale].Value >>= aName;
+ aCompNames.push_back( ScUnoAddInFuncData::LocalizedName( aLocale, aName));
}
}
}
@@ -647,13 +631,13 @@ sal_Bool ScUnoAddInCollection::GetCalcName( const OUString& rExcelName, OUString
ScUnoAddInFuncData* pFuncData = ppFuncData[i];
if ( pFuncData )
{
- const uno::Sequence<sheet::LocalizedName>& rSequence = pFuncData->GetCompNames();
- long nSeqLen = rSequence.getLength();
- if ( nSeqLen )
+ const ::std::vector<ScUnoAddInFuncData::LocalizedName>& rNames = pFuncData->GetCompNames();
+ if ( !rNames.empty() )
{
- const sheet::LocalizedName* pArray = rSequence.getConstArray();
- for ( long nName=0; nName<nSeqLen; nName++)
- if ( ScGlobal::pCharClass->uppercase( pArray[nName].Name ) == aUpperCmp )
+ ::std::vector<ScUnoAddInFuncData::LocalizedName>::const_iterator it( rNames.begin());
+ for ( ; it != rNames.end(); ++it)
+ {
+ if ( ScGlobal::pCharClass->uppercase( (*it).maName ) == aUpperCmp )
{
//! store upper case for comparing?
@@ -661,6 +645,7 @@ sal_Bool ScUnoAddInCollection::GetCalcName( const OUString& rExcelName, OUString
rRetCalcName = pFuncData->GetOriginalName();
return sal_True;
}
+ }
}
}
}
More information about the Libreoffice-commits
mailing list