svl/inc/svl/nfversi.hxx | 64 +++--- svl/inc/svl/zforlist.hxx | 24 +- svl/source/numbers/zforlist.cxx | 377 ++++++++++++++-------------------------- 3 files changed, 182 insertions(+), 283 deletions(-)
New commits: commit dba0aed4ca39b2b40c6609ff336384dcc75c6914 Author: Eike Rathke <er...@redhat.com> Date: Mon Apr 30 13:20:07 2012 +0200 some changes for new fixed fraction built-in formats Moved new fixed fraction built-in formats into the fixed set so they keep their relative key position when switching system locale. diff --git a/svl/inc/svl/nfversi.hxx b/svl/inc/svl/nfversi.hxx index bd1fd3f..65fe521 100644 --- a/svl/inc/svl/nfversi.hxx +++ b/svl/inc/svl/nfversi.hxx @@ -31,19 +31,20 @@ // file IDs -#define SV_NUMBERFORMATTER_VERSION_SYSTORE 0x0004 -#define SV_NUMBERFORMATTER_VERSION_KEYWORDS 0x0005 -#define SV_NUMBERFORMATTER_VERSION_NEWSTANDARD 0x0006 -#define SV_NUMBERFORMATTER_VERSION_NF_TIME_HH_MMSS00 0x0007 -#define SV_NUMBERFORMATTER_VERSION_NF_DATE_WW 0x0008 -#define SV_NUMBERFORMATTER_VERSION_NEW_CURR 0x0009 -#define SV_NUMBERFORMATTER_VERSION_YEAR2000 0x000a -#define SV_NUMBERFORMATTER_VERSION_TWODIGITYEAR 0x000b +#define SV_NUMBERFORMATTER_VERSION_SYSTORE 0x0004 +#define SV_NUMBERFORMATTER_VERSION_KEYWORDS 0x0005 +#define SV_NUMBERFORMATTER_VERSION_NEWSTANDARD 0x0006 +#define SV_NUMBERFORMATTER_VERSION_NF_TIME_HH_MMSS00 0x0007 +#define SV_NUMBERFORMATTER_VERSION_NF_DATE_WW 0x0008 +#define SV_NUMBERFORMATTER_VERSION_NEW_CURR 0x0009 +#define SV_NUMBERFORMATTER_VERSION_YEAR2000 0x000a +#define SV_NUMBERFORMATTER_VERSION_TWODIGITYEAR 0x000b #define SV_NUMBERFORMATTER_VERSION_NF_DATETIME_SYS_DDMMYYYY_HHMMSS 0x000c -#define SV_NUMBERFORMATTER_VERSION_CALENDAR 0x000d +#define SV_NUMBERFORMATTER_VERSION_CALENDAR 0x000d #define SV_NUMBERFORMATTER_VERSION_ADDITIONAL_I18N_FORMATS 0x000e +#define SV_NUMBERFORMATTER_VERSION_FIXED_FRACTION 0x000f -#define SV_NUMBERFORMATTER_VERSION 0x000e +#define SV_NUMBERFORMATTER_VERSION 0x000f // 1 to 1996-01-18 // 2 1996-01-19 added TT.MM.JJJJ @@ -64,6 +65,8 @@ // C ????-??-?? date/time format of system variables // D 2000-11-23 new calendar // E 2001-01-19 additional formats provided by i18n +// F 2012-04-27 fixed fraction formats ?/4 and ??/100, actually added +// already 2010/2011 but without versioning #endif diff --git a/svl/inc/svl/zforlist.hxx b/svl/inc/svl/zforlist.hxx index fd3a7b9..96a8955 100644 --- a/svl/inc/svl/zforlist.hxx +++ b/svl/inc/svl/zforlist.hxx @@ -101,6 +101,9 @@ namespace rtl { <li>DIN: all settings hard coded as DIN (Deutsche Industrie Norm) and EN (European Norm) require. <li>all other: hard coded </ul> + + Do NOT insert any new values! + The values here correspond with those in offapi/com/sun/star/i18n/NumberFormatIndex.idl */ enum NfIndexTableOffset { @@ -182,6 +185,13 @@ enum NfIndexTableOffset NF_BOOLEAN, // BOOLEAN NF_TEXT, // @ + + // From here on are values of new built-in formats that are not in the + // original NumberFormatIndex.idl + + NF_FRACTION_3, // # ?/4 + NF_FRACTION_4, // # ?/100 + NF_INDEX_TABLE_ENTRIES }; diff --git a/svl/source/numbers/zforlist.cxx b/svl/source/numbers/zforlist.cxx index 2b067cf..c09d14e 100644 --- a/svl/source/numbers/zforlist.cxx +++ b/svl/source/numbers/zforlist.cxx @@ -2545,6 +2545,7 @@ void SvNumberFormatter::ImpGenerateFormats( sal_uInt32 CLOffset, bool bNoAdditio // Fraction number (no default option) i18n::NumberFormatCode aSingleFormatCode; + aSingleFormatCode.Usage = i18n::KNumberFormatUsage::FRACTION_NUMBER; // # ?/? aSingleFormatCode.Code = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "# ?/?" ) ); @@ -2557,6 +2558,20 @@ void SvNumberFormatter::ImpGenerateFormats( sal_uInt32 CLOffset, bool bNoAdditio ImpInsertFormat( aSingleFormatCode, CLOffset + SetIndexTable( NF_FRACTION_2, ZF_STANDARD_FRACTION+1 )); + // # ?/4 + aSingleFormatCode.Code = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "# ?/4" ) ); + ImpInsertNewStandardFormat( aSingleFormatCode, + CLOffset + SetIndexTable( NF_FRACTION_3, ZF_STANDARD_FRACTION+2 ), + SV_NUMBERFORMATTER_VERSION_FIXED_FRACTION ); + + // # ??/100 + aSingleFormatCode.Code = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "# ?\?/100" ) ); + ImpInsertNewStandardFormat( aSingleFormatCode, + CLOffset + SetIndexTable( NF_FRACTION_4, ZF_STANDARD_FRACTION+3 ), + SV_NUMBERFORMATTER_VERSION_FIXED_FRACTION ); + + + // Week of year must be appended here because of nNewExtended const NfKeywordTable & rKeyword = pFormatScanner->GetKeywords(); aSingleFormatCode.Code = rKeyword[NF_KEY_WW]; @@ -2565,7 +2580,6 @@ void SvNumberFormatter::ImpGenerateFormats( sal_uInt32 CLOffset, bool bNoAdditio SV_NUMBERFORMATTER_VERSION_NF_DATE_WW ); - bIndexTableInitialized = true; DBG_ASSERT( nNewExtended <= ZF_STANDARD_NEWEXTENDEDMAX, "ImpGenerateFormats: overflow of nNewExtended standard formats" ); @@ -2575,18 +2589,6 @@ void SvNumberFormatter::ImpGenerateFormats( sal_uInt32 CLOffset, bool bNoAdditio if ( !bNoAdditionalFormats ) ImpGenerateAdditionalFormats( CLOffset, aNumberFormatCode, false ); - sal_uInt32 nPos = CLOffset + pStdFormat->GetLastInsertKey(); - - aSingleFormatCode.Code = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "# ?/4" ) ); - ImpInsertNewStandardFormat( aSingleFormatCode, nPos+1, SV_NUMBERFORMATTER_VERSION_ADDITIONAL_I18N_FORMATS ); - nPos++; - - aSingleFormatCode.Code = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "# ?\?/100" ) ); - ImpInsertNewStandardFormat( aSingleFormatCode, nPos+1, SV_NUMBERFORMATTER_VERSION_ADDITIONAL_I18N_FORMATS ); - nPos++; - - pStdFormat->SetLastInsertKey( (sal_uInt16)(nPos - CLOffset) ); - if (bOldConvertMode) pFormatScanner->SetConvertMode(true); } commit 09bd7fdb92e848f777ab3311bcee0fb6b9f6bad9 Author: Eike Rathke <er...@redhat.com> Date: Mon Apr 30 13:20:06 2012 +0200 get rid of dead binary file format legacy cruft in number formatter The only code that uses the binary storage format of SvNumberFormatter is the SvNumberFormatsSupplierServiceObject for the NumberFormatsSupplier service during streaming of forms' formatted fields with OFormattedFieldWrapper. That certainly does not need access to files created before the year 2000 ... so slice off that awful compatibility cruft. diff --git a/svl/source/numbers/zforlist.cxx b/svl/source/numbers/zforlist.cxx index a83d5de..2b067cf 100644 --- a/svl/source/numbers/zforlist.cxx +++ b/svl/source/numbers/zforlist.cxx @@ -678,12 +678,12 @@ bool SvNumberFormatter::Load( SvStream& rStream ) rStream >> nVersion; SvNumberformat* pEntry; sal_uInt32 nPos; - LanguageType eSaveSysLang, eLoadSysLang; sal_uInt16 nSysOnStore, eLge, eDummy; // Dummy for compatible format rStream >> nSysOnStore >> eLge; // system language from document - eSaveSysLang = (nVersion < SV_NUMBERFORMATTER_VERSION_SYSTORE ? - LANGUAGE_SYSTEM : (LanguageType) nSysOnStore); + SAL_WARN_IF( nVersion < SV_NUMBERFORMATTER_VERSION_CALENDAR, "svl.numbers", "SvNumberFormatter::Load: where does this unsupported old data come from?!?"); + + LanguageType eSaveSysLang = (LanguageType) nSysOnStore; LanguageType eLnge = (LanguageType) eLge; ImpChangeSysCL( eLnge, true ); @@ -696,132 +696,20 @@ bool SvNumberFormatter::Load( SvStream& rStream ) sal_uInt32 nOffset = nPos % SV_COUNTRY_LANGUAGE_OFFSET; // relativIndex bool bUserDefined = (nOffset > SV_MAX_ANZ_STANDARD_FORMATE); - //! HACK! ER 29.07.97 15:15 - // SaveLang wurde bei SYSTEM nicht gespeichert sondern war auch SYSTEM, - // erst ab 364i Unterscheidung moeglich - bool bConversionHack; - if ( eLnge == LANGUAGE_SYSTEM ) - { - if ( nVersion < SV_NUMBERFORMATTER_VERSION_SYSTORE ) - { - bConversionHack = bUserDefined; - eLoadSysLang = eSaveSysLang; - } - else - { - bConversionHack = false; - eLoadSysLang = eSysLang; - } - } - else - { - bConversionHack = false; - eLoadSysLang = eSaveSysLang; - } pEntry = new SvNumberformat(*pFormatScanner, eLnge); - if ( bConversionHack ) - { // SYSTEM - // nVersion < SV_NUMBERFORMATTER_VERSION_SYSTORE - // nVersion < SV_NUMBERFORMATTER_VERSION_KEYWORDS - if ( !pConverter ) - pConverter = new SvNumberFormatter( xServiceManager, eSysLang ); - NfHackConversion eHackConversion = pEntry->Load( - rStream, aHdr, pConverter, *pStringScanner ); - switch ( eHackConversion ) - { - case NF_CONVERT_GERMAN_ENGLISH : - pEntry->ConvertLanguage( *pConverter, - LANGUAGE_ENGLISH_US, eSysLang, true ); - break; - case NF_CONVERT_ENGLISH_GERMAN : - switch ( eSysLang ) - { - case LANGUAGE_GERMAN: - case LANGUAGE_GERMAN_SWISS: - case LANGUAGE_GERMAN_AUSTRIAN: - case LANGUAGE_GERMAN_LUXEMBOURG: - case LANGUAGE_GERMAN_LIECHTENSTEIN: - // alles beim alten - break; - default: - pEntry->ConvertLanguage( *pConverter, - LANGUAGE_GERMAN, eSysLang, true ); - } - break; - case NF_CONVERT_NONE : - break; // -Wall not handled. - } - - } - else + pEntry->Load( rStream, aHdr, NULL, *pStringScanner ); + if ( !bUserDefined ) + bUserDefined = (pEntry->GetNewStandardDefined() > SV_NUMBERFORMATTER_VERSION); + if ( bUserDefined ) { - pEntry->Load( rStream, aHdr, NULL, *pStringScanner ); - if ( !bUserDefined ) - bUserDefined = (pEntry->GetNewStandardDefined() > SV_NUMBERFORMATTER_VERSION); - if ( bUserDefined ) - { - if ( eSaveSysLang != eLoadSysLang ) - { // different SYSTEM locale - if ( !pConverter ) - pConverter = new SvNumberFormatter( xServiceManager, eSysLang ); - if ( nVersion < SV_NUMBERFORMATTER_VERSION_KEYWORDS ) - { - switch ( eSaveSysLang ) - { - case LANGUAGE_GERMAN: - case LANGUAGE_GERMAN_SWISS: - case LANGUAGE_GERMAN_AUSTRIAN: - case LANGUAGE_GERMAN_LUXEMBOURG: - case LANGUAGE_GERMAN_LIECHTENSTEIN: - // these stay the same - pEntry->ConvertLanguage( *pConverter, - eSaveSysLang, eLoadSysLang, true ); - break; - default: - // old English to new other - pEntry->ConvertLanguage( *pConverter, - LANGUAGE_ENGLISH_US, eLoadSysLang, true ); - } - } - else - pEntry->ConvertLanguage( *pConverter, - eSaveSysLang, eLoadSysLang, true ); - } - else - { // not SYSTEM or same SYSTEM - if ( nVersion < SV_NUMBERFORMATTER_VERSION_KEYWORDS ) - { - LanguageType eLoadLang; - bool bSystem; - if ( eLnge == LANGUAGE_SYSTEM ) - { - eLoadLang = eSysLang; - bSystem = true; - } - else - { - eLoadLang = eLnge; - bSystem = false; - } - switch ( eLoadLang ) - { - case LANGUAGE_GERMAN: - case LANGUAGE_GERMAN_SWISS: - case LANGUAGE_GERMAN_AUSTRIAN: - case LANGUAGE_GERMAN_LUXEMBOURG: - case LANGUAGE_GERMAN_LIECHTENSTEIN: - // these stay the same - break; - default: - // old English to new other - if ( !pConverter ) - pConverter = new SvNumberFormatter( xServiceManager, eSysLang ); - pEntry->ConvertLanguage( *pConverter, - LANGUAGE_ENGLISH_US, eLoadLang, bSystem ); - } - } - } + LanguageType eLoadSysLang = (eLnge == LANGUAGE_SYSTEM ? eSysLang : eSaveSysLang); + if ( eSaveSysLang != eLoadSysLang ) + { // different SYSTEM locale + if ( !pConverter ) + pConverter = new SvNumberFormatter( xServiceManager, eSysLang ); + pEntry->ConvertLanguage( *pConverter, + eSaveSysLang, eLoadSysLang, true ); } } if ( nOffset == 0 ) // Standard/General format commit b7c51cf8c748badc809ec0ac052099a48353a843 Author: Eike Rathke <er...@redhat.com> Date: Mon Apr 30 13:20:05 2012 +0200 translated German comments diff --git a/svl/inc/svl/nfversi.hxx b/svl/inc/svl/nfversi.hxx index fbe4d3d..bd1fd3f 100644 --- a/svl/inc/svl/nfversi.hxx +++ b/svl/inc/svl/nfversi.hxx @@ -29,7 +29,7 @@ #ifndef NF_NFVERSI_HXX #define NF_NFVERSI_HXX -// file ID's +// file IDs #define SV_NUMBERFORMATTER_VERSION_SYSTORE 0x0004 #define SV_NUMBERFORMATTER_VERSION_KEYWORDS 0x0005 @@ -45,26 +45,25 @@ #define SV_NUMBERFORMATTER_VERSION 0x000e -// 1 bis 18.01.96 -// 2 ab 19.01.96, TT.MM.JJJJ dazu -// 3 ab 13.02.96 (nicht emergency) #.##0,00 CCC dazu -// 4 ab 30.07.97 364i speichern, was SYSTEM wirklich war (vorhandenes -// Dummy-Feld wird benutzt, keine File-Format Aenderung) -// 5 ab 07.08.97 nicht-deutsch ist nicht immer englisch -// aeltere nicht-deutsche benutzerdefinierte Formate onLoad -// konvertieren -// 6 ab 17.10.97 neu: Keyword NNN fuer langen Wochentag ohne Separator, -// wird in aelteren Versionen nicht ausgewertet! -// Neue Standard Datumformate, DIN etc. -// 7 ab 25.05.98 StandardFormat [HH]:MM:SS,00 (NF_TIME_HH_MMSS00) fuer -// automatische Eingabe-Erkennung von 100stel Sekunden mit Stunden -// 8 ab 19.06.98 StandardFormat WW (NF_DATE_WW) fuer Kalenderwoche -// 9 ab 17.12.98 neue Waehrungsformate [$DM-xxx] -// A ab 25.01.99 Year2000 speichern/laden -// B ab 12.02.99 Year2000 ist allgemeines TwoDigitYearStart -// C ??.??.?? date/time format of system variables -// D 23.11.00 new calendar -// E 19.01.01 additional formats provided by i18n +// 1 to 1996-01-18 +// 2 1996-01-19 added TT.MM.JJJJ +// 3 1996-02-13 (not emergency) added #.##0,00 CCC +// 4 1997-07-30 364i store what SYSTEM actually was (using existing +// Dummy field, no change of file format) +// 5 1997-08-07 non-German is not always English +// convert older non-German user defined formats on load +// 6 1997-10-17 new keyword NNN for long weekday without separator +// not evaluated in older versions! +// New standard date formats, DIN, EN etc. +// 7 1998-05-25 Standard format [HH]:MM:SS,00 (NF_TIME_HH_MMSS00) for +// automatic input recognition of 100th seconds with hours +// 8 1998-06-10 Standard format WW (NF_DATE_WW) for calendar week +// 9 1998-12-17 new currency formats [$DM-xxx] +// A 1999-01-25 store/load Year2000 +// B 1999-02-12 Year2000 is general TwoDigitYearStart +// C ????-??-?? date/time format of system variables +// D 2000-11-23 new calendar +// E 2001-01-19 additional formats provided by i18n #endif diff --git a/svl/source/numbers/zforlist.cxx b/svl/source/numbers/zforlist.cxx index e26475b..a83d5de 100644 --- a/svl/source/numbers/zforlist.cxx +++ b/svl/source/numbers/zforlist.cxx @@ -183,7 +183,8 @@ sal_uInt16 SvNumberFormatter::nSystemCurrencyPosition = 0; SV_IMPL_PTRARR( NfCurrencyTable, NfCurrencyEntry* ); SV_IMPL_PTRARR( NfWSStringsDtor, String* ); -// ob das BankSymbol immer am Ende ist (1 $;-1 $) oder sprachabhaengig +// Whether BankSymbol (not CurrencySymbol!) is always at the end (1 $;-1 $) or +// language dependent. #define NF_BANKSYMBOL_FIX_POSITION 1 @@ -470,20 +471,20 @@ bool SvNumberFormatter::IsTextFormat(sal_uInt32 F_Index) const bool SvNumberFormatter::PutEntry(String& rString, xub_StrLen& nCheckPos, short& nType, - sal_uInt32& nKey, // Formatnummer + sal_uInt32& nKey, // format key LanguageType eLnge) { nKey = 0; - if (rString.Len() == 0) // keinen Leerstring + if (rString.Len() == 0) // empty string { - nCheckPos = 1; // -> Fehler + nCheckPos = 1; // -> Error return false; } if (eLnge == LANGUAGE_DONTKNOW) eLnge = IniLnge; - ChangeIntl(eLnge); // ggfs. austauschen - LanguageType eLge = eLnge; // Umgehung const fuer ConvertMode + ChangeIntl(eLnge); // change locale if necessary + LanguageType eLge = eLnge; // non-const for ConvertMode bool bCheck = false; SvNumberformat* p_Entry = new SvNumberformat(rString, pFormatScanner, @@ -491,7 +492,7 @@ bool SvNumberFormatter::PutEntry(String& rString, nCheckPos, eLge); if (nCheckPos == 0) // Format ok - { // Typvergleich: + { // Type comparison: short eCheckType = p_Entry->GetType(); if ( eCheckType != NUMBERFORMAT_UNDEFINED) { @@ -503,10 +504,10 @@ bool SvNumberFormatter::PutEntry(String& rString, p_Entry->SetType(NUMBERFORMAT_DEFINED); nType = NUMBERFORMAT_DEFINED; } - sal_uInt32 CLOffset = ImpGenerateCL(eLge); // ggfs. neu Standard- - // formate anlegen + sal_uInt32 CLOffset = ImpGenerateCL(eLge); // create new standard formats if necessary + nKey = ImpIsEntry(p_Entry->GetFormatstring(),CLOffset, eLge); - if (nKey != NUMBERFORMAT_ENTRY_NOT_FOUND) // schon vorhanden + if (nKey != NUMBERFORMAT_ENTRY_NOT_FOUND) // already present delete p_Entry; else { @@ -678,9 +679,9 @@ bool SvNumberFormatter::Load( SvStream& rStream ) SvNumberformat* pEntry; sal_uInt32 nPos; LanguageType eSaveSysLang, eLoadSysLang; - sal_uInt16 nSysOnStore, eLge, eDummy; // Dummy fuer kompatibles Format - rStream >> nSysOnStore >> eLge; // Systemeinstellung aus - // Dokument + sal_uInt16 nSysOnStore, eLge, eDummy; // Dummy for compatible format + rStream >> nSysOnStore >> eLge; // system language from document + eSaveSysLang = (nVersion < SV_NUMBERFORMATTER_VERSION_SYSTORE ? LANGUAGE_SYSTEM : (LanguageType) nSysOnStore); LanguageType eLnge = (LanguageType) eLge; @@ -691,7 +692,7 @@ bool SvNumberFormatter::Load( SvStream& rStream ) { rStream >> eDummy >> eLge; eLnge = (LanguageType) eLge; - ImpGenerateCL( eLnge, true ); // ggfs. neue Standardformate anlegen + ImpGenerateCL( eLnge, true ); // create new standard formats if necessary sal_uInt32 nOffset = nPos % SV_COUNTRY_LANGUAGE_OFFSET; // relativIndex bool bUserDefined = (nOffset > SV_MAX_ANZ_STANDARD_FORMATE); @@ -761,7 +762,7 @@ bool SvNumberFormatter::Load( SvStream& rStream ) if ( bUserDefined ) { if ( eSaveSysLang != eLoadSysLang ) - { // SYSTEM verschieden + { // different SYSTEM locale if ( !pConverter ) pConverter = new SvNumberFormatter( xServiceManager, eSysLang ); if ( nVersion < SV_NUMBERFORMATTER_VERSION_KEYWORDS ) @@ -773,12 +774,12 @@ bool SvNumberFormatter::Load( SvStream& rStream ) case LANGUAGE_GERMAN_AUSTRIAN: case LANGUAGE_GERMAN_LUXEMBOURG: case LANGUAGE_GERMAN_LIECHTENSTEIN: - // alles beim alten + // these stay the same pEntry->ConvertLanguage( *pConverter, eSaveSysLang, eLoadSysLang, true ); break; default: - // alte english nach neuem anderen + // old English to new other pEntry->ConvertLanguage( *pConverter, LANGUAGE_ENGLISH_US, eLoadSysLang, true ); } @@ -788,7 +789,7 @@ bool SvNumberFormatter::Load( SvStream& rStream ) eSaveSysLang, eLoadSysLang, true ); } else - { // nicht SYSTEM oder gleiches SYSTEM + { // not SYSTEM or same SYSTEM if ( nVersion < SV_NUMBERFORMATTER_VERSION_KEYWORDS ) { LanguageType eLoadLang; @@ -810,10 +811,10 @@ bool SvNumberFormatter::Load( SvStream& rStream ) case LANGUAGE_GERMAN_AUSTRIAN: case LANGUAGE_GERMAN_LUXEMBOURG: case LANGUAGE_GERMAN_LIECHTENSTEIN: - // alles beim alten + // these stay the same break; default: - // alte english nach neuem anderen + // old English to new other if ( !pConverter ) pConverter = new SvNumberFormatter( xServiceManager, eSysLang ); pEntry->ConvertLanguage( *pConverter, @@ -823,7 +824,7 @@ bool SvNumberFormatter::Load( SvStream& rStream ) } } } - if ( nOffset == 0 ) // StandardFormat + if ( nOffset == 0 ) // Standard/General format { SvNumberformat* pEnt = GetFormatEntry(nPos); if (pEnt) @@ -834,7 +835,7 @@ bool SvNumberFormatter::Load( SvStream& rStream ) rStream >> nPos; } - // ab SV_NUMBERFORMATTER_VERSION_YEAR2000 + // as of SV_NUMBERFORMATTER_VERSION_YEAR2000 if ( nVersion >= SV_NUMBERFORMATTER_VERSION_YEAR2000 ) { aHdr.StartEntry(); @@ -843,7 +844,7 @@ bool SvNumberFormatter::Load( SvStream& rStream ) sal_uInt16 nY2k; rStream >> nY2k; if ( nVersion < SV_NUMBERFORMATTER_VERSION_TWODIGITYEAR && nY2k < 100 ) - nY2k += 1901; // war vor src513e: 29, jetzt: 1930 + nY2k += 1901; // was before src513e: 29, now: 1930 SetYear2000( nY2k ); } aHdr.EndEntry(); @@ -875,7 +876,8 @@ bool SvNumberFormatter::Load( SvStream& rStream ) bool SvNumberFormatter::Save( SvStream& rStream ) const { ImpSvNumMultipleWriteHeader aHdr( rStream ); - // ab 364i wird gespeichert was SYSTEM wirklich war, vorher hart LANGUAGE_SYSTEM + // As of 364i we store what SYSTEM locale really was, before it was hard + // coded LANGUAGE_SYSTEM. rStream << (sal_uInt16) SV_NUMBERFORMATTER_VERSION; rStream << (sal_uInt16) SvtSysLocale().GetLanguage() << (sal_uInt16) IniLnge; const SvNumberFormatTable* pTable = &aFTable; @@ -883,9 +885,9 @@ bool SvNumberFormatter::Save( SvStream& rStream ) const while (it != pTable->end()) { SvNumberformat* pEntry = it->second; - // Gespeichert werden alle markierten, benutzerdefinierten Formate und - // jeweils das Standardformat zu allen angewaehlten CL-Kombinationen - // sowie NewStandardDefined + // Stored are all marked user defined formats and for each active + // (selected) locale the Standard/General format and + // NewStandardDefined. if ( pEntry->GetUsed() || (pEntry->GetType() & NUMBERFORMAT_DEFINED) || pEntry->GetNewStandardDefined() || (it->first % SV_COUNTRY_LANGUAGE_OFFSET == 0) ) @@ -897,9 +899,9 @@ bool SvNumberFormatter::Save( SvStream& rStream ) const } ++it; } - rStream << NUMBERFORMAT_ENTRY_NOT_FOUND; // EndeKennung + rStream << NUMBERFORMAT_ENTRY_NOT_FOUND; // end marker - // ab SV_NUMBERFORMATTER_VERSION_YEAR2000 + // as of SV_NUMBERFORMATTER_VERSION_YEAR2000 aHdr.StartEntry(); rStream << (sal_uInt16) GetYear2000(); aHdr.EndEntry(); @@ -993,14 +995,13 @@ SvNumberFormatTable& SvNumberFormatter::GetFirstEntryTable( LanguageType& rLnge) { short eTypetmp = eType; - if (eType == NUMBERFORMAT_ALL) // Leere Zelle oder don't care + if (eType == NUMBERFORMAT_ALL) // empty cell or don't care rLnge = IniLnge; else { SvNumberformat* pFormat = GetFormatEntry(FIndex); if (!pFormat) { -// OSL_FAIL("SvNumberFormatter:: Unbekanntes altes Zahlformat (1)"); rLnge = IniLnge; eType = NUMBERFORMAT_ALL; eTypetmp = eType; @@ -1417,7 +1418,7 @@ sal_uInt32 SvNumberFormatter::GetStandardFormat( double fNumber, sal_uInt32 nFIn bSign = false; double fSeconds = fNumber * 86400; if ( floor( fSeconds + 0.5 ) * 100 != floor( fSeconds * 100 + 0.5 ) ) - { // mit 100stel Sekunden + { // with 100th seconds if ( bSign || fSeconds >= 3600 ) return GetFormatIndex( NF_TIME_HH_MMSS00, eLnge ); else @@ -1512,7 +1513,7 @@ void SvNumberFormatter::GetInputLineString(const double& fOutNumber, || eType == NUMBERFORMAT_SCIENTIFIC || eType == NUMBERFORMAT_FRACTION) { - if (eType != NUMBERFORMAT_PERCENT) // spaeter Sonderbehandlung % + if (eType != NUMBERFORMAT_PERCENT) // special treatment of % later eType = NUMBERFORMAT_NUMBER; ChangeStandardPrec(INPUTSTRING_PRECISION); bPrecChanged = true; @@ -1638,14 +1639,14 @@ bool SvNumberFormatter::GetPreviewString(const String& sFormatString, Color** ppColor, LanguageType eLnge) { - if (sFormatString.Len() == 0) // keinen Leerstring + if (sFormatString.Len() == 0) // no empty string return false; xub_StrLen nCheckPos = STRING_NOTFOUND; sal_uInt32 nKey; if (eLnge == LANGUAGE_DONTKNOW) eLnge = IniLnge; - ChangeIntl(eLnge); // ggfs. austauschen + ChangeIntl(eLnge); // change locale if necessary eLnge = ActLnge; String sTmpString = sFormatString; SvNumberformat* p_Entry = new SvNumberformat(sTmpString, @@ -1655,10 +1656,9 @@ bool SvNumberFormatter::GetPreviewString(const String& sFormatString, eLnge); if (nCheckPos == 0) // String ok { - sal_uInt32 CLOffset = ImpGenerateCL(eLnge); // ggfs. neu Standard- - // formate anlegen + sal_uInt32 CLOffset = ImpGenerateCL(eLnge); // create new standard formats if necessary nKey = ImpIsEntry(p_Entry->GetFormatstring(),CLOffset, eLnge); - if (nKey != NUMBERFORMAT_ENTRY_NOT_FOUND) // schon vorhanden + if (nKey != NUMBERFORMAT_ENTRY_NOT_FOUND) // already present GetOutputString(fPreviewNumber,nKey,sOutString,ppColor); else p_Entry->GetOutputString(fPreviewNumber,sOutString, ppColor); @@ -1678,7 +1678,7 @@ bool SvNumberFormatter::GetPreviewStringGuess( const String& sFormatString, Color** ppColor, LanguageType eLnge ) { - if (sFormatString.Len() == 0) // keinen Leerstring + if (sFormatString.Len() == 0) // no empty string return false; if (eLnge == LANGUAGE_DONTKNOW) @@ -1758,7 +1758,7 @@ bool SvNumberFormatter::GetPreviewStringGuess( const String& sFormatString, if (nCheckPos == 0) // String ok { - ImpGenerateCL( eLnge ); // ggfs. neu Standardformate anlegen + ImpGenerateCL( eLnge ); // create new standard formats if necessary pEntry->GetOutputString( fPreviewNumber, sOutString, ppColor ); delete pEntry; return true; @@ -1822,13 +1822,13 @@ bool SvNumberFormatter::GetPreviewString( const String& sFormatString, sal_uInt32 SvNumberFormatter::TestNewString(const String& sFormatString, LanguageType eLnge) { - if (sFormatString.Len() == 0) // keinen Leerstring + if (sFormatString.Len() == 0) // no empty string return NUMBERFORMAT_ENTRY_NOT_FOUND; xub_StrLen nCheckPos = STRING_NOTFOUND; if (eLnge == LANGUAGE_DONTKNOW) eLnge = IniLnge; - ChangeIntl(eLnge); // ggfs. austauschen + ChangeIntl(eLnge); // change locale if necessary eLnge = ActLnge; sal_uInt32 nRes; String sTmpString = sFormatString; @@ -1839,10 +1839,9 @@ sal_uInt32 SvNumberFormatter::TestNewString(const String& sFormatString, eLnge); if (nCheckPos == 0) // String ok { - sal_uInt32 CLOffset = ImpGenerateCL(eLnge); // ggfs. neu Standard- - // formate anlegen + sal_uInt32 CLOffset = ImpGenerateCL(eLnge); // create new standard formats if necessary nRes = ImpIsEntry(pEntry->GetFormatstring(),CLOffset, eLnge); - // schon vorhanden ? + // already present? } else nRes = NUMBERFORMAT_ENTRY_NOT_FOUND; @@ -2044,7 +2043,7 @@ sal_uInt32 SvNumberFormatter::GetFormatSpecialInfo( const String& rFormatString, xub_StrLen nCheckPos = 0; if (eLnge == LANGUAGE_DONTKNOW) eLnge = IniLnge; - ChangeIntl(eLnge); // ggfs. austauschen + ChangeIntl(eLnge); // change locale if necessary eLnge = ActLnge; String aTmpStr( rFormatString ); SvNumberformat* pFormat = new SvNumberformat( aTmpStr, @@ -2806,8 +2805,7 @@ void SvNumberFormatter::GenerateFormat(String& sString, eLnge = IniLnge; short eType = GetType(nIndex); sal_uInt16 i; - ImpGenerateCL(eLnge); // ggfs. neu Standard- - // formate anlegen + ImpGenerateCL(eLnge); // create new standard formats if necessary sString.Erase(); utl::DigitGroupingIterator aGrouping( xLocaleData->getDigitGrouping()); @@ -2952,8 +2950,7 @@ bool SvNumberFormatter::IsUserDefined(const String& sStr, { if (eLnge == LANGUAGE_DONTKNOW) eLnge = IniLnge; - sal_uInt32 CLOffset = ImpGenerateCL(eLnge); // ggfs. neu Standard- - // formate anlegen + sal_uInt32 CLOffset = ImpGenerateCL(eLnge); // create new standard formats if necessary eLnge = ActLnge; sal_uInt32 nKey = ImpIsEntry(sStr, CLOffset, eLnge); if (nKey == NUMBERFORMAT_ENTRY_NOT_FOUND) @@ -2969,8 +2966,7 @@ sal_uInt32 SvNumberFormatter::GetEntryKey(const String& sStr, { if (eLnge == LANGUAGE_DONTKNOW) eLnge = IniLnge; - sal_uInt32 CLOffset = ImpGenerateCL(eLnge); // ggfs. neu Standard- - // formate anlegen + sal_uInt32 CLOffset = ImpGenerateCL(eLnge); // create new standard formats if necessary return ImpIsEntry(sStr, CLOffset, eLnge); } @@ -3018,33 +3014,33 @@ SvNumberFormatterIndexTable* SvNumberFormatter::MergeFormatter(SvNumberFormatter { SvNumberformat* pFormat = it->second; nOldKey = it->first; - nOffset = nOldKey % SV_COUNTRY_LANGUAGE_OFFSET; // relativIndex - if (nOffset == 0) // 1. Format von CL + nOffset = nOldKey % SV_COUNTRY_LANGUAGE_OFFSET; // relative index + if (nOffset == 0) // 1st format of CL nCLOffset = ImpGenerateCL(pFormat->GetLanguage()); if (nOffset <= SV_MAX_ANZ_STANDARD_FORMATE) // Std.form. { nNewKey = nCLOffset + nOffset; - if (aFTable.find( nNewKey) == aFTable.end()) // noch nicht da + if (aFTable.find( nNewKey) == aFTable.end()) // not already present { -// pNewEntry = new SvNumberformat(*pFormat); // Copy reicht nicht !!! +// pNewEntry = new SvNumberformat(*pFormat); // Copy is not sufficient! pNewEntry = new SvNumberformat( *pFormat, *pFormatScanner ); if (!aFTable.insert(make_pair( nNewKey, pNewEntry)).second) delete pNewEntry; } - if (nNewKey != nOldKey) // neuer Index + if (nNewKey != nOldKey) // new index { (*pMergeTable)[nOldKey] = nNewKey; } } - else // benutzerdef. + else // user defined { -// pNewEntry = new SvNumberformat(*pFormat); // Copy reicht nicht !!! +// pNewEntry = new SvNumberformat(*pFormat); // Copy is not sufficient! pNewEntry = new SvNumberformat( *pFormat, *pFormatScanner ); nNewKey = ImpIsEntry(pNewEntry->GetFormatstring(), nCLOffset, pFormat->GetLanguage()); - if (nNewKey != NUMBERFORMAT_ENTRY_NOT_FOUND) // schon vorhanden + if (nNewKey != NUMBERFORMAT_ENTRY_NOT_FOUND) // already present delete pNewEntry; else { @@ -3063,7 +3059,7 @@ SvNumberFormatterIndexTable* SvNumberFormatter::MergeFormatter(SvNumberFormatter else pStdFormat->SetLastInsertKey((sal_uInt16) (nNewKey - nCLOffset)); } - if (nNewKey != nOldKey) // neuer Index + if (nNewKey != nOldKey) // new index { (*pMergeTable)[nOldKey] = nNewKey; } @@ -3096,11 +3092,11 @@ sal_uInt32 SvNumberFormatter::GetFormatForLanguageIfBuiltIn( sal_uInt32 nFormat, if ( eLnge == LANGUAGE_DONTKNOW ) eLnge = IniLnge; if ( nFormat < SV_COUNTRY_LANGUAGE_OFFSET && eLnge == IniLnge ) - return nFormat; // es bleibt wie es ist - sal_uInt32 nOffset = nFormat % SV_COUNTRY_LANGUAGE_OFFSET; // relativIndex + return nFormat; // it stays as it is + sal_uInt32 nOffset = nFormat % SV_COUNTRY_LANGUAGE_OFFSET; // relative index if ( nOffset > SV_MAX_ANZ_STANDARD_FORMATE ) - return nFormat; // kein eingebautes Format - sal_uInt32 nCLOffset = ImpGenerateCL(eLnge); // ggbf. generieren + return nFormat; // not a built-in format + sal_uInt32 nCLOffset = ImpGenerateCL(eLnge); // create new standard formats if necessary return nCLOffset + nOffset; } @@ -3113,16 +3109,16 @@ sal_uInt32 SvNumberFormatter::GetFormatIndex( NfIndexTableOffset nTabOff, return NUMBERFORMAT_ENTRY_NOT_FOUND; if ( eLnge == LANGUAGE_DONTKNOW ) eLnge = IniLnge; - sal_uInt32 nCLOffset = ImpGenerateCL(eLnge); // ggbf. generieren + sal_uInt32 nCLOffset = ImpGenerateCL(eLnge); // create new standard formats if necessary return nCLOffset + theIndexTable[nTabOff]; } NfIndexTableOffset SvNumberFormatter::GetIndexTableOffset( sal_uInt32 nFormat ) const { - sal_uInt32 nOffset = nFormat % SV_COUNTRY_LANGUAGE_OFFSET; // relativIndex + sal_uInt32 nOffset = nFormat % SV_COUNTRY_LANGUAGE_OFFSET; // relative index if ( nOffset > SV_MAX_ANZ_STANDARD_FORMATE ) - return NF_INDEX_TABLE_ENTRIES; // kein eingebautes Format + return NF_INDEX_TABLE_ENTRIES; // not a built-in format for ( sal_uInt16 j = 0; j < NF_INDEX_TABLE_ENTRIES; j++ ) { if ( theIndexTable[j] == nOffset ) @@ -3450,7 +3446,7 @@ bool SvNumberFormatter::GetNewCurrencySymbolString( sal_uInt32 nFormat, } } if ( !rStr.Len() ) - { // analog zu BuildSymbolString + { // analog to BuildSymbolString rStr = '['; rStr += '$'; if ( aSymbol.Search( '-' ) != STRING_NOTFOUND || @@ -3774,7 +3770,8 @@ sal_uInt16 SvNumberFormatter::GetCurrencyFormatStrings( NfWSStringsDtor& rStrArr { sal_uInt16 nDefault = 0; if ( bBank ) - { // nur Bankensymbole + { + // Only bank symbols. String aPositiveBank, aNegativeBank; rCurr.BuildPositiveFormatString( aPositiveBank, true, *xLocaleData, 1 ); rCurr.BuildNegativeFormatString( aNegativeBank, true, *xLocaleData, 1 ); @@ -3797,8 +3794,9 @@ sal_uInt16 SvNumberFormatter::GetCurrencyFormatStrings( NfWSStringsDtor& rStrArr nDefault = rStrArr.Count() - 1; } else - { // gemischte Formate wie in SvNumberFormatter::ImpGenerateFormats - // aber keine doppelten, wenn keine Nachkommastellen in Waehrung + { + // Mixed formats like in SvNumberFormatter::ImpGenerateFormats() but no + // duplicates if no decimals in currency. String aPositive, aNegative, aPositiveNoDec, aNegativeNoDec, aPositiveDashed, aNegativeDashed; WSStringPtr pFormat1, pFormat2, pFormat3, pFormat4, pFormat5; @@ -4161,7 +4159,7 @@ sal_uInt16 NfCurrencyEntry::GetEffectivePositiveFormat( } -// nur aufrufen, wenn nCurrFormat wirklich mit Klammern ist +//! Call this only if nCurrFormat is really with parentheses! sal_uInt16 lcl_MergeNegativeParenthesisFormat( sal_uInt16 nIntlFormat, sal_uInt16 nCurrFormat ) { short nSign = 0; // -1:=Klammer 0:=links, 1:=mitte, 2:=rechts @@ -4393,8 +4391,8 @@ sal_Char NfCurrencyEntry::GetEuroSymbol( rtl_TextEncoding eTextEncoding ) #if WNT return '\x80'; #elif UNX -// return '\xA4'; // #56121# 0xA4 waere korrekt fuer iso-8859-15 - return '\x80'; // aber Windoze-Code fuer die konvertierten TrueType-Fonts +// return '\xA4'; // #56121# 0xA4 would be correct for iso-8859-15 + return '\x80'; // but Windows code for the converted TrueType fonts #else #error EuroSymbol is what? return '\x80'; commit 7bb409a7dfa67370b7bcd7104a1bb20a6bc8bb9b Author: Eike Rathke <er...@redhat.com> Date: Mon Apr 30 13:20:04 2012 +0200 compare iterators with notequal diff --git a/svl/source/numbers/zforlist.cxx b/svl/source/numbers/zforlist.cxx index 2084706..e26475b 100644 --- a/svl/source/numbers/zforlist.cxx +++ b/svl/source/numbers/zforlist.cxx @@ -136,7 +136,7 @@ SvNumberFormatterRegistry_Impl::~SvNumberFormatterRegistry_Impl() SvNumberFormatter* SvNumberFormatterRegistry_Impl::Remove( SvNumberFormatter* pThis ) { for (SvNumberFormatterList_impl::iterator it = aFormatters.begin(); - it < aFormatters.end(); ++it) + it != aFormatters.end(); ++it) { if ( *it == pThis ) { commit 332cc04cbbe069baa5a72e4e1be9de10c64e2e56 Author: Eike Rathke <er...@redhat.com> Date: Mon Apr 30 13:20:04 2012 +0200 straighten confusing brackets diff --git a/svl/source/numbers/zforlist.cxx b/svl/source/numbers/zforlist.cxx index 1f443c8..2084706 100644 --- a/svl/source/numbers/zforlist.cxx +++ b/svl/source/numbers/zforlist.cxx @@ -135,12 +135,11 @@ SvNumberFormatterRegistry_Impl::~SvNumberFormatterRegistry_Impl() SvNumberFormatter* SvNumberFormatterRegistry_Impl::Remove( SvNumberFormatter* pThis ) { - for( - SvNumberFormatterList_impl::iterator it = aFormatters.begin(); - it < aFormatters.end(); - ++it - ) { - if ( *it == pThis ) { + for (SvNumberFormatterList_impl::iterator it = aFormatters.begin(); + it < aFormatters.end(); ++it) + { + if ( *it == pThis ) + { aFormatters.erase( it ); break; } @@ -150,8 +149,8 @@ SvNumberFormatter* SvNumberFormatterRegistry_Impl::Remove( SvNumberFormatter* pT void SvNumberFormatterRegistry_Impl::ConfigurationChanged( utl::ConfigurationBroadcaster*, - sal_uInt32 nHint -) { + sal_uInt32 nHint) +{ if ( nHint & SYSLOCALEOPTIONS_HINT_LOCALE ) { ::osl::MutexGuard aGuard( SvNumberFormatter::GetMutex() ); commit 850497d72193704192f9f036425ea51b42cc68cd Author: Eike Rathke <er...@redhat.com> Date: Mon Apr 30 13:20:03 2012 +0200 get rid of confusing *LoadingSO5 names diff --git a/svl/inc/svl/zforlist.hxx b/svl/inc/svl/zforlist.hxx index 7f2a7ff..fd3a7b9 100644 --- a/svl/inc/svl/zforlist.hxx +++ b/svl/inc/svl/zforlist.hxx @@ -851,29 +851,29 @@ private: // Changes initialized language/country, clears the entries and generates // new ones, may ONLY be called by the binary file format load - SVL_DLLPRIVATE void ImpChangeSysCL( LanguageType eLnge, bool bLoadingSO5 ); + SVL_DLLPRIVATE void ImpChangeSysCL( LanguageType eLnge, bool bNoAdditionalFormats ); // Generate builtin formats provided by i18n behind CLOffset, - // if bLoadingSO5==false also generate additional i18n formats. - SVL_DLLPRIVATE void ImpGenerateFormats( sal_uInt32 CLOffset, bool bLoadingSO5 ); + // if bNoAdditionalFormats==false also generate additional i18n formats. + SVL_DLLPRIVATE void ImpGenerateFormats( sal_uInt32 CLOffset, bool bNoAdditionalFormats ); // Generate additional formats provided by i18n SVL_DLLPRIVATE void ImpGenerateAdditionalFormats( sal_uInt32 CLOffset, NumberFormatCodeWrapper& rNumberFormatCode, - bool bAfterLoadingSO5 ); + bool bAfterChangingSystemCL ); SVL_DLLPRIVATE SvNumberformat* ImpInsertFormat( const ::com::sun::star::i18n::NumberFormatCode& rCode, sal_uInt32 nPos, - bool bAfterLoadingSO5 = false, + bool bAfterChangingSystemCL = false, sal_Int16 nOrgIndex = 0 ); // ImpInsertNewStandardFormat for new (since version ...) builtin formats SVL_DLLPRIVATE SvNumberformat* ImpInsertNewStandardFormat( const ::com::sun::star::i18n::NumberFormatCode& rCode, sal_uInt32 nPos, sal_uInt16 nVersion, - bool bAfterLoadingSO5 = false, + bool bAfterChangingSystemCL = false, sal_Int16 nOrgIndex = 0 ); // Return CLOffset or (MaxCLOffset + SV_COUNTRY_LANGUAGE_OFFSET) if new language/country @@ -886,7 +886,7 @@ private: LanguageType eLnge ); // Create builtin formats for language/country if necessary, return CLOffset - SVL_DLLPRIVATE sal_uInt32 ImpGenerateCL( LanguageType eLnge, bool bLoadingSO5 = false ); + SVL_DLLPRIVATE sal_uInt32 ImpGenerateCL( LanguageType eLnge, bool bNoAdditionalFormats = false ); // Build negative currency format, old compatibility style SVL_DLLPRIVATE void ImpGetNegCurrFormat( String& sNegStr, const String& rCurrSymbol ); diff --git a/svl/source/numbers/zforlist.cxx b/svl/source/numbers/zforlist.cxx index 83a1232..1f443c8 100644 --- a/svl/source/numbers/zforlist.cxx +++ b/svl/source/numbers/zforlist.cxx @@ -349,7 +349,7 @@ sal_uInt16 SvNumberFormatter::GetStandardPrec() return pFormatScanner->GetStandardPrec(); } -void SvNumberFormatter::ImpChangeSysCL( LanguageType eLnge, bool bLoadingSO5 ) +void SvNumberFormatter::ImpChangeSysCL( LanguageType eLnge, bool bNoAdditionalFormats ) { if (eLnge == LANGUAGE_DONTKNOW) eLnge = UNKNOWN_SUBSTITUTE; @@ -361,9 +361,9 @@ void SvNumberFormatter::ImpChangeSysCL( LanguageType eLnge, bool bLoadingSO5 ) for (SvNumberFormatTable::iterator it = aFTable.begin(); it != aFTable.end(); ++it) delete it->second; aFTable.clear(); - ImpGenerateFormats( 0, bLoadingSO5 ); // new standard formats + ImpGenerateFormats( 0, bNoAdditionalFormats ); // new standard formats } - else if ( bLoadingSO5 ) + else if ( bNoAdditionalFormats ) { // delete additional standard formats sal_uInt32 nKey; SvNumberFormatTable::iterator it = aFTable.find( SV_MAX_ANZ_STANDARD_FORMATE + 1 ); @@ -1028,7 +1028,7 @@ SvNumberFormatTable& SvNumberFormatter::GetFirstEntryTable( return GetEntryTable(eTypetmp, FIndex, rLnge); } -sal_uInt32 SvNumberFormatter::ImpGenerateCL( LanguageType eLnge, bool bLoadingSO5 ) +sal_uInt32 SvNumberFormatter::ImpGenerateCL( LanguageType eLnge, bool bNoAdditionalFormats ) { ChangeIntl(eLnge); sal_uInt32 CLOffset = ImpGetCLOffset(ActLnge); @@ -1090,7 +1090,7 @@ sal_uInt32 SvNumberFormatter::ImpGenerateCL( LanguageType eLnge, bool bLoadingSO } MaxCLOffset += SV_COUNTRY_LANGUAGE_OFFSET; - ImpGenerateFormats( MaxCLOffset, bLoadingSO5 ); + ImpGenerateFormats( MaxCLOffset, bNoAdditionalFormats ); CLOffset = MaxCLOffset; } return CLOffset; @@ -1853,7 +1853,7 @@ sal_uInt32 SvNumberFormatter::TestNewString(const String& sFormatString, SvNumberformat* SvNumberFormatter::ImpInsertFormat( const ::com::sun::star::i18n::NumberFormatCode& rCode, - sal_uInt32 nPos, bool bAfterLoadingSO5, sal_Int16 nOrgIndex ) + sal_uInt32 nPos, bool bAfterChangingSystemCL, sal_Int16 nOrgIndex ) { String aCodeStr( rCode.Code ); if ( rCode.Index < NF_INDEX_TABLE_ENTRIES && @@ -1904,29 +1904,29 @@ SvNumberformat* SvNumberFormatter::ImpInsertFormat( sal_uInt32 nKey = ImpIsEntry( aCodeStr, nCLOffset, ActLnge ); if ( nKey != NUMBERFORMAT_ENTRY_NOT_FOUND ) { - if (LocaleDataWrapper::areChecksEnabled()) + // If bAfterChangingSystemCL there will definitely be some dups, + // don't cry then. + if (LocaleDataWrapper::areChecksEnabled() && !bAfterChangingSystemCL) { + // Test for duplicate indexes in locale data. switch ( nOrgIndex ) { - // These may be dupes of integer versions for locales where + // These may be dups of integer versions for locales where // currencies have no decimals like Italian Lira. case NF_CURRENCY_1000DEC2 : // NF_CURRENCY_1000INT case NF_CURRENCY_1000DEC2_RED : // NF_CURRENCY_1000INT_RED case NF_CURRENCY_1000DEC2_DASHED : // NF_CURRENCY_1000INT_RED - break; + break; default: - if ( !bAfterLoadingSO5 ) - { // If bAfterLoadingSO5 there will definitely be some dupes, - // don't cry. But we need this test for verification of locale - // data if not loading old SO5 documents. - String aMsg( RTL_CONSTASCII_USTRINGPARAM( - "SvNumberFormatter::ImpInsertFormat: dup format code, index ")); - aMsg += String::CreateFromInt32( rCode.Index ); - aMsg += '\n'; - aMsg += String( rCode.Code ); - LocaleDataWrapper::outputCheckMessage( - xLocaleData->appendLocaleInfo( aMsg)); - } + { + String aMsg( RTL_CONSTASCII_USTRINGPARAM( + "SvNumberFormatter::ImpInsertFormat: dup format code, index ")); + aMsg += String::CreateFromInt32( rCode.Index ); + aMsg += '\n'; + aMsg += String( rCode.Code ); + LocaleDataWrapper::outputCheckMessage( + xLocaleData->appendLocaleInfo( aMsg)); + } } } delete pFormat; @@ -1974,11 +1974,11 @@ SvNumberformat* SvNumberFormatter::ImpInsertFormat( SvNumberformat* SvNumberFormatter::ImpInsertNewStandardFormat( const ::com::sun::star::i18n::NumberFormatCode& rCode, - sal_uInt32 nPos, sal_uInt16 nVersion, bool bAfterLoadingSO5, + sal_uInt32 nPos, sal_uInt16 nVersion, bool bAfterChangingSystemCL, sal_Int16 nOrgIndex ) { SvNumberformat* pNewFormat = ImpInsertFormat( rCode, nPos, - bAfterLoadingSO5, nOrgIndex ); + bAfterChangingSystemCL, nOrgIndex ); if (pNewFormat) pNewFormat->SetNewStandardDefined( nVersion ); // so that it gets saved, displayed properly, and converted by old versions @@ -2258,7 +2258,7 @@ const SvNumberformat* SvNumberFormatter::GetEntry( sal_uInt32 nKey ) const return 0; } -void SvNumberFormatter::ImpGenerateFormats( sal_uInt32 CLOffset, bool bLoadingSO5 ) +void SvNumberFormatter::ImpGenerateFormats( sal_uInt32 CLOffset, bool bNoAdditionalFormats ) { using namespace ::com::sun::star; @@ -2685,8 +2685,8 @@ void SvNumberFormatter::ImpGenerateFormats( sal_uInt32 CLOffset, bool bLoadingSO "ImpGenerateFormats: overflow of nNewExtended standard formats" ); // Now all additional format codes provided by I18N, but only if not - // loading from old SO5 file format, then they are appended last. - if ( !bLoadingSO5 ) + // changing SystemCL, then they are appended last after user defined. + if ( !bNoAdditionalFormats ) ImpGenerateAdditionalFormats( CLOffset, aNumberFormatCode, false ); sal_uInt32 nPos = CLOffset + pStdFormat->GetLastInsertKey(); @@ -2707,7 +2707,7 @@ void SvNumberFormatter::ImpGenerateFormats( sal_uInt32 CLOffset, bool bLoadingSO void SvNumberFormatter::ImpGenerateAdditionalFormats( sal_uInt32 CLOffset, - NumberFormatCodeWrapper& rNumberFormatCode, bool bAfterLoadingSO5 ) + NumberFormatCodeWrapper& rNumberFormatCode, bool bAfterChangingSystemCL ) { using namespace ::com::sun::star; @@ -2747,7 +2747,7 @@ void SvNumberFormatter::ImpGenerateAdditionalFormats( sal_uInt32 CLOffset, aFormatSeq[j].Default = false; if ( ImpInsertNewStandardFormat( pFormatArr[j], nPos+1, SV_NUMBERFORMATTER_VERSION_ADDITIONAL_I18N_FORMATS, - bAfterLoadingSO5, nOrgIndex ) ) + bAfterChangingSystemCL, nOrgIndex ) ) nPos++; pFormatArr[j].Index = nOrgIndex; aFormatSeq[j].Default = bDefault; @@ -2774,7 +2774,7 @@ void SvNumberFormatter::ImpGenerateAdditionalFormats( sal_uInt32 CLOffset, if ( pFormatArr[j].Index >= NF_INDEX_TABLE_ENTRIES ) if ( ImpInsertNewStandardFormat( pFormatArr[j], nPos+1, SV_NUMBERFORMATTER_VERSION_ADDITIONAL_I18N_FORMATS, - bAfterLoadingSO5 ) ) + bAfterChangingSystemCL ) ) nPos++; } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits