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 ScStyleObj(); // disabled 234 public: 235 ScStyleObj(ScDocShell* pDocSh, SfxStyleFamily eFam, const String& rName); 236 virtual ~ScStyleObj(); 237 238 // per getImplementation gerufen: 239 sal_Bool IsInserted() const { return pDocShell != NULL; } 240 SfxStyleFamily GetFamily() const { return eFamily; } 241 void InitDoc( ScDocShell* pNewDocSh, const String& rNewName ); 242 243 virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); 244 245 static ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexReplace > 246 CreateEmptyNumberingRules(); 247 248 // XStyle 249 virtual sal_Bool SAL_CALL isUserDefined() throw(::com::sun::star::uno::RuntimeException); 250 virtual sal_Bool SAL_CALL isInUse() throw(::com::sun::star::uno::RuntimeException); 251 virtual ::rtl::OUString SAL_CALL getParentStyle() throw(::com::sun::star::uno::RuntimeException); 252 virtual void SAL_CALL setParentStyle( const ::rtl::OUString& aParentStyle ) 253 throw(::com::sun::star::container::NoSuchElementException, 254 ::com::sun::star::uno::RuntimeException); 255 256 // XNamed 257 virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException); 258 virtual void SAL_CALL setName( const ::rtl::OUString& aName ) 259 throw(::com::sun::star::uno::RuntimeException); 260 261 // XPropertySet 262 virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > 263 SAL_CALL getPropertySetInfo() 264 throw(::com::sun::star::uno::RuntimeException); 265 virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, 266 const ::com::sun::star::uno::Any& aValue ) 267 throw(::com::sun::star::beans::UnknownPropertyException, 268 ::com::sun::star::beans::PropertyVetoException, 269 ::com::sun::star::lang::IllegalArgumentException, 270 ::com::sun::star::lang::WrappedTargetException, 271 ::com::sun::star::uno::RuntimeException); 272 virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( 273 const ::rtl::OUString& PropertyName ) 274 throw(::com::sun::star::beans::UnknownPropertyException, 275 ::com::sun::star::lang::WrappedTargetException, 276 ::com::sun::star::uno::RuntimeException); 277 virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName, 278 const ::com::sun::star::uno::Reference< 279 ::com::sun::star::beans::XPropertyChangeListener >& xListener ) 280 throw(::com::sun::star::beans::UnknownPropertyException, 281 ::com::sun::star::lang::WrappedTargetException, 282 ::com::sun::star::uno::RuntimeException); 283 virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName, 284 const ::com::sun::star::uno::Reference< 285 ::com::sun::star::beans::XPropertyChangeListener >& aListener ) 286 throw(::com::sun::star::beans::UnknownPropertyException, 287 ::com::sun::star::lang::WrappedTargetException, 288 ::com::sun::star::uno::RuntimeException); 289 virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName, 290 const ::com::sun::star::uno::Reference< 291 ::com::sun::star::beans::XVetoableChangeListener >& aListener ) 292 throw(::com::sun::star::beans::UnknownPropertyException, 293 ::com::sun::star::lang::WrappedTargetException, 294 ::com::sun::star::uno::RuntimeException); 295 virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName, 296 const ::com::sun::star::uno::Reference< 297 ::com::sun::star::beans::XVetoableChangeListener >& aListener ) 298 throw(::com::sun::star::beans::UnknownPropertyException, 299 ::com::sun::star::lang::WrappedTargetException, 300 ::com::sun::star::uno::RuntimeException); 301 302 // XMultiPropertySet 303 virtual void SAL_CALL setPropertyValues( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames, 304 const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aValues ) 305 throw (::com::sun::star::beans::PropertyVetoException, 306 ::com::sun::star::lang::IllegalArgumentException, 307 ::com::sun::star::lang::WrappedTargetException, 308 ::com::sun::star::uno::RuntimeException); 309 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > SAL_CALL 310 getPropertyValues( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames ) 311 throw (::com::sun::star::uno::RuntimeException); 312 virtual void SAL_CALL addPropertiesChangeListener( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames, 313 const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener ) 314 throw (::com::sun::star::uno::RuntimeException); 315 virtual void SAL_CALL removePropertiesChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener ) 316 throw (::com::sun::star::uno::RuntimeException); 317 virtual void SAL_CALL firePropertiesChangeEvent( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames, 318 const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener ) 319 throw (::com::sun::star::uno::RuntimeException); 320 321 // XPropertyState 322 virtual ::com::sun::star::beans::PropertyState SAL_CALL getPropertyState( 323 const ::rtl::OUString& PropertyName ) 324 throw(::com::sun::star::beans::UnknownPropertyException, 325 ::com::sun::star::uno::RuntimeException); 326 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyState > SAL_CALL 327 getPropertyStates( const ::com::sun::star::uno::Sequence< 328 ::rtl::OUString >& aPropertyName ) 329 throw(::com::sun::star::beans::UnknownPropertyException, 330 ::com::sun::star::uno::RuntimeException); 331 virtual void SAL_CALL setPropertyToDefault( const ::rtl::OUString& PropertyName ) 332 throw(::com::sun::star::beans::UnknownPropertyException, 333 ::com::sun::star::uno::RuntimeException); 334 virtual ::com::sun::star::uno::Any SAL_CALL getPropertyDefault( 335 const ::rtl::OUString& aPropertyName ) 336 throw(::com::sun::star::beans::UnknownPropertyException, 337 ::com::sun::star::lang::WrappedTargetException, 338 ::com::sun::star::uno::RuntimeException); 339 340 // XMultiPropertyStates 341 // getPropertyStates already defined for XPropertyState 342 virtual void SAL_CALL setAllPropertiesToDefault() throw (::com::sun::star::uno::RuntimeException); 343 virtual void SAL_CALL setPropertiesToDefault( const ::com::sun::star::uno::Sequence< 344 ::rtl::OUString >& aPropertyNames ) 345 throw (::com::sun::star::beans::UnknownPropertyException, 346 ::com::sun::star::uno::RuntimeException); 347 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > SAL_CALL 348 getPropertyDefaults( const ::com::sun::star::uno::Sequence< 349 ::rtl::OUString >& aPropertyNames ) 350 throw (::com::sun::star::beans::UnknownPropertyException, 351 ::com::sun::star::lang::WrappedTargetException, 352 ::com::sun::star::uno::RuntimeException); 353 354 // XServiceInfo 355 virtual ::rtl::OUString SAL_CALL getImplementationName() 356 throw(::com::sun::star::uno::RuntimeException); 357 virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) 358 throw(::com::sun::star::uno::RuntimeException); 359 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() 360 throw(::com::sun::star::uno::RuntimeException); 361 362 // XUnoTunnel 363 virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< 364 sal_Int8 >& aIdentifier ) 365 throw(::com::sun::star::uno::RuntimeException); 366 367 static const ::com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId(); 368 static ScStyleObj* getImplementation( const ::com::sun::star::uno::Reference< 369 ::com::sun::star::uno::XInterface> xObj ); 370 371 }; 372 373 #endif 374 375