xref: /trunk/main/basic/source/inc/dlgcont.hxx (revision 91144cd0085a7583d2099b982122deb2184ab956)
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 BASIC_DIALOGCONTAINER_HXX
25 #define BASIC_DIALOGCONTAINER_HXX
26 
27 #include "namecont.hxx"
28 
29 #ifndef _COM_SUN_STAR_AWT_XSTRINGRESOURCESUPPLIER_HPP_
30 #include <com/sun/star/resource/XStringResourceSupplier.hpp>
31 #endif
32 #include "com/sun/star/resource/XStringResourcePersistence.hpp"
33 
34 #include <cppuhelper/implbase1.hxx>
35 #include <comphelper/uno3.hxx>
36 
37 namespace basic
38 {
39 
40 //============================================================================
41 
42 class SfxDialogLibraryContainer : public SfxLibraryContainer
43 {
44     // Methods to distinguish between different library types
45     virtual SfxLibrary* SAL_CALL implCreateLibrary( const ::rtl::OUString& aName );
46     virtual SfxLibrary* SAL_CALL implCreateLibraryLink
47         ( const ::rtl::OUString& aName, const ::rtl::OUString& aLibInfoFileURL,
48           const ::rtl::OUString& StorageURL, sal_Bool ReadOnly );
49     virtual ::com::sun::star::uno::Any SAL_CALL createEmptyLibraryElement( void );
50     virtual bool SAL_CALL isLibraryElementValid( ::com::sun::star::uno::Any aElement ) const;
51     virtual void SAL_CALL writeLibraryElement
52     (
53         const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer>& xLibrary,
54         const ::rtl::OUString& aElementName,
55         const ::com::sun::star::uno::Reference< ::com::sun::star::io::XOutputStream >& xOutput
56     );
57 
58     virtual ::com::sun::star::uno::Any SAL_CALL importLibraryElement
59     (
60         const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer>& xLibrary,
61         const ::rtl::OUString& aElementName,
62         const ::rtl::OUString& aFile,
63         const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& xElementStream );
64 
65     virtual void SAL_CALL importFromOldStorage( const ::rtl::OUString& aFile );
66 
67     virtual SfxLibraryContainer* createInstanceImpl( void );
68 
69     virtual void onNewRootStorage();
70 
71     virtual const sal_Char* SAL_CALL    getInfoFileName() const;
72     virtual const sal_Char* SAL_CALL    getOldInfoFileName() const;
73     virtual const sal_Char* SAL_CALL    getLibElementFileExtension() const;
74     virtual const sal_Char* SAL_CALL    getLibrariesDir() const;
75 
76 public:
77     SfxDialogLibraryContainer( void );
78     SfxDialogLibraryContainer( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage );
79 
80     // Methods XStorageBasedLibraryContainer
81     virtual void SAL_CALL storeLibrariesToStorage(
82         const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& RootStorage );
83 
84     // Resource handling
85     ::com::sun::star::uno::Reference< ::com::sun::star::resource::XStringResourcePersistence >
86         implCreateStringResource( class SfxDialogLibrary* pDialog );
87 
88     // Methods XServiceInfo
89     virtual ::rtl::OUString SAL_CALL getImplementationName( );
90     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( );
91 
92     // Service
93     static ::com::sun::star::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_static();
94     static ::rtl::OUString getImplementationName_static();
95     static ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL Create
96         ( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& xServiceManager );
97 };
98 
99 //============================================================================
100 
101 typedef ::cppu::ImplHelper1 <   ::com::sun::star::resource::XStringResourceSupplier
102                             >   SfxDialogLibrary_BASE;
103 
104 class SfxDialogLibrary  :public SfxLibrary
105                         ,public SfxDialogLibrary_BASE
106 {
107     SfxDialogLibraryContainer*                                      m_pParent;
108     ::com::sun::star::uno::Reference
109         < ::com::sun::star::resource::XStringResourcePersistence>   m_xStringResourcePersistence;
110     ::rtl::OUString                                                 m_aName;
111 
112     // Provide modify state including resources
113     virtual sal_Bool isModified( void );
114     virtual void storeResources( void );
115     virtual void storeResourcesAsURL( const ::rtl::OUString& URL, const ::rtl::OUString& NewName );
116     virtual void storeResourcesToURL( const ::rtl::OUString& URL,
117         const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >& xHandler  );
118     virtual void storeResourcesToStorage( const ::com::sun::star::uno::Reference
119         < ::com::sun::star::embed::XStorage >& xStorage );
120 
121 public:
122     SfxDialogLibrary
123     (
124         ModifiableHelper& _rModifiable,
125         const ::rtl::OUString& aName,
126         const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xMSF,
127         const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XSimpleFileAccess >& xSFI,
128         SfxDialogLibraryContainer* pParent
129     );
130 
131     SfxDialogLibrary
132     (
133         ModifiableHelper& _rModifiable,
134         const ::rtl::OUString& aName,
135         const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xMSF,
136         const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XSimpleFileAccess >& xSFI,
137         const ::rtl::OUString& aLibInfoFileURL, const ::rtl::OUString& aStorageURL, sal_Bool ReadOnly,
138         SfxDialogLibraryContainer* pParent
139     );
140 
141     DECLARE_XINTERFACE()
142     DECLARE_XTYPEPROVIDER()
143 
144     // XStringResourceSupplier
145     virtual ::com::sun::star::uno::Reference< ::com::sun::star::resource::XStringResourceResolver >
146         SAL_CALL getStringResource(  );
147 
getName(void)148     ::rtl::OUString getName( void )
149         { return m_aName; }
150 
151     ::com::sun::star::uno::Reference< ::com::sun::star::resource::XStringResourcePersistence >
getStringResourcePersistence(void)152         getStringResourcePersistence( void )
153     {
154         return m_xStringResourcePersistence;
155     }
156 
157     static bool containsValidDialog( const ::com::sun::star::uno::Any& aElement );
158 
159 protected:
160     virtual bool SAL_CALL isLibraryElementValid( ::com::sun::star::uno::Any aElement ) const;
161 };
162 
163 }   // namespace basic
164 
165 #endif
166