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_CONVDICLIST_HXX_
25 #define _LINGUISTIC_CONVDICLIST_HXX_
26 
27 #include <com/sun/star/linguistic2/XConversionDictionaryList.hpp>
28 #include <com/sun/star/lang/XComponent.hpp>
29 #include <com/sun/star/lang/XServiceInfo.hpp>
30 #include <cppuhelper/implbase3.hxx>
31 #include <cppuhelper/interfacecontainer.h>
32 #include <svl/svarray.hxx>
33 #include <tools/debug.hxx>
34 
35 #include "linguistic/misc.hxx"
36 #include "lngopt.hxx"
37 
38 
39 class ConvDicNameContainer;
40 
41 ///////////////////////////////////////////////////////////////////////////
42 
43 class ConvDicList :
44 	public cppu::WeakImplHelper3
45 	<
46         ::com::sun::star::linguistic2::XConversionDictionaryList,
47 		::com::sun::star::lang::XComponent,
48 		::com::sun::star::lang::XServiceInfo
49 	>
50 {
51 
52     class MyAppExitListener : public linguistic::AppExitListener
53     {
54         ConvDicList & rMyDicList;
55 
56     public:
MyAppExitListener(ConvDicList & rDicList)57         MyAppExitListener( ConvDicList &rDicList ) : rMyDicList( rDicList ) {}
58         virtual void    AtExit();
59     };
60 
61 
62     ::cppu::OInterfaceContainerHelper       aEvtListeners;
63 
64     ConvDicNameContainer                   *pNameContainer;
65     ::com::sun::star::uno::Reference<
66         ::com::sun::star::container::XNameContainer >   xNameContainer;
67 
68     MyAppExitListener                      *pExitListener;
69     ::com::sun::star::uno::Reference< ::com::sun::star::frame::
70                 XTerminateListener >        xExitListener;
71 
72     sal_Bool                                    bDisposing;
73 
74 	// disallow copy-constructor and assignment-operator for now
75     ConvDicList( const ConvDicList & );
76     ConvDicList & operator = (const ConvDicList &);
77 
78     ConvDicNameContainer &  GetNameContainer();
79 
80 public:
81     ConvDicList();
82     virtual ~ConvDicList();
83 
84     // XConversionDictionaryList
85     virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > SAL_CALL getDictionaryContainer(  ) throw (::com::sun::star::uno::RuntimeException);
86     virtual ::com::sun::star::uno::Reference< ::com::sun::star::linguistic2::XConversionDictionary > SAL_CALL addNewDictionary( const ::rtl::OUString& aName, const ::com::sun::star::lang::Locale& aLocale, sal_Int16 nConversionDictionaryType ) throw (::com::sun::star::lang::NoSupportException, ::com::sun::star::container::ElementExistException, ::com::sun::star::uno::RuntimeException);
87     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL queryConversions( const ::rtl::OUString& aText, sal_Int32 nStartPos, sal_Int32 nLength, const ::com::sun::star::lang::Locale& aLocale, sal_Int16 nConversionDictionaryType, ::com::sun::star::linguistic2::ConversionDirection eDirection, sal_Int32 nTextConversionOptions ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException);
88     virtual sal_Int16 SAL_CALL queryMaxCharCount( const ::com::sun::star::lang::Locale& aLocale, sal_Int16 nConversionDictionaryType, ::com::sun::star::linguistic2::ConversionDirection eDirection ) throw (::com::sun::star::uno::RuntimeException);
89 
90 	// XComponent
91     virtual void SAL_CALL dispose(  ) throw (::com::sun::star::uno::RuntimeException);
92     virtual void SAL_CALL addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
93     virtual void SAL_CALL removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& aListener ) throw (::com::sun::star::uno::RuntimeException);
94 
95 	// XServiceInfo
96     virtual ::rtl::OUString SAL_CALL getImplementationName(  ) throw (::com::sun::star::uno::RuntimeException);
97     virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw (::com::sun::star::uno::RuntimeException);
98     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames(  ) throw (::com::sun::star::uno::RuntimeException);
99 
100 
101 	static inline ::rtl::OUString
102 		getImplementationName_Static() throw();
103     static com::sun::star::uno::Sequence< ::rtl::OUString >
104 		getSupportedServiceNames_Static() throw();
105 
106     // non UNO-specific
107     void                    FlushDics();
108 };
109 
getImplementationName_Static()110 inline ::rtl::OUString ConvDicList::getImplementationName_Static() throw()
111 {
112     return A2OU( "com.sun.star.lingu2.ConvDicList" );
113 }
114 
115 ///////////////////////////////////////////////////////////////////////////
116 
117 #endif
118 
119