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_DAPIUNO_HXX 25 #define SC_DAPIUNO_HXX 26 27 #include "global.hxx" 28 #include "dpobject.hxx" 29 #include "rangeutl.hxx" // ScArea 30 #include "cellsuno.hxx" // for XModifyListenerArr_Impl 31 32 #include <svl/lstner.hxx> 33 #include <svl/itemprop.hxx> 34 35 #include <com/sun/star/lang/XServiceInfo.hpp> 36 #include <com/sun/star/lang/XUnoTunnel.hpp> 37 #include <com/sun/star/beans/XPropertySet.hpp> 38 #include <com/sun/star/container/XEnumerationAccess.hpp> 39 #include <com/sun/star/container/XNameContainer.hpp> 40 #include <com/sun/star/util/XModifyBroadcaster.hpp> 41 42 #include <com/sun/star/sheet/DataPilotFieldAutoShowInfo.hpp> 43 #include <com/sun/star/sheet/DataPilotFieldGroupInfo.hpp> 44 #include <com/sun/star/sheet/DataPilotFieldLayoutInfo.hpp> 45 #include <com/sun/star/sheet/DataPilotFieldOrientation.hpp> 46 #include <com/sun/star/sheet/DataPilotFieldReference.hpp> 47 #include <com/sun/star/sheet/DataPilotFieldSortInfo.hpp> 48 #include <com/sun/star/sheet/GeneralFunction.hpp> 49 #include <com/sun/star/sheet/XDataPilotDataLayoutFieldSupplier.hpp> 50 #include <com/sun/star/sheet/XDataPilotDescriptor.hpp> 51 #include <com/sun/star/sheet/XDataPilotField.hpp> 52 #include <com/sun/star/sheet/XDataPilotFieldGrouping.hpp> 53 #include <com/sun/star/sheet/XDataPilotTable.hpp> 54 #include <com/sun/star/sheet/XDataPilotTable2.hpp> 55 #include <com/sun/star/sheet/XDataPilotTables.hpp> 56 57 #include <cppuhelper/implbase2.hxx> 58 #include <cppuhelper/implbase3.hxx> 59 #include <cppuhelper/implbase4.hxx> 60 #include <cppuhelper/implbase5.hxx> 61 62 #include <memory> 63 #include <vector> 64 65 namespace com { namespace sun { namespace star { namespace sheet { 66 struct DataPilotFieldFilter; 67 struct DataPilotTablePositionData; 68 }}}} 69 70 class ScDocShell; 71 class ScDPSaveDimension; 72 class ScDPSaveGroupDimension; 73 class ScDPSaveNumGroupDimension; 74 struct ScDPNumGroupInfo; 75 76 class ScDataPilotTableObj; 77 class ScDataPilotFieldObj; 78 class ScDataPilotItemObj; 79 80 81 class ScDataPilotConversion 82 { 83 public: 84 static com::sun::star::sheet::GeneralFunction FirstFunc( sal_uInt16 nBits ); 85 static sal_uInt16 FunctionBit( com::sun::star::sheet::GeneralFunction eFunc ); 86 87 static void FillGroupInfo( 88 ::com::sun::star::sheet::DataPilotFieldGroupInfo& rInfo, 89 const ScDPNumGroupInfo& rGroupInfo ); 90 }; 91 92 // ============================================================================ 93 94 /** DataPilotTables collection per sheet. */ 95 class ScDataPilotTablesObj : public cppu::WeakImplHelper4< 96 com::sun::star::sheet::XDataPilotTables, 97 com::sun::star::container::XEnumerationAccess, 98 com::sun::star::container::XIndexAccess, 99 com::sun::star::lang::XServiceInfo>, 100 public SfxListener 101 { 102 private: 103 ScDocShell* pDocShell; 104 SCTAB nTab; 105 106 ScDataPilotTableObj* GetObjectByIndex_Impl( sal_Int32 nIndex ); 107 ScDataPilotTableObj* GetObjectByName_Impl(const ::rtl::OUString& aName); 108 109 public: 110 ScDataPilotTablesObj(ScDocShell* pDocSh, SCTAB nT); 111 virtual ~ScDataPilotTablesObj(); 112 113 virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); 114 115 // XDataPilotTables 116 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XDataPilotDescriptor > SAL_CALL 117 createDataPilotDescriptor() throw(::com::sun::star::uno::RuntimeException); 118 virtual void SAL_CALL insertNewByName( const ::rtl::OUString& aName, 119 const ::com::sun::star::table::CellAddress& aOutputAddress, 120 const ::com::sun::star::uno::Reference< 121 ::com::sun::star::sheet::XDataPilotDescriptor >& xDescriptor ) 122 throw(::com::sun::star::uno::RuntimeException); 123 virtual void SAL_CALL removeByName( const ::rtl::OUString& aName ) 124 throw(::com::sun::star::uno::RuntimeException); 125 126 // XNameAccess 127 virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName ) 128 throw(::com::sun::star::container::NoSuchElementException, 129 ::com::sun::star::lang::WrappedTargetException, 130 ::com::sun::star::uno::RuntimeException); 131 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames() 132 throw(::com::sun::star::uno::RuntimeException); 133 virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName ) 134 throw(::com::sun::star::uno::RuntimeException); 135 136 // XIndexAccess 137 virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException); 138 virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index ) 139 throw(::com::sun::star::lang::IndexOutOfBoundsException, 140 ::com::sun::star::lang::WrappedTargetException, 141 ::com::sun::star::uno::RuntimeException); 142 143 // XEnumerationAccess 144 virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL 145 createEnumeration() throw(::com::sun::star::uno::RuntimeException); 146 147 // XElementAccess 148 virtual ::com::sun::star::uno::Type SAL_CALL getElementType() 149 throw(::com::sun::star::uno::RuntimeException); 150 virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException); 151 152 // XServiceInfo 153 virtual ::rtl::OUString SAL_CALL getImplementationName() 154 throw(::com::sun::star::uno::RuntimeException); 155 virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) 156 throw(::com::sun::star::uno::RuntimeException); 157 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() 158 throw(::com::sun::star::uno::RuntimeException); 159 }; 160 161 // ============================================================================ 162 163 // ScDataPilotDescriptorBase is never instantiated directly 164 class ScDataPilotDescriptorBase : public com::sun::star::sheet::XDataPilotDescriptor, 165 public com::sun::star::beans::XPropertySet, 166 public com::sun::star::sheet::XDataPilotDataLayoutFieldSupplier, 167 public com::sun::star::lang::XServiceInfo, 168 public com::sun::star::lang::XUnoTunnel, 169 public com::sun::star::lang::XTypeProvider, 170 public cppu::OWeakObject, 171 public SfxListener 172 { 173 private: 174 SfxItemPropertySet maPropSet; 175 ScDocShell* pDocShell; 176 177 public: 178 ScDataPilotDescriptorBase(ScDocShell* pDocSh); 179 virtual ~ScDataPilotDescriptorBase(); 180 181 virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( 182 const ::com::sun::star::uno::Type & rType ) 183 throw(::com::sun::star::uno::RuntimeException); 184 virtual void SAL_CALL acquire() throw(); 185 virtual void SAL_CALL release() throw(); 186 187 virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); 188 GetDocShell() const189 ScDocShell* GetDocShell() const { return pDocShell; } 190 191 // in den Ableitungen: 192 virtual ScDPObject* GetDPObject() const = 0; 193 virtual void SetDPObject(ScDPObject* pDPObj) = 0; 194 195 // XDataPilotDescriptor 196 // getName, setName, getTag, setTag in derived classes 197 198 virtual ::com::sun::star::table::CellRangeAddress SAL_CALL getSourceRange() 199 throw(::com::sun::star::uno::RuntimeException); 200 virtual void SAL_CALL setSourceRange( const ::com::sun::star::table::CellRangeAddress& aSourceRange ) 201 throw(::com::sun::star::uno::RuntimeException); 202 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetFilterDescriptor > SAL_CALL 203 getFilterDescriptor() throw(::com::sun::star::uno::RuntimeException); 204 virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL 205 getDataPilotFields() throw(::com::sun::star::uno::RuntimeException); 206 virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL 207 getColumnFields() throw(::com::sun::star::uno::RuntimeException); 208 virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL 209 getRowFields() throw(::com::sun::star::uno::RuntimeException); 210 virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL 211 getPageFields() throw(::com::sun::star::uno::RuntimeException); 212 virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL 213 getDataFields() throw(::com::sun::star::uno::RuntimeException); 214 virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL 215 getHiddenFields() throw(::com::sun::star::uno::RuntimeException); 216 217 // XPropertySet 218 virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > 219 SAL_CALL getPropertySetInfo( ) 220 throw(::com::sun::star::uno::RuntimeException); 221 virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, 222 const ::com::sun::star::uno::Any& aValue ) 223 throw(::com::sun::star::beans::UnknownPropertyException, 224 ::com::sun::star::beans::PropertyVetoException, 225 ::com::sun::star::lang::IllegalArgumentException, 226 ::com::sun::star::lang::WrappedTargetException, 227 ::com::sun::star::uno::RuntimeException); 228 virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( 229 const ::rtl::OUString& PropertyName ) 230 throw(::com::sun::star::beans::UnknownPropertyException, 231 ::com::sun::star::lang::WrappedTargetException, 232 ::com::sun::star::uno::RuntimeException); 233 virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName, 234 const ::com::sun::star::uno::Reference< 235 ::com::sun::star::beans::XPropertyChangeListener >& xListener ) 236 throw(::com::sun::star::beans::UnknownPropertyException, 237 ::com::sun::star::lang::WrappedTargetException, 238 ::com::sun::star::uno::RuntimeException); 239 virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName, 240 const ::com::sun::star::uno::Reference< 241 ::com::sun::star::beans::XPropertyChangeListener >& aListener ) 242 throw(::com::sun::star::beans::UnknownPropertyException, 243 ::com::sun::star::lang::WrappedTargetException, 244 ::com::sun::star::uno::RuntimeException); 245 virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName, 246 const ::com::sun::star::uno::Reference< 247 ::com::sun::star::beans::XVetoableChangeListener >& aListener ) 248 throw(::com::sun::star::beans::UnknownPropertyException, 249 ::com::sun::star::lang::WrappedTargetException, 250 ::com::sun::star::uno::RuntimeException); 251 virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName, 252 const ::com::sun::star::uno::Reference< 253 ::com::sun::star::beans::XVetoableChangeListener >& aListener ) 254 throw(::com::sun::star::beans::UnknownPropertyException, 255 ::com::sun::star::lang::WrappedTargetException, 256 ::com::sun::star::uno::RuntimeException); 257 258 // XDataPilotDataLayoutFieldSupplier 259 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XDataPilotField > 260 SAL_CALL getDataLayoutField() 261 throw(::com::sun::star::uno::RuntimeException); 262 263 // XUnoTunnel 264 virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< 265 sal_Int8 >& aIdentifier ) 266 throw(::com::sun::star::uno::RuntimeException); 267 268 static const com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId(); 269 static ScDataPilotDescriptorBase* getImplementation( const com::sun::star::uno::Reference< 270 com::sun::star::sheet::XDataPilotDescriptor> xObj ); 271 272 // XTypeProvider (overloaded in ScDataPilotTableObj) 273 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes() 274 throw(::com::sun::star::uno::RuntimeException); 275 virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() 276 throw(::com::sun::star::uno::RuntimeException); 277 278 // XServiceInfo is in derived classes 279 }; 280 281 // ============================================================================ 282 283 class ScDataPilotDescriptor : public ScDataPilotDescriptorBase 284 { 285 private: 286 ScDPObject* mpDPObject; 287 288 public: 289 ScDataPilotDescriptor(ScDocShell* pDocSh); 290 virtual ~ScDataPilotDescriptor(); 291 292 virtual ScDPObject* GetDPObject() const; 293 virtual void SetDPObject(ScDPObject* pDPObj); 294 295 // rest of XDataPilotDescriptor (incl. XNamed) 296 virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException); 297 virtual void SAL_CALL setName( const ::rtl::OUString& aName ) 298 throw(::com::sun::star::uno::RuntimeException); 299 virtual ::rtl::OUString SAL_CALL getTag() throw(::com::sun::star::uno::RuntimeException); 300 virtual void SAL_CALL setTag( const ::rtl::OUString& aTag ) 301 throw(::com::sun::star::uno::RuntimeException); 302 303 // XServiceInfo 304 virtual ::rtl::OUString SAL_CALL getImplementationName() 305 throw(::com::sun::star::uno::RuntimeException); 306 virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) 307 throw(::com::sun::star::uno::RuntimeException); 308 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() 309 throw(::com::sun::star::uno::RuntimeException); 310 }; 311 312 // ============================================================================ 313 314 class ScDataPilotTableObj : public ScDataPilotDescriptorBase, 315 public com::sun::star::sheet::XDataPilotTable2, 316 public com::sun::star::util::XModifyBroadcaster 317 { 318 private: 319 SCTAB nTab; 320 String aName; 321 XModifyListenerArr_Impl aModifyListeners; 322 323 void Refreshed_Impl(); 324 325 public: 326 ScDataPilotTableObj(ScDocShell* pDocSh, SCTAB nT, const String& rN); 327 virtual ~ScDataPilotTableObj(); 328 329 virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( 330 const ::com::sun::star::uno::Type & rType ) 331 throw(::com::sun::star::uno::RuntimeException); 332 virtual void SAL_CALL acquire() throw(); 333 virtual void SAL_CALL release() throw(); 334 335 virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); 336 337 virtual ScDPObject* GetDPObject() const; 338 virtual void SetDPObject(ScDPObject* pDPObj); 339 340 // rest of XDataPilotDescriptor (incl. XNamed) 341 virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException); 342 virtual void SAL_CALL setName( const ::rtl::OUString& aName ) 343 throw(::com::sun::star::uno::RuntimeException); 344 virtual ::rtl::OUString SAL_CALL getTag() throw(::com::sun::star::uno::RuntimeException); 345 virtual void SAL_CALL setTag( const ::rtl::OUString& aTag ) 346 throw(::com::sun::star::uno::RuntimeException); 347 348 // XDataPilotTable 349 virtual ::com::sun::star::table::CellRangeAddress SAL_CALL getOutputRange() 350 throw(::com::sun::star::uno::RuntimeException); 351 virtual void SAL_CALL refresh() throw(::com::sun::star::uno::RuntimeException); 352 353 // XDataPilotTable2 354 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > > 355 SAL_CALL getDrillDownData(const ::com::sun::star::table::CellAddress& aAddr) 356 throw(::com::sun::star::uno::RuntimeException); 357 358 virtual ::com::sun::star::sheet::DataPilotTablePositionData 359 SAL_CALL getPositionData(const ::com::sun::star::table::CellAddress& aAddr) 360 throw(::com::sun::star::uno::RuntimeException); 361 362 virtual void SAL_CALL insertDrillDownSheet(const ::com::sun::star::table::CellAddress& aAddr) 363 throw(::com::sun::star::uno::RuntimeException); 364 365 virtual ::com::sun::star::table::CellRangeAddress SAL_CALL getOutputRangeByType( sal_Int32 nType ) 366 throw(::com::sun::star::lang::IllegalArgumentException, 367 ::com::sun::star::uno::RuntimeException); 368 369 // XModifyBroadcaster 370 virtual void SAL_CALL addModifyListener( const ::com::sun::star::uno::Reference< 371 ::com::sun::star::util::XModifyListener >& aListener ) 372 throw (::com::sun::star::uno::RuntimeException); 373 virtual void SAL_CALL removeModifyListener( const ::com::sun::star::uno::Reference< 374 ::com::sun::star::util::XModifyListener >& aListener ) 375 throw (::com::sun::star::uno::RuntimeException); 376 377 // XTypeProvider (overloaded) 378 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes() 379 throw(::com::sun::star::uno::RuntimeException); 380 virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() 381 throw(::com::sun::star::uno::RuntimeException); 382 383 // XServiceInfo 384 virtual ::rtl::OUString SAL_CALL getImplementationName() 385 throw(::com::sun::star::uno::RuntimeException); 386 virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) 387 throw(::com::sun::star::uno::RuntimeException); 388 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() 389 throw(::com::sun::star::uno::RuntimeException); 390 }; 391 392 // ============================================================================ 393 394 struct ScFieldIdentifier 395 { 396 ::rtl::OUString maFieldName; /// Source field name. 397 sal_Int32 mnFieldIdx; /// Field index (if several fields with same name exist). 398 bool mbDataLayout; /// True = data layout field collecting all data fields as items. 399 ScFieldIdentifierScFieldIdentifier400 inline explicit ScFieldIdentifier() : 401 mnFieldIdx( 0 ), mbDataLayout( false ) {} 402 ScFieldIdentifierScFieldIdentifier403 inline explicit ScFieldIdentifier( const ::rtl::OUString& rFieldName, sal_Int32 nFieldIdx, bool bDataLayout ) : 404 maFieldName( rFieldName ), mnFieldIdx( nFieldIdx ), mbDataLayout( bDataLayout ) {} 405 }; 406 407 // ============================================================================ 408 409 /** Base class of all implementation objects based on a DataPilot descriptor 410 or DataPilot table object. Wraps acquiring and releasing the parent. */ 411 class ScDataPilotChildObjBase 412 { 413 protected: 414 explicit ScDataPilotChildObjBase( ScDataPilotDescriptorBase& rParent ); 415 explicit ScDataPilotChildObjBase( ScDataPilotDescriptorBase& rParent, const ScFieldIdentifier& rFieldId ); 416 virtual ~ScDataPilotChildObjBase(); 417 418 /** Returns the wrapped DataPilot object (calls GetDPObject() at parent). */ 419 ScDPObject* GetDPObject() const; 420 /** Sets the passed DataPilot object (calls SetDPObject() at parent). */ 421 void SetDPObject( ScDPObject* pDPObject ); 422 423 /** Returns the DataPilot dimension object related to the field described by maFieldId. */ 424 ScDPSaveDimension* GetDPDimension( ScDPObject** ppDPObject = 0 ) const; 425 426 /** Returns the number of members for the field described by maFieldId. */ 427 sal_Int32 GetMemberCount() const; 428 /** Returns the collection of members for the field described by maFieldId. */ 429 ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > 430 GetMembers() const; 431 432 protected: 433 ScDataPilotDescriptorBase& mrParent; 434 ScFieldIdentifier maFieldId; 435 436 private: 437 ScDataPilotChildObjBase& operator=( const ScDataPilotChildObjBase& ); 438 }; 439 440 // ============================================================================ 441 442 typedef ::cppu::WeakImplHelper4 443 < 444 ::com::sun::star::container::XEnumerationAccess, 445 ::com::sun::star::container::XIndexAccess, 446 ::com::sun::star::container::XNameAccess, 447 ::com::sun::star::lang::XServiceInfo 448 > 449 ScDataPilotFieldsObjImpl; 450 451 /** Collection of all DataPilot fields, or of all fields from a specific dimension. */ 452 class ScDataPilotFieldsObj : public ScDataPilotChildObjBase, public ScDataPilotFieldsObjImpl 453 { 454 public: 455 explicit ScDataPilotFieldsObj( 456 ScDataPilotDescriptorBase& rParent ); 457 458 explicit ScDataPilotFieldsObj( 459 ScDataPilotDescriptorBase& rParent, 460 ::com::sun::star::sheet::DataPilotFieldOrientation eOrient ); 461 462 virtual ~ScDataPilotFieldsObj(); 463 464 // XNameAccess 465 virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName ) 466 throw(::com::sun::star::container::NoSuchElementException, 467 ::com::sun::star::lang::WrappedTargetException, 468 ::com::sun::star::uno::RuntimeException); 469 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames() 470 throw(::com::sun::star::uno::RuntimeException); 471 virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName ) 472 throw(::com::sun::star::uno::RuntimeException); 473 474 // XIndexAccess 475 virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException); 476 virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index ) 477 throw(::com::sun::star::lang::IndexOutOfBoundsException, 478 ::com::sun::star::lang::WrappedTargetException, 479 ::com::sun::star::uno::RuntimeException); 480 481 // XEnumerationAccess 482 virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL 483 createEnumeration() throw(::com::sun::star::uno::RuntimeException); 484 485 // XElementAccess 486 virtual ::com::sun::star::uno::Type SAL_CALL getElementType() 487 throw(::com::sun::star::uno::RuntimeException); 488 virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException); 489 490 // XServiceInfo 491 virtual ::rtl::OUString SAL_CALL getImplementationName() 492 throw(::com::sun::star::uno::RuntimeException); 493 virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) 494 throw(::com::sun::star::uno::RuntimeException); 495 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() 496 throw(::com::sun::star::uno::RuntimeException); 497 498 private: 499 ScDataPilotFieldObj* GetObjectByIndex_Impl( sal_Int32 nIndex ) const; 500 ScDataPilotFieldObj* GetObjectByName_Impl( const ::rtl::OUString& rName ) const; 501 502 private: 503 ::com::sun::star::uno::Any maOrient; /// Field orientation, no value = all fields. 504 }; 505 506 // ============================================================================ 507 508 typedef ::cppu::WeakImplHelper5 509 < 510 ::com::sun::star::container::XNamed, 511 ::com::sun::star::beans::XPropertySet, 512 ::com::sun::star::sheet::XDataPilotField, 513 ::com::sun::star::sheet::XDataPilotFieldGrouping, 514 ::com::sun::star::lang::XServiceInfo 515 > 516 ScDataPilotFieldObjImpl; 517 518 /** Implementation of a single DataPilot field. */ 519 class ScDataPilotFieldObj : public ScDataPilotChildObjBase, public ScDataPilotFieldObjImpl 520 { 521 public: 522 ScDataPilotFieldObj( 523 ScDataPilotDescriptorBase& rParent, 524 const ScFieldIdentifier& rIdent ); 525 526 ScDataPilotFieldObj( 527 ScDataPilotDescriptorBase& rParent, 528 const ScFieldIdentifier& rIdent, 529 const ::com::sun::star::uno::Any& rOrient ); 530 531 virtual ~ScDataPilotFieldObj(); 532 533 // XNamed 534 virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException); 535 virtual void SAL_CALL setName( const ::rtl::OUString& aName ) 536 throw(::com::sun::star::uno::RuntimeException); 537 538 // XPropertySet 539 virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > 540 SAL_CALL getPropertySetInfo( ) 541 throw(::com::sun::star::uno::RuntimeException); 542 virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, 543 const ::com::sun::star::uno::Any& aValue ) 544 throw(::com::sun::star::beans::UnknownPropertyException, 545 ::com::sun::star::beans::PropertyVetoException, 546 ::com::sun::star::lang::IllegalArgumentException, 547 ::com::sun::star::lang::WrappedTargetException, 548 ::com::sun::star::uno::RuntimeException); 549 virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( 550 const ::rtl::OUString& PropertyName ) 551 throw(::com::sun::star::beans::UnknownPropertyException, 552 ::com::sun::star::lang::WrappedTargetException, 553 ::com::sun::star::uno::RuntimeException); 554 virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName, 555 const ::com::sun::star::uno::Reference< 556 ::com::sun::star::beans::XPropertyChangeListener >& xListener ) 557 throw(::com::sun::star::beans::UnknownPropertyException, 558 ::com::sun::star::lang::WrappedTargetException, 559 ::com::sun::star::uno::RuntimeException); 560 virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName, 561 const ::com::sun::star::uno::Reference< 562 ::com::sun::star::beans::XPropertyChangeListener >& aListener ) 563 throw(::com::sun::star::beans::UnknownPropertyException, 564 ::com::sun::star::lang::WrappedTargetException, 565 ::com::sun::star::uno::RuntimeException); 566 virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName, 567 const ::com::sun::star::uno::Reference< 568 ::com::sun::star::beans::XVetoableChangeListener >& aListener ) 569 throw(::com::sun::star::beans::UnknownPropertyException, 570 ::com::sun::star::lang::WrappedTargetException, 571 ::com::sun::star::uno::RuntimeException); 572 virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName, 573 const ::com::sun::star::uno::Reference< 574 ::com::sun::star::beans::XVetoableChangeListener >& aListener ) 575 throw(::com::sun::star::beans::UnknownPropertyException, 576 ::com::sun::star::lang::WrappedTargetException, 577 ::com::sun::star::uno::RuntimeException); 578 579 // XDatePilotField 580 virtual com::sun::star::uno::Reference<com::sun::star::container::XIndexAccess> SAL_CALL 581 getItems() throw (::com::sun::star::uno::RuntimeException); 582 583 // nur noch aus Property-Funktionen gerufen: 584 com::sun::star::sheet::DataPilotFieldOrientation getOrientation(void) const; 585 void setOrientation(com::sun::star::sheet::DataPilotFieldOrientation Orientation); 586 com::sun::star::sheet::GeneralFunction getFunction(void) const; 587 void setFunction(com::sun::star::sheet::GeneralFunction Function); 588 com::sun::star::uno::Sequence< com::sun::star::sheet::GeneralFunction > getSubtotals() const; 589 void setSubtotals(const com::sun::star::uno::Sequence< com::sun::star::sheet::GeneralFunction >& rFunctions); 590 rtl::OUString getCurrentPage() const; 591 void setCurrentPage(const rtl::OUString& sPage); 592 sal_Bool getUseCurrentPage() const; 593 void setUseCurrentPage(sal_Bool bUse); 594 const com::sun::star::sheet::DataPilotFieldAutoShowInfo* getAutoShowInfo(); 595 void setAutoShowInfo(const com::sun::star::sheet::DataPilotFieldAutoShowInfo* pInfo); 596 const com::sun::star::sheet::DataPilotFieldLayoutInfo* getLayoutInfo(); 597 void setLayoutInfo(const com::sun::star::sheet::DataPilotFieldLayoutInfo* pInfo); 598 const com::sun::star::sheet::DataPilotFieldReference* getReference(); 599 void setReference(const com::sun::star::sheet::DataPilotFieldReference* pInfo); 600 const com::sun::star::sheet::DataPilotFieldSortInfo* getSortInfo(); 601 void setSortInfo(const com::sun::star::sheet::DataPilotFieldSortInfo* pInfo); 602 sal_Bool getShowEmpty() const; 603 void setShowEmpty(sal_Bool bShow); 604 605 sal_Bool hasGroupInfo(); 606 com::sun::star::sheet::DataPilotFieldGroupInfo getGroupInfo(); 607 void setGroupInfo(const com::sun::star::sheet::DataPilotFieldGroupInfo* pInfo); 608 609 // XDataPilotFieldGrouping 610 sal_Bool HasString(const com::sun::star::uno::Sequence< ::rtl::OUString >& aItems, const ::rtl::OUString& aString); 611 virtual com::sun::star::uno::Reference < com::sun::star::sheet::XDataPilotField > SAL_CALL 612 createNameGroup(const com::sun::star::uno::Sequence< ::rtl::OUString >& aItems) 613 throw (::com::sun::star::uno::RuntimeException, 614 ::com::sun::star::lang::IllegalArgumentException); 615 virtual com::sun::star::uno::Reference < com::sun::star::sheet::XDataPilotField > SAL_CALL 616 createDateGroup(const com::sun::star::sheet::DataPilotFieldGroupInfo& rInfo) 617 throw (::com::sun::star::uno::RuntimeException, 618 ::com::sun::star::lang::IllegalArgumentException); 619 620 // XServiceInfo 621 virtual ::rtl::OUString SAL_CALL getImplementationName() 622 throw(::com::sun::star::uno::RuntimeException); 623 virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) 624 throw(::com::sun::star::uno::RuntimeException); 625 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() 626 throw(::com::sun::star::uno::RuntimeException); 627 628 private: 629 ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > 630 mxItems; 631 SfxItemPropertySet maPropSet; 632 ::com::sun::star::uno::Any maOrient; 633 }; 634 635 // ============================================================================ 636 637 typedef ::std::vector< ::rtl::OUString > ScFieldGroupMembers; 638 639 struct ScFieldGroup 640 { 641 ::rtl::OUString maName; 642 ScFieldGroupMembers maMembers; 643 }; 644 645 typedef ::std::vector< ScFieldGroup > ScFieldGroups; 646 647 // ============================================================================ 648 649 typedef ::cppu::WeakImplHelper4 650 < 651 ::com::sun::star::container::XNameContainer, 652 ::com::sun::star::container::XEnumerationAccess, 653 ::com::sun::star::container::XIndexAccess, 654 ::com::sun::star::lang::XServiceInfo 655 > 656 ScDataPilotFieldGroupsObjImpl; 657 658 /** Implementation of all grouped items in a DataPilot field. 659 660 This is a stand-alone object without any connection to the base DataPilot 661 field. Grouping info has to be written back with the GroupInfo property of 662 the DataPilot field after modifying this object. 663 */ 664 class ScDataPilotFieldGroupsObj : public ScDataPilotFieldGroupsObjImpl 665 { 666 public: 667 explicit ScDataPilotFieldGroupsObj( const ScFieldGroups& rGroups ); 668 virtual ~ScDataPilotFieldGroupsObj(); 669 670 // XNameAccess 671 virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName ) 672 throw(::com::sun::star::container::NoSuchElementException, 673 ::com::sun::star::lang::WrappedTargetException, 674 ::com::sun::star::uno::RuntimeException); 675 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames() 676 throw(::com::sun::star::uno::RuntimeException); 677 virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName ) 678 throw(::com::sun::star::uno::RuntimeException); 679 680 // XNameReplace 681 virtual void SAL_CALL replaceByName( const ::rtl::OUString& aName, 682 const ::com::sun::star::uno::Any& aElement ) 683 throw (::com::sun::star::lang::IllegalArgumentException, 684 ::com::sun::star::container::NoSuchElementException, 685 ::com::sun::star::lang::WrappedTargetException, 686 ::com::sun::star::uno::RuntimeException); 687 688 // XNameContainer 689 virtual void SAL_CALL insertByName( const ::rtl::OUString& aName, 690 const ::com::sun::star::uno::Any& aElement ) 691 throw (::com::sun::star::lang::IllegalArgumentException, 692 ::com::sun::star::container::ElementExistException, 693 ::com::sun::star::lang::WrappedTargetException, 694 ::com::sun::star::uno::RuntimeException); 695 virtual void SAL_CALL removeByName( const ::rtl::OUString& Name ) 696 throw (::com::sun::star::container::NoSuchElementException, 697 ::com::sun::star::lang::WrappedTargetException, 698 ::com::sun::star::uno::RuntimeException); 699 700 // XIndexAccess 701 virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException); 702 virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index ) 703 throw(::com::sun::star::lang::IndexOutOfBoundsException, 704 ::com::sun::star::lang::WrappedTargetException, 705 ::com::sun::star::uno::RuntimeException); 706 707 // XEnumerationAccess 708 virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL 709 createEnumeration() throw(::com::sun::star::uno::RuntimeException); 710 711 // XElementAccess 712 virtual ::com::sun::star::uno::Type SAL_CALL getElementType() 713 throw(::com::sun::star::uno::RuntimeException); 714 virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException); 715 716 // XServiceInfo 717 virtual ::rtl::OUString SAL_CALL getImplementationName() 718 throw(::com::sun::star::uno::RuntimeException); 719 virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) 720 throw(::com::sun::star::uno::RuntimeException); 721 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() 722 throw(::com::sun::star::uno::RuntimeException); 723 724 // implementation 725 ScFieldGroup& getFieldGroup( const ::rtl::OUString& rName ) throw(::com::sun::star::uno::RuntimeException); 726 void renameFieldGroup( const ::rtl::OUString& rOldName, const ::rtl::OUString& rNewName ) throw(::com::sun::star::uno::RuntimeException); 727 728 private: 729 ScFieldGroups::iterator implFindByName( const ::rtl::OUString& rName ); 730 731 private: 732 ScFieldGroups maGroups; 733 }; 734 735 // ============================================================================ 736 737 typedef ::cppu::WeakImplHelper5 738 < 739 ::com::sun::star::container::XNameContainer, 740 ::com::sun::star::container::XEnumerationAccess, 741 ::com::sun::star::container::XIndexAccess, 742 ::com::sun::star::container::XNamed, 743 ::com::sun::star::lang::XServiceInfo 744 > 745 ScDataPilotFieldGroupObjImpl; 746 747 class ScDataPilotFieldGroupObj : public ScDataPilotFieldGroupObjImpl 748 { 749 public: 750 explicit ScDataPilotFieldGroupObj( ScDataPilotFieldGroupsObj& rParent, const ::rtl::OUString& rGroupName ); 751 virtual ~ScDataPilotFieldGroupObj(); 752 753 // XNameAccess 754 virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName ) 755 throw(::com::sun::star::container::NoSuchElementException, 756 ::com::sun::star::lang::WrappedTargetException, 757 ::com::sun::star::uno::RuntimeException); 758 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames() 759 throw(::com::sun::star::uno::RuntimeException); 760 virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName ) 761 throw(::com::sun::star::uno::RuntimeException); 762 763 // XNameReplace 764 virtual void SAL_CALL replaceByName( const ::rtl::OUString& aName, 765 const ::com::sun::star::uno::Any& aElement ) 766 throw (::com::sun::star::lang::IllegalArgumentException, 767 ::com::sun::star::container::NoSuchElementException, 768 ::com::sun::star::lang::WrappedTargetException, 769 ::com::sun::star::uno::RuntimeException); 770 771 // XNameContainer 772 virtual void SAL_CALL insertByName( const ::rtl::OUString& aName, 773 const ::com::sun::star::uno::Any& aElement ) 774 throw (::com::sun::star::lang::IllegalArgumentException, 775 ::com::sun::star::container::ElementExistException, 776 ::com::sun::star::lang::WrappedTargetException, 777 ::com::sun::star::uno::RuntimeException); 778 virtual void SAL_CALL removeByName( const ::rtl::OUString& Name ) 779 throw (::com::sun::star::container::NoSuchElementException, 780 ::com::sun::star::lang::WrappedTargetException, 781 ::com::sun::star::uno::RuntimeException); 782 783 // XIndexAccess 784 virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException); 785 virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index ) 786 throw(::com::sun::star::lang::IndexOutOfBoundsException, 787 ::com::sun::star::lang::WrappedTargetException, 788 ::com::sun::star::uno::RuntimeException); 789 790 // XEnumerationAccess 791 virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL 792 createEnumeration() throw(::com::sun::star::uno::RuntimeException); 793 794 // XElementAccess 795 virtual ::com::sun::star::uno::Type SAL_CALL getElementType() 796 throw(::com::sun::star::uno::RuntimeException); 797 virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException); 798 799 // XNamed 800 virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException); 801 virtual void SAL_CALL setName( const ::rtl::OUString& aName ) 802 throw(::com::sun::star::uno::RuntimeException); 803 804 // XServiceInfo 805 virtual ::rtl::OUString SAL_CALL getImplementationName() 806 throw(::com::sun::star::uno::RuntimeException); 807 virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) 808 throw(::com::sun::star::uno::RuntimeException); 809 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() 810 throw(::com::sun::star::uno::RuntimeException); 811 812 private: 813 ScDataPilotFieldGroupsObj& mrParent; 814 ::rtl::OUString maGroupName; 815 }; 816 817 // ============================================================================ 818 819 typedef ::cppu::WeakImplHelper2 820 < 821 ::com::sun::star::container::XNamed, 822 ::com::sun::star::lang::XServiceInfo 823 > 824 ScDataPilotFieldGroupItemObjImpl; 825 826 class ScDataPilotFieldGroupItemObj : public ScDataPilotFieldGroupItemObjImpl 827 { 828 public: 829 explicit ScDataPilotFieldGroupItemObj( ScDataPilotFieldGroupObj& rParent, const ::rtl::OUString& rName ); 830 virtual ~ScDataPilotFieldGroupItemObj(); 831 832 // XNamed 833 virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException); 834 virtual void SAL_CALL setName( const ::rtl::OUString& aName ) 835 throw(::com::sun::star::uno::RuntimeException); 836 837 // XServiceInfo 838 virtual ::rtl::OUString SAL_CALL getImplementationName() 839 throw(::com::sun::star::uno::RuntimeException); 840 virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) 841 throw(::com::sun::star::uno::RuntimeException); 842 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() 843 throw(::com::sun::star::uno::RuntimeException); 844 845 private: 846 ScDataPilotFieldGroupObj& mrParent; 847 ::rtl::OUString maName; 848 }; 849 850 // ============================================================================ 851 852 typedef ::cppu::WeakImplHelper4 853 < 854 ::com::sun::star::container::XEnumerationAccess, 855 ::com::sun::star::container::XIndexAccess, 856 ::com::sun::star::container::XNameAccess, 857 ::com::sun::star::lang::XServiceInfo 858 > 859 ScDataPilotItemsObjImpl; 860 861 class ScDataPilotItemsObj : public ScDataPilotChildObjBase, public ScDataPilotItemsObjImpl 862 { 863 public: 864 explicit ScDataPilotItemsObj( ScDataPilotDescriptorBase& rParent, const ScFieldIdentifier& rFieldId ); 865 virtual ~ScDataPilotItemsObj(); 866 867 // XNameAccess 868 virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName ) 869 throw(::com::sun::star::container::NoSuchElementException, 870 ::com::sun::star::lang::WrappedTargetException, 871 ::com::sun::star::uno::RuntimeException); 872 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames() 873 throw(::com::sun::star::uno::RuntimeException); 874 virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName ) 875 throw(::com::sun::star::uno::RuntimeException); 876 877 // XIndexAccess 878 virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException); 879 virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index ) 880 throw(::com::sun::star::lang::IndexOutOfBoundsException, 881 ::com::sun::star::lang::WrappedTargetException, 882 ::com::sun::star::uno::RuntimeException); 883 884 // XEnumerationAccess 885 virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL 886 createEnumeration() throw(::com::sun::star::uno::RuntimeException); 887 888 // XElementAccess 889 virtual ::com::sun::star::uno::Type SAL_CALL getElementType() 890 throw(::com::sun::star::uno::RuntimeException); 891 virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException); 892 893 // XServiceInfo 894 virtual ::rtl::OUString SAL_CALL getImplementationName() 895 throw(::com::sun::star::uno::RuntimeException); 896 virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) 897 throw(::com::sun::star::uno::RuntimeException); 898 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() 899 throw(::com::sun::star::uno::RuntimeException); 900 901 private: 902 ScDataPilotItemObj* GetObjectByIndex_Impl( sal_Int32 nIndex ) const; 903 }; 904 905 // ============================================================================ 906 907 typedef ::cppu::WeakImplHelper3 908 < 909 ::com::sun::star::container::XNamed, 910 ::com::sun::star::beans::XPropertySet, 911 ::com::sun::star::lang::XServiceInfo 912 > 913 ScDataPilotItemObjImpl; 914 915 class ScDataPilotItemObj : public ScDataPilotChildObjBase, public ScDataPilotItemObjImpl 916 { 917 public: 918 explicit ScDataPilotItemObj( 919 ScDataPilotDescriptorBase& rParent, 920 const ScFieldIdentifier& rFieldId, 921 sal_Int32 nIndex ); 922 923 virtual ~ScDataPilotItemObj(); 924 925 // XNamed 926 virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException); 927 virtual void SAL_CALL setName( const ::rtl::OUString& aName ) 928 throw(::com::sun::star::uno::RuntimeException); 929 930 // XPropertySet 931 virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > 932 SAL_CALL getPropertySetInfo( ) 933 throw(::com::sun::star::uno::RuntimeException); 934 virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, 935 const ::com::sun::star::uno::Any& aValue ) 936 throw(::com::sun::star::beans::UnknownPropertyException, 937 ::com::sun::star::beans::PropertyVetoException, 938 ::com::sun::star::lang::IllegalArgumentException, 939 ::com::sun::star::lang::WrappedTargetException, 940 ::com::sun::star::uno::RuntimeException); 941 virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( 942 const ::rtl::OUString& PropertyName ) 943 throw(::com::sun::star::beans::UnknownPropertyException, 944 ::com::sun::star::lang::WrappedTargetException, 945 ::com::sun::star::uno::RuntimeException); 946 virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName, 947 const ::com::sun::star::uno::Reference< 948 ::com::sun::star::beans::XPropertyChangeListener >& xListener ) 949 throw(::com::sun::star::beans::UnknownPropertyException, 950 ::com::sun::star::lang::WrappedTargetException, 951 ::com::sun::star::uno::RuntimeException); 952 virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName, 953 const ::com::sun::star::uno::Reference< 954 ::com::sun::star::beans::XPropertyChangeListener >& aListener ) 955 throw(::com::sun::star::beans::UnknownPropertyException, 956 ::com::sun::star::lang::WrappedTargetException, 957 ::com::sun::star::uno::RuntimeException); 958 virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName, 959 const ::com::sun::star::uno::Reference< 960 ::com::sun::star::beans::XVetoableChangeListener >& aListener ) 961 throw(::com::sun::star::beans::UnknownPropertyException, 962 ::com::sun::star::lang::WrappedTargetException, 963 ::com::sun::star::uno::RuntimeException); 964 virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName, 965 const ::com::sun::star::uno::Reference< 966 ::com::sun::star::beans::XVetoableChangeListener >& aListener ) 967 throw(::com::sun::star::beans::UnknownPropertyException, 968 ::com::sun::star::lang::WrappedTargetException, 969 ::com::sun::star::uno::RuntimeException); 970 971 // XServiceInfo 972 virtual ::rtl::OUString SAL_CALL getImplementationName() 973 throw(::com::sun::star::uno::RuntimeException); 974 virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) 975 throw(::com::sun::star::uno::RuntimeException); 976 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() 977 throw(::com::sun::star::uno::RuntimeException); 978 979 private: 980 SfxItemPropertySet maPropSet; 981 sal_Int32 mnIndex; 982 }; 983 984 // ============================================================================ 985 986 #endif 987 988