xref: /AOO41X/main/sd/source/ui/unoidl/unopool.cxx (revision 79aad27f7f29270c03e208e3d687e8e3850af11d)
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_sd.hxx"
26 #include <i18npool/mslangid.hxx>
27 #include <comphelper/propertysetinfo.hxx>
28 #include <editeng/eeitem.hxx>
29 #include <svx/unopool.hxx>
30 
31 #include "drawdoc.hxx"
32 
33 using namespace ::com::sun::star;
34 using namespace ::rtl;
35 using namespace ::cppu;
36 using namespace ::comphelper;
37 
SdUnoGetLanguage(const lang::Locale & rLocale)38 LanguageType SdUnoGetLanguage( const lang::Locale& rLocale )
39 {
40     //  empty language -> LANGUAGE_SYSTEM
41     if ( rLocale.Language.getLength() == 0 )
42         return LANGUAGE_SYSTEM;
43 
44     LanguageType eRet = MsLangId::convertLocaleToLanguage( rLocale );
45     if ( eRet == LANGUAGE_NONE )
46         eRet = LANGUAGE_SYSTEM;         //! or throw an exception?
47 
48     return eRet;
49 }
50 
51 class SdUnoDrawPool :   public SvxUnoDrawPool
52 {
53 public:
54     SdUnoDrawPool( SdDrawDocument* pModel ) throw();
55     virtual ~SdUnoDrawPool() throw();
56 
57 protected:
58     virtual void putAny( SfxItemPool* pPool, const PropertyMapEntry* pEntry, const uno::Any& rValue ) throw( beans::UnknownPropertyException, lang::IllegalArgumentException);
59 
60 private:
61     SdDrawDocument* mpDrawModel;
62 };
63 
SdUnoDrawPool(SdDrawDocument * pModel)64 SdUnoDrawPool::SdUnoDrawPool( SdDrawDocument* pModel ) throw()
65 : SvxUnoDrawPool( pModel ), mpDrawModel( pModel )
66 {
67 }
68 
~SdUnoDrawPool()69 SdUnoDrawPool::~SdUnoDrawPool() throw()
70 {
71 }
72 
putAny(SfxItemPool * pPool,const comphelper::PropertyMapEntry * pEntry,const uno::Any & rValue)73 void SdUnoDrawPool::putAny( SfxItemPool* pPool, const comphelper::PropertyMapEntry* pEntry, const uno::Any& rValue )
74     throw(beans::UnknownPropertyException, lang::IllegalArgumentException)
75 {
76     switch( pEntry->mnHandle )
77     {
78     case EE_CHAR_LANGUAGE:
79     case EE_CHAR_LANGUAGE_CJK:
80     case EE_CHAR_LANGUAGE_CTL:
81         {
82             lang::Locale aLocale;
83             if( rValue >>= aLocale )
84                 mpDrawModel->SetLanguage(
85                     SdUnoGetLanguage( aLocale ),
86                     (const sal_uInt16)pEntry->mnHandle );
87         }
88     }
89     SvxUnoDrawPool::putAny( pPool, pEntry, rValue );
90 }
91 
SdUnoCreatePool(SdDrawDocument * pDrawModel)92 uno::Reference< uno::XInterface > SdUnoCreatePool( SdDrawDocument* pDrawModel )
93 {
94     return (uno::XAggregation*)new SdUnoDrawPool( pDrawModel );
95 }
96