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 _UCBHELPER_CONTENTINFO_HXX 25 #define _UCBHELPER_CONTENTINFO_HXX 26 27 #include <com/sun/star/ucb/XCommandInfo.hpp> 28 #include <com/sun/star/ucb/XCommandEnvironment.hpp> 29 #include <com/sun/star/lang/XMultiServiceFactory.hpp> 30 #include <com/sun/star/lang/XTypeProvider.hpp> 31 #include <com/sun/star/beans/XPropertySetInfo.hpp> 32 #include <cppuhelper/weak.hxx> 33 34 #include "osl/mutex.hxx" 35 #include <ucbhelper/macros.hxx> 36 37 namespace ucbhelper { 38 39 //============================================================================ 40 // 41 // class PropertySetInfo. 42 // 43 //============================================================================ 44 45 class ContentImplHelper; 46 47 /** 48 * This class provides a propertyset info ( the complete implementation of 49 * the interface XPropertySetInfo ) for an object derived from class 50 * ucb::ContentImplHelper. The implementation takes care about Additional 51 * Core Properties that may have been added to the content. 52 */ 53 class PropertySetInfo : 54 public cppu::OWeakObject, 55 public com::sun::star::lang::XTypeProvider, 56 public com::sun::star::beans::XPropertySetInfo 57 { 58 com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory > 59 m_xSMgr; 60 com::sun::star::uno::Reference< com::sun::star::ucb::XCommandEnvironment > 61 m_xEnv; 62 com::sun::star::uno::Sequence< com::sun::star::beans::Property >* 63 m_pProps; 64 osl::Mutex m_aMutex; 65 ContentImplHelper* m_pContent; 66 67 private: 68 sal_Bool queryProperty( const rtl::OUString& rName, 69 com::sun::star::beans::Property& rProp ); 70 71 public: 72 PropertySetInfo( const com::sun::star::uno::Reference< 73 com::sun::star::lang::XMultiServiceFactory >& rxSMgr, 74 const com::sun::star::uno::Reference< 75 com::sun::star::ucb::XCommandEnvironment >& rxEnv, 76 ContentImplHelper* pContent ); 77 virtual ~PropertySetInfo(); 78 79 // XInterface 80 XINTERFACE_DECL() 81 82 // XTypeProvider 83 XTYPEPROVIDER_DECL() 84 85 // XPropertySetInfo 86 virtual com::sun::star::uno::Sequence< 87 com::sun::star::beans::Property > SAL_CALL 88 getProperties() 89 throw( com::sun::star::uno::RuntimeException ); 90 virtual com::sun::star::beans::Property SAL_CALL 91 getPropertyByName( const rtl::OUString& aName ) 92 throw( com::sun::star::beans::UnknownPropertyException, 93 com::sun::star::uno::RuntimeException ); 94 virtual sal_Bool SAL_CALL 95 hasPropertyByName( const rtl::OUString& Name ) 96 throw( com::sun::star::uno::RuntimeException ); 97 98 // Non-Interface methods. 99 void reset(); 100 }; 101 102 //============================================================================ 103 // 104 // class CommandProcessorInfo. 105 // 106 //============================================================================ 107 108 /** 109 * This class provides a command info ( the complete implementation of 110 * the interface XCommandInfo ) for an object derived from class 111 * ucb::ContentImplHelper. 112 */ 113 class CommandProcessorInfo : 114 public cppu::OWeakObject, 115 public com::sun::star::lang::XTypeProvider, 116 public com::sun::star::ucb::XCommandInfo 117 { 118 com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory > 119 m_xSMgr; 120 com::sun::star::uno::Reference< com::sun::star::ucb::XCommandEnvironment > 121 m_xEnv; 122 com::sun::star::uno::Sequence< com::sun::star::ucb::CommandInfo >* 123 m_pCommands; 124 osl::Mutex m_aMutex; 125 ContentImplHelper* m_pContent; 126 127 private: 128 sal_Bool queryCommand( const rtl::OUString& rName, 129 com::sun::star::ucb::CommandInfo& rCommand ); 130 sal_Bool queryCommand( sal_Int32 nHandle, 131 com::sun::star::ucb::CommandInfo& rCommand ); 132 133 public: 134 CommandProcessorInfo( const com::sun::star::uno::Reference< 135 com::sun::star::lang::XMultiServiceFactory >& rxSMgr, 136 const com::sun::star::uno::Reference< 137 com::sun::star::ucb::XCommandEnvironment >& rxEnv, 138 ContentImplHelper* pContent ); 139 virtual ~CommandProcessorInfo(); 140 141 // XInterface 142 XINTERFACE_DECL() 143 144 // XTypeProvider 145 XTYPEPROVIDER_DECL() 146 147 // XCommandInfo 148 virtual com::sun::star::uno::Sequence< 149 com::sun::star::ucb::CommandInfo > SAL_CALL 150 getCommands() 151 throw( com::sun::star::uno::RuntimeException ); 152 virtual com::sun::star::ucb::CommandInfo SAL_CALL 153 getCommandInfoByName( const rtl::OUString& Name ) 154 throw( com::sun::star::ucb::UnsupportedCommandException, 155 com::sun::star::uno::RuntimeException ); 156 virtual com::sun::star::ucb::CommandInfo SAL_CALL 157 getCommandInfoByHandle( sal_Int32 Handle ) 158 throw( com::sun::star::ucb::UnsupportedCommandException, 159 com::sun::star::uno::RuntimeException ); 160 virtual sal_Bool SAL_CALL 161 hasCommandByName( const rtl::OUString& Name ) 162 throw( com::sun::star::uno::RuntimeException ); 163 virtual sal_Bool SAL_CALL 164 hasCommandByHandle( sal_Int32 Handle ) 165 throw( com::sun::star::uno::RuntimeException ); 166 167 // Non-Interface methods. 168 void reset(); 169 }; 170 171 } // namespace ucbhelper 172 173 #endif /* !_UCBHELPER_CONTENTINFO_HXX */ 174