xref: /trunk/main/sc/inc/datauno.hxx (revision 91144cd0085a7583d2099b982122deb2184ab956)
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     virtual void SAL_CALL   clear();
136 
137                             // XIndexAccess
138     virtual sal_Int32 SAL_CALL getCount();
139     virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index );
140 
141                             // XEnumerationAccess
142     virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
143                             createEnumeration();
144 
145                             // XElementAccess
146     virtual ::com::sun::star::uno::Type SAL_CALL getElementType();
147     virtual sal_Bool SAL_CALL hasElements();
148 
149                             // XPropertySet
150     virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
151                             SAL_CALL getPropertySetInfo();
152     virtual void SAL_CALL   setPropertyValue( const ::rtl::OUString& aPropertyName,
153                                     const ::com::sun::star::uno::Any& aValue );
154     virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
155                                     const ::rtl::OUString& PropertyName );
156     virtual void SAL_CALL   addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
157                                     const ::com::sun::star::uno::Reference<
158                                         ::com::sun::star::beans::XPropertyChangeListener >& xListener );
159     virtual void SAL_CALL   removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
160                                     const ::com::sun::star::uno::Reference<
161                                         ::com::sun::star::beans::XPropertyChangeListener >& aListener );
162     virtual void SAL_CALL   addVetoableChangeListener( const ::rtl::OUString& PropertyName,
163                                     const ::com::sun::star::uno::Reference<
164                                         ::com::sun::star::beans::XVetoableChangeListener >& aListener );
165     virtual void SAL_CALL   removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
166                                     const ::com::sun::star::uno::Reference<
167                                         ::com::sun::star::beans::XVetoableChangeListener >& aListener );
168 
169                             // XUnoTunnel
170     virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence<
171                                     sal_Int8 >& aIdentifier );
172 
173     static const com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId();
174     static ScSubTotalDescriptorBase* getImplementation( const com::sun::star::uno::Reference<
175                                     com::sun::star::sheet::XSubTotalDescriptor> xObj );
176 
177                             // XServiceInfo
178     virtual ::rtl::OUString SAL_CALL getImplementationName();
179     virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName );
180     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames();
181 };
182 
183 
184 //  ScSubTotalDescriptor - dummer Container zur Benutzung mit XImportTarget
185 
186 class ScSubTotalDescriptor : public ScSubTotalDescriptorBase
187 {
188 private:
189     ScSubTotalParam         aStoredParam;
190 
191 public:
192                             ScSubTotalDescriptor();
193     virtual                 ~ScSubTotalDescriptor();
194 
195                             // von ScSubTotalDescriptorBase:
196     virtual void            GetData( ScSubTotalParam& rParam ) const;
197     virtual void            PutData( const ScSubTotalParam& rParam );
198 
199                             // Zugriff von aussen:
200     void                    SetParam( const ScSubTotalParam& rNew );
201 //  const ScSubTotalParam&  GetParam() const    { return aStoredParam; }
202 };
203 
204 
205 //  ScRangeSubTotalDescriptor - SubTotalDescriptor eines Datenbank-Bereichs
206 
207 class ScRangeSubTotalDescriptor : public ScSubTotalDescriptorBase
208 {
209 private:
210     ScDatabaseRangeObj*     pParent;
211 
212 public:
213                             ScRangeSubTotalDescriptor(ScDatabaseRangeObj* pPar);
214     virtual                 ~ScRangeSubTotalDescriptor();
215 
216                             // von ScSubTotalDescriptorBase:
217     virtual void            GetData( ScSubTotalParam& rParam ) const;
218     virtual void            PutData( const ScSubTotalParam& rParam );
219 };
220 
221 
222 class ScSubTotalFieldObj : public cppu::WeakImplHelper2<
223                                 com::sun::star::sheet::XSubTotalField,
224                                 com::sun::star::lang::XServiceInfo >
225 {
226 private:
227     com::sun::star::uno::Reference<com::sun::star::sheet::XSubTotalDescriptor> xRef;
228     ScSubTotalDescriptorBase&   rParent;
229     sal_uInt16                      nPos;
230 
231 public:
232                             ScSubTotalFieldObj( ScSubTotalDescriptorBase* pDesc, sal_uInt16 nP );
233     virtual                 ~ScSubTotalFieldObj();
234 
235                             // XSubTotalField
236     virtual sal_Int32 SAL_CALL getGroupColumn();
237     virtual void SAL_CALL   setGroupColumn( sal_Int32 nGroupColumn );
238     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::sheet::SubTotalColumn > SAL_CALL
239                             getSubTotalColumns();
240     virtual void SAL_CALL   setSubTotalColumns( const ::com::sun::star::uno::Sequence<
241                                 ::com::sun::star::sheet::SubTotalColumn >& aSubTotalColumns );
242 
243                             // XServiceInfo
244     virtual ::rtl::OUString SAL_CALL getImplementationName();
245     virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName );
246     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames();
247 };
248 
249 
250 class ScConsolidationDescriptor : public cppu::WeakImplHelper2<
251                                         com::sun::star::sheet::XConsolidationDescriptor,
252                                         com::sun::star::lang::XServiceInfo >
253 {
254 private:
255     ScConsolidateParam      aParam;
256 
257 public:
258                             ScConsolidationDescriptor();
259     virtual                 ~ScConsolidationDescriptor();
260 
261     void                    SetParam( const ScConsolidateParam& rNew );
GetParam() const262     const ScConsolidateParam& GetParam() const  { return aParam; }
263 
264                             // XConsolidationDescriptor
265     virtual ::com::sun::star::sheet::GeneralFunction SAL_CALL getFunction();
266     virtual void SAL_CALL   setFunction( ::com::sun::star::sheet::GeneralFunction nFunction );
267     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::table::CellRangeAddress > SAL_CALL
268                             getSources(  );
269     virtual void SAL_CALL   setSources( const ::com::sun::star::uno::Sequence<
270                                 ::com::sun::star::table::CellRangeAddress >& aSources );
271     virtual ::com::sun::star::table::CellAddress SAL_CALL getStartOutputPosition();
272     virtual void SAL_CALL   setStartOutputPosition(
273                                 const ::com::sun::star::table::CellAddress& aStartOutputPosition );
274     virtual sal_Bool SAL_CALL getUseColumnHeaders();
275     virtual void SAL_CALL   setUseColumnHeaders( sal_Bool bUseColumnHeaders );
276     virtual sal_Bool SAL_CALL getUseRowHeaders();
277     virtual void SAL_CALL   setUseRowHeaders( sal_Bool bUseRowHeaders );
278     virtual sal_Bool SAL_CALL getInsertLinks();
279     virtual void SAL_CALL   setInsertLinks( sal_Bool bInsertLinks );
280 
281                             // XServiceInfo
282     virtual ::rtl::OUString SAL_CALL getImplementationName();
283     virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName );
284     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames();
285 };
286 
287 
288 //  ScFilterDescriptorBase - Basisklasse fuer FilterDescriptor
289 //                           alleine, im DB-Bereich und im DataPilot
290 
291 //  to uno, all three look the same
292 
293 class ScFilterDescriptorBase : public cppu::WeakImplHelper4<
294                                     com::sun::star::sheet::XSheetFilterDescriptor,
295                                     com::sun::star::sheet::XSheetFilterDescriptor2,
296                                     com::sun::star::beans::XPropertySet,
297                                     com::sun::star::lang::XServiceInfo >,
298                                public SfxListener
299 {
300 private:
301     SfxItemPropertySet      aPropSet;
302     ScDocShell*             pDocSh;
303 
304 public:
305                             ScFilterDescriptorBase(ScDocShell* pDocShell);
306     virtual                 ~ScFilterDescriptorBase();
307 
308     virtual void            Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
309 
310                             // in den Ableitungen:
311                             // (nField[] hier innerhalb des Bereichs)
312     virtual void            GetData( ScQueryParam& rParam ) const = 0;
313     virtual void            PutData( const ScQueryParam& rParam ) = 0;
314 
315                             // XSheetFilterDescriptor
316     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::sheet::TableFilterField > SAL_CALL
317                             getFilterFields();
318     virtual void SAL_CALL   setFilterFields( const ::com::sun::star::uno::Sequence<
319                                 ::com::sun::star::sheet::TableFilterField >& aFilterFields );
320 
321                             // XSheetFilterDescriptor2
322     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::sheet::TableFilterField2 > SAL_CALL
323                             getFilterFields2();
324     virtual void SAL_CALL   setFilterFields2( const ::com::sun::star::uno::Sequence<
325                                 ::com::sun::star::sheet::TableFilterField2 >& aFilterFields );
326 
327                             // XPropertySet
328     virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
329                             SAL_CALL getPropertySetInfo();
330     virtual void SAL_CALL   setPropertyValue( const ::rtl::OUString& aPropertyName,
331                                     const ::com::sun::star::uno::Any& aValue );
332     virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
333                                     const ::rtl::OUString& PropertyName );
334     virtual void SAL_CALL   addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
335                                     const ::com::sun::star::uno::Reference<
336                                         ::com::sun::star::beans::XPropertyChangeListener >& xListener );
337     virtual void SAL_CALL   removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
338                                     const ::com::sun::star::uno::Reference<
339                                         ::com::sun::star::beans::XPropertyChangeListener >& aListener );
340     virtual void SAL_CALL   addVetoableChangeListener( const ::rtl::OUString& PropertyName,
341                                     const ::com::sun::star::uno::Reference<
342                                         ::com::sun::star::beans::XVetoableChangeListener >& aListener );
343     virtual void SAL_CALL   removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
344                                     const ::com::sun::star::uno::Reference<
345                                         ::com::sun::star::beans::XVetoableChangeListener >& aListener );
346 
347                             // XServiceInfo
348     virtual ::rtl::OUString SAL_CALL getImplementationName();
349     virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName );
350     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames();
351 };
352 
353 
354 //  ScFilterDescriptor - dummer Container zur Benutzung mit XFilterable
355 
356 class ScFilterDescriptor : public ScFilterDescriptorBase
357 {
358 private:
359     ScQueryParam            aStoredParam;       // nField[] hier innerhalb des Bereichs
360 
361 public:
362                             ScFilterDescriptor(ScDocShell* pDocSh);
363     virtual                 ~ScFilterDescriptor();
364 
365                             // von ScFilterDescriptorBase:
366     virtual void            GetData( ScQueryParam& rParam ) const;
367     virtual void            PutData( const ScQueryParam& rParam );
368 
369                             // Zugriff von aussen:
370     void                    SetParam( const ScQueryParam& rNew );
GetParam() const371     const ScQueryParam&     GetParam() const    { return aStoredParam; }
372 };
373 
374 
375 //  ScRangeFilterDescriptor - FilterDescriptor eines Datenbank-Bereichs
376 
377 class ScRangeFilterDescriptor : public ScFilterDescriptorBase
378 {
379 private:
380     ScDatabaseRangeObj*     pParent;
381 
382 public:
383                             ScRangeFilterDescriptor(ScDocShell* pDocSh, ScDatabaseRangeObj* pPar);
384     virtual                 ~ScRangeFilterDescriptor();
385 
386                             // von ScFilterDescriptorBase:
387     virtual void            GetData( ScQueryParam& rParam ) const;
388     virtual void            PutData( const ScQueryParam& rParam );
389 };
390 
391 
392 //  ScDataPilotFilterDescriptor - FilterDescriptor eines DataPilotDescriptors
393 
394 class ScDataPilotFilterDescriptor : public ScFilterDescriptorBase
395 {
396 private:
397     ScDataPilotDescriptorBase*  pParent;
398 
399 public:
400                             ScDataPilotFilterDescriptor(ScDocShell* pDocSh, ScDataPilotDescriptorBase* pPar);
401     virtual                 ~ScDataPilotFilterDescriptor();
402 
403                             // von ScFilterDescriptorBase:
404     virtual void            GetData( ScQueryParam& rParam ) const;
405     virtual void            PutData( const ScQueryParam& rParam );
406 };
407 
408 
409 class ScDatabaseRangeObj : public cppu::WeakImplHelper6<
410                                 com::sun::star::sheet::XDatabaseRange,
411                                 com::sun::star::util::XRefreshable,
412                                 com::sun::star::container::XNamed,
413                                 com::sun::star::sheet::XCellRangeReferrer,
414                                 com::sun::star::beans::XPropertySet,
415                                 com::sun::star::lang::XServiceInfo >,
416                            public SfxListener
417 {
418 private:
419     ScDocShell*             pDocShell;
420     String                  aName;
421     SfxItemPropertySet      aPropSet;
422     XDBRefreshListenerArr_Impl aRefreshListeners;
423 
424 private:
425     ScDBData*               GetDBData_Impl() const;
426     void                    Refreshed_Impl();
427 
428 public:
429                             ScDatabaseRangeObj(ScDocShell* pDocSh, const String& rNm);
430     virtual                 ~ScDatabaseRangeObj();
431 
432     virtual void            Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
433 
434                             // nField[] hier innerhalb des Bereichs:
435     void                    GetQueryParam(ScQueryParam& rQueryParam) const;
436     void                    SetQueryParam(const ScQueryParam& rQueryParam);
437     void                    GetSubTotalParam(ScSubTotalParam& rSubTotalParam) const;
438     void                    SetSubTotalParam(const ScSubTotalParam& rSubTotalParam);
439 
440                             // XNamed
441     virtual ::rtl::OUString SAL_CALL getName();
442     virtual void SAL_CALL   setName( const ::rtl::OUString& aName );
443 
444                             // XDatabaseRange
445     virtual ::com::sun::star::table::CellRangeAddress SAL_CALL getDataArea();
446     virtual void SAL_CALL   setDataArea( const ::com::sun::star::table::CellRangeAddress& aDataArea );
447     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL
448                             getSortDescriptor();
449     virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetFilterDescriptor > SAL_CALL
450                             getFilterDescriptor();
451     virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSubTotalDescriptor > SAL_CALL
452                             getSubTotalDescriptor();
453     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL
454                             getImportDescriptor();
455 // implemented for the XRefreshable Interface
456 //    virtual void SAL_CALL refresh() throw(::com::sun::star::uno::RuntimeException);
457 
458                             // XRefreshable
459     virtual void SAL_CALL   refresh();
460     virtual void SAL_CALL   addRefreshListener( const ::com::sun::star::uno::Reference<
461                                     ::com::sun::star::util::XRefreshListener >& l );
462     virtual void SAL_CALL   removeRefreshListener( const ::com::sun::star::uno::Reference<
463                                     ::com::sun::star::util::XRefreshListener >& l );
464 
465                             // XCellRangeReferrer
466     virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XCellRange > SAL_CALL
467                             getReferredCells();
468 
469                             // XPropertySet
470     virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
471                             SAL_CALL getPropertySetInfo();
472     virtual void SAL_CALL   setPropertyValue( const ::rtl::OUString& aPropertyName,
473                                     const ::com::sun::star::uno::Any& aValue );
474     virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
475                                     const ::rtl::OUString& PropertyName );
476     virtual void SAL_CALL   addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
477                                     const ::com::sun::star::uno::Reference<
478                                         ::com::sun::star::beans::XPropertyChangeListener >& xListener );
479     virtual void SAL_CALL   removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
480                                     const ::com::sun::star::uno::Reference<
481                                         ::com::sun::star::beans::XPropertyChangeListener >& aListener );
482     virtual void SAL_CALL   addVetoableChangeListener( const ::rtl::OUString& PropertyName,
483                                     const ::com::sun::star::uno::Reference<
484                                         ::com::sun::star::beans::XVetoableChangeListener >& aListener );
485     virtual void SAL_CALL   removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
486                                     const ::com::sun::star::uno::Reference<
487                                         ::com::sun::star::beans::XVetoableChangeListener >& aListener );
488 
489                             // XServiceInfo
490     virtual ::rtl::OUString SAL_CALL getImplementationName();
491     virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName );
492     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames();
493 };
494 
495 
496 class ScDatabaseRangesObj : public cppu::WeakImplHelper4<
497                                 com::sun::star::sheet::XDatabaseRanges,
498                                 com::sun::star::container::XEnumerationAccess,
499                                 com::sun::star::container::XIndexAccess,
500                                 com::sun::star::lang::XServiceInfo >,
501                             public SfxListener
502 {
503 private:
504     ScDocShell*             pDocShell;
505 
506     ScDatabaseRangeObj*     GetObjectByIndex_Impl(sal_uInt16 nIndex);
507     ScDatabaseRangeObj*     GetObjectByName_Impl(const ::rtl::OUString& aName);
508 
509 public:
510                             ScDatabaseRangesObj(ScDocShell* pDocSh);
511     virtual                 ~ScDatabaseRangesObj();
512 
513     virtual void            Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
514 
515                             // XDatabaseRanges
516     virtual void SAL_CALL   addNewByName( const ::rtl::OUString& aName,
517                                 const ::com::sun::star::table::CellRangeAddress& aRange );
518     virtual void SAL_CALL   removeByName( const ::rtl::OUString& aName );
519 
520                             // XEnumerationAccess
521     virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
522                             createEnumeration();
523 
524                             // XIndexAccess
525     virtual sal_Int32 SAL_CALL getCount();
526     virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index );
527 
528                             // XElementAccess
529     virtual ::com::sun::star::uno::Type SAL_CALL getElementType();
530     virtual sal_Bool SAL_CALL hasElements();
531 
532                             // XNameAccess
533     virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName );
534     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames();
535     virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName );
536 
537                             // XServiceInfo
538     virtual ::rtl::OUString SAL_CALL getImplementationName();
539     virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName );
540     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames();
541 };
542 
543 
544 
545 #endif
546