LibreOffice Module reportdesign (master)  1
Section.cxx
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
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/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
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 .
18  */
19 #include <Section.hxx>
24 #include <com/sun/star/report/XReportComponent.hpp>
25 #include <com/sun/star/report/ForceNewPage.hpp>
26 #include <com/sun/star/lang/NoSupportException.hpp>
27 #include <strings.hxx>
28 #include <Tools.hxx>
29 #include <RptModel.hxx>
30 #include <RptPage.hxx>
31 #include <ReportControlModel.hxx>
32 #include <ReportDefinition.hxx>
33 #include <vcl/svapp.hxx>
34 
35 namespace reportdesign
36 {
37 
38  using namespace com::sun::star;
39  using namespace comphelper;
40 
41 
42 static uno::Sequence< OUString> lcl_getGroupAbsent()
43 {
44  const OUString pProps[] = {
45  OUString(PROPERTY_CANGROW)
46  ,OUString(PROPERTY_CANSHRINK)
47  };
48 
49  return uno::Sequence< OUString >(pProps,SAL_N_ELEMENTS(pProps));
50 }
51 
52 
53 static uno::Sequence< OUString> lcl_getAbsent(bool _bPageSection)
54 {
55  if ( _bPageSection )
56  {
57  const OUString pProps[] = {
58  OUString(PROPERTY_FORCENEWPAGE)
59  ,OUString(PROPERTY_NEWROWORCOL)
60  ,OUString(PROPERTY_KEEPTOGETHER)
61  ,OUString(PROPERTY_CANGROW)
62  ,OUString(PROPERTY_CANSHRINK)
63  ,OUString(PROPERTY_REPEATSECTION)
64  };
65  return uno::Sequence< OUString >(pProps,SAL_N_ELEMENTS(pProps));
66  }
67 
68  const OUString pProps[] = {
69  OUString(PROPERTY_CANGROW)
70  ,OUString(PROPERTY_CANSHRINK)
71  ,OUString(PROPERTY_REPEATSECTION)
72  };
73 
74  return uno::Sequence< OUString >(pProps,SAL_N_ELEMENTS(pProps));
75 }
76 
77 uno::Reference<report::XSection> OSection::createOSection(
78  const uno::Reference< report::XReportDefinition >& xParentDef,
79  const uno::Reference< uno::XComponentContext >& context,
80  bool const bPageSection)
81 {
83  new OSection(xParentDef, nullptr, context, lcl_getAbsent(bPageSection));
84  pNew->init();
85  return pNew;
86 }
87 
88 uno::Reference<report::XSection> OSection::createOSection(
89  const uno::Reference< report::XGroup >& xParentGroup,
90  const uno::Reference< uno::XComponentContext >& context)
91 {
93  new OSection(nullptr, xParentGroup, context, lcl_getGroupAbsent());
94  pNew->init();
95  return pNew;
96 }
97 
98 
99 OSection::OSection(const uno::Reference< report::XReportDefinition >& xParentDef
100  ,const uno::Reference< report::XGroup >& xParentGroup
101  ,const uno::Reference< uno::XComponentContext >& context
102  ,uno::Sequence< OUString> const& rStrings)
104 ,SectionPropertySet(context,SectionPropertySet::IMPLEMENTS_PROPERTY_SET,rStrings)
105 ,m_aContainerListeners(m_aMutex)
106 ,m_xGroup(xParentGroup)
107 ,m_xReportDefinition(xParentDef)
108 ,m_nHeight(3000)
109 ,m_nBackgroundColor(COL_TRANSPARENT)
110 ,m_nForceNewPage(report::ForceNewPage::NONE)
111 ,m_nNewRowOrCol(report::ForceNewPage::NONE)
112 ,m_bKeepTogether(false)
113 ,m_bRepeatSection(false)
114 ,m_bVisible(true)
115 ,m_bBacktransparent(true)
116 ,m_bInRemoveNotify(false)
117 ,m_bInInsertNotify(false)
118 {
119 }
120 
121 // TODO: VirtualFunctionFinder: This is virtual function!
122 
123 OSection::~OSection()
124 {
125 }
126 
127 //IMPLEMENT_FORWARD_XINTERFACE2(OSection,SectionBase,SectionPropertySet)
129 
130 uno::Any SAL_CALL OSection::queryInterface( const uno::Type& _rType )
131 {
132  uno::Any aReturn = SectionBase::queryInterface(_rType);
133  if ( !aReturn.hasValue() )
134  aReturn = SectionPropertySet::queryInterface(_rType);
135 
136  if ( !aReturn.hasValue() && OReportControlModel::isInterfaceForbidden(_rType) )
137  return aReturn;
138 
139  return aReturn;
140 }
141 
142 
143 void SAL_CALL OSection::dispose()
144 {
145  OSL_ENSURE(!rBHelper.bDisposed,"Already disposed!");
146  SectionPropertySet::dispose();
147  uno::Reference<lang::XComponent> const xPageComponent(m_xDrawPage,
148  uno::UNO_QUERY);
149  if (xPageComponent.is())
150  {
151  xPageComponent->dispose();
152  }
153  cppu::WeakComponentImplHelperBase::dispose();
154 
155 }
156 
157 // TODO: VirtualFunctionFinder: This is virtual function!
158 
159 void SAL_CALL OSection::disposing()
160 {
161  lang::EventObject aDisposeEvent( static_cast< ::cppu::OWeakObject* >( this ) );
162  m_aContainerListeners.disposeAndClear( aDisposeEvent );
163 }
164 
165 OUString SAL_CALL OSection::getImplementationName( )
166 {
167  return "com.sun.star.comp.report.Section";
168 }
169 
170 uno::Sequence< OUString> OSection::getSupportedServiceNames_Static()
171 {
172  uno::Sequence<OUString> aSupported { SERVICE_SECTION };
173  return aSupported;
174 }
175 
176 uno::Sequence< OUString> SAL_CALL OSection::getSupportedServiceNames()
177 {
178  return getSupportedServiceNames_Static();
179 }
180 
181 sal_Bool SAL_CALL OSection::supportsService( const OUString& _rServiceName )
182 {
183  return cppu::supportsService(this, _rServiceName);
184 }
185 
186 void OSection::init()
187 {
188  SolarMutexGuard g; // lock while manipulating SdrModel
189  uno::Reference< report::XReportDefinition> xReport = getReportDefinition();
190  std::shared_ptr<rptui::OReportModel> pModel = OReportDefinition::getSdrModel(xReport);
191  assert(pModel && "No model set at the report definition!");
192  if ( !pModel )
193  return;
194 
195  uno::Reference<report::XSection> const xSection(this);
196  SdrPage & rSdrPage(*pModel->createNewPage(xSection));
197  m_xDrawPage.set(rSdrPage.getUnoPage(), uno::UNO_QUERY_THROW);
198  m_xDrawPage_ShapeGrouper.set(m_xDrawPage, uno::UNO_QUERY_THROW);
199  // apparently we may also get OReportDrawPage which doesn't support this
200  m_xDrawPage_FormSupplier.set(m_xDrawPage, uno::UNO_QUERY);
201  m_xDrawPage_Tunnel.set(m_xDrawPage, uno::UNO_QUERY_THROW);
202  // fdo#53872: now also exchange the XDrawPage in the SdrPage so that
203  // rSdrPage.getUnoPage returns this
204  rSdrPage.SetUnoPage(this);
205  // createNewPage _should_ have stored away 2 uno::References to this,
206  // so our ref count cannot be 1 here, so this isn't destroyed here
207  assert(m_refCount > 1);
208 }
209 
210 // XSection
211 
212 sal_Bool SAL_CALL OSection::getVisible()
213 {
214  ::osl::MutexGuard aGuard(m_aMutex);
215  return m_bVisible;
216 }
217 
218 void SAL_CALL OSection::setVisible( sal_Bool _visible )
219 {
220  set(PROPERTY_VISIBLE,_visible,m_bVisible);
221 }
222 
223 OUString SAL_CALL OSection::getName()
224 {
225  ::osl::MutexGuard aGuard(m_aMutex);
226  return m_sName;
227 }
228 
229 void SAL_CALL OSection::setName( const OUString& _name )
230 {
231  set(PROPERTY_NAME,_name,m_sName);
232 }
233 
234 ::sal_uInt32 SAL_CALL OSection::getHeight()
235 {
236  ::osl::MutexGuard aGuard(m_aMutex);
237  return m_nHeight;
238 }
239 
240 void SAL_CALL OSection::setHeight( ::sal_uInt32 _height )
241 {
242  set(PROPERTY_HEIGHT,_height,m_nHeight);
243 }
244 
245 ::sal_Int32 SAL_CALL OSection::getBackColor()
246 {
247  ::osl::MutexGuard aGuard(m_aMutex);
248  return m_bBacktransparent ? static_cast<sal_Int32>(COL_TRANSPARENT) : m_nBackgroundColor;
249 }
250 
251 void SAL_CALL OSection::setBackColor( ::sal_Int32 _backgroundcolor )
252 {
253  bool bTransparent = _backgroundcolor == static_cast<sal_Int32>(COL_TRANSPARENT);
254  setBackTransparent(bTransparent);
255  if ( !bTransparent )
256  set(PROPERTY_BACKCOLOR,_backgroundcolor,m_nBackgroundColor);
257 }
258 
259 sal_Bool SAL_CALL OSection::getBackTransparent()
260 {
261  ::osl::MutexGuard aGuard(m_aMutex);
262  return m_bBacktransparent;
263 }
264 
265 void SAL_CALL OSection::setBackTransparent( sal_Bool _backtransparent )
266 {
267  set(PROPERTY_BACKTRANSPARENT,_backtransparent,m_bBacktransparent);
268  if ( _backtransparent )
269  set(PROPERTY_BACKCOLOR,static_cast<sal_Int32>(COL_TRANSPARENT),m_nBackgroundColor);
270 }
271 
272 OUString SAL_CALL OSection::getConditionalPrintExpression()
273 {
274  ::osl::MutexGuard aGuard(m_aMutex);
275  return m_sConditionalPrintExpression;
276 }
277 
278 void SAL_CALL OSection::setConditionalPrintExpression( const OUString& _conditionalprintexpression )
279 {
280  set(PROPERTY_CONDITIONALPRINTEXPRESSION,_conditionalprintexpression,m_sConditionalPrintExpression);
281 }
282 
283 void OSection::checkNotPageHeaderFooter()
284 {
285  ::osl::MutexGuard aGuard(m_aMutex);
286  uno::Reference< report::XReportDefinition > xRet = m_xReportDefinition;
287  if ( xRet.is() )
288  {
289  if ( xRet->getPageHeaderOn() && xRet->getPageHeader() == *this )
290  throw beans::UnknownPropertyException();
291  if ( xRet->getPageFooterOn() && xRet->getPageFooter() == *this )
292  throw beans::UnknownPropertyException();
293  }
294 }
295 
296 ::sal_Int16 SAL_CALL OSection::getForceNewPage()
297 {
298  ::osl::MutexGuard aGuard(m_aMutex);
299 
300  checkNotPageHeaderFooter();
301  return m_nForceNewPage;
302 }
303 
304 void SAL_CALL OSection::setForceNewPage( ::sal_Int16 _forcenewpage )
305 {
306  if ( _forcenewpage < report::ForceNewPage::NONE || _forcenewpage > report::ForceNewPage::BEFORE_AFTER_SECTION )
307  throwIllegallArgumentException("css::report::ForceNewPage"
308  ,*this
309  ,1);
310  checkNotPageHeaderFooter();
311  set(PROPERTY_FORCENEWPAGE,_forcenewpage,m_nForceNewPage);
312 }
313 
314 ::sal_Int16 SAL_CALL OSection::getNewRowOrCol()
315 {
316  ::osl::MutexGuard aGuard(m_aMutex);
317  checkNotPageHeaderFooter();
318  return m_nNewRowOrCol;
319 }
320 
321 void SAL_CALL OSection::setNewRowOrCol( ::sal_Int16 _newroworcol )
322 {
323  if ( _newroworcol < report::ForceNewPage::NONE || _newroworcol > report::ForceNewPage::BEFORE_AFTER_SECTION )
324  throwIllegallArgumentException("css::report::ForceNewPage"
325  ,*this
326  ,1);
327  checkNotPageHeaderFooter();
328 
329  set(PROPERTY_NEWROWORCOL,_newroworcol,m_nNewRowOrCol);
330 }
331 
332 sal_Bool SAL_CALL OSection::getKeepTogether()
333 {
334  ::osl::MutexGuard aGuard(m_aMutex);
335  checkNotPageHeaderFooter();
336  return m_bKeepTogether;
337 }
338 
339 void SAL_CALL OSection::setKeepTogether( sal_Bool _keeptogether )
340 {
341  {
342  ::osl::MutexGuard aGuard(m_aMutex);
343  checkNotPageHeaderFooter();
344  }
345 
346  set(PROPERTY_KEEPTOGETHER,_keeptogether,m_bKeepTogether);
347 }
348 
349 sal_Bool SAL_CALL OSection::getCanGrow()
350 {
351  throw beans::UnknownPropertyException();
352 }
353 
354 void SAL_CALL OSection::setCanGrow( sal_Bool /*_cangrow*/ )
355 {
356  throw beans::UnknownPropertyException();
357 }
358 
359 sal_Bool SAL_CALL OSection::getCanShrink()
360 {
361  throw beans::UnknownPropertyException();
362 }
363 
364 void SAL_CALL OSection::setCanShrink( sal_Bool /*_canshrink*/ )
365 {
366  throw beans::UnknownPropertyException();
367 }
368 
369 sal_Bool SAL_CALL OSection::getRepeatSection()
370 {
371  ::osl::MutexGuard aGuard(m_aMutex);
372  uno::Reference< report::XGroup > xGroup = m_xGroup;
373  if ( !xGroup.is() )
374  throw beans::UnknownPropertyException();
375  return m_bRepeatSection;
376 }
377 
378 void SAL_CALL OSection::setRepeatSection( sal_Bool _repeatsection )
379 {
380  {
381  ::osl::MutexGuard aGuard(m_aMutex);
382  uno::Reference< report::XGroup > xGroup = m_xGroup;
383  if ( !xGroup.is() )
384  throw beans::UnknownPropertyException();
385  }
386  set(PROPERTY_REPEATSECTION,_repeatsection,m_bRepeatSection);
387 }
388 
389 uno::Reference< report::XGroup > SAL_CALL OSection::getGroup()
390 {
391  ::osl::MutexGuard aGuard(m_aMutex);
392  return m_xGroup;
393 }
394 
395 uno::Reference< report::XReportDefinition > SAL_CALL OSection::getReportDefinition()
396 {
397  ::osl::MutexGuard aGuard(m_aMutex);
398  uno::Reference< report::XReportDefinition > xRet = m_xReportDefinition;
399  uno::Reference< report::XGroup > xGroup = m_xGroup;
400  if ( !xRet.is() && xGroup.is() )
401  {
402  uno::Reference< report::XGroups> xGroups(xGroup->getGroups());
403  if ( xGroups.is() )
404  xRet = xGroups->getReportDefinition();
405  }
406 
407  return xRet;
408 }
409 
410 // XChild
411 uno::Reference< uno::XInterface > SAL_CALL OSection::getParent( )
412 {
413  uno::Reference< uno::XInterface > xRet;
414  {
415  ::osl::MutexGuard aGuard(m_aMutex);
416  xRet = m_xReportDefinition;
417  if ( !xRet.is() )
418  xRet = m_xGroup;
419  }
420  return xRet;
421 }
422 
423 void SAL_CALL OSection::setParent( const uno::Reference< uno::XInterface >& /*Parent*/ )
424 {
425  throw lang::NoSupportException();
426 }
427 
428 // XContainer
429 void SAL_CALL OSection::addContainerListener( const uno::Reference< container::XContainerListener >& xListener )
430 {
431  m_aContainerListeners.addInterface(xListener);
432 }
433 
434 void SAL_CALL OSection::removeContainerListener( const uno::Reference< container::XContainerListener >& xListener )
435 {
436  m_aContainerListeners.removeInterface(xListener);
437 }
438 
439 // XElementAccess
440 uno::Type SAL_CALL OSection::getElementType( )
441 {
443 }
444 
445 sal_Bool SAL_CALL OSection::hasElements( )
446 {
447  ::osl::MutexGuard aGuard(m_aMutex);
448  return m_xDrawPage.is() && m_xDrawPage->hasElements();
449 }
450 
451 // XIndexAccess
452 ::sal_Int32 SAL_CALL OSection::getCount( )
453 {
454  ::osl::MutexGuard aGuard(m_aMutex);
455  return m_xDrawPage.is() ? m_xDrawPage->getCount() : 0;
456 }
457 
458 uno::Any SAL_CALL OSection::getByIndex( ::sal_Int32 Index )
459 {
460  ::osl::MutexGuard aGuard(m_aMutex);
461  return m_xDrawPage.is() ? m_xDrawPage->getByIndex(Index) : uno::Any();
462 }
463 
464 // XEnumerationAccess
465 uno::Reference< container::XEnumeration > SAL_CALL OSection::createEnumeration( )
466 {
467  ::osl::MutexGuard aGuard(m_aMutex);
468  return new ::comphelper::OEnumerationByIndex(static_cast<XSection*>(this));
469 }
470 
471 uno::Reference< beans::XPropertySetInfo > SAL_CALL OSection::getPropertySetInfo( )
472 {
473  return SectionPropertySet::getPropertySetInfo();
474 }
475 
476 void SAL_CALL OSection::setPropertyValue( const OUString& aPropertyName, const uno::Any& aValue )
477 {
478  SectionPropertySet::setPropertyValue( aPropertyName, aValue );
479 }
480 
481 uno::Any SAL_CALL OSection::getPropertyValue( const OUString& PropertyName )
482 {
483  return SectionPropertySet::getPropertyValue( PropertyName);
484 }
485 
486 void SAL_CALL OSection::addPropertyChangeListener( const OUString& aPropertyName, const uno::Reference< beans::XPropertyChangeListener >& xListener )
487 {
488  SectionPropertySet::addPropertyChangeListener( aPropertyName, xListener );
489 }
490 
491 void SAL_CALL OSection::removePropertyChangeListener( const OUString& aPropertyName, const uno::Reference< beans::XPropertyChangeListener >& aListener )
492 {
493  SectionPropertySet::removePropertyChangeListener( aPropertyName, aListener );
494 }
495 
496 void SAL_CALL OSection::addVetoableChangeListener( const OUString& PropertyName, const uno::Reference< beans::XVetoableChangeListener >& aListener )
497 {
498  SectionPropertySet::addVetoableChangeListener( PropertyName, aListener );
499 }
500 
501 void SAL_CALL OSection::removeVetoableChangeListener( const OUString& PropertyName, const uno::Reference< beans::XVetoableChangeListener >& aListener )
502 {
503  SectionPropertySet::removeVetoableChangeListener( PropertyName, aListener );
504 }
505 
506 void SAL_CALL OSection::add( const uno::Reference< drawing::XShape >& xShape )
507 {
508  {
509  ::osl::MutexGuard aGuard(m_aMutex);
510  m_bInInsertNotify = true;
511  OSL_ENSURE(m_xDrawPage.is(),"No DrawPage!");
512  m_xDrawPage->add(xShape);
513  m_bInInsertNotify = false;
514  }
515  notifyElementAdded(xShape);
516 }
517 
518 void SAL_CALL OSection::remove( const uno::Reference< drawing::XShape >& xShape )
519 {
520  {
521  ::osl::MutexGuard aGuard(m_aMutex);
522  m_bInRemoveNotify = true;
523  OSL_ENSURE(m_xDrawPage.is(),"No DrawPage!");
524  m_xDrawPage->remove(xShape);
525  m_bInRemoveNotify = false;
526  }
527  notifyElementRemoved(xShape);
528 }
529 
530 // XShapeGrouper
531 uno::Reference< drawing::XShapeGroup > SAL_CALL
532 OSection::group(uno::Reference< drawing::XShapes > const& xShapes)
533 {
534  // no lock because m_xDrawPage_ShapeGrouper is const
535  return (m_xDrawPage_ShapeGrouper.is())
536  ? m_xDrawPage_ShapeGrouper->group(xShapes)
537  : nullptr;
538 }
539 void SAL_CALL
540 OSection::ungroup(uno::Reference<drawing::XShapeGroup> const& xGroup)
541 {
542  // no lock because m_xDrawPage_ShapeGrouper is const
543  if (m_xDrawPage_ShapeGrouper.is()) {
544  m_xDrawPage_ShapeGrouper->ungroup(xGroup);
545  }
546 }
547 
548 // XFormsSupplier
549 uno::Reference<container::XNameContainer> SAL_CALL OSection::getForms()
550 {
551  // no lock because m_xDrawPage_FormSupplier is const
552  return (m_xDrawPage_FormSupplier.is())
553  ? m_xDrawPage_FormSupplier->getForms()
554  : nullptr;
555 }
556 // XFormsSupplier2
557 sal_Bool SAL_CALL OSection::hasForms()
558 {
559  // no lock because m_xDrawPage_FormSupplier is const
560  return (m_xDrawPage_FormSupplier.is())
561  && m_xDrawPage_FormSupplier->hasForms();
562 }
563 
564 
565 // css::lang::XUnoTunnel
566 
567 sal_Int64 OSection::getSomething( const uno::Sequence< sal_Int8 > & rId )
568 {
569  if (isUnoTunnelId<OSection>(rId) )
570  return reinterpret_cast<sal_Int64>(this);
571  return (m_xDrawPage_Tunnel.is()) ? m_xDrawPage_Tunnel->getSomething(rId) : 0;
572 }
573 
574 uno::Sequence< sal_Int8 > OSection::getUnoTunnelId()
575 {
576  static ::cppu::OImplementationId implId;
577 
578  return implId.getImplementationId();
579 }
580 
581 void OSection::notifyElementAdded(const uno::Reference< drawing::XShape >& xShape )
582 {
583  if ( !m_bInInsertNotify )
584  {
585  container::ContainerEvent aEvent(static_cast<container::XContainer*>(this), uno::Any(), uno::makeAny(xShape), uno::Any());
586  m_aContainerListeners.notifyEach(&container::XContainerListener::elementInserted,aEvent);
587  }
588 }
589 
590 void OSection::notifyElementRemoved(const uno::Reference< drawing::XShape >& xShape)
591 {
592  if ( !m_bInRemoveNotify )
593  {
594  // notify our container listeners
595  container::ContainerEvent aEvent(static_cast<container::XContainer*>(this), uno::Any(), uno::makeAny(xShape), uno::Any());
596  m_aContainerListeners.notifyEach(&container::XContainerListener::elementRemoved,aEvent);
597  }
598 }
599 
600 } // namespace reportdesign
601 
602 
603 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
void SetUnoPage(css::uno::Reference< css::drawing::XDrawPage > const &)
bool hasValue()
osl::Mutex m_aMutex
ULONG m_refCount
#define PROPERTY_VISIBLE
Definition: strings.hxx:35
constexpr::Color COL_TRANSPARENT(ColorTransparency, 0xFF, 0xFF, 0xFF, 0xFF)
#define PROPERTY_CANSHRINK
Definition: strings.hxx:46
void throwIllegallArgumentException(const OUString &_sTypeName, const uno::Reference< uno::XInterface > &ExceptionContext_, sal_Int16 ArgumentPosition_)
Definition: Tools.cxx:43
NONE
#define PROPERTY_REPEATSECTION
Definition: strings.hxx:47
#define PROPERTY_NEWROWORCOL
Definition: strings.hxx:43
OUString m_sName
bool CPPUHELPER_DLLPUBLIC supportsService(css::lang::XServiceInfo *implementation, rtl::OUString const &name)
#define SAL_N_ELEMENTS(arr)
#define PROPERTY_NAME
Definition: strings.hxx:36
static css::uno::Reference< css::report::XSection > createOSection(const css::uno::Reference< css::report::XReportDefinition > &_xParent, const css::uno::Reference< css::uno::XComponentContext > &context, bool _bPageSection=false)
#define SERVICE_SECTION
Definition: strings.hxx:30
#define PROPERTY_CANGROW
Definition: strings.hxx:45
::cppu::WeakComponentImplHelper< css::report::XSection, css::lang::XServiceInfo, css::lang::XUnoTunnel, css::drawing::XDrawPage, css::drawing::XShapeGrouper, css::form::XFormsSupplier2 > SectionBase
Definition: Section.hxx:47
#define PROPERTY_BACKTRANSPARENT
Definition: strings.hxx:39
unsigned char sal_Bool
::cppu::PropertySetMixin< css::report::XSection > SectionPropertySet
Definition: Section.hxx:48
css::uno::Type const & get()
OSection(const OSection &)=delete
#define IMPLEMENT_FORWARD_REFCOUNT(classname, refcountbase)
static uno::Sequence< OUString > lcl_getGroupAbsent()
Definition: Section.cxx:42
#define PROPERTY_FORCENEWPAGE
Definition: strings.hxx:42
#define PROPERTY_HEIGHT
Definition: strings.hxx:37
#define PROPERTY_BACKCOLOR
Definition: strings.hxx:38
#define PROPERTY_CONDITIONALPRINTEXPRESSION
Definition: strings.hxx:110
#define PROPERTY_KEEPTOGETHER
Definition: strings.hxx:44
struct _ADOIndex Index
AnyEventRef aEvent
void set(css::uno::UnoInterfaceReference const &value)
static uno::Sequence< OUString > lcl_getAbsent(bool _bPageSection)
Definition: Section.cxx:53