From 9955dbebbdf1b7d36fec272dfea46f57fab47e19 Mon Sep 17 00:00:00 2001 From: Eike Rathke Date: Thu, 22 Nov 2012 12:26:52 +0100 Subject: AllSettings with LanguageTag Change-Id: I710ae66e51139662eb442b681fdf9cc9d158551d --- vcl/source/app/dbggui.cxx | 2 +- vcl/source/app/settings.cxx | 106 +++++++++++++------------------------------- vcl/source/app/svapp.cxx | 7 +-- vcl/source/app/svdata.cxx | 2 +- 4 files changed, 37 insertions(+), 80 deletions(-) (limited to 'vcl/source/app') diff --git a/vcl/source/app/dbggui.cxx b/vcl/source/app/dbggui.cxx index b4601b5416d1..ee72e0201f9b 100644 --- a/vcl/source/app/dbggui.cxx +++ b/vcl/source/app/dbggui.cxx @@ -1257,7 +1257,7 @@ void DbgDialogTest( Window* pWindow ) nAccelPos = aText.Search( '~' ); if ( nAccelPos != STRING_NOTFOUND ) { - const ::com::sun::star::lang::Locale& rLocale = Application::GetSettings().GetLocale(); + const ::com::sun::star::lang::Locale& rLocale = Application::GetSettings().GetLanguageTag().getLocale(); uno::Reference < i18n::XCharacterClassification > xCharClass = vcl::unohelper::CreateCharacterClassification(); XubString aUpperText = xCharClass->toUpper( aText, 0, aText.Len(), rLocale ); cAccel = aUpperText.GetChar( nAccelPos+1 ); diff --git a/vcl/source/app/settings.cxx b/vcl/source/app/settings.cxx index aa42cb6c8ecd..cc89b324b986 100644 --- a/vcl/source/app/settings.cxx +++ b/vcl/source/app/settings.cxx @@ -1195,12 +1195,13 @@ sal_Bool HelpSettings::operator ==( const HelpSettings& rSet ) const // ======================================================================= ImplAllSettingsData::ImplAllSettingsData() + : + maLocale( LANGUAGE_SYSTEM ), + maUILocale( LANGUAGE_SYSTEM ) { mnRefCount = 1; mnSystemUpdate = SETTINGS_ALLSETTINGS; mnWindowUpdate = SETTINGS_ALLSETTINGS; - meLanguage = LANGUAGE_SYSTEM; - meUILanguage = LANGUAGE_SYSTEM; mpLocaleDataWrapper = NULL; mpUILocaleDataWrapper = NULL; mpI18nHelper = NULL; @@ -1215,12 +1216,12 @@ ImplAllSettingsData::ImplAllSettingsData( const ImplAllSettingsData& rData ) : maStyleSettings( rData.maStyleSettings ), maMiscSettings( rData.maMiscSettings ), maHelpSettings( rData.maHelpSettings ), - maLocale( rData.maLocale ) + maLocale( rData.maLocale ), + maUILocale( rData.maUILocale ) { mnRefCount = 1; mnSystemUpdate = rData.mnSystemUpdate; mnWindowUpdate = rData.mnWindowUpdate; - meLanguage = rData.meLanguage; // Pointer couldn't shared and objects haven't a copy ctor // So we create the cache objects new, if the GetFunction is // called @@ -1363,9 +1364,9 @@ sal_uLong AllSettings::Update( sal_uLong nFlags, const AllSettings& rSet ) if ( nFlags & SETTINGS_LOCALE ) { - if ( mpData->meLanguage || rSet.mpData->meLanguage ) + if ( mpData->maLocale != rSet.mpData->maLocale ) { - SetLanguage( rSet.mpData->meLanguage ); + SetLanguageTag( rSet.mpData->maLocale ); nChangeFlags |= SETTINGS_LOCALE; } } @@ -1399,7 +1400,7 @@ sal_uLong AllSettings::GetChangeFlags( const AllSettings& rSet ) const if ( mpData->maHelpSettings != rSet.mpData->maHelpSettings ) nChangeFlags |= SETTINGS_HELP; - if ( mpData->meLanguage || rSet.mpData->meLanguage ) + if ( mpData->maLocale != rSet.mpData->maLocale ) nChangeFlags |= SETTINGS_LOCALE; return nChangeFlags; @@ -1431,45 +1432,14 @@ sal_Bool AllSettings::operator ==( const AllSettings& rSet ) const // ----------------------------------------------------------------------- -void AllSettings::SetLocale( const ::com::sun::star::lang::Locale& rLocale ) +void AllSettings::SetLanguageTag( const LanguageTag& rLanguageTag ) { - CopyData(); - - mpData->maLocale = rLocale; - - if ( rLocale.Language.isEmpty() ) - mpData->meLanguage = LANGUAGE_SYSTEM; - else - mpData->meLanguage = LanguageTag( rLocale ).getLanguageType( false); - if ( mpData->mpLocaleDataWrapper ) - { - delete mpData->mpLocaleDataWrapper; - mpData->mpLocaleDataWrapper = NULL; - } - if ( mpData->mpI18nHelper ) - { - delete mpData->mpI18nHelper; - mpData->mpI18nHelper = NULL; - } -} - -// ----------------------------------------------------------------------- - -void AllSettings::SetUILocale( const ::com::sun::star::lang::Locale& ) -{ - // there is only one UILocale per process -} - -// ----------------------------------------------------------------------- - -void AllSettings::SetLanguage( LanguageType eLang ) -{ - if ( eLang != mpData->meLanguage ) + if (mpData->maLocale != rLanguageTag) { CopyData(); - mpData->meLanguage = eLang; - mpData->maLocale = LanguageTag( GetLanguage() ).getLocale(); + mpData->maLocale = rLanguageTag; + if ( mpData->mpLocaleDataWrapper ) { delete mpData->mpLocaleDataWrapper; @@ -1485,9 +1455,9 @@ void AllSettings::SetLanguage( LanguageType eLang ) // ----------------------------------------------------------------------- -void AllSettings::SetUILanguage( LanguageType ) +void AllSettings::SetUILanguageTag( const LanguageTag& ) { - // there is only one UILanguage per process + // there is only one UILocale per process } // ----------------------------------------------------------------------- @@ -1526,7 +1496,7 @@ bool AllSettings::GetLayoutRTL() const LanguageType aLang = LANGUAGE_DONTKNOW; ImplSVData* pSVData = ImplGetSVData(); if ( pSVData->maAppData.mpSettings ) - aLang = pSVData->maAppData.mpSettings->GetUILanguage(); + aLang = pSVData->maAppData.mpSettings->GetUILanguageTag().getLanguageType(); bRTL = MsLangId::isRightToLeft( aLang ); } else @@ -1537,50 +1507,33 @@ bool AllSettings::GetLayoutRTL() const // ----------------------------------------------------------------------- -const ::com::sun::star::lang::Locale& AllSettings::GetLocale() const +const LanguageTag& AllSettings::GetLanguageTag() const { - if ( mpData->maLocale.Language.isEmpty() ) - mpData->maLocale = mpData->maSysLocale.GetLanguageTag().getLocale(); + // SYSTEM locale means: use settings from SvtSysLocale that is resolved + if ( mpData->maLocale.isSystemLocale() ) + mpData->maLocale = mpData->maSysLocale.GetLanguageTag(); return mpData->maLocale; } // ----------------------------------------------------------------------- -const ::com::sun::star::lang::Locale& AllSettings::GetUILocale() const +const LanguageTag& AllSettings::GetUILanguageTag() const { // the UILocale is never changed - if ( mpData->maUILocale.Language.isEmpty() ) - mpData->maUILocale = mpData->maSysLocale.GetUILanguageTag().getLocale(); + if ( mpData->maUILocale.isSystemLocale() ) + mpData->maUILocale = mpData->maSysLocale.GetUILanguageTag(); return mpData->maUILocale; } // ----------------------------------------------------------------------- -LanguageType AllSettings::GetLanguage() const -{ - // meLanguage == LANGUAGE_SYSTEM means: use settings from SvtSysLocale - if ( mpData->meLanguage == LANGUAGE_SYSTEM ) - return mpData->maSysLocale.GetLanguageTag().getLanguageType(); - - return mpData->meLanguage; -} - -// ----------------------------------------------------------------------- - -LanguageType AllSettings::GetUILanguage() const -{ - // the UILanguage is never changed - return mpData->maSysLocale.GetUILanguageTag().getLanguageType(); -} - -// ----------------------------------------------------------------------- - const LocaleDataWrapper& AllSettings::GetLocaleDataWrapper() const { if ( !mpData->mpLocaleDataWrapper ) - ((AllSettings*)this)->mpData->mpLocaleDataWrapper = new LocaleDataWrapper( comphelper::getProcessComponentContext(), GetLocale() ); + ((AllSettings*)this)->mpData->mpLocaleDataWrapper = new LocaleDataWrapper( + comphelper::getProcessComponentContext(), GetLanguageTag().getLocale() ); return *mpData->mpLocaleDataWrapper; } @@ -1589,7 +1542,8 @@ const LocaleDataWrapper& AllSettings::GetLocaleDataWrapper() const const LocaleDataWrapper& AllSettings::GetUILocaleDataWrapper() const { if ( !mpData->mpUILocaleDataWrapper ) - ((AllSettings*)this)->mpData->mpUILocaleDataWrapper = new LocaleDataWrapper( comphelper::getProcessComponentContext(), GetUILocale() ); + ((AllSettings*)this)->mpData->mpUILocaleDataWrapper = new LocaleDataWrapper( + comphelper::getProcessComponentContext(), GetUILanguageTag().getLocale() ); return *mpData->mpUILocaleDataWrapper; } @@ -1598,7 +1552,8 @@ const LocaleDataWrapper& AllSettings::GetUILocaleDataWrapper() const const vcl::I18nHelper& AllSettings::GetLocaleI18nHelper() const { if ( !mpData->mpI18nHelper ) { - ((AllSettings*)this)->mpData->mpI18nHelper = new vcl::I18nHelper( comphelper::getProcessComponentContext(), GetLocale() ); + ((AllSettings*)this)->mpData->mpI18nHelper = new vcl::I18nHelper( + comphelper::getProcessComponentContext(), GetLanguageTag().getLocale() ); } return *mpData->mpI18nHelper; } @@ -1608,7 +1563,8 @@ const vcl::I18nHelper& AllSettings::GetLocaleI18nHelper() const const vcl::I18nHelper& AllSettings::GetUILocaleI18nHelper() const { if ( !mpData->mpUII18nHelper ) { - ((AllSettings*)this)->mpData->mpUII18nHelper = new vcl::I18nHelper( comphelper::getProcessComponentContext(), GetUILocale() ); + ((AllSettings*)this)->mpData->mpUII18nHelper = new vcl::I18nHelper( + comphelper::getProcessComponentContext(), GetUILanguageTag().getLocale() ); } return *mpData->mpUII18nHelper; } @@ -1628,7 +1584,7 @@ void AllSettings::LocaleSettingsChanged( sal_uInt32 nHint ) } if ( (nHint & SYSLOCALEOPTIONS_HINT_LOCALE) ) - aAllSettings.SetLocale( aAllSettings.mpData->maSysLocale.GetOptions().GetLanguageTag().getLocale() ); + aAllSettings.SetLanguageTag( aAllSettings.mpData->maSysLocale.GetOptions().GetLanguageTag() ); Application::SetSettings( aAllSettings ); } diff --git a/vcl/source/app/svapp.cxx b/vcl/source/app/svapp.cxx index 5fee6d9f117d..45147d1d6105 100644 --- a/vcl/source/app/svapp.cxx +++ b/vcl/source/app/svapp.cxx @@ -619,17 +619,18 @@ void Application::SetSettings( const AllSettings& rSettings ) { GetSettings(); *pSVData->maAppData.mpSettings = rSettings; - ResMgr::SetDefaultLocale( rSettings.GetUILocale() ); + ResMgr::SetDefaultLocale( rSettings.GetUILanguageTag().getLocale() ); } else { AllSettings aOldSettings = *pSVData->maAppData.mpSettings; - if( aOldSettings.GetUILanguage() != rSettings.GetUILanguage() && pSVData->mpResMgr ) + if( aOldSettings.GetUILanguageTag().getLanguageType() != rSettings.GetUILanguageTag().getLanguageType() && + pSVData->mpResMgr ) { delete pSVData->mpResMgr; pSVData->mpResMgr = NULL; } - ResMgr::SetDefaultLocale( rSettings.GetUILocale() ); + ResMgr::SetDefaultLocale( rSettings.GetUILanguageTag().getLocale() ); *pSVData->maAppData.mpSettings = rSettings; sal_uLong nChangeFlags = aOldSettings.GetChangeFlags( *pSVData->maAppData.mpSettings ); if ( nChangeFlags ) diff --git a/vcl/source/app/svdata.cxx b/vcl/source/app/svdata.cxx index d9af0b698a50..b238497e3a00 100644 --- a/vcl/source/app/svdata.cxx +++ b/vcl/source/app/svdata.cxx @@ -181,7 +181,7 @@ ResMgr* ImplGetResMgr() ImplSVData* pSVData = ImplGetSVData(); if ( !pSVData->mpResMgr ) { - ::com::sun::star::lang::Locale aLocale = Application::GetSettings().GetUILocale(); + ::com::sun::star::lang::Locale aLocale = Application::GetSettings().GetUILanguageTag().getLocale(); pSVData->mpResMgr = ResMgr::SearchCreateResMgr( VCL_CREATERESMGR_NAME( vcl ), aLocale ); static bool bMessageOnce = false; -- cgit v1.2.3