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