1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 // MARKER(update_precomp.py): autogen include statement, do not remove 25 #include "precompiled_unotools.hxx" 26 27 #include "unotools/intlwrapper.hxx" 28 #include <com/sun/star/i18n/CollatorOptions.hpp> 29 #include <i18npool/mslangid.hxx> 30 31 IntlWrapper::IntlWrapper( 32 const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > & xSF, 33 const ::com::sun::star::lang::Locale& rLocale ) 34 : 35 aLocale( rLocale ), 36 xSMgr( xSF ), 37 pCharClass( NULL ), 38 pLocaleData( NULL ), 39 pCalendar( NULL ), 40 pCollator( NULL ), 41 pCaseCollator( NULL ) 42 { 43 eLanguage = MsLangId::convertLocaleToLanguage( aLocale ); 44 } 45 46 47 IntlWrapper::IntlWrapper( 48 const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > & xSF, 49 LanguageType eLang ) 50 : 51 xSMgr( xSF ), 52 pCharClass( NULL ), 53 pLocaleData( NULL ), 54 pCalendar( NULL ), 55 pCollator( NULL ), 56 pCaseCollator( NULL ), 57 eLanguage( eLang ) 58 { 59 MsLangId::convertLanguageToLocale( eLanguage, aLocale ); 60 } 61 62 63 IntlWrapper::~IntlWrapper() 64 { 65 delete pCharClass; 66 delete pLocaleData; 67 delete pCalendar; 68 delete pCollator; 69 delete pCaseCollator; 70 } 71 72 73 void IntlWrapper::ImplNewCharClass() const 74 { 75 ((IntlWrapper*)this)->pCharClass = new CharClass( xSMgr, aLocale ); 76 } 77 78 79 void IntlWrapper::ImplNewLocaleData() const 80 { 81 ((IntlWrapper*)this)->pLocaleData = new LocaleDataWrapper( xSMgr, aLocale ); 82 } 83 84 85 void IntlWrapper::ImplNewCalendar() const 86 { 87 CalendarWrapper* p = new CalendarWrapper( xSMgr ); 88 p->loadDefaultCalendar( aLocale ); 89 ((IntlWrapper*)this)->pCalendar = p; 90 } 91 92 93 void IntlWrapper::ImplNewCollator( sal_Bool bCaseSensitive ) const 94 { 95 CollatorWrapper* p = new CollatorWrapper( xSMgr ); 96 if ( bCaseSensitive ) 97 { 98 p->loadDefaultCollator( aLocale, 0 ); 99 ((IntlWrapper*)this)->pCaseCollator = p; 100 } 101 else 102 { 103 p->loadDefaultCollator( aLocale, ::com::sun::star::i18n::CollatorOptions::CollatorOptions_IGNORE_CASE ); 104 ((IntlWrapper*)this)->pCollator = p; 105 } 106 } 107