diff options
Diffstat (limited to 'svtools/source/syslocale/syslocale.cxx')
-rw-r--r-- | svtools/source/syslocale/syslocale.cxx | 176 |
1 files changed, 0 insertions, 176 deletions
diff --git a/svtools/source/syslocale/syslocale.cxx b/svtools/source/syslocale/syslocale.cxx deleted file mode 100644 index 9811d97fd964..000000000000 --- a/svtools/source/syslocale/syslocale.cxx +++ /dev/null @@ -1,176 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2008 by Sun Microsystems, Inc. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * $RCSfile: syslocale.cxx,v $ - * $Revision: 1.11 $ - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_svtools.hxx" -#ifndef GCC -#endif - -#include <svtools/syslocale.hxx> -#include <broadcast.hxx> -#include <listener.hxx> -#include <svtools/smplhint.hxx> -#include <vcl/svapp.hxx> -#include <tools/string.hxx> -#include <svtools/syslocaleoptions.hxx> -#include <unotools/localedatawrapper.hxx> -#include <comphelper/processfactory.hxx> - - -using namespace osl; -using namespace com::sun::star; - - -SvtSysLocale_Impl* SvtSysLocale::pImpl = NULL; -sal_Int32 SvtSysLocale::nRefCount = 0; - - -class SvtSysLocale_Impl : public SvtListener -{ - friend class SvtSysLocale; - - SvtSysLocaleOptions aSysLocaleOptions; - LocaleDataWrapper* pLocaleData; - CharClass* pCharClass; - -public: - SvtSysLocale_Impl(); - virtual ~SvtSysLocale_Impl(); - - virtual void Notify( SvtBroadcaster& rBC, const SfxHint& rHint ); - - CharClass* GetCharClass(); - -}; - - -// ----------------------------------------------------------------------- - -SvtSysLocale_Impl::SvtSysLocale_Impl() : pCharClass(NULL) -{ - const lang::Locale& rLocale = Application::GetSettings().GetLocale(); - pLocaleData = new LocaleDataWrapper( - ::comphelper::getProcessServiceFactory(), rLocale ); - aSysLocaleOptions.AddListener( *this ); -} - - -SvtSysLocale_Impl::~SvtSysLocale_Impl() -{ - aSysLocaleOptions.RemoveListener( *this ); - delete pCharClass; - delete pLocaleData; -} - -CharClass* SvtSysLocale_Impl::GetCharClass() -{ - if ( !pCharClass ) - { - const lang::Locale& rLocale = Application::GetSettings().GetLocale(); - pCharClass = new CharClass(::comphelper::getProcessServiceFactory(), rLocale ); - } - return pCharClass; -} -void SvtSysLocale_Impl::Notify( SvtBroadcaster&, const SfxHint& rHint ) -{ - const SfxSimpleHint* p = PTR_CAST( SfxSimpleHint, &rHint ); - if( p && (p->GetId() & SYSLOCALEOPTIONS_HINT_LOCALE) ) - { - MutexGuard aGuard( SvtSysLocale::GetMutex() ); - const lang::Locale& rLocale = Application::GetSettings().GetLocale(); - pLocaleData->setLocale( rLocale ); - GetCharClass()->setLocale( rLocale ); - } -} - - -// ==================================================================== - -SvtSysLocale::SvtSysLocale() -{ - MutexGuard aGuard( GetMutex() ); - if ( !pImpl ) - pImpl = new SvtSysLocale_Impl; - ++nRefCount; -} - - -SvtSysLocale::~SvtSysLocale() -{ - MutexGuard aGuard( GetMutex() ); - if ( !--nRefCount ) - { - delete pImpl; - pImpl = NULL; - } -} - - -// static -Mutex& SvtSysLocale::GetMutex() -{ - static Mutex* pMutex = NULL; - if( !pMutex ) - { - MutexGuard aGuard( Mutex::getGlobalMutex() ); - if( !pMutex ) - { - // #i77768# Due to a static reference in the toolkit lib - // we need a mutex that lives longer than the svtools library. - // Otherwise the dtor would use a destructed mutex!! - pMutex = new Mutex; - } - } - return *pMutex; -} - - -const LocaleDataWrapper& SvtSysLocale::GetLocaleData() const -{ - return *(pImpl->pLocaleData); -} - - -const LocaleDataWrapper* SvtSysLocale::GetLocaleDataPtr() const -{ - return pImpl->pLocaleData; -} - - -const CharClass& SvtSysLocale::GetCharClass() const -{ - return *(pImpl->GetCharClass()); -} - - -const CharClass* SvtSysLocale::GetCharClassPtr() const -{ - return pImpl->GetCharClass(); -} |