xref: /trunk/main/linguistic/source/lngopt.hxx (revision 63ce064a)
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 #ifndef _LINGUISTIC_LNGOPT_HHX_
25 #define _LINGUISTIC_LNGOPT_HHX_
26 
27 #include <functional>
28 
29 #include <uno/lbnames.h>			// CPPU_CURRENT_LANGUAGE_BINDING_NAME macro, which specify the environment type
30 #include <cppuhelper/implbase5.hxx>	// helper for implementations
31 #include <cppuhelper/interfacecontainer.hxx>
32 #include <com/sun/star/beans/XPropertySet.hpp>
33 #include <com/sun/star/beans/XFastPropertySet.hpp>
34 #include <com/sun/star/lang/XServiceInfo.hpp>
35 #include <com/sun/star/beans/XPropertyAccess.hpp>
36 #include <com/sun/star/lang/XComponent.hpp>
37 #include <unotools/lingucfg.hxx>
38 #include <svl/itemprop.hxx>
39 #include <unotools/configitem.hxx>
40 #include <com/sun/star/uno/Any.h>
41 #include <tools/solar.h>
42 
43 #include <svl/itemprop.hxx>
44 #include "linguistic/misc.hxx"
45 #include "defs.hxx"
46 #include <vos/refernce.hxx>
47 
48 namespace com { namespace sun { namespace star {
49 	namespace beans {
50 		struct PropertyChangeEvent;
51 	}
52 	namespace registry {
53 		class XRegistryKey;
54 	}
55 }}}
56 
57 
58 
59 ///////////////////////////////////////////////////////////////////////////
60 // LinguOptions
61 // This class represents all Linguistik relevant options.
62 //
63 
64 class LinguOptions
65 {
66 	static SvtLinguOptions	   *pData;
67 	static vos::ORefCount		aRefCount;	// number of objects of this class
68 
69 	//! uses default assignment-operator
70 
71 	sal_Bool SetLocale_Impl( sal_Int16 &rLanguage,
72 			::com::sun::star::uno::Any &rOld,
73 			const ::com::sun::star::uno::Any &rVal, sal_Int16 nType );
74 
75 public:
76 	LinguOptions();
77 	LinguOptions(const LinguOptions &rOpt);
78 	~LinguOptions();
79 
80 	sal_Bool			SetValue( ::com::sun::star::uno::Any &rOld,
81 							const ::com::sun::star::uno::Any &rVal, sal_Int32 nWID );
82 	void			GetValue( ::com::sun::star::uno::Any &rVal, sal_Int32 nWID ) const;
83 
84     static ::rtl::OUString    GetName( sal_Int32 nWID );
85 
86 	const ::com::sun::star::uno::Sequence< rtl::OUString >
GetActiveDics() const87 			GetActiveDics() const	{ return pData->aActiveDics; }
88 
89     const ::com::sun::star::uno::Sequence< rtl::OUString >
GetActiveConvDics() const90             GetActiveConvDics() const   { return pData->aActiveConvDics; }
91 };
92 
93 
94 ///////////////////////////////////////////////////////////////////////////
95 
96 // uses templates from <cppuhelper/interfacecontainer.h>
97 
98 
99 // helper function call class
100 struct PropHashType_Impl
101 {
operator ()PropHashType_Impl102 	size_t operator()(const sal_Int32 &s) const	{ return s; }
103 };
104 
105 typedef cppu::OMultiTypeInterfaceContainerHelperVar
106 	<
107 		sal_Int32,
108 		PropHashType_Impl,
109 		std::equal_to< sal_Int32 >
110 	> OPropertyListenerContainerHelper;
111 
112 ///////////////////////////////////////////////////////////////////////////
113 
114 
115 class LinguProps :
116 	public cppu::WeakImplHelper5
117 	<
118 		com::sun::star::beans::XPropertySet,
119 		com::sun::star::beans::XFastPropertySet,
120 		com::sun::star::beans::XPropertyAccess,
121 		com::sun::star::lang::XComponent,
122 		com::sun::star::lang::XServiceInfo
123 	>
124 {
125 	::cppu::OInterfaceContainerHelper			aEvtListeners;
126 	OPropertyListenerContainerHelper			aPropListeners;
127 
128     SfxItemPropertyMap                          aPropertyMap;
129     SvtLinguConfig                              aConfig;
130 
131 	sal_Bool										bDisposing;
132 
133 	// disallow copy-constructor and assignment-operator for now
134 	LinguProps(const LinguProps &);
135 	LinguProps & operator = (const LinguProps &);
136 
137 	void	launchEvent( const ::com::sun::star::beans::PropertyChangeEvent &rEvt ) const;
138 
139 public:
140     LinguProps();
141 
142     // XPropertySet
143     virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() throw(::com::sun::star::uno::RuntimeException);
144     virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
145     virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
146     virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& rxListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
147     virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& rxListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
148     virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& rxListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
149     virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& rxListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
150 
151     // XFastPropertySet
152     virtual void SAL_CALL setFastPropertyValue( sal_Int32 nHandle, const ::com::sun::star::uno::Any& aValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
153     virtual ::com::sun::star::uno::Any SAL_CALL getFastPropertyValue( sal_Int32 nHandle ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
154 
155     // XPropertyAccess
156     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL getPropertyValues() throw(::com::sun::star::uno::RuntimeException);
157     virtual void SAL_CALL setPropertyValues( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& aProps ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
158 
159     // XComponent
160     virtual void SAL_CALL dispose() throw(::com::sun::star::uno::RuntimeException);
161     virtual void SAL_CALL addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& rxListener ) throw(::com::sun::star::uno::RuntimeException);
162     virtual void SAL_CALL removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& rxListener ) throw(::com::sun::star::uno::RuntimeException);
163 
164     // XServiceInfo
165     virtual ::rtl::OUString SAL_CALL getImplementationName() throw(::com::sun::star::uno::RuntimeException);
166     virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException);
167     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException);
168 
169 
170     static inline ::rtl::OUString getImplementationName_Static() throw();
171     static com::sun::star::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_Static() throw();
172 };
173 
getImplementationName_Static()174 inline ::rtl::OUString LinguProps::getImplementationName_Static() throw()
175 {
176 	return A2OU( "com.sun.star.lingu2.LinguProps" );
177 }
178 
179 ///////////////////////////////////////////////////////////////////////////
180 
181 #endif
182 
183