summaryrefslogtreecommitdiff
path: root/svl
diff options
context:
space:
mode:
authorNorbert Thiebaud <nthiebaud@gmail.com>2012-11-05 17:47:14 -0600
committerNorbert Thiebaud <nthiebaud@gmail.com>2012-11-18 19:57:22 -0600
commitead89ae2019b0533306d7b485ddcc71c57362599 (patch)
treebc879c17b840914dc09c54e66bb857e64d1bb7c0 /svl
parenta7455a4a79f3be532b6a9cbbfb6bc00d86636902 (diff)
svl: convert KeywordTable to OUString
Change-Id: I93daafcb6cc161f10ec87fe9f1dc877e2154299d
Diffstat (limited to 'svl')
-rw-r--r--svl/inc/svl/nfkeytab.hxx6
-rw-r--r--svl/source/numbers/zforfind.cxx12
-rw-r--r--svl/source/numbers/zforlist.cxx2
-rw-r--r--svl/source/numbers/zformat.cxx118
-rw-r--r--svl/source/numbers/zforscan.cxx526
-rw-r--r--svl/source/numbers/zforscan.hxx20
6 files changed, 356 insertions, 328 deletions
diff --git a/svl/inc/svl/nfkeytab.hxx b/svl/inc/svl/nfkeytab.hxx
index 631f869e53d8..fdedea036d00 100644
--- a/svl/inc/svl/nfkeytab.hxx
+++ b/svl/inc/svl/nfkeytab.hxx
@@ -106,15 +106,15 @@ enum NfKeywordIndex
class NfKeywordTable
{
- typedef ::std::vector<String> Keywords_t;
+ typedef ::std::vector<OUString> Keywords_t;
Keywords_t m_keywords;
public:
NfKeywordTable() : m_keywords(NF_KEYWORD_ENTRIES_COUNT) {};
virtual ~NfKeywordTable() {}
- String & operator[] (Keywords_t::size_type n) { return m_keywords[n]; }
- const String & operator[] (Keywords_t::size_type n) const { return m_keywords[n]; }
+ OUString & operator[] (Keywords_t::size_type n) { return m_keywords[n]; }
+ const OUString & operator[] (Keywords_t::size_type n) const { return m_keywords[n]; }
};
#endif // INCLUDED_SVTOOLS_NFKEYTAB_HXX
diff --git a/svl/source/numbers/zforfind.cxx b/svl/source/numbers/zforfind.cxx
index 4767f45f6201..9c2239873582 100644
--- a/svl/source/numbers/zforfind.cxx
+++ b/svl/source/numbers/zforfind.cxx
@@ -527,15 +527,21 @@ inline bool ImpSvNumberInputScan::GetThousandSep(
short ImpSvNumberInputScan::GetLogical( const String& rString )
{
short res;
+ OUString aString(rString);
const ImpSvNumberformatScan* pFS = pFormatter->GetFormatScanner();
- if ( rString == pFS->GetTrueString() )
+ if ( aString == pFS->GetTrueString() )
+ {
res = 1;
- else if ( rString == pFS->GetFalseString() )
+ }
+ else if ( aString == pFS->GetFalseString() )
+ {
res = -1;
+ }
else
+ {
res = 0;
-
+ }
return res;
}
diff --git a/svl/source/numbers/zforlist.cxx b/svl/source/numbers/zforlist.cxx
index c636a6247090..9e0d93bc35dc 100644
--- a/svl/source/numbers/zforlist.cxx
+++ b/svl/source/numbers/zforlist.cxx
@@ -817,7 +817,7 @@ void SvNumberFormatter::GetUsedLanguages( std::vector<sal_uInt16>& rList )
void SvNumberFormatter::FillKeywordTable( NfKeywordTable& rKeywords,
- LanguageType eLang )
+ LanguageType eLang )
{
ChangeIntl( eLang );
const NfKeywordTable & rTable = pFormatScanner->GetKeywords();
diff --git a/svl/source/numbers/zformat.cxx b/svl/source/numbers/zformat.cxx
index cecd893022b3..b3f48b226e5d 100644
--- a/svl/source/numbers/zformat.cxx
+++ b/svl/source/numbers/zformat.cxx
@@ -1415,9 +1415,9 @@ short SvNumberformat::ImpNextSymbol(String& rString,
BRACKET_SYMBOLTYPE_DBNUM1 - (cDBNum - '1'));
eState = SsGetPrefix;
}
- else if (cUpper == rKeywords[NF_KEY_H].GetChar(0) || // H
- cUpper == rKeywords[NF_KEY_MI].GetChar(0) || // M
- cUpper == rKeywords[NF_KEY_S].GetChar(0) ) // S
+ else if (cUpper == rKeywords[NF_KEY_H][0] || // H
+ cUpper == rKeywords[NF_KEY_MI][0] || // M
+ cUpper == rKeywords[NF_KEY_S][0] ) // S
{
sSymbol += cToken;
eState = SsGetTime;
@@ -1454,9 +1454,9 @@ short SvNumberformat::ImpNextSymbol(String& rString,
else
{
sal_Unicode cUpper = rChrCls().uppercase(rString, nPos-1, 1)[0];
- if (cUpper == rKeywords[NF_KEY_H].GetChar(0) || // H
- cUpper == rKeywords[NF_KEY_MI].GetChar(0) || // M
- cUpper == rKeywords[NF_KEY_S].GetChar(0) ) // S
+ if (cUpper == rKeywords[NF_KEY_H][0] || // H
+ cUpper == rKeywords[NF_KEY_MI][0] || // M
+ cUpper == rKeywords[NF_KEY_S][0] ) // S
{
if (cLetter == cToken)
{
@@ -1593,10 +1593,10 @@ NfHackConversion SvNumberformat::Load( SvStream& rStream,
// System-German FARBE nach System-xxx COLOR umsetzen und vice versa,
//! geht davon aus, dass onSave nur GERMAN und ENGLISH KeyWords in
//! ImpSvNumberformatScan existierten
- if ( aLoadedColorName.Len() && !NumFor[i].GetColor()
- && aLoadedColorName != rScan.GetColorString() )
+ if ( aLoadedColorName.Len() && !NumFor[i].GetColor() &&
+ OUString(aLoadedColorName) != rScan.GetColorString() )
{
- if ( rScan.GetColorString().EqualsAscii( "FARBE" ) )
+ if ( rScan.GetColorString() == "FARBE" )
{ // English -> German
eHackConversion = NF_CONVERT_ENGLISH_GERMAN;
rScan.GetNumberformatter()->ChangeIntl( LANGUAGE_ENGLISH_US );
@@ -1611,7 +1611,9 @@ NfHackConversion SvNumberformat::Load( SvStream& rStream,
String aColorName = NumFor[i].GetColorName();
const Color* pColor = rScan.GetColor( aColorName );
if ( !pColor && aLoadedColorName == aColorName )
+ {
eHackConversion = NF_CONVERT_NONE;
+ }
rScan.GetNumberformatter()->ChangeIntl( LANGUAGE_SYSTEM );
rScan.SetConvertMode( eOldTmpLang, eOldNewLang );
rScan.SetConvertMode( bOldConvert );
@@ -4572,9 +4574,9 @@ static void lcl_SvNumberformat_AddLimitStringImpl( String& rStr,
}
}
-OUString SvNumberformat::GetMappedFormatstring(
- const NfKeywordTable& rKeywords, const LocaleDataWrapper& rLocWrp,
- bool bDontQuote ) const
+OUString SvNumberformat::GetMappedFormatstring( const NfKeywordTable& rKeywords,
+ const LocaleDataWrapper& rLocWrp,
+ bool bDontQuote ) const
{
OUStringBuffer aStr;
bool bDefault[4];
@@ -4635,16 +4637,16 @@ OUString SvNumberformat::GetMappedFormatstring(
}
}
- const String& rColorName = NumFor[n].GetColorName();
- if ( rColorName.Len() )
+ const OUString& rColorName = NumFor[n].GetColorName();
+ if ( !rColorName.isEmpty() )
{
const NfKeywordTable & rKey = rScan.GetKeywords();
- for ( int j=NF_KEY_FIRSTCOLOR; j<=NF_KEY_LASTCOLOR; j++ )
+ for ( int j = NF_KEY_FIRSTCOLOR; j <= NF_KEY_LASTCOLOR; j++ )
{
if ( rKey[j] == rColorName )
{
aPrefix += '[';
- aPrefix += rKeywords[j];
+ aPrefix += String(rKeywords[j]);
aPrefix += ']';
break; // for
}
@@ -4681,56 +4683,56 @@ OUString SvNumberformat::GetMappedFormatstring(
{
switch ( pType[j] )
{
- case NF_SYMBOLTYPE_DECSEP :
- aStr.append( rLocWrp.getNumDecimalSep() );
+ case NF_SYMBOLTYPE_DECSEP :
+ aStr.append( rLocWrp.getNumDecimalSep() );
+ break;
+ case NF_SYMBOLTYPE_THSEP :
+ aStr.append( rLocWrp.getNumThousandSep() );
break;
- case NF_SYMBOLTYPE_THSEP :
- aStr.append( rLocWrp.getNumThousandSep() );
+ case NF_SYMBOLTYPE_DATESEP :
+ aStr.append( rLocWrp.getDateSep() );
break;
- case NF_SYMBOLTYPE_DATESEP :
- aStr.append( rLocWrp.getDateSep() );
+ case NF_SYMBOLTYPE_TIMESEP :
+ aStr.append( rLocWrp.getTimeSep() );
break;
- case NF_SYMBOLTYPE_TIMESEP :
- aStr.append( rLocWrp.getTimeSep() );
+ case NF_SYMBOLTYPE_TIME100SECSEP :
+ aStr.append( rLocWrp.getTime100SecSep() );
break;
- case NF_SYMBOLTYPE_TIME100SECSEP :
- aStr.append( rLocWrp.getTime100SecSep() );
+ case NF_SYMBOLTYPE_STRING :
+ if( bDontQuote )
+ aStr.append( pStr[j] );
+ else if ( pStr[j].getLength() == 1 )
+ {
+ aStr.append( '\\' );
+ aStr.append( pStr[j] );
+ }
+ else
+ {
+ aStr.append( '"' );
+ aStr.append( pStr[j] );
+ aStr.append( '"' );
+ }
break;
- case NF_SYMBOLTYPE_STRING :
- if( bDontQuote )
- aStr.append( pStr[j] );
- else if ( pStr[j].getLength() == 1 )
+ case NF_SYMBOLTYPE_CALDEL :
+ if ( pStr[j+1].equalsAscii("buddhist") )
+ {
+ aStr.insert( 0, "[$-" );
+ if ( rNum.IsSet() && rNum.GetNatNum() == 1 &&
+ MsLangId::getRealLanguage( rNum.GetLang() ) ==
+ LANGUAGE_THAI )
{
- aStr.append( '\\' );
- aStr.append( pStr[j] );
+ aStr.insert( 3, "D07041E]" ); // date in Thai digit, Buddhist era
}
else
{
- aStr.append( '"' );
- aStr.append( pStr[j] );
- aStr.append( '"' );
+ aStr.insert( 3, "107041E]" ); // date in Arabic digit, Buddhist era
}
- break;
- case NF_SYMBOLTYPE_CALDEL :
- if ( pStr[j+1].equalsAscii("buddhist") )
- {
- aStr.insert( 0, "[$-" );
- if ( rNum.IsSet() && rNum.GetNatNum() == 1 &&
- MsLangId::getRealLanguage( rNum.GetLang() ) ==
- LANGUAGE_THAI )
- {
- aStr.insert( 3, "D07041E]" ); // date in Thai digit, Buddhist era
- }
- else
- {
- aStr.insert( 3, "107041E]" ); // date in Arabic digit, Buddhist era
- }
- j = j+2;
- }
- LCIDInserted = true;
+ j = j+2;
+ }
+ LCIDInserted = true;
break;
- default:
- aStr.append( pStr[j] );
+ default:
+ aStr.append( pStr[j] );
}
}
@@ -4738,9 +4740,9 @@ OUString SvNumberformat::GetMappedFormatstring(
}
// The Thai T NatNum modifier during Xcl export.
if (rNum.IsSet() && rNum.GetNatNum() == 1 &&
- rKeywords[NF_KEY_THAI_T].EqualsAscii( "T") &&
- MsLangId::getRealLanguage( rNum.GetLang()) ==
- LANGUAGE_THAI && !LCIDInserted )
+ rKeywords[NF_KEY_THAI_T].equalsAscii( "T") &&
+ MsLangId::getRealLanguage( rNum.GetLang()) ==
+ LANGUAGE_THAI && !LCIDInserted )
{
aStr.insert( 0, "[$-D00041E]" ); // number in Thai digit
diff --git a/svl/source/numbers/zforscan.cxx b/svl/source/numbers/zforscan.cxx
index 6a3b461a0239..b2e636489427 100644
--- a/svl/source/numbers/zforscan.cxx
+++ b/svl/source/numbers/zforscan.cxx
@@ -72,20 +72,20 @@ ImpSvNumberformatScan::ImpSvNumberformatScan( SvNumberFormatter* pFormatterP )
pFormatter = pFormatterP;
bConvertMode = false;
//! All keywords MUST be UPPERCASE!
- sKeyword[NF_KEY_E].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "E" ) ); // Exponent
- sKeyword[NF_KEY_AMPM].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "AM/PM" ) ); // AM/PM
- sKeyword[NF_KEY_AP].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "A/P" ) ); // AM/PM short
- sKeyword[NF_KEY_MI].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "M" ) ); // Minute
- sKeyword[NF_KEY_MMI].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "MM" ) ); // Minute 02
- sKeyword[NF_KEY_S].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "S" ) ); // Second
- sKeyword[NF_KEY_SS].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "SS" ) ); // Second 02
- sKeyword[NF_KEY_Q].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "Q" ) ); // Quarter short 'Q'
- sKeyword[NF_KEY_QQ].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "QQ" ) ); // Quarter long
- sKeyword[NF_KEY_NN].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "NN" ) ); // Day of week short
- sKeyword[NF_KEY_NNN].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "NNN" ) ); // Day of week long
- sKeyword[NF_KEY_NNNN].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "NNNN" ) ); // Day of week long incl. separator
- sKeyword[NF_KEY_WW].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "WW" ) ); // Week of year
- sKeyword[NF_KEY_CCC].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "CCC" ) ); // Currency abbreviation
+ sKeyword[NF_KEY_E] = "E"; // Exponent
+ sKeyword[NF_KEY_AMPM] = "AM/PM"; // AM/PM
+ sKeyword[NF_KEY_AP] = "A/P"; // AM/PM short
+ sKeyword[NF_KEY_MI] = "M"; // Minute
+ sKeyword[NF_KEY_MMI] = "MM"; // Minute 02
+ sKeyword[NF_KEY_S] = "S"; // Second
+ sKeyword[NF_KEY_SS] = "SS"; // Second 02
+ sKeyword[NF_KEY_Q] = "Q"; // Quarter short 'Q'
+ sKeyword[NF_KEY_QQ] = "QQ"; // Quarter long
+ sKeyword[NF_KEY_NN] = "NN"; // Day of week short
+ sKeyword[NF_KEY_NNN] = "NNN"; // Day of week long
+ sKeyword[NF_KEY_NNNN] = "NNNN"; // Day of week long incl. separator
+ sKeyword[NF_KEY_WW] = "WW"; // Week of year
+ sKeyword[NF_KEY_CCC] = "CCC"; // Currency abbreviation
bKeywordsNeedInit = true; // locale dependent keywords
bCompatCurNeedInit = true; // locale dependent compatibility currency strings
@@ -103,7 +103,7 @@ ImpSvNumberformatScan::ImpSvNumberformatScan( SvNumberFormatter* pFormatterP )
pNullDate = new Date(30,12,1899);
nStandardPrec = 2;
- sErrStr.AssignAscii( RTL_CONSTASCII_STRINGPARAM( "###" ) );
+ sErrStr.AssignAscii( RTL_CONSTASCII_STRINGPARAM( "###"));
Reset();
}
@@ -118,36 +118,34 @@ void ImpSvNumberformatScan::ChangeIntl()
bKeywordsNeedInit = true;
bCompatCurNeedInit = true;
// may be initialized by InitSpecialKeyword()
- sKeyword[NF_KEY_TRUE].Erase();
- sKeyword[NF_KEY_FALSE].Erase();
+ sKeyword[NF_KEY_TRUE] = "";
+ sKeyword[NF_KEY_FALSE] = "";
}
void ImpSvNumberformatScan::InitSpecialKeyword( NfKeywordIndex eIdx ) const
{
switch ( eIdx )
{
- case NF_KEY_TRUE :
- ((ImpSvNumberformatScan*)this)->sKeyword[NF_KEY_TRUE] =
- pFormatter->GetCharClass()->uppercase(
- pFormatter->GetLocaleData()->getTrueWord() );
- if ( !sKeyword[NF_KEY_TRUE].Len() )
- {
- SAL_WARN( "svl.numbers", "InitSpecialKeyword: TRUE_WORD?" );
- ((ImpSvNumberformatScan*)this)->sKeyword[NF_KEY_TRUE].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "TRUE" ) );
- }
+ case NF_KEY_TRUE :
+ ((ImpSvNumberformatScan*)this)->sKeyword[NF_KEY_TRUE] =
+ pFormatter->GetCharClass()->uppercase( pFormatter->GetLocaleData()->getTrueWord() );
+ if ( sKeyword[NF_KEY_TRUE].isEmpty() )
+ {
+ SAL_WARN( "svl.numbers", "InitSpecialKeyword: TRUE_WORD?" );
+ ((ImpSvNumberformatScan*)this)->sKeyword[NF_KEY_TRUE] = "TRUE";
+ }
break;
- case NF_KEY_FALSE :
- ((ImpSvNumberformatScan*)this)->sKeyword[NF_KEY_FALSE] =
- pFormatter->GetCharClass()->uppercase(
- pFormatter->GetLocaleData()->getFalseWord() );
- if ( !sKeyword[NF_KEY_FALSE].Len() )
- {
- SAL_WARN( "svl.numbers", "InitSpecialKeyword: FALSE_WORD?" );
- ((ImpSvNumberformatScan*)this)->sKeyword[NF_KEY_FALSE].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "FALSE" ) );
- }
+ case NF_KEY_FALSE :
+ ((ImpSvNumberformatScan*)this)->sKeyword[NF_KEY_FALSE] =
+ pFormatter->GetCharClass()->uppercase( pFormatter->GetLocaleData()->getFalseWord() );
+ if ( sKeyword[NF_KEY_FALSE].isEmpty() )
+ {
+ SAL_WARN( "svl.numbers", "InitSpecialKeyword: FALSE_WORD?" );
+ ((ImpSvNumberformatScan*)this)->sKeyword[NF_KEY_FALSE] = "FALSE";
+ }
break;
- default:
- SAL_WARN( "svl.numbers", "InitSpecialKeyword: unknown request" );
+ default:
+ SAL_WARN( "svl.numbers", "InitSpecialKeyword: unknown request" );
}
}
@@ -230,204 +228,203 @@ void ImpSvNumberformatScan::SetDependentKeywords()
sKeyword[NF_KEY_GENERAL] = pCharClass->uppercase( sNameStandardFormat );
// preset new calendar keywords
- sKeyword[NF_KEY_AAA].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "AAA" ) );
- sKeyword[NF_KEY_AAAA].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "AAAA" ) );
- sKeyword[NF_KEY_EC].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "E" ) );
- sKeyword[NF_KEY_EEC].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "EE" ) );
- sKeyword[NF_KEY_G].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "G" ) );
- sKeyword[NF_KEY_GG].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "GG" ) );
- sKeyword[NF_KEY_GGG].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "GGG" ) );
- sKeyword[NF_KEY_R].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "R" ) );
- sKeyword[NF_KEY_RR].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "RR" ) );
+ sKeyword[NF_KEY_AAA] = "AAA";
+ sKeyword[NF_KEY_AAAA] = "AAAA";
+ sKeyword[NF_KEY_EC] = "E";
+ sKeyword[NF_KEY_EEC] = "EE";
+ sKeyword[NF_KEY_G] = "G";
+ sKeyword[NF_KEY_GG] = "GG";
+ sKeyword[NF_KEY_GGG] = "GGG";
+ sKeyword[NF_KEY_R] = "R";
+ sKeyword[NF_KEY_RR] = "RR";
// Thai T NatNum special. Other locale's small letter 't' results in upper
// case comparison not matching but length does in conversion mode. Ugly.
if (eLang == LANGUAGE_THAI)
- sKeyword[NF_KEY_THAI_T].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "T"));
+ {
+ sKeyword[NF_KEY_THAI_T] = "T";
+ }
else
- sKeyword[NF_KEY_THAI_T].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "t"));
-
+ {
+ sKeyword[NF_KEY_THAI_T] = "t";
+ }
switch ( eLang )
{
- case LANGUAGE_GERMAN:
- case LANGUAGE_GERMAN_SWISS:
- case LANGUAGE_GERMAN_AUSTRIAN:
- case LANGUAGE_GERMAN_LUXEMBOURG:
- case LANGUAGE_GERMAN_LIECHTENSTEIN:
+ case LANGUAGE_GERMAN:
+ case LANGUAGE_GERMAN_SWISS:
+ case LANGUAGE_GERMAN_AUSTRIAN:
+ case LANGUAGE_GERMAN_LUXEMBOURG:
+ case LANGUAGE_GERMAN_LIECHTENSTEIN:
+ //! all capital letters
+ sKeyword[NF_KEY_M] = "M"; // month 1
+ sKeyword[NF_KEY_MM] = "MM"; // month 01
+ sKeyword[NF_KEY_MMM] = "MMM"; // month Jan
+ sKeyword[NF_KEY_MMMM] = "MMMM"; // month Januar
+ sKeyword[NF_KEY_MMMMM] = "MMMMM";// month J
+ sKeyword[NF_KEY_H] = "H"; // hour 2
+ sKeyword[NF_KEY_HH] = "HH"; // hour 02
+ sKeyword[NF_KEY_D] = "T";
+ sKeyword[NF_KEY_DD] = "TT";
+ sKeyword[NF_KEY_DDD] = "TTT";
+ sKeyword[NF_KEY_DDDD] = "TTTT";
+ sKeyword[NF_KEY_YY] = "JJ";
+ sKeyword[NF_KEY_YYYY] = "JJJJ";
+ sKeyword[NF_KEY_BOOLEAN] = "LOGISCH";
+ sKeyword[NF_KEY_COLOR] = "FARBE";
+ sKeyword[NF_KEY_BLACK] = "SCHWARZ";
+ sKeyword[NF_KEY_BLUE] = "BLAU";
+ sKeyword[NF_KEY_GREEN] = OUString( "GR" "\xDC" "N", 4, RTL_TEXTENCODING_ISO_8859_1 );
+ sKeyword[NF_KEY_CYAN] = "CYAN";
+ sKeyword[NF_KEY_RED] = "ROT";
+ sKeyword[NF_KEY_MAGENTA] = "MAGENTA";
+ sKeyword[NF_KEY_BROWN] = "BRAUN";
+ sKeyword[NF_KEY_GREY] = "GRAU";
+ sKeyword[NF_KEY_YELLOW] = "GELB";
+ sKeyword[NF_KEY_WHITE] = "WEISS";
+ break;
+ default:
+ // day
+ switch ( eLang )
{
- //! all capital letters
- sKeyword[NF_KEY_M].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "M" ) ); // month 1
- sKeyword[NF_KEY_MM].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "MM" ) ); // month 01
- sKeyword[NF_KEY_MMM].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "MMM" ) ); // month Jan
- sKeyword[NF_KEY_MMMM].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "MMMM" ) ); // month Januar
- sKeyword[NF_KEY_MMMMM].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "MMMMM" ) );// month J
- sKeyword[NF_KEY_H].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "H" ) ); // hour 2
- sKeyword[NF_KEY_HH].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "HH" ) ); // hour 02
- sKeyword[NF_KEY_D].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "T" ) );
- sKeyword[NF_KEY_DD].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "TT" ) );
- sKeyword[NF_KEY_DDD].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "TTT" ) );
- sKeyword[NF_KEY_DDDD].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "TTTT" ) );
- sKeyword[NF_KEY_YY].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "JJ" ) );
- sKeyword[NF_KEY_YYYY].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "JJJJ" ) );
- sKeyword[NF_KEY_BOOLEAN].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "LOGISCH" ) );
- sKeyword[NF_KEY_COLOR].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "FARBE" ) );
- sKeyword[NF_KEY_BLACK].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "SCHWARZ" ) );
- sKeyword[NF_KEY_BLUE].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "BLAU" ) );
- sKeyword[NF_KEY_GREEN] = UniString( "GR" "\xDC" "N", RTL_TEXTENCODING_ISO_8859_1 );
- sKeyword[NF_KEY_CYAN].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "CYAN" ) );
- sKeyword[NF_KEY_RED].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "ROT" ) );
- sKeyword[NF_KEY_MAGENTA].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "MAGENTA" ) );
- sKeyword[NF_KEY_BROWN].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "BRAUN" ) );
- sKeyword[NF_KEY_GREY].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "GRAU" ) );
- sKeyword[NF_KEY_YELLOW].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "GELB" ) );
- sKeyword[NF_KEY_WHITE].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "WEISS" ) );
+ case LANGUAGE_ITALIAN:
+ case LANGUAGE_ITALIAN_SWISS:
+ sKeyword[NF_KEY_D] = "G";
+ sKeyword[NF_KEY_DD] = "GG";
+ sKeyword[NF_KEY_DDD] = "GGG";
+ sKeyword[NF_KEY_DDDD] = "GGGG";
+ // must exchange the era code, same as Xcl
+ sKeyword[NF_KEY_G] = "X";
+ sKeyword[NF_KEY_GG] = "XX";
+ sKeyword[NF_KEY_GGG] = "XXX";
+ break;
+ case LANGUAGE_FRENCH:
+ case LANGUAGE_FRENCH_BELGIAN:
+ case LANGUAGE_FRENCH_CANADIAN:
+ case LANGUAGE_FRENCH_SWISS:
+ case LANGUAGE_FRENCH_LUXEMBOURG:
+ case LANGUAGE_FRENCH_MONACO:
+ sKeyword[NF_KEY_D] = "J";
+ sKeyword[NF_KEY_DD] = "JJ";
+ sKeyword[NF_KEY_DDD] = "JJJ";
+ sKeyword[NF_KEY_DDDD] = "JJJJ";
+ break;
+ case LANGUAGE_FINNISH:
+ sKeyword[NF_KEY_D] = "P";
+ sKeyword[NF_KEY_DD] = "PP";
+ sKeyword[NF_KEY_DDD] = "PPP";
+ sKeyword[NF_KEY_DDDD] = "PPPP";
+ break;
+ default:
+ sKeyword[NF_KEY_D] = "D";
+ sKeyword[NF_KEY_DD] = "DD";
+ sKeyword[NF_KEY_DDD] = "DDD";
+ sKeyword[NF_KEY_DDDD] = "DDDD";
}
- break;
+ // month
+ switch ( eLang )
+ {
+ case LANGUAGE_FINNISH:
+ sKeyword[NF_KEY_M] = "K";
+ sKeyword[NF_KEY_MM] = "KK";
+ sKeyword[NF_KEY_MMM] = "KKK";
+ sKeyword[NF_KEY_MMMM] = "KKKK";
+ sKeyword[NF_KEY_MMMMM] = "KKKKK";
+ break;
default:
+ sKeyword[NF_KEY_M] = "M";
+ sKeyword[NF_KEY_MM] = "MM";
+ sKeyword[NF_KEY_MMM] = "MMM";
+ sKeyword[NF_KEY_MMMM] = "MMMM";
+ sKeyword[NF_KEY_MMMMM] = "MMMMM";
+ }
+ // year
+ switch ( eLang )
{
- // day
- switch ( eLang )
- {
- case LANGUAGE_ITALIAN :
- case LANGUAGE_ITALIAN_SWISS :
- sKeyword[NF_KEY_D].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "G" ) );
- sKeyword[NF_KEY_DD].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "GG" ) );
- sKeyword[NF_KEY_DDD].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "GGG" ) );
- sKeyword[NF_KEY_DDDD].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "GGGG" ) );
- // must exchange the era code, same as Xcl
- sKeyword[NF_KEY_G].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "X" ) );
- sKeyword[NF_KEY_GG].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "XX" ) );
- sKeyword[NF_KEY_GGG].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "XXX" ) );
- break;
- case LANGUAGE_FRENCH :
- case LANGUAGE_FRENCH_BELGIAN :
- case LANGUAGE_FRENCH_CANADIAN :
- case LANGUAGE_FRENCH_SWISS :
- case LANGUAGE_FRENCH_LUXEMBOURG :
- case LANGUAGE_FRENCH_MONACO :
- sKeyword[NF_KEY_D].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "J" ) );
- sKeyword[NF_KEY_DD].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "JJ" ) );
- sKeyword[NF_KEY_DDD].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "JJJ" ) );
- sKeyword[NF_KEY_DDDD].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "JJJJ" ) );
- break;
- case LANGUAGE_FINNISH :
- sKeyword[NF_KEY_D].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "P" ) );
- sKeyword[NF_KEY_DD].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "PP" ) );
- sKeyword[NF_KEY_DDD].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "PPP" ) );
- sKeyword[NF_KEY_DDDD].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "PPPP" ) );
- break;
- default:
- sKeyword[NF_KEY_D].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "D" ) );
- sKeyword[NF_KEY_DD].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "DD" ) );
- sKeyword[NF_KEY_DDD].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "DDD" ) );
- sKeyword[NF_KEY_DDDD].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "DDDD" ) );
- }
- // month
- switch ( eLang )
- {
- case LANGUAGE_FINNISH :
- sKeyword[NF_KEY_M].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "K" ) );
- sKeyword[NF_KEY_MM].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "KK" ) );
- sKeyword[NF_KEY_MMM].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "KKK" ) );
- sKeyword[NF_KEY_MMMM].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "KKKK" ) );
- sKeyword[NF_KEY_MMMMM].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "KKKKK" ) );
- break;
- default:
- sKeyword[NF_KEY_M].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "M" ) );
- sKeyword[NF_KEY_MM].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "MM" ) );
- sKeyword[NF_KEY_MMM].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "MMM" ) );
- sKeyword[NF_KEY_MMMM].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "MMMM" ) );
- sKeyword[NF_KEY_MMMMM].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "MMMMM" ) );
- }
- // year
- switch ( eLang )
- {
- case LANGUAGE_ITALIAN :
- case LANGUAGE_ITALIAN_SWISS :
- case LANGUAGE_FRENCH :
- case LANGUAGE_FRENCH_BELGIAN :
- case LANGUAGE_FRENCH_CANADIAN :
- case LANGUAGE_FRENCH_SWISS :
- case LANGUAGE_FRENCH_LUXEMBOURG :
- case LANGUAGE_FRENCH_MONACO :
- case LANGUAGE_PORTUGUESE :
- case LANGUAGE_PORTUGUESE_BRAZILIAN :
- case LANGUAGE_SPANISH_MODERN :
- case LANGUAGE_SPANISH_DATED :
- case LANGUAGE_SPANISH_MEXICAN :
- case LANGUAGE_SPANISH_GUATEMALA :
- case LANGUAGE_SPANISH_COSTARICA :
- case LANGUAGE_SPANISH_PANAMA :
- case LANGUAGE_SPANISH_DOMINICAN_REPUBLIC :
- case LANGUAGE_SPANISH_VENEZUELA :
- case LANGUAGE_SPANISH_COLOMBIA :
- case LANGUAGE_SPANISH_PERU :
- case LANGUAGE_SPANISH_ARGENTINA :
- case LANGUAGE_SPANISH_ECUADOR :
- case LANGUAGE_SPANISH_CHILE :
- case LANGUAGE_SPANISH_URUGUAY :
- case LANGUAGE_SPANISH_PARAGUAY :
- case LANGUAGE_SPANISH_BOLIVIA :
- case LANGUAGE_SPANISH_EL_SALVADOR :
- case LANGUAGE_SPANISH_HONDURAS :
- case LANGUAGE_SPANISH_NICARAGUA :
- case LANGUAGE_SPANISH_PUERTO_RICO :
- sKeyword[NF_KEY_YY].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "AA" ) );
- sKeyword[NF_KEY_YYYY].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "AAAA" ) );
- // must exchange the day of week name code, same as Xcl
- sKeyword[NF_KEY_AAA].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "OOO" ) );
- sKeyword[NF_KEY_AAAA].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "OOOO" ) );
- break;
- case LANGUAGE_DUTCH :
- case LANGUAGE_DUTCH_BELGIAN :
- sKeyword[NF_KEY_YY].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "JJ" ) );
- sKeyword[NF_KEY_YYYY].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "JJJJ" ) );
- break;
- case LANGUAGE_FINNISH :
- sKeyword[NF_KEY_YY].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "VV" ) );
- sKeyword[NF_KEY_YYYY].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "VVVV" ) );
- break;
- default:
- sKeyword[NF_KEY_YY].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "YY" ) );
- sKeyword[NF_KEY_YYYY].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "YYYY" ) );
- }
- // hour
- switch ( eLang )
- {
- case LANGUAGE_DUTCH :
- case LANGUAGE_DUTCH_BELGIAN :
- sKeyword[NF_KEY_H].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "U" ) );
- sKeyword[NF_KEY_HH].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "UU" ) );
- break;
- case LANGUAGE_FINNISH :
- case LANGUAGE_SWEDISH :
- case LANGUAGE_SWEDISH_FINLAND :
- case LANGUAGE_DANISH :
- case LANGUAGE_NORWEGIAN :
- case LANGUAGE_NORWEGIAN_BOKMAL :
- case LANGUAGE_NORWEGIAN_NYNORSK :
- sKeyword[NF_KEY_H].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "T" ) );
- sKeyword[NF_KEY_HH].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "TT" ) );
- break;
- default:
- sKeyword[NF_KEY_H].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "H" ) );
- sKeyword[NF_KEY_HH].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "HH" ) );
- }
- // boolean
- sKeyword[NF_KEY_BOOLEAN].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "BOOLEAN" ) );
- // colours
- sKeyword[NF_KEY_COLOR].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "COLOR" ) );
- sKeyword[NF_KEY_BLACK].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "BLACK" ) );
- sKeyword[NF_KEY_BLUE].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "BLUE" ) );
- sKeyword[NF_KEY_GREEN].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "GREEN" ) );
- sKeyword[NF_KEY_CYAN].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "CYAN" ) );
- sKeyword[NF_KEY_RED].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "RED" ) );
- sKeyword[NF_KEY_MAGENTA].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "MAGENTA" ) );
- sKeyword[NF_KEY_BROWN].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "BROWN" ) );
- sKeyword[NF_KEY_GREY].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "GREY" ) );
- sKeyword[NF_KEY_YELLOW].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "YELLOW" ) );
- sKeyword[NF_KEY_WHITE].AssignAscii( RTL_CONSTASCII_STRINGPARAM( "WHITE" ) );
+ case LANGUAGE_ITALIAN:
+ case LANGUAGE_ITALIAN_SWISS:
+ case LANGUAGE_FRENCH:
+ case LANGUAGE_FRENCH_BELGIAN:
+ case LANGUAGE_FRENCH_CANADIAN:
+ case LANGUAGE_FRENCH_SWISS:
+ case LANGUAGE_FRENCH_LUXEMBOURG:
+ case LANGUAGE_FRENCH_MONACO:
+ case LANGUAGE_PORTUGUESE:
+ case LANGUAGE_PORTUGUESE_BRAZILIAN:
+ case LANGUAGE_SPANISH_MODERN:
+ case LANGUAGE_SPANISH_DATED:
+ case LANGUAGE_SPANISH_MEXICAN:
+ case LANGUAGE_SPANISH_GUATEMALA:
+ case LANGUAGE_SPANISH_COSTARICA:
+ case LANGUAGE_SPANISH_PANAMA:
+ case LANGUAGE_SPANISH_DOMINICAN_REPUBLIC:
+ case LANGUAGE_SPANISH_VENEZUELA:
+ case LANGUAGE_SPANISH_COLOMBIA:
+ case LANGUAGE_SPANISH_PERU:
+ case LANGUAGE_SPANISH_ARGENTINA:
+ case LANGUAGE_SPANISH_ECUADOR:
+ case LANGUAGE_SPANISH_CHILE:
+ case LANGUAGE_SPANISH_URUGUAY:
+ case LANGUAGE_SPANISH_PARAGUAY:
+ case LANGUAGE_SPANISH_BOLIVIA:
+ case LANGUAGE_SPANISH_EL_SALVADOR:
+ case LANGUAGE_SPANISH_HONDURAS:
+ case LANGUAGE_SPANISH_NICARAGUA:
+ case LANGUAGE_SPANISH_PUERTO_RICO:
+ sKeyword[NF_KEY_YY] = "AA";
+ sKeyword[NF_KEY_YYYY] = "AAAA";
+ // must exchange the day of week name code, same as Xcl
+ sKeyword[NF_KEY_AAA] = "OOO";
+ sKeyword[NF_KEY_AAAA] = "OOOO";
+ break;
+ case LANGUAGE_DUTCH:
+ case LANGUAGE_DUTCH_BELGIAN:
+ sKeyword[NF_KEY_YY] = "JJ";
+ sKeyword[NF_KEY_YYYY] = "JJJJ";
+ break;
+ case LANGUAGE_FINNISH:
+ sKeyword[NF_KEY_YY] = "VV";
+ sKeyword[NF_KEY_YYYY] = "VVVV";
+ break;
+ default:
+ sKeyword[NF_KEY_YY] = "YY";
+ sKeyword[NF_KEY_YYYY] = "YYYY";
}
+ // hour
+ switch ( eLang )
+ {
+ case LANGUAGE_DUTCH:
+ case LANGUAGE_DUTCH_BELGIAN:
+ sKeyword[NF_KEY_H] = "U";
+ sKeyword[NF_KEY_HH] = "UU";
+ break;
+ case LANGUAGE_FINNISH:
+ case LANGUAGE_SWEDISH:
+ case LANGUAGE_SWEDISH_FINLAND:
+ case LANGUAGE_DANISH:
+ case LANGUAGE_NORWEGIAN:
+ case LANGUAGE_NORWEGIAN_BOKMAL:
+ case LANGUAGE_NORWEGIAN_NYNORSK:
+ sKeyword[NF_KEY_H] = "T";
+ sKeyword[NF_KEY_HH] = "TT";
+ break;
+ default:
+ sKeyword[NF_KEY_H] = "H";
+ sKeyword[NF_KEY_HH] = "HH";
+ }
+ // boolean
+ sKeyword[NF_KEY_BOOLEAN] = "BOOLEAN";
+ // colours
+ sKeyword[NF_KEY_COLOR] = "COLOR";
+ sKeyword[NF_KEY_BLACK] = "BLACK";
+ sKeyword[NF_KEY_BLUE] = "BLUE";
+ sKeyword[NF_KEY_GREEN] = "GREEN";
+ sKeyword[NF_KEY_CYAN] = "CYAN";
+ sKeyword[NF_KEY_RED] = "RED";
+ sKeyword[NF_KEY_MAGENTA] = "MAGENTA";
+ sKeyword[NF_KEY_BROWN] = "BROWN";
+ sKeyword[NF_KEY_GREY] = "GREY";
+ sKeyword[NF_KEY_YELLOW] = "YELLOW";
+ sKeyword[NF_KEY_WHITE] = "WHITE";
break;
}
@@ -454,8 +451,7 @@ void ImpSvNumberformatScan::ChangeStandardPrec(sal_uInt16 nPrec)
Color* ImpSvNumberformatScan::GetColor(String& sStr)
{
- String sString = pFormatter->GetCharClass()->uppercase(sStr);
- OUString aString(sString);
+ OUString sString = pFormatter->GetCharClass()->uppercase(sStr);
const NfKeywordTable & rKeyword = GetKeywords();
size_t i = 0;
while (i < NF_MAX_DEFAULT_COLORS && sString != rKeyword[NF_KEY_FIRSTCOLOR+i] )
@@ -466,7 +462,7 @@ Color* ImpSvNumberformatScan::GetColor(String& sStr)
{
const OUString* pEnglishColors = theEnglishColors::get();
size_t j = 0;
- while ( j < NF_MAX_DEFAULT_COLORS && aString != pEnglishColors[j] )
+ while ( j < NF_MAX_DEFAULT_COLORS && sString != pEnglishColors[j] )
{
++j;
}
@@ -479,8 +475,8 @@ Color* ImpSvNumberformatScan::GetColor(String& sStr)
Color* pResult = NULL;
if (i >= NF_MAX_DEFAULT_COLORS)
{
- const OUString& rColorWord = OUString(rKeyword[NF_KEY_COLOR]);
- sal_Int32 nPos = aString.startsWith(rColorWord);
+ const OUString& rColorWord = rKeyword[NF_KEY_COLOR];
+ sal_Int32 nPos = sString.startsWith(rColorWord);
if (nPos > 0)
{
sStr.Erase(0, nPos);
@@ -492,15 +488,19 @@ Color* ImpSvNumberformatScan::GetColor(String& sStr)
pFormatter->ChangeIntl(eTmpLnge);
}
else
+ {
sStr.Insert(rColorWord,0);
- sString.Erase(0, nPos);
+ }
+ sString = sString.copy(nPos);
sString = comphelper::string::strip(sString, ' ');
if ( CharClass::isAsciiNumeric( sString ) )
{
- long nIndex = sString.ToInt32();
+ long nIndex = sString.toInt32();
if (nIndex > 0 && nIndex <= 64)
+ {
pResult = pFormatter->GetUserDefColor((sal_uInt16)nIndex-1);
+ }
}
}
}
@@ -514,8 +514,9 @@ Color* ImpSvNumberformatScan::GetColor(String& sStr)
pFormatter->ChangeIntl(eTmpLnge);
}
else
+ {
sStr = rKeyword[NF_KEY_FIRSTCOLOR+i];
-
+ }
pResult = &(StandardColor[i]);
}
return pResult;
@@ -523,17 +524,19 @@ Color* ImpSvNumberformatScan::GetColor(String& sStr)
short ImpSvNumberformatScan::GetKeyWord( const String& sSymbol, xub_StrLen nPos )
{
- String sString = pFormatter->GetCharClass()->uppercase( sSymbol, nPos, sSymbol.Len() - nPos );
+ OUString sString = pFormatter->GetCharClass()->uppercase( sSymbol, nPos, sSymbol.Len() - nPos );
const NfKeywordTable & rKeyword = GetKeywords();
// #77026# for the Xcl perverts: the GENERAL keyword is recognized anywhere
- if ( sString.Search( rKeyword[NF_KEY_GENERAL] ) == 0 )
+ if ( sString.startsWith( rKeyword[NF_KEY_GENERAL] ))
+ {
return NF_KEY_GENERAL;
+ }
//! MUST be a reverse search to find longer strings first
short i = NF_KEYWORD_ENTRIES_COUNT-1;
bool bFound = false;
for ( ; i > NF_KEY_LASTKEYWORD_SO5; --i )
{
- bFound = sString.Search(rKeyword[i]) == 0;
+ bFound = sString.startsWith(rKeyword[i]);
if ( bFound )
{
break;
@@ -541,25 +544,36 @@ short ImpSvNumberformatScan::GetKeyWord( const String& sSymbol, xub_StrLen nPos
}
// new keywords take precedence over old keywords
if ( !bFound )
- { // skip the gap of colors et al between new and old keywords and search on
+ {
+ // skip the gap of colors et al between new and old keywords and search on
i = NF_KEY_LASTKEYWORD;
- while ( i > 0 && sString.Search(rKeyword[i]) != 0 )
+ while ( i > 0 && sString.indexOf(rKeyword[i]) != 0 )
+ {
i--;
+ }
if ( i > NF_KEY_LASTOLDKEYWORD && sString != rKeyword[i] )
- { // found something, but maybe it's something else?
+ {
+ // found something, but maybe it's something else?
// e.g. new NNN is found in NNNN, for NNNN we must search on
short j = i - 1;
- while ( j > 0 && sString.Search(rKeyword[j]) != 0 )
+ while ( j > 0 && sString.indexOf(rKeyword[j]) != 0 )
+ {
j--;
- if ( j && rKeyword[j].Len() > rKeyword[i].Len() )
+ }
+ if ( j && rKeyword[j].getLength() > rKeyword[i].getLength() )
+ {
return j;
+ }
}
}
// The Thai T NatNum modifier during Xcl import.
- if (i == 0 && bConvertMode && sString.GetChar(0) == 'T' && eTmpLnge ==
- LANGUAGE_ENGLISH_US && MsLangId::getRealLanguage( eNewLnge) ==
- LANGUAGE_THAI)
+ if (i == 0 && bConvertMode &&
+ sString[0] == 'T' &&
+ eTmpLnge == LANGUAGE_ENGLISH_US &&
+ MsLangId::getRealLanguage( eNewLnge) == LANGUAGE_THAI)
+ {
i = NF_KEY_THAI_T;
+ }
return i; // 0 => not found
}
@@ -729,7 +743,7 @@ short ImpSvNumberformatScan::Next_Symbol( const String& rStr,
// like "R" (Rand) and 'R' (era)
if ( nCurrPos != STRING_NOTFOUND &&
nPos-1 + sCurString.Len() <= rStr.Len() &&
- sCurString.Search( sKeyword[nTmpType] ) == 0 )
+ sCurString.Search( String(sKeyword[nTmpType]) ) == 0 )
{
String aTest = pChrCls->uppercase( rStr.Copy( nPos-1, sCurString.Len() ) );
if ( aTest == sCurString )
@@ -743,8 +757,8 @@ short ImpSvNumberformatScan::Next_Symbol( const String& rStr,
else
{
eType = nTmpType;
- xub_StrLen nLen = sKeyword[eType].Len();
- sSymbol = rStr.Copy( nPos-1, nLen );
+ sal_Int32 nLen = sKeyword[eType].getLength();
+ sSymbol = rStr.Copy( nPos-1, (sal_uInt16)nLen );
if ( eType == NF_KEY_E || IsAmbiguousE( eType ) )
{
sal_Unicode cNext = rStr.GetChar(nPos);
@@ -1459,9 +1473,9 @@ xub_StrLen ImpSvNumberformatScan::FinalScan( String& rString )
String sOldTime100SecSep= pLoc->getTime100SecSep();
String sOldCurSymbol = GetCurSymbol();
rtl::OUString sOldCurString = GetCurString();
- sal_Unicode cOldKeyH = sKeyword[NF_KEY_H].GetChar(0);
- sal_Unicode cOldKeyMI = sKeyword[NF_KEY_MI].GetChar(0);
- sal_Unicode cOldKeyS = sKeyword[NF_KEY_S].GetChar(0);
+ sal_Unicode cOldKeyH = sKeyword[NF_KEY_H][0];
+ sal_Unicode cOldKeyMI = sKeyword[NF_KEY_MI][0];
+ sal_Unicode cOldKeyS = sKeyword[NF_KEY_S][0];
// If the group separator is a Non-Breaking Space (French) continue with a
// normal space instead so queries on space work correctly.
@@ -1583,7 +1597,7 @@ xub_StrLen ImpSvNumberformatScan::FinalScan( String& rString )
else if (nTypeArray[i] == NF_KEY_THAI_T)
{
bThaiT = true;
- sStrArray[i] = sKeyword[nTypeArray[i]];
+ sStrArray[i] = String(sKeyword[nTypeArray[i]]);
}
else if (sStrArray[i].GetChar(0) >= '0' &&
sStrArray[i].GetChar(0) <= '9')
@@ -2166,7 +2180,7 @@ xub_StrLen ImpSvNumberformatScan::FinalScan( String& rString )
case NF_KEY_GGG : // GGG
case NF_KEY_R : // R
case NF_KEY_RR : // RR
- sStrArray[i] = sKeyword[nTypeArray[i]]; // tTtT -> TTTT
+ sStrArray[i] = String(sKeyword[nTypeArray[i]]); // tTtT -> TTTT
nPos = nPos + sStrArray[i].Len();
i++;
break;
@@ -2284,7 +2298,7 @@ xub_StrLen ImpSvNumberformatScan::FinalScan( String& rString )
case NF_KEY_AP: // A/P
{
bExp = true; // missbraucht fuer A/P
- sStrArray[i] = sKeyword[nTypeArray[i]]; // tTtT -> TTTT
+ sStrArray[i] = String(sKeyword[nTypeArray[i]]); // tTtT -> TTTT
nPos = nPos + sStrArray[i].Len();
i++;
}
@@ -2299,7 +2313,7 @@ xub_StrLen ImpSvNumberformatScan::FinalScan( String& rString )
case NF_KEY_S: // S
case NF_KEY_SS: // SS
{
- sStrArray[i] = sKeyword[nTypeArray[i]]; // tTtT -> TTTT
+ sStrArray[i] = String(sKeyword[nTypeArray[i]]); // tTtT -> TTTT
nPos = nPos + sStrArray[i].Len();
i++;
}
@@ -2414,7 +2428,7 @@ xub_StrLen ImpSvNumberformatScan::FinalScan( String& rString )
{
bTimePart = true;
bExp = true; // missbraucht fuer A/P
- sStrArray[i] = sKeyword[nTypeArray[i]]; // tTtT -> TTTT
+ sStrArray[i] = String(sKeyword[nTypeArray[i]]); // tTtT -> TTTT
nPos = nPos + sStrArray[i].Len();
i++;
}
@@ -2426,7 +2440,7 @@ xub_StrLen ImpSvNumberformatScan::FinalScan( String& rString )
case NF_KEY_S: // S
case NF_KEY_SS: // SS
bTimePart = true;
- sStrArray[i] = sKeyword[nTypeArray[i]]; // tTtT -> TTTT
+ sStrArray[i] = String(sKeyword[nTypeArray[i]]); // tTtT -> TTTT
nPos = nPos + sStrArray[i].Len();
i++;
break;
@@ -2457,13 +2471,13 @@ xub_StrLen ImpSvNumberformatScan::FinalScan( String& rString )
case NF_KEY_R : // R
case NF_KEY_RR : // RR
bTimePart = false;
- sStrArray[i] = sKeyword[nTypeArray[i]]; // tTtT -> TTTT
+ sStrArray[i] = String(sKeyword[nTypeArray[i]]); // tTtT -> TTTT
nPos = nPos + sStrArray[i].Len();
i++;
break;
case NF_KEY_THAI_T :
bThaiT = true;
- sStrArray[i] = sKeyword[nTypeArray[i]];
+ sStrArray[i] = String(sKeyword[nTypeArray[i]]);
nPos = nPos + sStrArray[i].Len();
i++;
break;
diff --git a/svl/source/numbers/zforscan.hxx b/svl/source/numbers/zforscan.hxx
index 7060f23970e4..8a33ff5cc63d 100644
--- a/svl/source/numbers/zforscan.hxx
+++ b/svl/source/numbers/zforscan.hxx
@@ -61,28 +61,34 @@ public:
const NfKeywordTable & GetKeywords() const
{
if ( bKeywordsNeedInit )
+ {
InitKeywords();
+ }
return sKeyword;
}
// Keywords used in output like true and false
- const String& GetSpecialKeyword( NfKeywordIndex eIdx ) const
+ const OUString& GetSpecialKeyword( NfKeywordIndex eIdx ) const
{
- if ( !sKeyword[eIdx].Len() )
+ if ( sKeyword[eIdx].isEmpty() )
+ {
InitSpecialKeyword( eIdx );
+ }
return sKeyword[eIdx];
}
- const String& GetTrueString() const { return GetSpecialKeyword( NF_KEY_TRUE ); }
- const String& GetFalseString() const { return GetSpecialKeyword( NF_KEY_FALSE ); }
- const String& GetColorString() const { return GetKeywords()[NF_KEY_COLOR]; }
- const String& GetRedString() const { return GetKeywords()[NF_KEY_RED]; }
- const String& GetBooleanString() const { return GetKeywords()[NF_KEY_BOOLEAN]; }
+ const OUString& GetTrueString() const { return GetSpecialKeyword( NF_KEY_TRUE ); }
+ const OUString& GetFalseString() const { return GetSpecialKeyword( NF_KEY_FALSE ); }
+ const OUString& GetColorString() const { return GetKeywords()[NF_KEY_COLOR]; }
+ const OUString& GetRedString() const { return GetKeywords()[NF_KEY_RED]; }
+ const OUString& GetBooleanString() const { return GetKeywords()[NF_KEY_BOOLEAN]; }
const String& GetErrorString() const { return sErrStr; }
Date* GetNullDate() const { return pNullDate; }
const String& GetStandardName() const
{
if ( bKeywordsNeedInit )
+ {
InitKeywords();
+ }
return sNameStandardFormat;
}
sal_uInt16 GetStandardPrec() const { return nStandardPrec; }