From af60316514f3ae3d4c475819bf86f2af837171e3 Mon Sep 17 00:00:00 2001 From: Eike Rathke Date: Fri, 23 Nov 2012 23:06:10 +0100 Subject: some i18n wrappers with LanguageTag Change-Id: I2ceaa3159e8669c2c569fa8559c1e061dcad399d --- vcl/inc/vcl/field.hxx | 2 ++ vcl/inc/vcl/i18nhelp.hxx | 6 +++--- vcl/source/app/i18nhelp.cxx | 9 +++++---- vcl/source/app/settings.cxx | 8 ++++---- vcl/source/control/field.cxx | 33 ++++++++++++++++++++++++--------- vcl/source/control/field2.cxx | 8 ++++---- vcl/source/edit/texteng.cxx | 2 +- 7 files changed, 43 insertions(+), 25 deletions(-) (limited to 'vcl') diff --git a/vcl/inc/vcl/field.hxx b/vcl/inc/vcl/field.hxx index f2d63b0dbdd0..741656fa7015 100644 --- a/vcl/inc/vcl/field.hxx +++ b/vcl/inc/vcl/field.hxx @@ -32,6 +32,7 @@ namespace com { namespace sun { namespace star { namespace lang { struct Locale; class CalendarWrapper; class LocaleDataWrapper; +class LanguageTag; // ----------------- // - FormatterBase - @@ -78,6 +79,7 @@ public: virtual void SetLocale( const ::com::sun::star::lang::Locale& rLocale ); const ::com::sun::star::lang::Locale& GetLocale() const; + const LanguageTag& GetLanguageTag() const; const AllSettings& GetFieldSettings() const; diff --git a/vcl/inc/vcl/i18nhelp.hxx b/vcl/inc/vcl/i18nhelp.hxx index 54b05743cc10..98351ea630cc 100644 --- a/vcl/inc/vcl/i18nhelp.hxx +++ b/vcl/inc/vcl/i18nhelp.hxx @@ -21,8 +21,8 @@ #define _VCL_I18NHELP_HXX #include -#include #include +#include #include #include @@ -49,7 +49,7 @@ class VCL_DLLPUBLIC I18nHelper { private: ::osl::Mutex maMutex; - ::com::sun::star::lang::Locale maLocale; + LanguageTag maLanguageTag; ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > m_xContext; LocaleDataWrapper* mpLocaleDataWrapper; @@ -67,7 +67,7 @@ protected: public: - I18nHelper( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& rxContext, const ::com::sun::star::lang::Locale& rLocale ); + I18nHelper( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& rxContext, const LanguageTag& rLanguageTag ); ~I18nHelper(); sal_Int32 CompareString( const rtl::OUString& rStr1, const rtl::OUString& rStr2 ) const; diff --git a/vcl/source/app/i18nhelp.cxx b/vcl/source/app/i18nhelp.cxx index 895e86213101..bdec4bb2d3c4 100644 --- a/vcl/source/app/i18nhelp.cxx +++ b/vcl/source/app/i18nhelp.cxx @@ -33,10 +33,11 @@ using namespace ::com::sun::star; -vcl::I18nHelper::I18nHelper( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& rxContext, const ::com::sun::star::lang::Locale& rLocale ) +vcl::I18nHelper::I18nHelper( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& rxContext, const LanguageTag& rLanguageTag ) + : + maLanguageTag( rLanguageTag) { m_xContext = rxContext; - maLocale = rLocale; mpLocaleDataWrapper = NULL; mpTransliterationWrapper= NULL; mbTransliterateIgnoreCase = sal_False; @@ -65,7 +66,7 @@ utl::TransliterationWrapper& vcl::I18nHelper::ImplGetTransliterationWrapper() co nModules |= i18n::TransliterationModules_IGNORE_CASE; ((vcl::I18nHelper*)this)->mpTransliterationWrapper = new utl::TransliterationWrapper( m_xContext, (i18n::TransliterationModules)nModules ); - ((vcl::I18nHelper*)this)->mpTransliterationWrapper->loadModuleIfNeeded( LanguageTag( maLocale ).getLanguageType() ); + ((vcl::I18nHelper*)this)->mpTransliterationWrapper->loadModuleIfNeeded( maLanguageTag.getLanguageType() ); } return *mpTransliterationWrapper; } @@ -74,7 +75,7 @@ LocaleDataWrapper& vcl::I18nHelper::ImplGetLocaleDataWrapper() const { if ( !mpLocaleDataWrapper ) { - ((vcl::I18nHelper*)this)->mpLocaleDataWrapper = new LocaleDataWrapper( m_xContext, maLocale ); + ((vcl::I18nHelper*)this)->mpLocaleDataWrapper = new LocaleDataWrapper( m_xContext, maLanguageTag ); } return *mpLocaleDataWrapper; } diff --git a/vcl/source/app/settings.cxx b/vcl/source/app/settings.cxx index cc89b324b986..5370f1cc647a 100644 --- a/vcl/source/app/settings.cxx +++ b/vcl/source/app/settings.cxx @@ -1533,7 +1533,7 @@ const LocaleDataWrapper& AllSettings::GetLocaleDataWrapper() const { if ( !mpData->mpLocaleDataWrapper ) ((AllSettings*)this)->mpData->mpLocaleDataWrapper = new LocaleDataWrapper( - comphelper::getProcessComponentContext(), GetLanguageTag().getLocale() ); + comphelper::getProcessComponentContext(), GetLanguageTag() ); return *mpData->mpLocaleDataWrapper; } @@ -1543,7 +1543,7 @@ const LocaleDataWrapper& AllSettings::GetUILocaleDataWrapper() const { if ( !mpData->mpUILocaleDataWrapper ) ((AllSettings*)this)->mpData->mpUILocaleDataWrapper = new LocaleDataWrapper( - comphelper::getProcessComponentContext(), GetUILanguageTag().getLocale() ); + comphelper::getProcessComponentContext(), GetUILanguageTag() ); return *mpData->mpUILocaleDataWrapper; } @@ -1553,7 +1553,7 @@ const vcl::I18nHelper& AllSettings::GetLocaleI18nHelper() const { if ( !mpData->mpI18nHelper ) { ((AllSettings*)this)->mpData->mpI18nHelper = new vcl::I18nHelper( - comphelper::getProcessComponentContext(), GetLanguageTag().getLocale() ); + comphelper::getProcessComponentContext(), GetLanguageTag() ); } return *mpData->mpI18nHelper; } @@ -1564,7 +1564,7 @@ const vcl::I18nHelper& AllSettings::GetUILocaleI18nHelper() const { if ( !mpData->mpUII18nHelper ) { ((AllSettings*)this)->mpData->mpUII18nHelper = new vcl::I18nHelper( - comphelper::getProcessComponentContext(), GetUILanguageTag().getLocale() ); + comphelper::getProcessComponentContext(), GetUILanguageTag() ); } return *mpData->mpUII18nHelper; } diff --git a/vcl/source/control/field.cxx b/vcl/source/control/field.cxx index 28db0e2735b1..7350d3078e92 100644 --- a/vcl/source/control/field.cxx +++ b/vcl/source/control/field.cxx @@ -309,7 +309,7 @@ LocaleDataWrapper& FormatterBase::ImplGetLocaleDataWrapper() const { if ( !mpLocaleDataWrapper ) { - ((FormatterBase*)this)->mpLocaleDataWrapper = new LocaleDataWrapper( GetLocale() ); + ((FormatterBase*)this)->mpLocaleDataWrapper = new LocaleDataWrapper( GetLanguageTag() ); } return *mpLocaleDataWrapper; } @@ -348,7 +348,7 @@ void FormatterBase::SetStrictFormat( sal_Bool bStrict ) void FormatterBase::SetLocale( const lang::Locale& rLocale ) { - ImplGetLocaleDataWrapper().setLocale( rLocale ); + ImplGetLocaleDataWrapper().setLanguageTag( LanguageTag( rLocale) ); mbDefaultLocale = sal_False; ReformatAll(); } @@ -365,7 +365,22 @@ const lang::Locale& FormatterBase::GetLocale() const return Application::GetSettings().GetLanguageTag().getLocale(); } - return mpLocaleDataWrapper->getLocale(); + return mpLocaleDataWrapper->getLanguageTag().getLocale(); +} + +// ----------------------------------------------------------------------- + +const LanguageTag& FormatterBase::GetLanguageTag() const +{ + if ( !mpLocaleDataWrapper || mbDefaultLocale ) + { + if ( mpField ) + return mpField->GetSettings().GetLanguageTag(); + else + return Application::GetSettings().GetLanguageTag(); + } + + return mpLocaleDataWrapper->getLanguageTag(); } // ----------------------------------------------------------------------- @@ -885,7 +900,7 @@ void NumericField::DataChanged( const DataChangedEvent& rDCEvt ) String sOldDecSep = ImplGetLocaleDataWrapper().getNumDecimalSep(); String sOldThSep = ImplGetLocaleDataWrapper().getNumThousandSep(); if ( IsDefaultLocale() ) - ImplGetLocaleDataWrapper().setLocale( GetSettings().GetLanguageTag().getLocale() ); + ImplGetLocaleDataWrapper().setLanguageTag( GetSettings().GetLanguageTag() ); String sNewDecSep = ImplGetLocaleDataWrapper().getNumDecimalSep(); String sNewThSep = ImplGetLocaleDataWrapper().getNumThousandSep(); ImplUpdateSeparators( sOldDecSep, sNewDecSep, sOldThSep, sNewThSep, this ); @@ -1043,7 +1058,7 @@ void NumericBox::DataChanged( const DataChangedEvent& rDCEvt ) String sOldDecSep = ImplGetLocaleDataWrapper().getNumDecimalSep(); String sOldThSep = ImplGetLocaleDataWrapper().getNumThousandSep(); if ( IsDefaultLocale() ) - ImplGetLocaleDataWrapper().setLocale( GetSettings().GetLanguageTag().getLocale() ); + ImplGetLocaleDataWrapper().setLanguageTag( GetSettings().GetLanguageTag() ); String sNewDecSep = ImplGetLocaleDataWrapper().getNumDecimalSep(); String sNewThSep = ImplGetLocaleDataWrapper().getNumThousandSep(); ImplUpdateSeparators( sOldDecSep, sNewDecSep, sOldThSep, sNewThSep, this ); @@ -1887,7 +1902,7 @@ void MetricField::DataChanged( const DataChangedEvent& rDCEvt ) String sOldDecSep = ImplGetLocaleDataWrapper().getNumDecimalSep(); String sOldThSep = ImplGetLocaleDataWrapper().getNumThousandSep(); if ( IsDefaultLocale() ) - ImplGetLocaleDataWrapper().setLocale( GetSettings().GetLanguageTag().getLocale() ); + ImplGetLocaleDataWrapper().setLanguageTag( GetSettings().GetLanguageTag() ); String sNewDecSep = ImplGetLocaleDataWrapper().getNumDecimalSep(); String sNewThSep = ImplGetLocaleDataWrapper().getNumThousandSep(); ImplUpdateSeparators( sOldDecSep, sNewDecSep, sOldThSep, sNewThSep, this ); @@ -2013,7 +2028,7 @@ void MetricBox::DataChanged( const DataChangedEvent& rDCEvt ) String sOldDecSep = ImplGetLocaleDataWrapper().getNumDecimalSep(); String sOldThSep = ImplGetLocaleDataWrapper().getNumThousandSep(); if ( IsDefaultLocale() ) - ImplGetLocaleDataWrapper().setLocale( GetSettings().GetLanguageTag().getLocale() ); + ImplGetLocaleDataWrapper().setLanguageTag( GetSettings().GetLanguageTag() ); String sNewDecSep = ImplGetLocaleDataWrapper().getNumDecimalSep(); String sNewThSep = ImplGetLocaleDataWrapper().getNumThousandSep(); ImplUpdateSeparators( sOldDecSep, sNewDecSep, sOldThSep, sNewThSep, this ); @@ -2299,7 +2314,7 @@ void CurrencyField::DataChanged( const DataChangedEvent& rDCEvt ) String sOldDecSep = ImplGetLocaleDataWrapper().getNumDecimalSep(); String sOldThSep = ImplGetLocaleDataWrapper().getNumThousandSep(); if ( IsDefaultLocale() ) - ImplGetLocaleDataWrapper().setLocale( GetSettings().GetLanguageTag().getLocale() ); + ImplGetLocaleDataWrapper().setLanguageTag( GetSettings().GetLanguageTag() ); String sNewDecSep = ImplGetLocaleDataWrapper().getNumDecimalSep(); String sNewThSep = ImplGetLocaleDataWrapper().getNumThousandSep(); ImplUpdateSeparators( sOldDecSep, sNewDecSep, sOldThSep, sNewThSep, this ); @@ -2401,7 +2416,7 @@ void CurrencyBox::DataChanged( const DataChangedEvent& rDCEvt ) String sOldDecSep = ImplGetLocaleDataWrapper().getNumDecimalSep(); String sOldThSep = ImplGetLocaleDataWrapper().getNumThousandSep(); if ( IsDefaultLocale() ) - ImplGetLocaleDataWrapper().setLocale( GetSettings().GetLanguageTag().getLocale() ); + ImplGetLocaleDataWrapper().setLanguageTag( GetSettings().GetLanguageTag() ); String sNewDecSep = ImplGetLocaleDataWrapper().getNumDecimalSep(); String sNewThSep = ImplGetLocaleDataWrapper().getNumThousandSep(); ImplUpdateSeparators( sOldDecSep, sNewDecSep, sOldThSep, sNewThSep, this ); diff --git a/vcl/source/control/field2.cxx b/vcl/source/control/field2.cxx index cc9061f89cbd..725f697411b4 100644 --- a/vcl/source/control/field2.cxx +++ b/vcl/source/control/field2.cxx @@ -2013,7 +2013,7 @@ void DateField::DataChanged( const DataChangedEvent& rDCEvt ) if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) && (rDCEvt.GetFlags() & (SETTINGS_LOCALE|SETTINGS_MISC)) ) { if ( IsDefaultLocale() && ( rDCEvt.GetFlags() & SETTINGS_LOCALE ) ) - ImplGetLocaleDataWrapper().setLocale( GetSettings().GetLanguageTag().getLocale() ); + ImplGetLocaleDataWrapper().setLanguageTag( GetSettings().GetLanguageTag() ); ReformatAll(); } } @@ -2098,7 +2098,7 @@ void DateBox::DataChanged( const DataChangedEvent& rDCEvt ) if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) && (rDCEvt.GetFlags() & SETTINGS_LOCALE) ) { if ( IsDefaultLocale() ) - ImplGetLocaleDataWrapper().setLocale( GetSettings().GetLanguageTag().getLocale() ); + ImplGetLocaleDataWrapper().setLanguageTag( GetSettings().GetLanguageTag() ); ReformatAll(); } } @@ -2959,7 +2959,7 @@ void TimeField::DataChanged( const DataChangedEvent& rDCEvt ) if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) && (rDCEvt.GetFlags() & SETTINGS_LOCALE) ) { if ( IsDefaultLocale() ) - ImplGetLocaleDataWrapper().setLocale( GetSettings().GetLanguageTag().getLocale() ); + ImplGetLocaleDataWrapper().setLanguageTag( GetSettings().GetLanguageTag() ); ReformatAll(); } } @@ -3111,7 +3111,7 @@ void TimeBox::DataChanged( const DataChangedEvent& rDCEvt ) if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) && (rDCEvt.GetFlags() & SETTINGS_LOCALE) ) { if ( IsDefaultLocale() ) - ImplGetLocaleDataWrapper().setLocale( GetSettings().GetLanguageTag().getLocale() ); + ImplGetLocaleDataWrapper().setLanguageTag( GetSettings().GetLanguageTag() ); ReformatAll(); } } diff --git a/vcl/source/edit/texteng.cxx b/vcl/source/edit/texteng.cxx index 0c7d132f334e..5d326452c40a 100644 --- a/vcl/source/edit/texteng.cxx +++ b/vcl/source/edit/texteng.cxx @@ -2970,7 +2970,7 @@ void TextEngine::SetLocale( const ::com::sun::star::lang::Locale& rLocale ) LocaleDataWrapper* TextEngine::ImpGetLocaleDataWrapper() { if ( !mpLocaleDataWrapper ) - mpLocaleDataWrapper = new LocaleDataWrapper( GetLocale() ); + mpLocaleDataWrapper = new LocaleDataWrapper( LanguageTag( GetLocale()) ); return mpLocaleDataWrapper; } -- cgit