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 SC_STYLEUNO_HXX 25 #define SC_STYLEUNO_HXX 26 27 #include <svl/itemprop.hxx> 28 #include <svl/lstner.hxx> 29 #include <rsc/rscsfx.hxx> 30 #include <com/sun/star/container/XIndexAccess.hpp> 31 #include <com/sun/star/style/XStyle.hpp> 32 #include <com/sun/star/style/XStyleLoader.hpp> 33 #include <com/sun/star/lang/XServiceInfo.hpp> 34 #include <com/sun/star/container/XNameContainer.hpp> 35 #include <com/sun/star/container/XIndexReplace.hpp> 36 #include <com/sun/star/beans/XPropertySet.hpp> 37 #include <com/sun/star/beans/XMultiPropertySet.hpp> 38 #include <com/sun/star/beans/XPropertyState.hpp> 39 #include <com/sun/star/beans/XMultiPropertyStates.hpp> 40 #include <com/sun/star/lang/XUnoTunnel.hpp> 41 //#include <cppuhelper/implbase3.hxx> 42 #include <cppuhelper/implbase4.hxx> 43 #include <cppuhelper/implbase7.hxx> 44 45 class SfxStyleSheetBase; 46 class ScDocShell; 47 48 class ScStyleFamilyObj; 49 class ScStyleObj; 50 51 52 class ScStyleNameConversion 53 { 54 public: 55 static String DisplayToProgrammaticName( const String& rDispName, sal_uInt16 nType ); 56 static String ProgrammaticToDisplayName( const String& rProgName, sal_uInt16 nType ); 57 }; 58 59 60 class ScStyleFamiliesObj : public ::cppu::WeakImplHelper4< 61 ::com::sun::star::container::XIndexAccess, 62 ::com::sun::star::container::XNameAccess, 63 ::com::sun::star::style::XStyleLoader, 64 ::com::sun::star::lang::XServiceInfo >, 65 public SfxListener 66 { 67 private: 68 ScDocShell* pDocShell; 69 70 ScStyleFamilyObj* GetObjectByType_Impl(sal_uInt16 Type) const; 71 ScStyleFamilyObj* GetObjectByIndex_Impl(sal_uInt32 nIndex) const; 72 ScStyleFamilyObj* GetObjectByName_Impl(const rtl::OUString& aName) const; 73 74 public: 75 ScStyleFamiliesObj(ScDocShell* pDocSh); 76 virtual ~ScStyleFamiliesObj(); 77 78 virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); 79 80 // XIndexAccess 81 virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException); 82 virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index ) 83 throw(::com::sun::star::lang::IndexOutOfBoundsException, 84 ::com::sun::star::lang::WrappedTargetException, 85 ::com::sun::star::uno::RuntimeException); 86 87 // XNameAccess 88 virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName ) 89 throw(::com::sun::star::container::NoSuchElementException, 90 ::com::sun::star::lang::WrappedTargetException, 91 ::com::sun::star::uno::RuntimeException); 92 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames() 93 throw(::com::sun::star::uno::RuntimeException); 94 virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName ) 95 throw(::com::sun::star::uno::RuntimeException); 96 97 // XElementAccess 98 virtual ::com::sun::star::uno::Type SAL_CALL getElementType() 99 throw(::com::sun::star::uno::RuntimeException); 100 virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException); 101 102 // XStyleLoader 103 virtual void SAL_CALL loadStylesFromURL( const ::rtl::OUString& URL, 104 const ::com::sun::star::uno::Sequence< 105 ::com::sun::star::beans::PropertyValue >& aOptions ) 106 throw(::com::sun::star::io::IOException, 107 ::com::sun::star::uno::RuntimeException); 108 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL 109 getStyleLoaderOptions() throw(::com::sun::star::uno::RuntimeException); 110 111 // XServiceInfo 112 virtual ::rtl::OUString SAL_CALL getImplementationName() 113 throw(::com::sun::star::uno::RuntimeException); 114 virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) 115 throw(::com::sun::star::uno::RuntimeException); 116 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() 117 throw(::com::sun::star::uno::RuntimeException); 118 }; 119 120 121 class ScStyleFamilyObj : public ::cppu::WeakImplHelper4< 122 ::com::sun::star::container::XNameContainer, 123 ::com::sun::star::container::XIndexAccess, 124 ::com::sun::star::beans::XPropertySet, 125 ::com::sun::star::lang::XServiceInfo >, 126 public SfxListener 127 { 128 private: 129 ScDocShell* pDocShell; 130 SfxStyleFamily eFamily; // Familie 131 132 ScStyleObj* GetObjectByIndex_Impl(sal_uInt32 nIndex); 133 ScStyleObj* GetObjectByName_Impl(const rtl::OUString& Name); 134 135 public: 136 ScStyleFamilyObj(ScDocShell* pDocSh, SfxStyleFamily eFam); 137 virtual ~ScStyleFamilyObj(); 138 139 virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); 140 141 // XNameContainer 142 virtual void SAL_CALL insertByName( const ::rtl::OUString& aName, 143 const ::com::sun::star::uno::Any& aElement ) 144 throw(::com::sun::star::lang::IllegalArgumentException, 145 ::com::sun::star::container::ElementExistException, 146 ::com::sun::star::lang::WrappedTargetException, 147 ::com::sun::star::uno::RuntimeException); 148 virtual void SAL_CALL removeByName( const ::rtl::OUString& Name ) 149 throw(::com::sun::star::container::NoSuchElementException, 150 ::com::sun::star::lang::WrappedTargetException, 151 ::com::sun::star::uno::RuntimeException); 152 153 // XNameReplace 154 virtual void SAL_CALL replaceByName( const ::rtl::OUString& aName, 155 const ::com::sun::star::uno::Any& aElement ) 156 throw(::com::sun::star::lang::IllegalArgumentException, 157 ::com::sun::star::container::NoSuchElementException, 158 ::com::sun::star::lang::WrappedTargetException, 159 ::com::sun::star::uno::RuntimeException); 160 161 // XNameAccess 162 virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName ) 163 throw(::com::sun::star::container::NoSuchElementException, 164 ::com::sun::star::lang::WrappedTargetException, 165 ::com::sun::star::uno::RuntimeException); 166 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames() 167 throw(::com::sun::star::uno::RuntimeException); 168 virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName ) 169 throw(::com::sun::star::uno::RuntimeException); 170 171 // XIndexAccess 172 virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException); 173 virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index ) 174 throw(::com::sun::star::lang::IndexOutOfBoundsException, 175 ::com::sun::star::lang::WrappedTargetException, 176 ::com::sun::star::uno::RuntimeException); 177 178 // XElementAccess 179 virtual ::com::sun::star::uno::Type SAL_CALL getElementType() 180 throw(::com::sun::star::uno::RuntimeException); 181 virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException); 182 183 // XPropertySet 184 virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() 185 throw (::com::sun::star::uno::RuntimeException); 186 virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ) 187 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); 188 virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( const ::rtl::OUString& PropertyName ) 189 throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 190 virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& xListener ) 191 throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 192 virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& aListener ) 193 throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 194 virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) 195 throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 196 virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) 197 throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 198 199 // XServiceInfo 200 virtual ::rtl::OUString SAL_CALL getImplementationName() 201 throw(::com::sun::star::uno::RuntimeException); 202 virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) 203 throw(::com::sun::star::uno::RuntimeException); 204 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() 205 throw(::com::sun::star::uno::RuntimeException); 206 }; 207 208 209 class ScStyleObj : public ::cppu::WeakImplHelper7< 210 ::com::sun::star::style::XStyle, 211 ::com::sun::star::beans::XPropertySet, 212 ::com::sun::star::beans::XMultiPropertySet, 213 ::com::sun::star::beans::XPropertyState, 214 ::com::sun::star::beans::XMultiPropertyStates, 215 ::com::sun::star::lang::XUnoTunnel, 216 ::com::sun::star::lang::XServiceInfo >, 217 public SfxListener 218 { 219 private: 220 const SfxItemPropertySet* pPropSet; 221 ScDocShell* pDocShell; 222 SfxStyleFamily eFamily; // Familie 223 String aStyleName; 224 225 SfxStyleSheetBase* GetStyle_Impl(); 226 const SfxItemSet* GetStyleItemSet_Impl( const ::rtl::OUString& rPropName, const SfxItemPropertySimpleEntry*& rpEntry ); 227 void SetOnePropertyValue( const ::rtl::OUString& rPropertyName, 228 const SfxItemPropertySimpleEntry* pEntry, 229 const ::com::sun::star::uno::Any* pValue ) 230 throw(::com::sun::star::lang::IllegalArgumentException, 231 ::com::sun::star::uno::RuntimeException); 232 233 // enhance ODS load performance 234 bool StyleSheetChangedUpdate(); 235 void SetOnePropertyValueWithoutUpdate( const ::rtl::OUString& rPropertyName, 236 const SfxItemPropertySimpleEntry* pEntry, 237 const ::com::sun::star::uno::Any* pValue ) 238 throw(::com::sun::star::lang::IllegalArgumentException, 239 ::com::sun::star::uno::RuntimeException); 240 //end add 241 242 ScStyleObj(); // disabled 243 public: 244 ScStyleObj(ScDocShell* pDocSh, SfxStyleFamily eFam, const String& rName); 245 virtual ~ScStyleObj(); 246 247 // per getImplementation gerufen: IsInserted() const248 sal_Bool IsInserted() const { return pDocShell != NULL; } GetFamily() const249 SfxStyleFamily GetFamily() const { return eFamily; } 250 void InitDoc( ScDocShell* pNewDocSh, const String& rNewName ); 251 252 virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); 253 254 static ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexReplace > 255 CreateEmptyNumberingRules(); 256 257 // XStyle 258 virtual sal_Bool SAL_CALL isUserDefined() throw(::com::sun::star::uno::RuntimeException); 259 virtual sal_Bool SAL_CALL isInUse() throw(::com::sun::star::uno::RuntimeException); 260 virtual ::rtl::OUString SAL_CALL getParentStyle() throw(::com::sun::star::uno::RuntimeException); 261 virtual void SAL_CALL setParentStyle( const ::rtl::OUString& aParentStyle ) 262 throw(::com::sun::star::container::NoSuchElementException, 263 ::com::sun::star::uno::RuntimeException); 264 265 // XNamed 266 virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException); 267 virtual void SAL_CALL setName( const ::rtl::OUString& aName ) 268 throw(::com::sun::star::uno::RuntimeException); 269 270 // XPropertySet 271 virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > 272 SAL_CALL getPropertySetInfo() 273 throw(::com::sun::star::uno::RuntimeException); 274 virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, 275 const ::com::sun::star::uno::Any& aValue ) 276 throw(::com::sun::star::beans::UnknownPropertyException, 277 ::com::sun::star::beans::PropertyVetoException, 278 ::com::sun::star::lang::IllegalArgumentException, 279 ::com::sun::star::lang::WrappedTargetException, 280 ::com::sun::star::uno::RuntimeException); 281 virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( 282 const ::rtl::OUString& PropertyName ) 283 throw(::com::sun::star::beans::UnknownPropertyException, 284 ::com::sun::star::lang::WrappedTargetException, 285 ::com::sun::star::uno::RuntimeException); 286 virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName, 287 const ::com::sun::star::uno::Reference< 288 ::com::sun::star::beans::XPropertyChangeListener >& xListener ) 289 throw(::com::sun::star::beans::UnknownPropertyException, 290 ::com::sun::star::lang::WrappedTargetException, 291 ::com::sun::star::uno::RuntimeException); 292 virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName, 293 const ::com::sun::star::uno::Reference< 294 ::com::sun::star::beans::XPropertyChangeListener >& aListener ) 295 throw(::com::sun::star::beans::UnknownPropertyException, 296 ::com::sun::star::lang::WrappedTargetException, 297 ::com::sun::star::uno::RuntimeException); 298 virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName, 299 const ::com::sun::star::uno::Reference< 300 ::com::sun::star::beans::XVetoableChangeListener >& aListener ) 301 throw(::com::sun::star::beans::UnknownPropertyException, 302 ::com::sun::star::lang::WrappedTargetException, 303 ::com::sun::star::uno::RuntimeException); 304 virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName, 305 const ::com::sun::star::uno::Reference< 306 ::com::sun::star::beans::XVetoableChangeListener >& aListener ) 307 throw(::com::sun::star::beans::UnknownPropertyException, 308 ::com::sun::star::lang::WrappedTargetException, 309 ::com::sun::star::uno::RuntimeException); 310 311 // XMultiPropertySet 312 virtual void SAL_CALL setPropertyValues( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames, 313 const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aValues ) 314 throw (::com::sun::star::beans::PropertyVetoException, 315 ::com::sun::star::lang::IllegalArgumentException, 316 ::com::sun::star::lang::WrappedTargetException, 317 ::com::sun::star::uno::RuntimeException); 318 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > SAL_CALL 319 getPropertyValues( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames ) 320 throw (::com::sun::star::uno::RuntimeException); 321 virtual void SAL_CALL addPropertiesChangeListener( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames, 322 const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener ) 323 throw (::com::sun::star::uno::RuntimeException); 324 virtual void SAL_CALL removePropertiesChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener ) 325 throw (::com::sun::star::uno::RuntimeException); 326 virtual void SAL_CALL firePropertiesChangeEvent( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames, 327 const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener ) 328 throw (::com::sun::star::uno::RuntimeException); 329 330 // XPropertyState 331 virtual ::com::sun::star::beans::PropertyState SAL_CALL getPropertyState( 332 const ::rtl::OUString& PropertyName ) 333 throw(::com::sun::star::beans::UnknownPropertyException, 334 ::com::sun::star::uno::RuntimeException); 335 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyState > SAL_CALL 336 getPropertyStates( const ::com::sun::star::uno::Sequence< 337 ::rtl::OUString >& aPropertyName ) 338 throw(::com::sun::star::beans::UnknownPropertyException, 339 ::com::sun::star::uno::RuntimeException); 340 virtual void SAL_CALL setPropertyToDefault( const ::rtl::OUString& PropertyName ) 341 throw(::com::sun::star::beans::UnknownPropertyException, 342 ::com::sun::star::uno::RuntimeException); 343 virtual ::com::sun::star::uno::Any SAL_CALL getPropertyDefault( 344 const ::rtl::OUString& aPropertyName ) 345 throw(::com::sun::star::beans::UnknownPropertyException, 346 ::com::sun::star::lang::WrappedTargetException, 347 ::com::sun::star::uno::RuntimeException); 348 349 // XMultiPropertyStates 350 // getPropertyStates already defined for XPropertyState 351 virtual void SAL_CALL setAllPropertiesToDefault() throw (::com::sun::star::uno::RuntimeException); 352 virtual void SAL_CALL setPropertiesToDefault( const ::com::sun::star::uno::Sequence< 353 ::rtl::OUString >& aPropertyNames ) 354 throw (::com::sun::star::beans::UnknownPropertyException, 355 ::com::sun::star::uno::RuntimeException); 356 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > SAL_CALL 357 getPropertyDefaults( const ::com::sun::star::uno::Sequence< 358 ::rtl::OUString >& aPropertyNames ) 359 throw (::com::sun::star::beans::UnknownPropertyException, 360 ::com::sun::star::lang::WrappedTargetException, 361 ::com::sun::star::uno::RuntimeException); 362 363 // XServiceInfo 364 virtual ::rtl::OUString SAL_CALL getImplementationName() 365 throw(::com::sun::star::uno::RuntimeException); 366 virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) 367 throw(::com::sun::star::uno::RuntimeException); 368 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() 369 throw(::com::sun::star::uno::RuntimeException); 370 371 // XUnoTunnel 372 virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< 373 sal_Int8 >& aIdentifier ) 374 throw(::com::sun::star::uno::RuntimeException); 375 376 static const ::com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId(); 377 static ScStyleObj* getImplementation( const ::com::sun::star::uno::Reference< 378 ::com::sun::star::uno::XInterface> xObj ); 379 380 }; 381 382 #endif 383 384