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