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_DATAUNO_HXX 25 #define SC_DATAUNO_HXX 26 27 #include "global.hxx" 28 #include "queryparam.hxx" 29 30 #include <com/sun/star/sheet/TableFilterField.hpp> 31 #include <com/sun/star/sheet/GeneralFunction.hpp> 32 #include <com/sun/star/sheet/XCellRangeReferrer.hpp> 33 #include <com/sun/star/sheet/XSheetFilterDescriptor.hpp> 34 #include <com/sun/star/sheet/XConsolidationDescriptor.hpp> 35 #include <com/sun/star/sheet/XDatabaseRanges.hpp> 36 #include <com/sun/star/sheet/XDatabaseRange.hpp> 37 #include <com/sun/star/sheet/XSubTotalDescriptor.hpp> 38 #include <com/sun/star/sheet/XSubTotalField.hpp> 39 #include <com/sun/star/lang/XServiceInfo.hpp> 40 #include <com/sun/star/container/XEnumerationAccess.hpp> 41 #include <com/sun/star/container/XIndexAccess.hpp> 42 #include <com/sun/star/beans/XPropertySet.hpp> 43 #include <com/sun/star/lang/XUnoTunnel.hpp> 44 #include <com/sun/star/container/XNamed.hpp> 45 #include <com/sun/star/util/XRefreshable.hpp> 46 #include <com/sun/star/sheet/XSheetFilterDescriptor2.hpp> 47 #include <cppuhelper/implbase2.hxx> 48 #include <cppuhelper/implbase3.hxx> 49 #include <cppuhelper/implbase4.hxx> 50 #include <cppuhelper/implbase5.hxx> 51 #include <cppuhelper/implbase6.hxx> 52 #include "svl/itemprop.hxx" 53 #include "svl/lstner.hxx" 54 55 class ScDBData; 56 class ScDocShell; 57 58 class ScSubTotalFieldObj; 59 class ScDatabaseRangeObj; 60 class ScDataPilotDescriptorBase; 61 62 struct ScSortParam; 63 64 typedef ::com::sun::star::uno::Reference< 65 ::com::sun::star::util::XRefreshListener >* XDBRefreshListenerPtr; 66 SV_DECL_PTRARR_DEL( XDBRefreshListenerArr_Impl, XDBRefreshListenerPtr, 4, 4 ) 67 68 class ScDataUnoConversion 69 { 70 public: 71 static ScSubTotalFunc GeneralToSubTotal( com::sun::star::sheet::GeneralFunction eSummary ); 72 static com::sun::star::sheet::GeneralFunction SubTotalToGeneral( ScSubTotalFunc eSubTotal ); 73 }; 74 75 76 // ImportDescriptor gibt's nicht mehr als Uno-Objekt, nur noch Property-Sequence 77 78 class ScImportDescriptor 79 { 80 public: 81 static void FillImportParam( 82 ScImportParam& rParam, 83 const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& rSeq ); 84 static void FillProperties( 85 com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& rSeq, 86 const ScImportParam& rParam ); 87 static long GetPropertyCount(); 88 }; 89 90 // SortDescriptor gibt's nicht mehr als Uno-Objekt, nur noch Property-Sequence 91 92 class ScSortDescriptor 93 { 94 public: 95 static void FillSortParam( 96 ScSortParam& rParam, 97 const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& rSeq ); 98 static void FillProperties( 99 com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& rSeq, 100 const ScSortParam& rParam ); 101 static long GetPropertyCount(); 102 }; 103 104 105 // ScSubTotalDescriptorBase - Basisklasse fuer SubTotalDescriptor alleine und im DB-Bereich 106 107 // to uno, both look the same 108 109 class ScSubTotalDescriptorBase : public cppu::WeakImplHelper6< 110 com::sun::star::sheet::XSubTotalDescriptor, 111 com::sun::star::container::XEnumerationAccess, 112 com::sun::star::container::XIndexAccess, 113 com::sun::star::beans::XPropertySet, 114 com::sun::star::lang::XUnoTunnel, 115 com::sun::star::lang::XServiceInfo > 116 { 117 private: 118 SfxItemPropertySet aPropSet; 119 120 ScSubTotalFieldObj* GetObjectByIndex_Impl(sal_uInt16 nIndex); 121 122 public: 123 ScSubTotalDescriptorBase(); 124 virtual ~ScSubTotalDescriptorBase(); 125 126 // in derived classes: 127 // (Fields are within the range) 128 virtual void GetData( ScSubTotalParam& rParam ) const = 0; 129 virtual void PutData( const ScSubTotalParam& rParam ) = 0; 130 131 // XSubTotalDescriptor 132 virtual void SAL_CALL addNew( const ::com::sun::star::uno::Sequence< 133 ::com::sun::star::sheet::SubTotalColumn >& aSubTotalColumns, 134 sal_Int32 nGroupColumn ) 135 throw(::com::sun::star::uno::RuntimeException); 136 virtual void SAL_CALL clear() throw(::com::sun::star::uno::RuntimeException); 137 138 // XIndexAccess 139 virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException); 140 virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index ) 141 throw(::com::sun::star::lang::IndexOutOfBoundsException, 142 ::com::sun::star::lang::WrappedTargetException, 143 ::com::sun::star::uno::RuntimeException); 144 145 // XEnumerationAccess 146 virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL 147 createEnumeration() throw(::com::sun::star::uno::RuntimeException); 148 149 // XElementAccess 150 virtual ::com::sun::star::uno::Type SAL_CALL getElementType() 151 throw(::com::sun::star::uno::RuntimeException); 152 virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException); 153 154 // XPropertySet 155 virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > 156 SAL_CALL getPropertySetInfo() 157 throw(::com::sun::star::uno::RuntimeException); 158 virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, 159 const ::com::sun::star::uno::Any& aValue ) 160 throw(::com::sun::star::beans::UnknownPropertyException, 161 ::com::sun::star::beans::PropertyVetoException, 162 ::com::sun::star::lang::IllegalArgumentException, 163 ::com::sun::star::lang::WrappedTargetException, 164 ::com::sun::star::uno::RuntimeException); 165 virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( 166 const ::rtl::OUString& PropertyName ) 167 throw(::com::sun::star::beans::UnknownPropertyException, 168 ::com::sun::star::lang::WrappedTargetException, 169 ::com::sun::star::uno::RuntimeException); 170 virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName, 171 const ::com::sun::star::uno::Reference< 172 ::com::sun::star::beans::XPropertyChangeListener >& xListener ) 173 throw(::com::sun::star::beans::UnknownPropertyException, 174 ::com::sun::star::lang::WrappedTargetException, 175 ::com::sun::star::uno::RuntimeException); 176 virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName, 177 const ::com::sun::star::uno::Reference< 178 ::com::sun::star::beans::XPropertyChangeListener >& aListener ) 179 throw(::com::sun::star::beans::UnknownPropertyException, 180 ::com::sun::star::lang::WrappedTargetException, 181 ::com::sun::star::uno::RuntimeException); 182 virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName, 183 const ::com::sun::star::uno::Reference< 184 ::com::sun::star::beans::XVetoableChangeListener >& aListener ) 185 throw(::com::sun::star::beans::UnknownPropertyException, 186 ::com::sun::star::lang::WrappedTargetException, 187 ::com::sun::star::uno::RuntimeException); 188 virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName, 189 const ::com::sun::star::uno::Reference< 190 ::com::sun::star::beans::XVetoableChangeListener >& aListener ) 191 throw(::com::sun::star::beans::UnknownPropertyException, 192 ::com::sun::star::lang::WrappedTargetException, 193 ::com::sun::star::uno::RuntimeException); 194 195 // XUnoTunnel 196 virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< 197 sal_Int8 >& aIdentifier ) 198 throw(::com::sun::star::uno::RuntimeException); 199 200 static const com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId(); 201 static ScSubTotalDescriptorBase* getImplementation( const com::sun::star::uno::Reference< 202 com::sun::star::sheet::XSubTotalDescriptor> xObj ); 203 204 // XServiceInfo 205 virtual ::rtl::OUString SAL_CALL getImplementationName() 206 throw(::com::sun::star::uno::RuntimeException); 207 virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) 208 throw(::com::sun::star::uno::RuntimeException); 209 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() 210 throw(::com::sun::star::uno::RuntimeException); 211 }; 212 213 214 // ScSubTotalDescriptor - dummer Container zur Benutzung mit XImportTarget 215 216 class ScSubTotalDescriptor : public ScSubTotalDescriptorBase 217 { 218 private: 219 ScSubTotalParam aStoredParam; 220 221 public: 222 ScSubTotalDescriptor(); 223 virtual ~ScSubTotalDescriptor(); 224 225 // von ScSubTotalDescriptorBase: 226 virtual void GetData( ScSubTotalParam& rParam ) const; 227 virtual void PutData( const ScSubTotalParam& rParam ); 228 229 // Zugriff von aussen: 230 void SetParam( const ScSubTotalParam& rNew ); 231 // const ScSubTotalParam& GetParam() const { return aStoredParam; } 232 }; 233 234 235 // ScRangeSubTotalDescriptor - SubTotalDescriptor eines Datenbank-Bereichs 236 237 class ScRangeSubTotalDescriptor : public ScSubTotalDescriptorBase 238 { 239 private: 240 ScDatabaseRangeObj* pParent; 241 242 public: 243 ScRangeSubTotalDescriptor(ScDatabaseRangeObj* pPar); 244 virtual ~ScRangeSubTotalDescriptor(); 245 246 // von ScSubTotalDescriptorBase: 247 virtual void GetData( ScSubTotalParam& rParam ) const; 248 virtual void PutData( const ScSubTotalParam& rParam ); 249 }; 250 251 252 class ScSubTotalFieldObj : public cppu::WeakImplHelper2< 253 com::sun::star::sheet::XSubTotalField, 254 com::sun::star::lang::XServiceInfo > 255 { 256 private: 257 com::sun::star::uno::Reference<com::sun::star::sheet::XSubTotalDescriptor> xRef; 258 ScSubTotalDescriptorBase& rParent; 259 sal_uInt16 nPos; 260 261 public: 262 ScSubTotalFieldObj( ScSubTotalDescriptorBase* pDesc, sal_uInt16 nP ); 263 virtual ~ScSubTotalFieldObj(); 264 265 // XSubTotalField 266 virtual sal_Int32 SAL_CALL getGroupColumn() throw(::com::sun::star::uno::RuntimeException); 267 virtual void SAL_CALL setGroupColumn( sal_Int32 nGroupColumn ) 268 throw(::com::sun::star::uno::RuntimeException); 269 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::sheet::SubTotalColumn > SAL_CALL 270 getSubTotalColumns() throw(::com::sun::star::uno::RuntimeException); 271 virtual void SAL_CALL setSubTotalColumns( const ::com::sun::star::uno::Sequence< 272 ::com::sun::star::sheet::SubTotalColumn >& aSubTotalColumns ) 273 throw(::com::sun::star::uno::RuntimeException); 274 275 // XServiceInfo 276 virtual ::rtl::OUString SAL_CALL getImplementationName() 277 throw(::com::sun::star::uno::RuntimeException); 278 virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) 279 throw(::com::sun::star::uno::RuntimeException); 280 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() 281 throw(::com::sun::star::uno::RuntimeException); 282 }; 283 284 285 class ScConsolidationDescriptor : public cppu::WeakImplHelper2< 286 com::sun::star::sheet::XConsolidationDescriptor, 287 com::sun::star::lang::XServiceInfo > 288 { 289 private: 290 ScConsolidateParam aParam; 291 292 public: 293 ScConsolidationDescriptor(); 294 virtual ~ScConsolidationDescriptor(); 295 296 void SetParam( const ScConsolidateParam& rNew ); GetParam() const297 const ScConsolidateParam& GetParam() const { return aParam; } 298 299 // XConsolidationDescriptor 300 virtual ::com::sun::star::sheet::GeneralFunction SAL_CALL getFunction() 301 throw(::com::sun::star::uno::RuntimeException); 302 virtual void SAL_CALL setFunction( ::com::sun::star::sheet::GeneralFunction nFunction ) 303 throw(::com::sun::star::uno::RuntimeException); 304 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::table::CellRangeAddress > SAL_CALL 305 getSources( ) throw(::com::sun::star::uno::RuntimeException); 306 virtual void SAL_CALL setSources( const ::com::sun::star::uno::Sequence< 307 ::com::sun::star::table::CellRangeAddress >& aSources ) 308 throw(::com::sun::star::uno::RuntimeException); 309 virtual ::com::sun::star::table::CellAddress SAL_CALL getStartOutputPosition() 310 throw(::com::sun::star::uno::RuntimeException); 311 virtual void SAL_CALL setStartOutputPosition( 312 const ::com::sun::star::table::CellAddress& aStartOutputPosition ) 313 throw(::com::sun::star::uno::RuntimeException); 314 virtual sal_Bool SAL_CALL getUseColumnHeaders() throw(::com::sun::star::uno::RuntimeException); 315 virtual void SAL_CALL setUseColumnHeaders( sal_Bool bUseColumnHeaders ) 316 throw(::com::sun::star::uno::RuntimeException); 317 virtual sal_Bool SAL_CALL getUseRowHeaders() throw(::com::sun::star::uno::RuntimeException); 318 virtual void SAL_CALL setUseRowHeaders( sal_Bool bUseRowHeaders ) 319 throw(::com::sun::star::uno::RuntimeException); 320 virtual sal_Bool SAL_CALL getInsertLinks() throw(::com::sun::star::uno::RuntimeException); 321 virtual void SAL_CALL setInsertLinks( sal_Bool bInsertLinks ) 322 throw(::com::sun::star::uno::RuntimeException); 323 324 // XServiceInfo 325 virtual ::rtl::OUString SAL_CALL getImplementationName() 326 throw(::com::sun::star::uno::RuntimeException); 327 virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) 328 throw(::com::sun::star::uno::RuntimeException); 329 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() 330 throw(::com::sun::star::uno::RuntimeException); 331 }; 332 333 334 // ScFilterDescriptorBase - Basisklasse fuer FilterDescriptor 335 // alleine, im DB-Bereich und im DataPilot 336 337 // to uno, all three look the same 338 339 class ScFilterDescriptorBase : public cppu::WeakImplHelper4< 340 com::sun::star::sheet::XSheetFilterDescriptor, 341 com::sun::star::sheet::XSheetFilterDescriptor2, 342 com::sun::star::beans::XPropertySet, 343 com::sun::star::lang::XServiceInfo >, 344 public SfxListener 345 { 346 private: 347 SfxItemPropertySet aPropSet; 348 ScDocShell* pDocSh; 349 350 public: 351 ScFilterDescriptorBase(ScDocShell* pDocShell); 352 virtual ~ScFilterDescriptorBase(); 353 354 virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); 355 356 // in den Ableitungen: 357 // (nField[] hier innerhalb des Bereichs) 358 virtual void GetData( ScQueryParam& rParam ) const = 0; 359 virtual void PutData( const ScQueryParam& rParam ) = 0; 360 361 // XSheetFilterDescriptor 362 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::sheet::TableFilterField > SAL_CALL 363 getFilterFields() throw(::com::sun::star::uno::RuntimeException); 364 virtual void SAL_CALL setFilterFields( const ::com::sun::star::uno::Sequence< 365 ::com::sun::star::sheet::TableFilterField >& aFilterFields ) 366 throw(::com::sun::star::uno::RuntimeException); 367 368 // XSheetFilterDescriptor2 369 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::sheet::TableFilterField2 > SAL_CALL 370 getFilterFields2() throw(::com::sun::star::uno::RuntimeException); 371 virtual void SAL_CALL setFilterFields2( const ::com::sun::star::uno::Sequence< 372 ::com::sun::star::sheet::TableFilterField2 >& aFilterFields ) 373 throw(::com::sun::star::uno::RuntimeException); 374 375 // XPropertySet 376 virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > 377 SAL_CALL getPropertySetInfo() 378 throw(::com::sun::star::uno::RuntimeException); 379 virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, 380 const ::com::sun::star::uno::Any& aValue ) 381 throw(::com::sun::star::beans::UnknownPropertyException, 382 ::com::sun::star::beans::PropertyVetoException, 383 ::com::sun::star::lang::IllegalArgumentException, 384 ::com::sun::star::lang::WrappedTargetException, 385 ::com::sun::star::uno::RuntimeException); 386 virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( 387 const ::rtl::OUString& PropertyName ) 388 throw(::com::sun::star::beans::UnknownPropertyException, 389 ::com::sun::star::lang::WrappedTargetException, 390 ::com::sun::star::uno::RuntimeException); 391 virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName, 392 const ::com::sun::star::uno::Reference< 393 ::com::sun::star::beans::XPropertyChangeListener >& xListener ) 394 throw(::com::sun::star::beans::UnknownPropertyException, 395 ::com::sun::star::lang::WrappedTargetException, 396 ::com::sun::star::uno::RuntimeException); 397 virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName, 398 const ::com::sun::star::uno::Reference< 399 ::com::sun::star::beans::XPropertyChangeListener >& aListener ) 400 throw(::com::sun::star::beans::UnknownPropertyException, 401 ::com::sun::star::lang::WrappedTargetException, 402 ::com::sun::star::uno::RuntimeException); 403 virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName, 404 const ::com::sun::star::uno::Reference< 405 ::com::sun::star::beans::XVetoableChangeListener >& aListener ) 406 throw(::com::sun::star::beans::UnknownPropertyException, 407 ::com::sun::star::lang::WrappedTargetException, 408 ::com::sun::star::uno::RuntimeException); 409 virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName, 410 const ::com::sun::star::uno::Reference< 411 ::com::sun::star::beans::XVetoableChangeListener >& aListener ) 412 throw(::com::sun::star::beans::UnknownPropertyException, 413 ::com::sun::star::lang::WrappedTargetException, 414 ::com::sun::star::uno::RuntimeException); 415 416 // XServiceInfo 417 virtual ::rtl::OUString SAL_CALL getImplementationName() 418 throw(::com::sun::star::uno::RuntimeException); 419 virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) 420 throw(::com::sun::star::uno::RuntimeException); 421 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() 422 throw(::com::sun::star::uno::RuntimeException); 423 }; 424 425 426 // ScFilterDescriptor - dummer Container zur Benutzung mit XFilterable 427 428 class ScFilterDescriptor : public ScFilterDescriptorBase 429 { 430 private: 431 ScQueryParam aStoredParam; // nField[] hier innerhalb des Bereichs 432 433 public: 434 ScFilterDescriptor(ScDocShell* pDocSh); 435 virtual ~ScFilterDescriptor(); 436 437 // von ScFilterDescriptorBase: 438 virtual void GetData( ScQueryParam& rParam ) const; 439 virtual void PutData( const ScQueryParam& rParam ); 440 441 // Zugriff von aussen: 442 void SetParam( const ScQueryParam& rNew ); GetParam() const443 const ScQueryParam& GetParam() const { return aStoredParam; } 444 }; 445 446 447 // ScRangeFilterDescriptor - FilterDescriptor eines Datenbank-Bereichs 448 449 class ScRangeFilterDescriptor : public ScFilterDescriptorBase 450 { 451 private: 452 ScDatabaseRangeObj* pParent; 453 454 public: 455 ScRangeFilterDescriptor(ScDocShell* pDocSh, ScDatabaseRangeObj* pPar); 456 virtual ~ScRangeFilterDescriptor(); 457 458 // von ScFilterDescriptorBase: 459 virtual void GetData( ScQueryParam& rParam ) const; 460 virtual void PutData( const ScQueryParam& rParam ); 461 }; 462 463 464 // ScDataPilotFilterDescriptor - FilterDescriptor eines DataPilotDescriptors 465 466 class ScDataPilotFilterDescriptor : public ScFilterDescriptorBase 467 { 468 private: 469 ScDataPilotDescriptorBase* pParent; 470 471 public: 472 ScDataPilotFilterDescriptor(ScDocShell* pDocSh, ScDataPilotDescriptorBase* pPar); 473 virtual ~ScDataPilotFilterDescriptor(); 474 475 // von ScFilterDescriptorBase: 476 virtual void GetData( ScQueryParam& rParam ) const; 477 virtual void PutData( const ScQueryParam& rParam ); 478 }; 479 480 481 class ScDatabaseRangeObj : public cppu::WeakImplHelper6< 482 com::sun::star::sheet::XDatabaseRange, 483 com::sun::star::util::XRefreshable, 484 com::sun::star::container::XNamed, 485 com::sun::star::sheet::XCellRangeReferrer, 486 com::sun::star::beans::XPropertySet, 487 com::sun::star::lang::XServiceInfo >, 488 public SfxListener 489 { 490 private: 491 ScDocShell* pDocShell; 492 String aName; 493 SfxItemPropertySet aPropSet; 494 XDBRefreshListenerArr_Impl aRefreshListeners; 495 496 private: 497 ScDBData* GetDBData_Impl() const; 498 void Refreshed_Impl(); 499 500 public: 501 ScDatabaseRangeObj(ScDocShell* pDocSh, const String& rNm); 502 virtual ~ScDatabaseRangeObj(); 503 504 virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); 505 506 // nField[] hier innerhalb des Bereichs: 507 void GetQueryParam(ScQueryParam& rQueryParam) const; 508 void SetQueryParam(const ScQueryParam& rQueryParam); 509 void GetSubTotalParam(ScSubTotalParam& rSubTotalParam) const; 510 void SetSubTotalParam(const ScSubTotalParam& rSubTotalParam); 511 512 // XNamed 513 virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException); 514 virtual void SAL_CALL setName( const ::rtl::OUString& aName ) 515 throw(::com::sun::star::uno::RuntimeException); 516 517 // XDatabaseRange 518 virtual ::com::sun::star::table::CellRangeAddress SAL_CALL getDataArea() 519 throw(::com::sun::star::uno::RuntimeException); 520 virtual void SAL_CALL setDataArea( const ::com::sun::star::table::CellRangeAddress& aDataArea ) 521 throw(::com::sun::star::uno::RuntimeException); 522 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL 523 getSortDescriptor() throw(::com::sun::star::uno::RuntimeException); 524 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetFilterDescriptor > SAL_CALL 525 getFilterDescriptor() throw(::com::sun::star::uno::RuntimeException); 526 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSubTotalDescriptor > SAL_CALL 527 getSubTotalDescriptor() throw(::com::sun::star::uno::RuntimeException); 528 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL 529 getImportDescriptor() throw(::com::sun::star::uno::RuntimeException); 530 // implemented for the XRefreshable Interface 531 // virtual void SAL_CALL refresh() throw(::com::sun::star::uno::RuntimeException); 532 533 // XRefreshable 534 virtual void SAL_CALL refresh() throw(::com::sun::star::uno::RuntimeException); 535 virtual void SAL_CALL addRefreshListener( const ::com::sun::star::uno::Reference< 536 ::com::sun::star::util::XRefreshListener >& l ) 537 throw(::com::sun::star::uno::RuntimeException); 538 virtual void SAL_CALL removeRefreshListener( const ::com::sun::star::uno::Reference< 539 ::com::sun::star::util::XRefreshListener >& l ) 540 throw(::com::sun::star::uno::RuntimeException); 541 542 // XCellRangeReferrer 543 virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XCellRange > SAL_CALL 544 getReferredCells() throw(::com::sun::star::uno::RuntimeException); 545 546 // XPropertySet 547 virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > 548 SAL_CALL getPropertySetInfo() 549 throw(::com::sun::star::uno::RuntimeException); 550 virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, 551 const ::com::sun::star::uno::Any& aValue ) 552 throw(::com::sun::star::beans::UnknownPropertyException, 553 ::com::sun::star::beans::PropertyVetoException, 554 ::com::sun::star::lang::IllegalArgumentException, 555 ::com::sun::star::lang::WrappedTargetException, 556 ::com::sun::star::uno::RuntimeException); 557 virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( 558 const ::rtl::OUString& PropertyName ) 559 throw(::com::sun::star::beans::UnknownPropertyException, 560 ::com::sun::star::lang::WrappedTargetException, 561 ::com::sun::star::uno::RuntimeException); 562 virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName, 563 const ::com::sun::star::uno::Reference< 564 ::com::sun::star::beans::XPropertyChangeListener >& xListener ) 565 throw(::com::sun::star::beans::UnknownPropertyException, 566 ::com::sun::star::lang::WrappedTargetException, 567 ::com::sun::star::uno::RuntimeException); 568 virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName, 569 const ::com::sun::star::uno::Reference< 570 ::com::sun::star::beans::XPropertyChangeListener >& aListener ) 571 throw(::com::sun::star::beans::UnknownPropertyException, 572 ::com::sun::star::lang::WrappedTargetException, 573 ::com::sun::star::uno::RuntimeException); 574 virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName, 575 const ::com::sun::star::uno::Reference< 576 ::com::sun::star::beans::XVetoableChangeListener >& aListener ) 577 throw(::com::sun::star::beans::UnknownPropertyException, 578 ::com::sun::star::lang::WrappedTargetException, 579 ::com::sun::star::uno::RuntimeException); 580 virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName, 581 const ::com::sun::star::uno::Reference< 582 ::com::sun::star::beans::XVetoableChangeListener >& aListener ) 583 throw(::com::sun::star::beans::UnknownPropertyException, 584 ::com::sun::star::lang::WrappedTargetException, 585 ::com::sun::star::uno::RuntimeException); 586 587 // XServiceInfo 588 virtual ::rtl::OUString SAL_CALL getImplementationName() 589 throw(::com::sun::star::uno::RuntimeException); 590 virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) 591 throw(::com::sun::star::uno::RuntimeException); 592 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() 593 throw(::com::sun::star::uno::RuntimeException); 594 }; 595 596 597 class ScDatabaseRangesObj : public cppu::WeakImplHelper4< 598 com::sun::star::sheet::XDatabaseRanges, 599 com::sun::star::container::XEnumerationAccess, 600 com::sun::star::container::XIndexAccess, 601 com::sun::star::lang::XServiceInfo >, 602 public SfxListener 603 { 604 private: 605 ScDocShell* pDocShell; 606 607 ScDatabaseRangeObj* GetObjectByIndex_Impl(sal_uInt16 nIndex); 608 ScDatabaseRangeObj* GetObjectByName_Impl(const ::rtl::OUString& aName); 609 610 public: 611 ScDatabaseRangesObj(ScDocShell* pDocSh); 612 virtual ~ScDatabaseRangesObj(); 613 614 virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); 615 616 // XDatabaseRanges 617 virtual void SAL_CALL addNewByName( const ::rtl::OUString& aName, 618 const ::com::sun::star::table::CellRangeAddress& aRange ) 619 throw(::com::sun::star::uno::RuntimeException); 620 virtual void SAL_CALL removeByName( const ::rtl::OUString& aName ) 621 throw(::com::sun::star::uno::RuntimeException); 622 623 // XEnumerationAccess 624 virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL 625 createEnumeration() throw(::com::sun::star::uno::RuntimeException); 626 627 // XIndexAccess 628 virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException); 629 virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index ) 630 throw(::com::sun::star::lang::IndexOutOfBoundsException, 631 ::com::sun::star::lang::WrappedTargetException, 632 ::com::sun::star::uno::RuntimeException); 633 634 // XElementAccess 635 virtual ::com::sun::star::uno::Type SAL_CALL getElementType() 636 throw(::com::sun::star::uno::RuntimeException); 637 virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException); 638 639 // XNameAccess 640 virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName ) 641 throw(::com::sun::star::container::NoSuchElementException, 642 ::com::sun::star::lang::WrappedTargetException, 643 ::com::sun::star::uno::RuntimeException); 644 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames() 645 throw(::com::sun::star::uno::RuntimeException); 646 virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName ) 647 throw(::com::sun::star::uno::RuntimeException); 648 649 // XServiceInfo 650 virtual ::rtl::OUString SAL_CALL getImplementationName() 651 throw(::com::sun::star::uno::RuntimeException); 652 virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) 653 throw(::com::sun::star::uno::RuntimeException); 654 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() 655 throw(::com::sun::star::uno::RuntimeException); 656 }; 657 658 659 660 #endif 661 662