1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
22 #include "address.hxx"
23 #include "rangelst.hxx"
25 #include <formula/grammar.hxx>
26 #include <rtl/ref.hxx>
27 #include <sal/types.h>
28 #include <tools/link.hxx>
29 #include <svl/itemset.hxx>
30 #include <svl/lstner.hxx>
31 #include <svl/listener.hxx>
32 #include <com/sun/star/table/XTableChartsSupplier.hpp>
33 #include <com/sun/star/table/XTablePivotChartsSupplier.hpp>
34 #include <com/sun/star/chart/XChartDataArray.hpp>
35 #include <com/sun/star/text/XTextFieldsSupplier.hpp>
36 #include <com/sun/star/drawing/XDrawPageSupplier.hpp>
37 #include <com/sun/star/sheet/XSheetCellRange.hpp>
38 #include <com/sun/star/sheet/XFormulaQuery.hpp>
39 #include <com/sun/star/sheet/XCellRangeAddressable.hpp>
40 #include <com/sun/star/sheet/XSheetOperation.hpp>
41 #include <com/sun/star/sheet/XSheetCellRangeContainer.hpp>
42 #include <com/sun/star/sheet/XCellFormatRangesSupplier.hpp>
43 #include <com/sun/star/sheet/XUniqueCellFormatRangesSupplier.hpp>
44 #include <com/sun/star/sheet/XCellRangesQuery.hpp>
45 #include <com/sun/star/sheet/XSheetFilterableEx.hpp>
46 #include <com/sun/star/sheet/XSpreadsheet.hpp>
47 #include <com/sun/star/sheet/XSheetPageBreak.hpp>
48 #include <com/sun/star/sheet/XCellRangeMovement.hpp>
49 #include <com/sun/star/text/XText.hpp>
50 #include <com/sun/star/sheet/XPrintAreas.hpp>
51 #include <com/sun/star/sheet/XSheetLinkable.hpp>
52 #include <com/sun/star/sheet/XSubTotalCalculatable.hpp>
53 #include <com/sun/star/sheet/XArrayFormulaRange.hpp>
54 #include <com/sun/star/sheet/XCellRangeData.hpp>
55 #include <com/sun/star/sheet/XCellRangeFormula.hpp>
56 #include <com/sun/star/sheet/XCellSeries.hpp>
57 #include <com/sun/star/sheet/XMultipleOperation.hpp>
58 #include <com/sun/star/sheet/XFormulaTokens.hpp>
59 #include <com/sun/star/sheet/XArrayFormulaTokens.hpp>
60 #include <com/sun/star/sheet/XCellAddressable.hpp>
61 #include <com/sun/star/util/XReplaceable.hpp>
62 #include <com/sun/star/util/XIndent.hpp>
63 #include <com/sun/star/lang/XServiceInfo.hpp>
64 #include <com/sun/star/container/XNameContainer.hpp>
65 #include <com/sun/star/util/XMergeable.hpp>
66 #include <com/sun/star/table/XAutoFormattable.hpp>
67 #include <com/sun/star/util/XSortable.hpp>
68 #include <com/sun/star/util/XImportable.hpp>
69 #include <com/sun/star/table/XColumnRowRange.hpp>
70 #include <com/sun/star/table/XCell2.hpp>
71 #include <com/sun/star/sheet/XDataPilotTablesSupplier.hpp>
72 #include <com/sun/star/sheet/XSheetAnnotationAnchor.hpp>
73 #include <com/sun/star/sheet/XScenariosSupplier.hpp>
74 #include <com/sun/star/sheet/XSheetAnnotationsSupplier.hpp>
75 #include <com/sun/star/sheet/XSheetAuditing.hpp>
76 #include <com/sun/star/sheet/XSheetOutline.hpp>
77 #include <com/sun/star/util/XProtectable.hpp>
78 #include <com/sun/star/sheet/XScenario.hpp>
79 #include <com/sun/star/sheet/XScenarioEnhanced.hpp>
80 #include <com/sun/star/util/XModifyBroadcaster.hpp>
81 #include <com/sun/star/beans/XPropertyState.hpp>
82 #include <com/sun/star/beans/XMultiPropertySet.hpp>
83 #include <com/sun/star/lang/XUnoTunnel.hpp>
84 #include <com/sun/star/document/XActionLockable.hpp>
85 #include <com/sun/star/beans/XTolerantMultiPropertySet.hpp>
86 #include <com/sun/star/sheet/XExternalSheetName.hpp>
87 #include <com/sun/star/document/XEventsSupplier.hpp>
88 #include <comphelper/servicehelper.hxx>
89 #include <cppuhelper/implbase.hxx>
90 #include <cppuhelper/weakref.hxx>
96 namespace com::sun::star::table
{ struct BorderLine2
; }
97 namespace com::sun::star::table
{ struct BorderLine
; }
98 namespace com::sun::star::table
{ struct TableBorder2
; }
99 namespace com::sun::star::table
{ struct TableBorder
; }
104 class ScPrintRangeSaver
;
105 class ScAttrRectIterator
;
106 class ScCellRangeObj
;
109 class SvxBoxInfoItem
;
110 class SvxItemPropertySet
;
113 class SfxBroadcaster
;
115 class SfxItemPropertyMap
;
116 class SfxItemPropertySet
;
117 struct SfxItemPropertyMapEntry
;
119 namespace editeng
{ class SvxBorderLine
; }
121 class ScLinkListener final
: public SvtListener
123 Link
<const SfxHint
&,void> aLink
;
125 ScLinkListener(const Link
<const SfxHint
&,void>& rL
) : aLink(rL
) {}
126 virtual ~ScLinkListener() override
;
127 virtual void Notify( const SfxHint
& rHint
) override
;
130 typedef std::vector
< css::uno::Reference
< css::util::XModifyListener
> > XModifyListenerArr_Impl
;
132 // ScCellRangesBase - base class for ScCellRangesObj (with access by index)
133 // and ScCellRangeObj (without access by index)
135 // XServiceInfo is implemented in derived classes
137 class ScHelperFunctions
140 static const ::editeng::SvxBorderLine
* GetBorderLine( ::editeng::SvxBorderLine
& rLine
, const css::table::BorderLine
& rStruct
);
141 static const ::editeng::SvxBorderLine
* GetBorderLine( ::editeng::SvxBorderLine
& rLine
, const css::table::BorderLine2
& rStruct
);
142 static void FillBoxItems( SvxBoxItem
& rOuter
, SvxBoxInfoItem
& rInner
, const css::table::TableBorder
& rBorder
);
143 static void FillBoxItems( SvxBoxItem
& rOuter
, SvxBoxInfoItem
& rInner
, const css::table::TableBorder2
& rBorder
);
144 static void FillBorderLine( css::table::BorderLine
& rStruct
, const ::editeng::SvxBorderLine
* pLine
);
145 static void FillBorderLine( css::table::BorderLine2
& rStruct
, const ::editeng::SvxBorderLine
* pLine
);
146 static void AssignTableBorderToAny( css::uno::Any
& rAny
,
147 const SvxBoxItem
& rOuter
, const SvxBoxInfoItem
& rInner
, bool bInvalidateHorVerDist
= false );
148 static void AssignTableBorder2ToAny( css::uno::Any
& rAny
,
149 const SvxBoxItem
& rOuter
, const SvxBoxInfoItem
& rInner
, bool bInvalidateHorVerDist
= false );
150 static void ApplyBorder( ScDocShell
* pDocShell
, const ScRangeList
& rRanges
,
151 const SvxBoxItem
& rOuter
, const SvxBoxInfoItem
& rInner
);
154 namespace ooo::vba::excel
{
155 class ScVbaCellRangeAccess
; // Vba Helper class
158 class SC_DLLPUBLIC ScCellRangesBase
:
159 public cppu::WeakImplHelper
<
160 css::beans::XPropertySet
,
161 css::beans::XMultiPropertySet
,
162 css::beans::XPropertyState
,
163 css::sheet::XSheetOperation
,
164 css::chart::XChartDataArray
,
166 css::sheet::XCellRangesQuery
,
167 css::sheet::XFormulaQuery
,
168 css::util::XReplaceable
,
169 css::util::XModifyBroadcaster
,
170 css::lang::XServiceInfo
,
171 css::lang::XUnoTunnel
,
172 css::beans::XTolerantMultiPropertySet
>,
175 friend class ScTabViewObj
; // for select()
176 friend class ScTableSheetObj
; // for createCursorByRange()
177 friend class ooo::vba::excel::ScVbaCellRangeAccess
;
180 const SfxItemPropertySet
* pPropSet
;
181 ScDocShell
* pDocShell
;
182 std::unique_ptr
<ScLinkListener
> pValueListener
;
183 std::unique_ptr
<ScPatternAttr
> pCurrentFlat
;
184 std::unique_ptr
<ScPatternAttr
> pCurrentDeep
;
185 std::optional
<SfxItemSet
> moCurrentDataSet
;
186 std::optional
<SfxItemSet
> moNoDfltCurrentDataSet
;
187 std::unique_ptr
<ScMarkData
> pMarkData
;
193 bool bGotDataChangedHint
;
194 XModifyListenerArr_Impl aValueListeners
;
196 DECL_DLLPRIVATE_LINK( ValueListenerHdl
, const SfxHint
&, void );
199 void PaintGridRanges_Impl();
200 ScRangeListRef
GetLimitedChartRanges_Impl( sal_Int32 nDataColumns
, sal_Int32 nDataRows
) const;
201 void ForceChartListener_Impl();
202 std::unique_ptr
<ScMemChart
> CreateMemChart_Impl() const;
204 const ScPatternAttr
* GetCurrentAttrsFlat();
205 const ScPatternAttr
* GetCurrentAttrsDeep();
206 SfxItemSet
* GetCurrentDataSet(bool bNoDflt
= false);
207 void ForgetMarkData();
208 void ForgetCurrentAttrs();
210 css::uno::Reference
<css::sheet::XSheetCellRanges
>
211 QueryDifferences_Impl(const css::table::CellAddress
& aCompare
,
213 css::uno::Reference
<css::uno::XInterface
>
214 Find_Impl(const css::uno::Reference
<css::util::XSearchDescriptor
>& xDesc
,
215 const ScAddress
* pLastPos
);
218 const ScMarkData
* GetMarkData();
220 // GetItemPropertyMap for derived classes must contain all entries, including base class
221 virtual const SfxItemPropertyMap
& GetItemPropertyMap();
222 css::beans::PropertyState
GetOnePropertyState(
223 sal_uInt16 nItemWhich
, const SfxItemPropertyMapEntry
* pEntry
);
224 /// @throws css::uno::RuntimeException
225 virtual void GetOnePropertyValue( const SfxItemPropertyMapEntry
* pEntry
,
227 /// @throws css::lang::IllegalArgumentException
228 /// @throws css::uno::RuntimeException
229 virtual void SetOnePropertyValue( const SfxItemPropertyMapEntry
* pEntry
,
230 const css::uno::Any
& aValue
);
233 ScCellRangesBase(ScDocShell
* pDocSh
, const ScRange
& rR
);
234 ScCellRangesBase(ScDocShell
* pDocSh
, const ScRangeList
& rR
);
235 virtual ~ScCellRangesBase() override
;
237 virtual void Notify( SfxBroadcaster
& rBC
, const SfxHint
& rHint
) override
;
238 virtual void RefChanged();
240 // from derived classes and by getImplementation
241 ScDocShell
* GetDocShell() const { return pDocShell
; }
242 ScDocument
* GetDocument() const;
243 const ScRangeList
& GetRangeList() const { return aRanges
; }
244 void AddRange(const ScRange
& rRange
, const bool bMergeRanges
);
246 // arouse object created via service:
247 void InitInsertRange(ScDocShell
* pDocSh
, const ScRange
& rR
);
249 void SetNewRange(const ScRange
& rNew
); // for cursor
250 void SetNewRanges(const ScRangeList
& rNew
);
252 void SetCursorOnly(bool bSet
);
253 bool IsCursorOnly() const { return bCursorOnly
; }
256 virtual double SAL_CALL
computeFunction( css::sheet::GeneralFunction nFunction
) override
;
257 virtual void SAL_CALL
clearContents( sal_Int32 nContentFlags
) override
;
260 virtual css::uno::Reference
< css::beans::XPropertySetInfo
>
261 SAL_CALL
getPropertySetInfo() override
;
262 virtual void SAL_CALL
setPropertyValue( const OUString
& aPropertyName
,
263 const css::uno::Any
& aValue
) override
;
264 virtual css::uno::Any SAL_CALL
getPropertyValue(
265 const OUString
& PropertyName
) override
;
266 virtual void SAL_CALL
addPropertyChangeListener( const OUString
& aPropertyName
,
267 const css::uno::Reference
< css::beans::XPropertyChangeListener
>& xListener
) override
;
268 virtual void SAL_CALL
removePropertyChangeListener( const OUString
& aPropertyName
,
269 const css::uno::Reference
< css::beans::XPropertyChangeListener
>& aListener
) override
;
270 virtual void SAL_CALL
addVetoableChangeListener( const OUString
& PropertyName
,
271 const css::uno::Reference
< css::beans::XVetoableChangeListener
>& aListener
) override
;
272 virtual void SAL_CALL
removeVetoableChangeListener( const OUString
& PropertyName
,
273 const css::uno::Reference
< css::beans::XVetoableChangeListener
>& aListener
) override
;
276 virtual void SAL_CALL
setPropertyValues( const css::uno::Sequence
< OUString
>& aPropertyNames
,
277 const css::uno::Sequence
< css::uno::Any
>& aValues
) override
;
278 virtual css::uno::Sequence
< css::uno::Any
> SAL_CALL
279 getPropertyValues( const css::uno::Sequence
< OUString
>& aPropertyNames
) override
;
280 virtual void SAL_CALL
addPropertiesChangeListener( const css::uno::Sequence
< OUString
>& aPropertyNames
,
281 const css::uno::Reference
< css::beans::XPropertiesChangeListener
>& xListener
) override
;
282 virtual void SAL_CALL
removePropertiesChangeListener( const css::uno::Reference
< css::beans::XPropertiesChangeListener
>& xListener
) override
;
283 virtual void SAL_CALL
firePropertiesChangeEvent( const css::uno::Sequence
< OUString
>& aPropertyNames
,
284 const css::uno::Reference
< css::beans::XPropertiesChangeListener
>& xListener
) override
;
286 // XTolerantMultiPropertySet
287 virtual css::uno::Sequence
< css::beans::SetPropertyTolerantFailed
> SAL_CALL
288 setPropertyValuesTolerant( const css::uno::Sequence
< OUString
>& aPropertyNames
,
289 const css::uno::Sequence
< css::uno::Any
>& aValues
) override
;
290 virtual css::uno::Sequence
< css::beans::GetPropertyTolerantResult
> SAL_CALL
291 getPropertyValuesTolerant( const css::uno::Sequence
< OUString
>& aPropertyNames
) override
;
292 virtual css::uno::Sequence
< css::beans::GetDirectPropertyTolerantResult
> SAL_CALL
293 getDirectPropertyValuesTolerant( const css::uno::Sequence
< OUString
>& aPropertyNames
) override
;
296 virtual css::beans::PropertyState SAL_CALL
getPropertyState(
297 const OUString
& PropertyName
) override
;
298 virtual css::uno::Sequence
< css::beans::PropertyState
> SAL_CALL
299 getPropertyStates( const css::uno::Sequence
<
300 OUString
>& aPropertyName
) override
;
301 virtual void SAL_CALL
setPropertyToDefault( const OUString
& PropertyName
) override
;
302 virtual css::uno::Any SAL_CALL
getPropertyDefault(
303 const OUString
& aPropertyName
) override
;
306 virtual void SAL_CALL
decrementIndent() override
;
307 virtual void SAL_CALL
incrementIndent() override
;
310 virtual void SAL_CALL
addChartDataChangeEventListener(
311 const css::uno::Reference
< css::chart::XChartDataChangeEventListener
>& aListener
) override
;
312 virtual void SAL_CALL
removeChartDataChangeEventListener( const css::uno::Reference
<
313 css::chart::XChartDataChangeEventListener
>& aListener
) override
;
314 virtual double SAL_CALL
getNotANumber() override
;
315 virtual sal_Bool SAL_CALL
isNotANumber( double nNumber
) override
;
318 virtual css::uno::Sequence
< css::uno::Sequence
< double > > SAL_CALL
320 virtual void SAL_CALL
setData( const css::uno::Sequence
< css::uno::Sequence
< double > >& aData
) override
;
321 virtual css::uno::Sequence
< OUString
> SAL_CALL
getRowDescriptions() override
;
322 virtual void SAL_CALL
setRowDescriptions( const css::uno::Sequence
< OUString
>& aRowDescriptions
) override
;
323 virtual css::uno::Sequence
< OUString
> SAL_CALL
getColumnDescriptions() override
;
324 virtual void SAL_CALL
setColumnDescriptions( const css::uno::Sequence
< OUString
>& aColumnDescriptions
) override
;
327 virtual css::uno::Reference
< css::sheet::XSheetCellRanges
> SAL_CALL
328 queryVisibleCells() override
;
329 virtual css::uno::Reference
< css::sheet::XSheetCellRanges
> SAL_CALL
330 queryEmptyCells() override
;
331 virtual css::uno::Reference
< css::sheet::XSheetCellRanges
> SAL_CALL
332 queryContentCells( sal_Int16 nContentFlags
) override
;
333 virtual css::uno::Reference
< css::sheet::XSheetCellRanges
> SAL_CALL
334 queryFormulaCells( sal_Int32 nResultFlags
) override
;
335 virtual css::uno::Reference
< css::sheet::XSheetCellRanges
> SAL_CALL
336 queryColumnDifferences(
337 const css::table::CellAddress
& aCompare
) override
;
338 virtual css::uno::Reference
< css::sheet::XSheetCellRanges
> SAL_CALL
340 const css::table::CellAddress
& aCompare
) override
;
341 virtual css::uno::Reference
< css::sheet::XSheetCellRanges
> SAL_CALL
343 const css::table::CellRangeAddress
& aRange
) override
;
346 virtual css::uno::Reference
< css::sheet::XSheetCellRanges
> SAL_CALL
347 queryDependents( sal_Bool bRecursive
) override
;
348 virtual css::uno::Reference
< css::sheet::XSheetCellRanges
> SAL_CALL
349 queryPrecedents( sal_Bool bRecursive
) override
;
352 virtual css::uno::Reference
< css::util::XSearchDescriptor
> SAL_CALL
353 createSearchDescriptor() override
;
354 virtual css::uno::Reference
< css::container::XIndexAccess
> SAL_CALL
355 findAll( const css::uno::Reference
< css::util::XSearchDescriptor
>& xDesc
) override
;
356 virtual css::uno::Reference
< css::uno::XInterface
> SAL_CALL
357 findFirst( const css::uno::Reference
< css::util::XSearchDescriptor
>& xDesc
) override
;
358 virtual css::uno::Reference
< css::uno::XInterface
> SAL_CALL
359 findNext( const css::uno::Reference
< css::uno::XInterface
>& xStartAt
,
360 const css::uno::Reference
< css::util::XSearchDescriptor
>& xDesc
) override
;
363 virtual css::uno::Reference
< css::util::XReplaceDescriptor
> SAL_CALL
364 createReplaceDescriptor() override
;
365 virtual sal_Int32 SAL_CALL
replaceAll( const css::uno::Reference
< css::util::XSearchDescriptor
>& xDesc
) override
;
367 // XModifyBroadcaster
368 virtual void SAL_CALL
addModifyListener( const css::uno::Reference
< css::util::XModifyListener
>& aListener
) override
;
369 virtual void SAL_CALL
removeModifyListener( const css::uno::Reference
< css::util::XModifyListener
>& aListener
) override
;
372 virtual OUString SAL_CALL
getImplementationName() override
;
373 virtual sal_Bool SAL_CALL
supportsService( const OUString
& ServiceName
) override
;
374 virtual css::uno::Sequence
< OUString
> SAL_CALL
getSupportedServiceNames() override
;
377 UNO3_GETIMPLEMENTATION_DECL(ScCellRangesBase
)
380 class SC_DLLPUBLIC ScCellRangesObj final
: public ScCellRangesBase
,
381 public css::sheet::XSheetCellRangeContainer
,
382 public css::container::XNameContainer
,
383 public css::container::XEnumerationAccess
390 const OUString
& GetName() const { return aName
; }
391 const ScRange
& GetRange() const { return aRange
; }
394 std::vector
<ScNamedEntry
> m_aNamedEntries
;
396 rtl::Reference
<ScCellRangeObj
> GetObjectByIndex_Impl(sal_Int32 nIndex
) const;
399 ScCellRangesObj(ScDocShell
* pDocSh
, const ScRangeList
& rR
);
400 virtual ~ScCellRangesObj() override
;
402 virtual css::uno::Any SAL_CALL
queryInterface( const css::uno::Type
& rType
) override
;
403 virtual void SAL_CALL
acquire() noexcept override
;
404 virtual void SAL_CALL
release() noexcept override
;
406 virtual void RefChanged() override
;
409 virtual css::uno::Reference
< css::container::XEnumerationAccess
> SAL_CALL
411 virtual OUString SAL_CALL
getRangeAddressesAsString() override
;
412 virtual css::uno::Sequence
< css::table::CellRangeAddress
> SAL_CALL
413 getRangeAddresses() override
;
415 // XSheetCellRangeContainer
416 virtual void SAL_CALL
addRangeAddress( const css::table::CellRangeAddress
& rRange
,
417 sal_Bool bMergeRanges
) override
;
418 virtual void SAL_CALL
removeRangeAddress( const css::table::CellRangeAddress
& rRange
) override
;
419 virtual void SAL_CALL
addRangeAddresses( const css::uno::Sequence
<
420 css::table::CellRangeAddress
>& rRanges
,
421 sal_Bool bMergeRanges
) override
;
422 virtual void SAL_CALL
removeRangeAddresses( const css::uno::Sequence
<
423 css::table::CellRangeAddress
>& rRanges
) override
;
426 virtual void SAL_CALL
insertByName( const OUString
& aName
,
427 const css::uno::Any
& aElement
) override
;
428 virtual void SAL_CALL
removeByName( const OUString
& Name
) override
;
431 virtual void SAL_CALL
replaceByName( const OUString
& aName
,
432 const css::uno::Any
& aElement
) override
;
435 virtual css::uno::Any SAL_CALL
getByName( const OUString
& aName
) override
;
436 virtual css::uno::Sequence
< OUString
> SAL_CALL
getElementNames() override
;
437 virtual sal_Bool SAL_CALL
hasByName( const OUString
& aName
) override
;
440 virtual sal_Int32 SAL_CALL
getCount() override
;
441 virtual css::uno::Any SAL_CALL
getByIndex( sal_Int32 Index
) override
;
444 virtual css::uno::Type SAL_CALL
getElementType() override
;
445 virtual sal_Bool SAL_CALL
hasElements() override
;
447 // XEnumerationAccess
448 virtual css::uno::Reference
< css::container::XEnumeration
> SAL_CALL
449 createEnumeration() override
;
452 virtual OUString SAL_CALL
getImplementationName() override
;
453 virtual sal_Bool SAL_CALL
supportsService( const OUString
& ServiceName
) override
;
454 virtual css::uno::Sequence
< OUString
> SAL_CALL
getSupportedServiceNames() override
;
457 virtual css::uno::Sequence
< css::uno::Type
> SAL_CALL
getTypes() override
;
458 virtual css::uno::Sequence
< sal_Int8
> SAL_CALL
getImplementationId() override
;
461 class SC_DLLPUBLIC ScCellRangeObj
: public ScCellRangesBase
,
462 public css::sheet::XCellRangeAddressable
,
463 public css::sheet::XSheetCellRange
,
464 public css::sheet::XArrayFormulaRange
,
465 public css::sheet::XArrayFormulaTokens
,
466 public css::sheet::XCellRangeData
,
467 public css::sheet::XCellRangeFormula
,
468 public css::sheet::XMultipleOperation
,
469 public css::util::XMergeable
,
470 public css::sheet::XCellSeries
,
471 public css::table::XAutoFormattable
,
472 public css::util::XSortable
,
473 public css::sheet::XSheetFilterableEx
,
474 public css::sheet::XSubTotalCalculatable
,
475 public css::util::XImportable
,
476 public css::sheet::XCellFormatRangesSupplier
,
477 public css::sheet::XUniqueCellFormatRangesSupplier
,
478 public css::table::XColumnRowRange
481 const SfxItemPropertySet
* pRangePropSet
;
485 const ScRange
& GetRange() const { return aRange
; }
486 virtual const SfxItemPropertyMap
& GetItemPropertyMap() override
;
487 virtual void GetOnePropertyValue( const SfxItemPropertyMapEntry
* pEntry
,
488 css::uno::Any
& ) override
;
489 virtual void SetOnePropertyValue( const SfxItemPropertyMapEntry
* pEntry
,
490 const css::uno::Any
& aValue
) override
;
492 /// @throws css::lang::IndexOutOfBoundsException
493 /// @throws css::uno::RuntimeException
494 css::uno::Reference
< css::table::XCell
>
495 GetCellByPosition_Impl( sal_Int32 nColumn
, sal_Int32 nRow
);
497 /// @throws css::uno::RuntimeException
498 void SetArrayFormula_Impl( const OUString
& rFormula
,
499 const formula::FormulaGrammar::Grammar eGrammar
);
502 ScCellRangeObj(ScDocShell
* pDocSh
, const ScRange
& rR
);
503 virtual ~ScCellRangeObj() override
;
505 // uses ObjectShell from document, if set (returns NULL otherwise)
506 static css::uno::Reference
<css::table::XCellRange
>
507 CreateRangeFromDoc( const ScDocument
& rDoc
, const ScRange
& rR
);
509 virtual css::uno::Any SAL_CALL
queryInterface(
510 const css::uno::Type
& rType
) override
;
511 virtual void SAL_CALL
acquire() noexcept override
;
512 virtual void SAL_CALL
release() noexcept override
;
514 virtual void RefChanged() override
;
516 // XCellRangeAddressable
517 virtual css::table::CellRangeAddress SAL_CALL
getRangeAddress() override
;
520 virtual css::uno::Reference
< css::sheet::XSpreadsheet
> SAL_CALL
521 getSpreadsheet() override
;
523 // XArrayFormulaRange
524 virtual OUString SAL_CALL
getArrayFormula() override
;
525 virtual void SAL_CALL
setArrayFormula( const OUString
& aFormula
) override
;
527 // XArrayFormulaTokens
528 virtual css::uno::Sequence
< css::sheet::FormulaToken
> SAL_CALL
getArrayTokens() override
;
529 virtual void SAL_CALL
setArrayTokens( const css::uno::Sequence
<
530 css::sheet::FormulaToken
>& aTokens
) override
;
533 virtual css::uno::Sequence
< css::uno::Sequence
< css::uno::Any
> > SAL_CALL
getDataArray() override
;
534 virtual void SAL_CALL
setDataArray( const css::uno::Sequence
< css::uno::Sequence
< css::uno::Any
> >& aArray
) override
;
537 virtual css::uno::Sequence
< css::uno::Sequence
<
538 OUString
> > SAL_CALL
getFormulaArray() override
;
539 virtual void SAL_CALL
setFormulaArray( const css::uno::Sequence
< css::uno::Sequence
< OUString
> >& aArray
) override
;
541 // XMultipleOperation
542 virtual void SAL_CALL
setTableOperation(
543 const css::table::CellRangeAddress
& aFormulaRange
,
544 css::sheet::TableOperationMode nMode
,
545 const css::table::CellAddress
& aColumnCell
,
546 const css::table::CellAddress
& aRowCell
) override
;
549 virtual void SAL_CALL
merge( sal_Bool bMerge
) override
;
550 virtual sal_Bool SAL_CALL
getIsMerged() override
;
553 virtual void SAL_CALL
fillSeries( css::sheet::FillDirection nFillDirection
,
554 css::sheet::FillMode nFillMode
,
555 css::sheet::FillDateMode nFillDateMode
,
556 double fStep
, double fEndValue
) override
;
557 virtual void SAL_CALL
fillAuto( css::sheet::FillDirection nFillDirection
,
558 sal_Int32 nSourceCount
) override
;
561 virtual void SAL_CALL
autoFormat( const OUString
& aName
) override
;
564 virtual css::uno::Sequence
< css::beans::PropertyValue
> SAL_CALL
565 createSortDescriptor() override
;
566 virtual void SAL_CALL
sort( const css::uno::Sequence
<
567 css::beans::PropertyValue
>& xDescriptor
) override
;
569 // XSheetFilterableEx
570 virtual css::uno::Reference
< css::sheet::XSheetFilterDescriptor
> SAL_CALL
571 createFilterDescriptorByObject( const css::uno::Reference
<
572 css::sheet::XSheetFilterable
>& xObject
) override
;
575 virtual css::uno::Reference
< css::sheet::XSheetFilterDescriptor
> SAL_CALL
576 createFilterDescriptor( sal_Bool bEmpty
) override
;
577 virtual void SAL_CALL
filter( const css::uno::Reference
<
578 css::sheet::XSheetFilterDescriptor
>& xDescriptor
) override
;
580 // XSubTotalCalculatable
581 virtual css::uno::Reference
< css::sheet::XSubTotalDescriptor
> SAL_CALL
582 createSubTotalDescriptor( sal_Bool bEmpty
) override
;
583 virtual void SAL_CALL
applySubTotals(const css::uno::Reference
< css::sheet::XSubTotalDescriptor
>& xDescriptor
,
584 sal_Bool bReplace
) override
;
585 virtual void SAL_CALL
removeSubTotals() override
;
588 virtual css::uno::Sequence
< css::beans::PropertyValue
> SAL_CALL
589 createImportDescriptor( sal_Bool bEmpty
) override
;
590 virtual void SAL_CALL
doImport( const css::uno::Sequence
< css::beans::PropertyValue
>& aDescriptor
) override
;
592 // XCellFormatRangesSupplier
593 virtual css::uno::Reference
< css::container::XIndexAccess
> SAL_CALL
594 getCellFormatRanges() override
;
596 // XUniqueCellFormatRangesSupplier
597 virtual css::uno::Reference
< css::container::XIndexAccess
> SAL_CALL
598 getUniqueCellFormatRanges() override
;
601 virtual css::uno::Reference
< css::table::XTableColumns
> SAL_CALL
602 getColumns() override
;
603 virtual css::uno::Reference
< css::table::XTableRows
> SAL_CALL
607 virtual css::uno::Reference
< css::table::XCell
> SAL_CALL
608 getCellByPosition( sal_Int32 nColumn
, sal_Int32 nRow
) override
;
609 virtual css::uno::Reference
< css::table::XCellRange
> SAL_CALL
610 getCellRangeByPosition( sal_Int32 nLeft
, sal_Int32 nTop
,
611 sal_Int32 nRight
, sal_Int32 nBottom
) override
;
612 virtual css::uno::Reference
< css::table::XCellRange
> SAL_CALL
613 getCellRangeByName( const OUString
& aRange
) override
;
614 /// @throws css::uno::RuntimeException
615 css::uno::Reference
< css::table::XCellRange
>
616 getCellRangeByName( const OUString
& aRange
, const ScAddress::Details
& rDetails
);
618 // XPropertySet override due to Range-Properties
619 virtual css::uno::Reference
< css::beans::XPropertySetInfo
>
620 SAL_CALL
getPropertySetInfo() override
;
623 virtual OUString SAL_CALL
getImplementationName() override
;
624 virtual sal_Bool SAL_CALL
supportsService( const OUString
& ServiceName
) override
;
625 virtual css::uno::Sequence
< OUString
> SAL_CALL
getSupportedServiceNames() override
;
628 virtual css::uno::Sequence
< css::uno::Type
> SAL_CALL
getTypes() override
;
629 virtual css::uno::Sequence
< sal_Int8
> SAL_CALL
getImplementationId() override
;
632 //! really derive cell from range?
634 class SC_DLLPUBLIC ScCellObj final
: public ScCellRangeObj
,
635 public css::text::XText
,
636 public css::container::XEnumerationAccess
,
637 public css::table::XCell2
,
638 public css::sheet::XFormulaTokens
,
639 public css::sheet::XCellAddressable
,
640 public css::sheet::XSheetAnnotationAnchor
,
641 public css::text::XTextFieldsSupplier
,
642 public css::document::XActionLockable
645 rtl::Reference
<SvxUnoText
> mxUnoText
;
646 const SfxItemPropertySet
* pCellPropSet
;
648 sal_Int16 nActionLockCount
;
651 OUString
GetInputString_Impl(bool bEnglish
) const;
652 OUString
GetOutputString_Impl() const;
653 void SetString_Impl(const OUString
& rString
, bool bInterpret
, bool bEnglish
);
654 double GetValue_Impl() const;
655 void SetValue_Impl(double fValue
);
656 css::table::CellContentType
GetContentType_Impl();
657 sal_Int32
GetResultType_Impl() const;
659 virtual const SfxItemPropertyMap
& GetItemPropertyMap() override
;
660 virtual void GetOnePropertyValue( const SfxItemPropertyMapEntry
* pEntry
,
661 css::uno::Any
& ) override
;
662 virtual void SetOnePropertyValue( const SfxItemPropertyMapEntry
* pEntry
,
663 const css::uno::Any
& aValue
) override
;
666 static const SvxItemPropertySet
* GetEditPropertySet();
667 static const SfxItemPropertyMap
& GetCellPropertyMap();
669 ScCellObj(ScDocShell
* pDocSh
, const ScAddress
& rP
);
670 virtual ~ScCellObj() override
;
672 virtual css::uno::Any SAL_CALL
queryInterface( const css::uno::Type
& rType
) override
;
673 virtual void SAL_CALL
acquire() noexcept override
;
674 virtual void SAL_CALL
release() noexcept override
;
676 virtual void RefChanged() override
;
678 SvxUnoText
& GetUnoText();
680 // XML import needs to set results at formula cells,
681 // not meant for any other purpose.
682 const ScAddress
& GetPosition() const { return aCellPos
; }
684 void InputEnglishString( const OUString
& rText
);
687 virtual void SAL_CALL
insertTextContent( const css::uno::Reference
< css::text::XTextRange
>& xRange
,
688 const css::uno::Reference
< css::text::XTextContent
>& xContent
,
689 sal_Bool bAbsorb
) override
;
690 virtual void SAL_CALL
removeTextContent( const css::uno::Reference
< css::text::XTextContent
>& xContent
) override
;
693 virtual css::uno::Reference
< css::text::XTextCursor
> SAL_CALL
694 createTextCursor() override
;
695 virtual css::uno::Reference
< css::text::XTextCursor
> SAL_CALL
696 createTextCursorByRange( const css::uno::Reference
< css::text::XTextRange
>& aTextPosition
) override
;
697 virtual void SAL_CALL
insertString( const css::uno::Reference
< css::text::XTextRange
>& xRange
,
698 const OUString
& aString
, sal_Bool bAbsorb
) override
;
699 virtual void SAL_CALL
insertControlCharacter( const css::uno::Reference
< css::text::XTextRange
>& xRange
,
700 sal_Int16 nControlCharacter
, sal_Bool bAbsorb
) override
;
703 virtual css::uno::Reference
< css::text::XText
> SAL_CALL
705 virtual css::uno::Reference
< css::text::XTextRange
> SAL_CALL
707 virtual css::uno::Reference
< css::text::XTextRange
> SAL_CALL
709 virtual OUString SAL_CALL
getString() override
;
710 virtual void SAL_CALL
setString( const OUString
& aString
) override
;
712 // XEnumerationAccess
713 virtual css::uno::Reference
< css::container::XEnumeration
> SAL_CALL
714 createEnumeration() override
;
717 virtual css::uno::Type SAL_CALL
getElementType() override
;
718 virtual sal_Bool SAL_CALL
hasElements() override
;
721 virtual OUString SAL_CALL
getFormula() override
;
722 virtual void SAL_CALL
setFormula( const OUString
& aFormula
) override
;
723 virtual void SAL_CALL
setFormulaResult( double nValue
) override
;
724 virtual void SAL_CALL
setFormulaString( const OUString
& aFormula
) override
;
725 virtual double SAL_CALL
getValue() override
;
726 virtual void SAL_CALL
setValue( double nValue
) override
;
727 virtual css::table::CellContentType SAL_CALL
getType() override
;
728 virtual sal_Int32 SAL_CALL
getError() override
;
731 virtual css::uno::Sequence
< css::sheet::FormulaToken
> SAL_CALL
getTokens() override
;
732 virtual void SAL_CALL
setTokens( const css::uno::Sequence
< css::sheet::FormulaToken
>& aTokens
) override
;
735 virtual css::table::CellAddress SAL_CALL
getCellAddress() override
;
737 // XSheetAnnotationAnchor
738 virtual css::uno::Reference
< css::sheet::XSheetAnnotation
> SAL_CALL
739 getAnnotation() override
;
741 // XTextFieldsSupplier
742 virtual css::uno::Reference
< css::container::XEnumerationAccess
> SAL_CALL
743 getTextFields() override
;
744 virtual css::uno::Reference
< css::container::XNameAccess
> SAL_CALL
745 getTextFieldMasters() override
;
747 // XPropertySet override due to cell properties
748 virtual css::uno::Reference
< css::beans::XPropertySetInfo
>
749 SAL_CALL
getPropertySetInfo() override
;
752 virtual OUString SAL_CALL
getImplementationName() override
;
753 virtual sal_Bool SAL_CALL
supportsService( const OUString
& ServiceName
) override
;
754 virtual css::uno::Sequence
< OUString
> SAL_CALL
getSupportedServiceNames() override
;
757 virtual css::uno::Sequence
< css::uno::Type
> SAL_CALL
getTypes() override
;
758 virtual css::uno::Sequence
< sal_Int8
> SAL_CALL
getImplementationId() override
;
761 virtual sal_Bool SAL_CALL
isActionLocked() override
;
762 virtual void SAL_CALL
addActionLock() override
;
763 virtual void SAL_CALL
removeActionLock() override
;
764 virtual void SAL_CALL
setActionLocks( sal_Int16 nLock
) override
;
765 virtual sal_Int16 SAL_CALL
resetActionLocks() override
;
768 class SC_DLLPUBLIC ScTableSheetObj final
: public ScCellRangeObj
,
769 public css::sheet::XSpreadsheet
,
770 public css::container::XNamed
,
771 public css::sheet::XSheetPageBreak
,
772 public css::sheet::XCellRangeMovement
,
773 public css::table::XTableChartsSupplier
,
774 public css::table::XTablePivotChartsSupplier
,
775 public css::sheet::XDataPilotTablesSupplier
,
776 public css::sheet::XScenariosSupplier
,
777 public css::sheet::XSheetAnnotationsSupplier
,
778 public css::drawing::XDrawPageSupplier
,
779 public css::sheet::XPrintAreas
,
780 public css::sheet::XSheetLinkable
,
781 public css::sheet::XSheetAuditing
,
782 public css::sheet::XSheetOutline
,
783 public css::util::XProtectable
,
784 public css::sheet::XScenario
,
785 public css::sheet::XScenarioEnhanced
,
786 public css::sheet::XExternalSheetName
,
787 public css::document::XEventsSupplier
789 friend class ScTableSheetsObj
; // for insertByName()
792 const SfxItemPropertySet
* pSheetPropSet
;
794 SCTAB
GetTab_Impl() const;
795 void PrintAreaUndo_Impl( std::unique_ptr
<ScPrintRangeSaver
> pOldRanges
);
797 virtual const SfxItemPropertyMap
& GetItemPropertyMap() override
;
798 virtual void GetOnePropertyValue( const SfxItemPropertyMapEntry
* pEntry
,
799 css::uno::Any
& ) override
;
800 virtual void SetOnePropertyValue( const SfxItemPropertyMapEntry
* pEntry
,
801 const css::uno::Any
& aValue
) override
;
804 ScTableSheetObj(ScDocShell
* pDocSh
, SCTAB nTab
);
805 virtual ~ScTableSheetObj() override
;
807 void InitInsertSheet(ScDocShell
* pDocSh
, SCTAB nTab
);
809 virtual css::uno::Any SAL_CALL
queryInterface( const css::uno::Type
& rType
) override
;
810 virtual void SAL_CALL
acquire() noexcept override
;
811 virtual void SAL_CALL
release() noexcept override
;
814 virtual css::uno::Reference
< css::sheet::XSheetCellCursor
>
815 SAL_CALL
createCursor() override
;
816 virtual css::uno::Reference
< css::sheet::XSheetCellCursor
> SAL_CALL
817 createCursorByRange( const css::uno::Reference
<
818 css::sheet::XSheetCellRange
>& aRange
) override
;
821 virtual css::uno::Reference
< css::sheet::XSpreadsheet
> SAL_CALL
822 getSpreadsheet() override
;
825 virtual css::uno::Reference
< css::table::XCell
> SAL_CALL
826 getCellByPosition( sal_Int32 nColumn
, sal_Int32 nRow
) override
;
827 virtual css::uno::Reference
< css::table::XCellRange
> SAL_CALL
828 getCellRangeByPosition( sal_Int32 nLeft
, sal_Int32 nTop
,
829 sal_Int32 nRight
, sal_Int32 nBottom
) override
;
830 using ScCellRangeObj::getCellRangeByName
;
831 virtual css::uno::Reference
< css::table::XCellRange
> SAL_CALL
832 getCellRangeByName( const OUString
& aRange
) override
;
835 virtual OUString SAL_CALL
getName() override
;
836 virtual void SAL_CALL
setName( const OUString
& aName
) override
;
839 virtual css::uno::Sequence
< css::sheet::TablePageBreakData
> SAL_CALL
840 getColumnPageBreaks() override
;
841 virtual css::uno::Sequence
< css::sheet::TablePageBreakData
> SAL_CALL
842 getRowPageBreaks() override
;
843 virtual void SAL_CALL
removeAllManualPageBreaks() override
;
845 // XCellRangeMovement
846 virtual void SAL_CALL
insertCells( const css::table::CellRangeAddress
& aRange
,
847 css::sheet::CellInsertMode nMode
) override
;
848 virtual void SAL_CALL
removeRange( const css::table::CellRangeAddress
& aRange
,
849 css::sheet::CellDeleteMode nMode
) override
;
850 virtual void SAL_CALL
moveRange( const css::table::CellAddress
& aDestination
,
851 const css::table::CellRangeAddress
& aSource
) override
;
852 virtual void SAL_CALL
copyRange( const css::table::CellAddress
& aDestination
,
853 const css::table::CellRangeAddress
& aSource
) override
;
855 // XTableChartsSupplier
856 virtual css::uno::Reference
< css::table::XTableCharts
> SAL_CALL
857 getCharts() override
;
859 // XTablePivotChartsSupplier
860 virtual css::uno::Reference
<css::table::XTablePivotCharts
> SAL_CALL
861 getPivotCharts() override
;
863 // XDataPilotTablesSupplier
864 virtual css::uno::Reference
< css::sheet::XDataPilotTables
> SAL_CALL
865 getDataPilotTables() override
;
867 // XScenariosSupplier
868 virtual css::uno::Reference
< css::sheet::XScenarios
> SAL_CALL
869 getScenarios() override
;
871 // XSheetAnnotationsSupplier
872 virtual css::uno::Reference
< css::sheet::XSheetAnnotations
> SAL_CALL
873 getAnnotations() override
;
876 virtual css::uno::Reference
< css::drawing::XDrawPage
> SAL_CALL
877 getDrawPage() override
;
880 virtual css::uno::Sequence
< css::table::CellRangeAddress
> SAL_CALL
881 getPrintAreas() override
;
882 virtual void SAL_CALL
setPrintAreas( const css::uno::Sequence
<
883 css::table::CellRangeAddress
>& aPrintAreas
) override
;
884 virtual sal_Bool SAL_CALL
getPrintTitleColumns() override
;
885 virtual void SAL_CALL
setPrintTitleColumns( sal_Bool bPrintTitleColumns
) override
;
886 virtual css::table::CellRangeAddress SAL_CALL
getTitleColumns() override
;
887 virtual void SAL_CALL
setTitleColumns(
888 const css::table::CellRangeAddress
& aTitleColumns
) override
;
889 virtual sal_Bool SAL_CALL
getPrintTitleRows() override
;
890 virtual void SAL_CALL
setPrintTitleRows( sal_Bool bPrintTitleRows
) override
;
891 virtual css::table::CellRangeAddress SAL_CALL
getTitleRows() override
;
892 virtual void SAL_CALL
setTitleRows(
893 const css::table::CellRangeAddress
& aTitleRows
) override
;
896 virtual css::sheet::SheetLinkMode SAL_CALL
getLinkMode() override
;
897 virtual void SAL_CALL
setLinkMode( css::sheet::SheetLinkMode nLinkMode
) override
;
898 virtual OUString SAL_CALL
getLinkUrl() override
;
899 virtual void SAL_CALL
setLinkUrl( const OUString
& aLinkUrl
) override
;
900 virtual OUString SAL_CALL
getLinkSheetName() override
;
901 virtual void SAL_CALL
setLinkSheetName( const OUString
& aLinkSheetName
) override
;
902 virtual void SAL_CALL
link( const OUString
& aUrl
,
903 const OUString
& aSheetName
,
904 const OUString
& aFilterName
,
905 const OUString
& aFilterOptions
,
906 css::sheet::SheetLinkMode nMode
) override
;
909 virtual sal_Bool SAL_CALL
hideDependents( const css::table::CellAddress
& aPosition
) override
;
910 virtual sal_Bool SAL_CALL
hidePrecedents( const css::table::CellAddress
& aPosition
) override
;
911 virtual sal_Bool SAL_CALL
showDependents( const css::table::CellAddress
& aPosition
) override
;
912 virtual sal_Bool SAL_CALL
showPrecedents( const css::table::CellAddress
& aPosition
) override
;
913 virtual sal_Bool SAL_CALL
showErrors( const css::table::CellAddress
& aPosition
) override
;
914 virtual sal_Bool SAL_CALL
showInvalid() override
;
915 virtual void SAL_CALL
clearArrows() override
;
918 virtual void SAL_CALL
group( const css::table::CellRangeAddress
& aRange
,
919 css::table::TableOrientation nOrientation
) override
;
920 virtual void SAL_CALL
ungroup( const css::table::CellRangeAddress
& aRange
,
921 css::table::TableOrientation nOrientation
) override
;
922 virtual void SAL_CALL
autoOutline( const css::table::CellRangeAddress
& aRange
) override
;
923 virtual void SAL_CALL
clearOutline() override
;
924 virtual void SAL_CALL
hideDetail( const css::table::CellRangeAddress
& aRange
) override
;
925 virtual void SAL_CALL
showDetail( const css::table::CellRangeAddress
& aRange
) override
;
926 virtual void SAL_CALL
showLevel( sal_Int16 nLevel
,
927 css::table::TableOrientation nOrientation
) override
;
930 virtual void SAL_CALL
protect( const OUString
& aPassword
) override
;
931 virtual void SAL_CALL
unprotect( const OUString
& aPassword
) override
;
932 virtual sal_Bool SAL_CALL
isProtected() override
;
935 virtual sal_Bool SAL_CALL
getIsScenario() override
;
936 virtual OUString SAL_CALL
getScenarioComment() override
;
937 virtual void SAL_CALL
setScenarioComment( const OUString
& aScenarioComment
) override
;
938 virtual void SAL_CALL
addRanges( const css::uno::Sequence
<
939 css::table::CellRangeAddress
>& aRanges
) override
;
940 virtual void SAL_CALL
apply() override
;
942 virtual css::uno::Sequence
< css::table::CellRangeAddress
> SAL_CALL
943 getRanges( ) override
;
945 // XExternalSheetName
946 virtual void SAL_CALL
setExternalName( const OUString
& aUrl
, const OUString
& aSheetName
) override
;
949 virtual css::uno::Reference
< css::container::XNameReplace
> SAL_CALL
getEvents() override
;
951 // XPropertySet override due to sheet properties
952 virtual css::uno::Reference
< css::beans::XPropertySetInfo
>
953 SAL_CALL
getPropertySetInfo() override
;
956 virtual OUString SAL_CALL
getImplementationName() override
;
957 virtual sal_Bool SAL_CALL
supportsService( const OUString
& ServiceName
) override
;
958 virtual css::uno::Sequence
< OUString
> SAL_CALL
getSupportedServiceNames() override
;
961 UNO3_GETIMPLEMENTATION_DECL(ScTableSheetObj
);
964 virtual css::uno::Sequence
< css::uno::Type
> SAL_CALL
getTypes() override
;
965 virtual css::uno::Sequence
< sal_Int8
> SAL_CALL
getImplementationId() override
;
968 class ScTableColumnObj final
: public ScCellRangeObj
,
969 public css::container::XNamed
972 const SfxItemPropertySet
* pColPropSet
;
974 virtual const SfxItemPropertyMap
& GetItemPropertyMap() override
;
975 virtual void GetOnePropertyValue( const SfxItemPropertyMapEntry
* pEntry
,
976 css::uno::Any
& ) override
;
977 virtual void SetOnePropertyValue( const SfxItemPropertyMapEntry
* pEntry
,
978 const css::uno::Any
& aValue
) override
;
981 ScTableColumnObj(ScDocShell
* pDocSh
, SCCOL nCol
, SCTAB nTab
);
982 virtual ~ScTableColumnObj() override
;
984 virtual css::uno::Any SAL_CALL
queryInterface(
985 const css::uno::Type
& rType
) override
;
986 virtual void SAL_CALL
acquire() noexcept override
;
987 virtual void SAL_CALL
release() noexcept override
;
990 virtual OUString SAL_CALL
getName() override
;
991 virtual void SAL_CALL
setName( const OUString
& aName
) override
;
993 // XPropertySet override due to column properties
994 virtual css::uno::Reference
< css::beans::XPropertySetInfo
>
995 SAL_CALL
getPropertySetInfo() override
;
998 virtual OUString SAL_CALL
getImplementationName() override
;
999 virtual sal_Bool SAL_CALL
supportsService( const OUString
& ServiceName
) override
;
1000 virtual css::uno::Sequence
< OUString
> SAL_CALL
getSupportedServiceNames() override
;
1003 virtual css::uno::Sequence
< css::uno::Type
> SAL_CALL
getTypes() override
;
1004 virtual css::uno::Sequence
< sal_Int8
> SAL_CALL
getImplementationId() override
;
1007 class ScTableRowObj final
: public ScCellRangeObj
1010 const SfxItemPropertySet
* pRowPropSet
;
1012 virtual const SfxItemPropertyMap
& GetItemPropertyMap() override
;
1013 virtual void GetOnePropertyValue( const SfxItemPropertyMapEntry
* pEntry
,
1014 css::uno::Any
& ) override
;
1015 virtual void SetOnePropertyValue( const SfxItemPropertyMapEntry
* pEntry
,
1016 const css::uno::Any
& aValue
) override
;
1019 ScTableRowObj(ScDocShell
* pDocSh
, SCROW nRow
, SCTAB nTab
);
1020 virtual ~ScTableRowObj() override
;
1022 // XPropertySet override due to row properties
1023 virtual css::uno::Reference
< css::beans::XPropertySetInfo
>
1024 SAL_CALL
getPropertySetInfo() override
;
1027 virtual OUString SAL_CALL
getImplementationName() override
;
1028 virtual sal_Bool SAL_CALL
supportsService( const OUString
& ServiceName
) override
;
1029 virtual css::uno::Sequence
< OUString
> SAL_CALL
getSupportedServiceNames() override
;
1032 class ScCellsObj final
: public cppu::WeakImplHelper
<
1033 css::container::XEnumerationAccess
,
1034 css::lang::XServiceInfo
>,
1038 ScDocShell
* pDocShell
;
1039 ScRangeList aRanges
;
1042 ScCellsObj(ScDocShell
* pDocSh
, const ScRangeList
& rR
);
1043 virtual ~ScCellsObj() override
;
1045 virtual void Notify( SfxBroadcaster
& rBC
, const SfxHint
& rHint
) override
;
1047 // XEnumerationAccess
1048 virtual css::uno::Reference
< css::container::XEnumeration
> SAL_CALL
1049 createEnumeration() override
;
1052 virtual css::uno::Type SAL_CALL
getElementType() override
;
1053 virtual sal_Bool SAL_CALL
hasElements() override
;
1056 virtual OUString SAL_CALL
getImplementationName() override
;
1057 virtual sal_Bool SAL_CALL
supportsService( const OUString
& ServiceName
) override
;
1058 virtual css::uno::Sequence
< OUString
> SAL_CALL
getSupportedServiceNames() override
;
1061 class ScCellsEnumeration final
: public cppu::WeakImplHelper
<
1062 css::container::XEnumeration
,
1063 css::lang::XServiceInfo
>,
1067 ScDocShell
* pDocShell
;
1068 ScRangeList aRanges
;
1070 std::unique_ptr
<ScMarkData
> pMark
;
1074 void Advance_Impl();
1075 void CheckPos_Impl();
1078 ScCellsEnumeration(ScDocShell
* pDocSh
, const ScRangeList
& rR
);
1079 virtual ~ScCellsEnumeration() override
;
1081 virtual void Notify( SfxBroadcaster
& rBC
, const SfxHint
& rHint
) override
;
1084 virtual sal_Bool SAL_CALL
hasMoreElements() override
;
1085 virtual css::uno::Any SAL_CALL
nextElement() override
;
1088 virtual OUString SAL_CALL
getImplementationName() override
;
1089 virtual sal_Bool SAL_CALL
supportsService( const OUString
& ServiceName
) override
;
1090 virtual css::uno::Sequence
< OUString
> SAL_CALL
getSupportedServiceNames() override
;
1093 class ScCellFormatsObj final
: public cppu::WeakImplHelper
<
1094 css::container::XIndexAccess
,
1095 css::container::XEnumerationAccess
,
1096 css::lang::XServiceInfo
>,
1100 ScDocShell
* pDocShell
;
1101 ScRange aTotalRange
;
1104 rtl::Reference
<ScCellRangeObj
> GetObjectByIndex_Impl(tools::Long nIndex
) const;
1107 ScCellFormatsObj(ScDocShell
* pDocSh
, const ScRange
& rR
);
1108 virtual ~ScCellFormatsObj() override
;
1110 virtual void Notify( SfxBroadcaster
& rBC
, const SfxHint
& rHint
) override
;
1113 virtual sal_Int32 SAL_CALL
getCount() override
;
1114 virtual css::uno::Any SAL_CALL
getByIndex( sal_Int32 Index
) override
;
1116 // XEnumerationAccess
1117 virtual css::uno::Reference
< css::container::XEnumeration
> SAL_CALL
1118 createEnumeration() override
;
1121 virtual css::uno::Type SAL_CALL
getElementType() override
;
1122 virtual sal_Bool SAL_CALL
hasElements() override
;
1125 virtual OUString SAL_CALL
getImplementationName() override
;
1126 virtual sal_Bool SAL_CALL
supportsService( const OUString
& ServiceName
) override
;
1127 virtual css::uno::Sequence
< OUString
> SAL_CALL
getSupportedServiceNames() override
;
1130 class ScCellFormatsEnumeration final
: public cppu::WeakImplHelper
<
1131 css::container::XEnumeration
,
1132 css::lang::XServiceInfo
>,
1136 ScDocShell
* pDocShell
;
1138 std::unique_ptr
<ScAttrRectIterator
> pIter
;
1144 void Advance_Impl();
1145 rtl::Reference
<ScCellRangeObj
> NextObject_Impl();
1148 ScCellFormatsEnumeration(ScDocShell
* pDocSh
, const ScRange
& rR
);
1149 virtual ~ScCellFormatsEnumeration() override
;
1151 virtual void Notify( SfxBroadcaster
& rBC
, const SfxHint
& rHint
) override
;
1154 virtual sal_Bool SAL_CALL
hasMoreElements() override
;
1155 virtual css::uno::Any SAL_CALL
nextElement() override
;
1158 virtual OUString SAL_CALL
getImplementationName() override
;
1159 virtual sal_Bool SAL_CALL
supportsService( const OUString
& ServiceName
) override
;
1160 virtual css::uno::Sequence
< OUString
> SAL_CALL
getSupportedServiceNames() override
;
1163 class ScUniqueCellFormatsObj final
: public cppu::WeakImplHelper
<
1164 css::container::XIndexAccess
,
1165 css::container::XEnumerationAccess
,
1166 css::lang::XServiceInfo
>,
1170 ScDocShell
* pDocShell
;
1171 std::vector
<ScRangeList
> aRangeLists
;
1174 ScUniqueCellFormatsObj(ScDocShell
* pDocSh
, const ScRange
& rR
);
1175 virtual ~ScUniqueCellFormatsObj() override
;
1177 virtual void Notify( SfxBroadcaster
& rBC
, const SfxHint
& rHint
) override
;
1180 virtual sal_Int32 SAL_CALL
getCount() override
;
1181 virtual css::uno::Any SAL_CALL
getByIndex( sal_Int32 Index
) override
;
1183 // XEnumerationAccess
1184 virtual css::uno::Reference
< css::container::XEnumeration
> SAL_CALL
1185 createEnumeration() override
;
1188 virtual css::uno::Type SAL_CALL
getElementType() override
;
1189 virtual sal_Bool SAL_CALL
hasElements() override
;
1192 virtual OUString SAL_CALL
getImplementationName() override
;
1193 virtual sal_Bool SAL_CALL
supportsService( const OUString
& ServiceName
) override
;
1194 virtual css::uno::Sequence
< OUString
> SAL_CALL
getSupportedServiceNames() override
;
1197 class ScUniqueCellFormatsEnumeration final
: public cppu::WeakImplHelper
<
1198 css::container::XEnumeration
,
1199 css::lang::XServiceInfo
>,
1203 std::vector
<ScRangeList
> aRangeLists
;
1204 ScDocShell
* pDocShell
;
1205 sal_Int32 nCurrentPosition
;
1208 ScUniqueCellFormatsEnumeration(ScDocShell
* pDocShell
, std::vector
<ScRangeList
>&& rRangeLists
);
1209 virtual ~ScUniqueCellFormatsEnumeration() override
;
1211 virtual void Notify( SfxBroadcaster
& rBC
, const SfxHint
& rHint
) override
;
1214 virtual sal_Bool SAL_CALL
hasMoreElements() override
;
1215 virtual css::uno::Any SAL_CALL
nextElement() override
;
1218 virtual OUString SAL_CALL
getImplementationName() override
;
1219 virtual sal_Bool SAL_CALL
supportsService( const OUString
& ServiceName
) override
;
1220 virtual css::uno::Sequence
< OUString
> SAL_CALL
getSupportedServiceNames() override
;
1223 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */