diff options
Diffstat (limited to 'reportdesign/source/core/inc')
20 files changed, 3834 insertions, 0 deletions
diff --git a/reportdesign/source/core/inc/FixedLine.hxx b/reportdesign/source/core/inc/FixedLine.hxx new file mode 100644 index 000000000..7014ef153 --- /dev/null +++ b/reportdesign/source/core/inc/FixedLine.hxx @@ -0,0 +1,169 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +#ifndef INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_FIXEDLINE_HXX +#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_FIXEDLINE_HXX + +#include <cppuhelper/propertysetmixin.hxx> +#include <com/sun/star/report/XFixedLine.hpp> +#include "ReportControlModel.hxx" +#include <comphelper/uno3.hxx> +#include <cppuhelper/compbase.hxx> +#include <cppuhelper/basemutex.hxx> +#include <com/sun/star/lang/XServiceInfo.hpp> +#include <ReportHelperDefines.hxx> + + +namespace reportdesign +{ + typedef ::cppu::PropertySetMixin< css::report::XFixedLine > FixedLinePropertySet; + typedef ::cppu::WeakComponentImplHelper< css::report::XFixedLine + ,css::lang::XServiceInfo > FixedLineBase; + + /** \class OFixedLine Defines the implementation of a \interface com:::sun::star::report::XFixedLine + * \ingroup reportdesign_api + * + */ + class OFixedLine final : public cppu::BaseMutex, + public FixedLineBase, + public FixedLinePropertySet + { + friend class OShapeHelper; + OReportControlModel m_aProps; + css::drawing::LineStyle m_LineStyle; + css::drawing::LineDash m_LineDash; + sal_Int32 m_nOrientation; + ::sal_Int32 m_LineColor; + ::sal_Int16 m_LineTransparence; + ::sal_Int32 m_LineWidth; + + private: + OFixedLine(const OFixedLine&) = delete; + OFixedLine& operator=(const OFixedLine&) = delete; + + template <typename T> void set( const OUString& _sProperty + ,const T& Value + ,T& _member) + { + BoundListeners l; + { + ::osl::MutexGuard aGuard(m_aMutex); + prepareSet(_sProperty, css::uno::Any(_member), css::uno::Any(Value), &l); + _member = Value; + } + l.notify(); + } + virtual ~OFixedLine() override; + public: + explicit OFixedLine(css::uno::Reference< css::uno::XComponentContext > const & _xContext); + explicit OFixedLine(css::uno::Reference< css::uno::XComponentContext > const & _xContext + ,const css::uno::Reference< css::lang::XMultiServiceFactory > & _xFactory + ,css::uno::Reference< css::drawing::XShape >& _xShape + ,sal_Int32 _nOrientation); + + DECLARE_XINTERFACE( ) + // css::lang::XServiceInfo + virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override; + virtual OUString SAL_CALL getImplementationName( ) override; + virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames( ) override; + + /// @throws css::uno::RuntimeException + static css::uno::Sequence< OUString > getSupportedServiceNames_Static(); + /// @throws css::uno::RuntimeException + static OUString getImplementationName_Static(); + static css::uno::Reference< css::uno::XInterface > + create(css::uno::Reference< css::uno::XComponentContext > const & xContext); + // css::beans::XPropertySet + virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) override; + virtual void SAL_CALL setPropertyValue( const OUString& aPropertyName, const css::uno::Any& aValue ) override; + virtual css::uno::Any SAL_CALL getPropertyValue( const OUString& PropertyName ) override; + virtual void SAL_CALL addPropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& xListener ) override; + virtual void SAL_CALL removePropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& aListener ) override; + virtual void SAL_CALL addVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override; + virtual void SAL_CALL removeVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override; + + // XReportComponent + REPORTCOMPONENT_HEADER() + + // XShape + SHAPE_HEADER() + + // XShapeDescriptor + virtual OUString SAL_CALL getShapeType( ) override; + + // XReportControlModel + REPORTCONTROLMODEL_HEADER() + + // XFixedLine + virtual ::sal_Int32 SAL_CALL getOrientation() override; + virtual void SAL_CALL setOrientation( ::sal_Int32 _orientation ) override; + virtual css::drawing::LineStyle SAL_CALL getLineStyle() override; + virtual void SAL_CALL setLineStyle( css::drawing::LineStyle _linestyle ) override; + virtual css::drawing::LineDash SAL_CALL getLineDash() override; + virtual void SAL_CALL setLineDash( const css::drawing::LineDash& _linedash ) override; + virtual ::sal_Int32 SAL_CALL getLineColor() override; + virtual void SAL_CALL setLineColor( ::sal_Int32 _linecolor ) override; + virtual ::sal_Int16 SAL_CALL getLineTransparence() override; + virtual void SAL_CALL setLineTransparence( ::sal_Int16 _linetransparence ) override; + virtual ::sal_Int32 SAL_CALL getLineWidth() override; + virtual void SAL_CALL setLineWidth( ::sal_Int32 _linewidth ) override; + + // css::report::XReportControlFormat + REPORTCONTROLFORMAT_HEADER() + + // XCloneable + virtual css::uno::Reference< css::util::XCloneable > SAL_CALL createClone( ) override; + + // XComponent + virtual void SAL_CALL dispose() override; + virtual void SAL_CALL addEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override + { + cppu::WeakComponentImplHelperBase::addEventListener(aListener); + } + virtual void SAL_CALL removeEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override + { + cppu::WeakComponentImplHelperBase::removeEventListener(aListener); + } + + // XChild + virtual css::uno::Reference< css::uno::XInterface > SAL_CALL getParent( ) override; + virtual void SAL_CALL setParent( const css::uno::Reference< css::uno::XInterface >& Parent ) override; + + // XContainer + virtual void SAL_CALL addContainerListener( const css::uno::Reference< css::container::XContainerListener >& xListener ) override; + virtual void SAL_CALL removeContainerListener( const css::uno::Reference< css::container::XContainerListener >& xListener ) override; + + // XElementAccess + virtual css::uno::Type SAL_CALL getElementType( ) override; + virtual sal_Bool SAL_CALL hasElements( ) override; + + // XIndexReplace + virtual void SAL_CALL replaceByIndex( ::sal_Int32 Index, const css::uno::Any& Element ) override; + + // XIndexContainer + virtual void SAL_CALL insertByIndex( ::sal_Int32 Index, const css::uno::Any& Element ) override; + virtual void SAL_CALL removeByIndex( ::sal_Int32 Index ) override; + + // XIndexAccess + virtual ::sal_Int32 SAL_CALL getCount( ) override; + virtual css::uno::Any SAL_CALL getByIndex( ::sal_Int32 Index ) override; + }; +} +#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_FIXEDLINE_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/reportdesign/source/core/inc/FixedText.hxx b/reportdesign/source/core/inc/FixedText.hxx new file mode 100644 index 000000000..6cc63bfeb --- /dev/null +++ b/reportdesign/source/core/inc/FixedText.hxx @@ -0,0 +1,185 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_FIXEDTEXT_HXX +#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_FIXEDTEXT_HXX + +#include <cppuhelper/propertysetmixin.hxx> +#include <com/sun/star/report/XFixedText.hpp> +#include "ReportControlModel.hxx" +#include <comphelper/uno3.hxx> +#include <cppuhelper/compbase.hxx> +#include <cppuhelper/basemutex.hxx> +#include <com/sun/star/lang/XServiceInfo.hpp> +#include <ReportHelperDefines.hxx> + + +namespace reportdesign +{ + typedef ::cppu::PropertySetMixin< css::report::XFixedText > FixedTextPropertySet; + typedef ::cppu::WeakComponentImplHelper< css::report::XFixedText + ,css::lang::XServiceInfo > FixedTextBase; + + /** \class OFixedText Defines the implementation of a \interface com:::sun::star::report::XFixedText + * \ingroup reportdesign_api + * + */ + class OFixedText final : public cppu::BaseMutex, + public FixedTextBase, + public FixedTextPropertySet + { + friend class OShapeHelper; + OReportControlModel m_aProps; + OUString m_sLabel; + private: + OFixedText(const OFixedText&) = delete; + OFixedText& operator=(const OFixedText&) = delete; + + // internally, we store PROPERTY_PARAADJUST as css::style::ParagraphAdjust, but externally the property is visible as a sal_Int16 + void set( const OUString& _sProperty + ,sal_Int16 Value + ,css::style::ParagraphAdjust& _member) + { + BoundListeners l; + { + ::osl::MutexGuard aGuard(m_aMutex); + if ( static_cast<sal_Int16>(_member) != Value ) + { + prepareSet(_sProperty, css::uno::Any(static_cast<sal_Int16>(_member)), css::uno::Any(Value), &l); + _member = static_cast<css::style::ParagraphAdjust>(Value); + } + } + l.notify(); + } + template <typename T> void set( const OUString& _sProperty + ,const T& Value + ,T& _member) + { + BoundListeners l; + { + ::osl::MutexGuard aGuard(m_aMutex); + if ( _member != Value ) + { + prepareSet(_sProperty, css::uno::Any(_member), css::uno::Any(Value), &l); + _member = Value; + } + } + l.notify(); + } + void set( const OUString& _sProperty + ,bool Value + ,bool& _member) + { + BoundListeners l; + { + ::osl::MutexGuard aGuard(m_aMutex); + if ( _member != Value ) + { + prepareSet(_sProperty, css::uno::Any(_member), css::uno::Any(Value), &l); + _member = Value; + } + } + l.notify(); + } + virtual ~OFixedText() override; + public: + explicit OFixedText(css::uno::Reference< css::uno::XComponentContext > const & _xContext); + explicit OFixedText(css::uno::Reference< css::uno::XComponentContext > const & _xContext + ,const css::uno::Reference< css::lang::XMultiServiceFactory > & _xFactory + ,css::uno::Reference< css::drawing::XShape >& _xShape); + + DECLARE_XINTERFACE( ) + // css::lang::XServiceInfo + virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override; + virtual OUString SAL_CALL getImplementationName( ) override; + virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames( ) override; + + /// @throws css::uno::RuntimeException + static css::uno::Sequence< OUString > getSupportedServiceNames_Static(); + /// @throws css::uno::RuntimeException + static OUString getImplementationName_Static(); + static css::uno::Reference< css::uno::XInterface > + create(css::uno::Reference< css::uno::XComponentContext > const & xContext); + // css::beans::XPropertySet + virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) override; + virtual void SAL_CALL setPropertyValue( const OUString& aPropertyName, const css::uno::Any& aValue ) override; + virtual css::uno::Any SAL_CALL getPropertyValue( const OUString& PropertyName ) override; + virtual void SAL_CALL addPropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& xListener ) override; + virtual void SAL_CALL removePropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& aListener ) override; + virtual void SAL_CALL addVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override; + virtual void SAL_CALL removeVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override; + + // XReportComponent + REPORTCOMPONENT_HEADER() + // XShape + SHAPE_HEADER() + + // XShapeDescriptor + virtual OUString SAL_CALL getShapeType( ) override; + + // XReportControlModel + REPORTCONTROLMODEL_HEADER() + + // XCloneable + virtual css::uno::Reference< css::util::XCloneable > SAL_CALL createClone( ) override; + + // XFixedText + virtual OUString SAL_CALL getLabel() override; + virtual void SAL_CALL setLabel( const OUString& _label ) override; + + // css::report::XReportControlFormat + REPORTCONTROLFORMAT_HEADER() + + // XComponent + virtual void SAL_CALL dispose() override; + virtual void SAL_CALL addEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override + { + cppu::WeakComponentImplHelperBase::addEventListener(aListener); + } + virtual void SAL_CALL removeEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override + { + cppu::WeakComponentImplHelperBase::removeEventListener(aListener); + } + + // XChild + virtual css::uno::Reference< css::uno::XInterface > SAL_CALL getParent( ) override; + virtual void SAL_CALL setParent( const css::uno::Reference< css::uno::XInterface >& Parent ) override; + // XContainer + virtual void SAL_CALL addContainerListener( const css::uno::Reference< css::container::XContainerListener >& xListener ) override; + virtual void SAL_CALL removeContainerListener( const css::uno::Reference< css::container::XContainerListener >& xListener ) override; + + // XElementAccess + virtual css::uno::Type SAL_CALL getElementType( ) override; + virtual sal_Bool SAL_CALL hasElements( ) override; + + // XIndexReplace + virtual void SAL_CALL replaceByIndex( ::sal_Int32 Index, const css::uno::Any& Element ) override; + + // XIndexContainer + virtual void SAL_CALL insertByIndex( ::sal_Int32 Index, const css::uno::Any& Element ) override; + virtual void SAL_CALL removeByIndex( ::sal_Int32 Index ) override; + + // XIndexAccess + virtual ::sal_Int32 SAL_CALL getCount( ) override; + virtual css::uno::Any SAL_CALL getByIndex( ::sal_Int32 Index ) override; + }; +} +#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_FIXEDTEXT_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/reportdesign/source/core/inc/FormatCondition.hxx b/reportdesign/source/core/inc/FormatCondition.hxx new file mode 100644 index 000000000..07b2db006 --- /dev/null +++ b/reportdesign/source/core/inc/FormatCondition.hxx @@ -0,0 +1,146 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +#ifndef INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_FORMATCONDITION_HXX +#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_FORMATCONDITION_HXX + +#include <cppuhelper/propertysetmixin.hxx> +#include <com/sun/star/report/XFormatCondition.hpp> +#include "ReportControlModel.hxx" +#include <comphelper/uno3.hxx> +#include <cppuhelper/compbase.hxx> +#include <cppuhelper/basemutex.hxx> +#include <com/sun/star/lang/XServiceInfo.hpp> +#include <ReportHelperDefines.hxx> + +namespace reportdesign +{ + typedef ::cppu::PropertySetMixin< css::report::XFormatCondition > FormatConditionPropertySet; + typedef ::cppu::WeakComponentImplHelper< css::report::XFormatCondition + ,css::lang::XServiceInfo > FormatConditionBase; + + /** \class OFormatCondition Defines the implementation of a \interface com:::sun::star::report::XFormatCondition + * \ingroup reportdesign_api + * + */ + class OFormatCondition final : public cppu::BaseMutex, + public FormatConditionBase, + public FormatConditionPropertySet + { + OFormatProperties m_aFormatProperties; + OUString m_sFormula; + bool m_bEnabled; + private: + OFormatCondition(const OFormatCondition&) = delete; + OFormatCondition& operator=(const OFormatCondition&) = delete; + + // internally, we store PROPERTY_PARAADJUST as css::style::ParagraphAdjust, but externally the property is visible as a sal_Int16 + void set( const OUString& _sProperty + ,sal_Int16 Value + ,css::style::ParagraphAdjust& _member) + { + BoundListeners l; + { + ::osl::MutexGuard aGuard(m_aMutex); + if ( static_cast<sal_Int16>(_member) != Value ) + { + prepareSet(_sProperty, css::uno::Any(static_cast<sal_Int16>(_member)), css::uno::Any(Value), &l); + _member = static_cast<css::style::ParagraphAdjust>(Value); + } + } + l.notify(); + } + template <typename T> void set( const OUString& _sProperty + ,const T& Value + ,T& _member) + { + BoundListeners l; + { + ::osl::MutexGuard aGuard(m_aMutex); + if ( _member != Value ) + { + prepareSet(_sProperty, css::uno::Any(_member), css::uno::Any(Value), &l); + _member = Value; + } + } + l.notify(); + } + void set( const OUString& _sProperty + ,bool Value + ,bool& _member) + { + BoundListeners l; + { + ::osl::MutexGuard aGuard(m_aMutex); + if ( _member != Value ) + { + prepareSet(_sProperty, css::uno::Any(_member), css::uno::Any(Value), &l); + _member = Value; + } + } + l.notify(); + } + virtual ~OFormatCondition() override; + public: + explicit OFormatCondition(css::uno::Reference< css::uno::XComponentContext > const & _xContext + ); + + DECLARE_XINTERFACE( ) + // css::lang::XServiceInfo + virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override; + virtual OUString SAL_CALL getImplementationName( ) override; + virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames( ) override; + + /// @throws css::uno::RuntimeException + static css::uno::Sequence< OUString > getSupportedServiceNames_Static(); + /// @throws css::uno::RuntimeException + static OUString getImplementationName_Static(); + static css::uno::Reference< css::uno::XInterface > + create(css::uno::Reference< css::uno::XComponentContext > const & xContext); + // css::beans::XPropertySet + virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) override; + virtual void SAL_CALL setPropertyValue( const OUString& aPropertyName, const css::uno::Any& aValue ) override; + virtual css::uno::Any SAL_CALL getPropertyValue( const OUString& PropertyName ) override; + virtual void SAL_CALL addPropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& xListener ) override; + virtual void SAL_CALL removePropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& aListener ) override; + virtual void SAL_CALL addVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override; + virtual void SAL_CALL removeVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override; + + // XFormatCondition + virtual sal_Bool SAL_CALL getEnabled() override; + virtual void SAL_CALL setEnabled( sal_Bool _enabled ) override; + virtual OUString SAL_CALL getFormula() override; + virtual void SAL_CALL setFormula( const OUString& _formula ) override; + + // XReportControlFormat + REPORTCONTROLFORMAT_HEADER() + // XComponent + virtual void SAL_CALL dispose() override; + virtual void SAL_CALL addEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override + { + cppu::WeakComponentImplHelperBase::addEventListener(aListener); + } + virtual void SAL_CALL removeEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override + { + cppu::WeakComponentImplHelperBase::removeEventListener(aListener); + } + }; +} +#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_FORMATCONDITION_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/reportdesign/source/core/inc/FormattedField.hxx b/reportdesign/source/core/inc/FormattedField.hxx new file mode 100644 index 000000000..e777f7b5e --- /dev/null +++ b/reportdesign/source/core/inc/FormattedField.hxx @@ -0,0 +1,192 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +#ifndef INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_FORMATTEDFIELD_HXX +#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_FORMATTEDFIELD_HXX + +#include <cppuhelper/propertysetmixin.hxx> +#include <com/sun/star/report/XFormattedField.hpp> +#include "ReportControlModel.hxx" +#include <comphelper/uno3.hxx> +#include <cppuhelper/compbase.hxx> +#include <cppuhelper/basemutex.hxx> +#include <com/sun/star/lang/XServiceInfo.hpp> +#include <ReportHelperDefines.hxx> + + +namespace reportdesign +{ + typedef ::cppu::PropertySetMixin< css::report::XFormattedField > FormattedFieldPropertySet; + typedef ::cppu::WeakComponentImplHelper< css::report::XFormattedField + ,css::lang::XServiceInfo > FormattedFieldBase; + + /** \class OFormattedField Defines the implementation of a \interface com:::sun::star::report::XFormattedField + * \ingroup reportdesign_api + * + */ + class OFormattedField final : public cppu::BaseMutex, + public FormattedFieldBase, + public FormattedFieldPropertySet + { + friend class OShapeHelper; + + OReportControlModel m_aProps; + css::uno::Reference< css::util::XNumberFormatsSupplier > + m_xFormatsSupplier; + ::sal_Int32 m_nFormatKey; + + private: + OFormattedField(const OFormattedField&) = delete; + OFormattedField& operator=(const OFormattedField&) = delete; + + // internally, we store PROPERTY_PARAADJUST as css::style::ParagraphAdjust, but externally the property is visible as a sal_Int16 + void set( const OUString& _sProperty + ,sal_Int16 Value + ,css::style::ParagraphAdjust& _member) + { + BoundListeners l; + { + ::osl::MutexGuard aGuard(m_aMutex); + if ( static_cast<sal_Int16>(_member) != Value ) + { + prepareSet(_sProperty, css::uno::Any(static_cast<sal_Int16>(_member)), css::uno::Any(Value), &l); + _member = static_cast<css::style::ParagraphAdjust>(Value); + } + } + l.notify(); + } + template <typename T> void set( const OUString& _sProperty + ,const T& Value + ,T& _member) + { + BoundListeners l; + { + ::osl::MutexGuard aGuard(m_aMutex); + if ( _member != Value ) + { + prepareSet(_sProperty, css::uno::Any(_member), css::uno::Any(Value), &l); + _member = Value; + } + } + l.notify(); + } + void set( const OUString& _sProperty + ,bool Value + ,bool& _member) + { + BoundListeners l; + { + ::osl::MutexGuard aGuard(m_aMutex); + if ( _member != Value ) + { + prepareSet(_sProperty, css::uno::Any(_member), css::uno::Any(Value), &l); + _member = Value; + } + } + l.notify(); + } + virtual ~OFormattedField() override; + public: + explicit OFormattedField(css::uno::Reference< css::uno::XComponentContext > const & _xContext); + explicit OFormattedField(css::uno::Reference< css::uno::XComponentContext > const & _xContext + ,const css::uno::Reference< css::lang::XMultiServiceFactory > & _xFactory + ,css::uno::Reference< css::drawing::XShape >& _xShape); + + DECLARE_XINTERFACE( ) + // css::lang::XServiceInfo + virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override; + virtual OUString SAL_CALL getImplementationName( ) override; + virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames( ) override; + + /// @throws css::uno::RuntimeException + static css::uno::Sequence< OUString > getSupportedServiceNames_Static(); + /// @throws css::uno::RuntimeException + static OUString getImplementationName_Static(); + static css::uno::Reference< css::uno::XInterface > + create(css::uno::Reference< css::uno::XComponentContext > const & xContext); + // css::beans::XPropertySet + virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) override; + virtual void SAL_CALL setPropertyValue( const OUString& aPropertyName, const css::uno::Any& aValue ) override; + virtual css::uno::Any SAL_CALL getPropertyValue( const OUString& PropertyName ) override; + virtual void SAL_CALL addPropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& xListener ) override; + virtual void SAL_CALL removePropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& aListener ) override; + virtual void SAL_CALL addVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override; + virtual void SAL_CALL removeVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override; + + // XContainer + virtual void SAL_CALL addContainerListener( const css::uno::Reference< css::container::XContainerListener >& xListener ) override; + virtual void SAL_CALL removeContainerListener( const css::uno::Reference< css::container::XContainerListener >& xListener ) override; + + // XElementAccess + virtual css::uno::Type SAL_CALL getElementType( ) override; + virtual sal_Bool SAL_CALL hasElements( ) override; + + // XIndexReplace + virtual void SAL_CALL replaceByIndex( ::sal_Int32 Index, const css::uno::Any& Element ) override; + + // XIndexContainer + virtual void SAL_CALL insertByIndex( ::sal_Int32 Index, const css::uno::Any& Element ) override; + virtual void SAL_CALL removeByIndex( ::sal_Int32 Index ) override; + + // XIndexAccess + virtual ::sal_Int32 SAL_CALL getCount( ) override; + virtual css::uno::Any SAL_CALL getByIndex( ::sal_Int32 Index ) override; + + // XReportComponent + REPORTCOMPONENT_HEADER() + + // XShape + SHAPE_HEADER() + + // XShapeDescriptor + virtual OUString SAL_CALL getShapeType( ) override; + + // XReportControlModel + REPORTCONTROLMODEL_HEADER() + + // XReportControlFormat + REPORTCONTROLFORMAT_HEADER() + + // XCloneable + virtual css::uno::Reference< css::util::XCloneable > SAL_CALL createClone( ) override; + + // XFormattedField + virtual ::sal_Int32 SAL_CALL getFormatKey() override; + virtual void SAL_CALL setFormatKey(::sal_Int32 the_value) override; + virtual css::uno::Reference< css::util::XNumberFormatsSupplier > SAL_CALL getFormatsSupplier() override; + virtual void SAL_CALL setFormatsSupplier( const css::uno::Reference< css::util::XNumberFormatsSupplier >& _formatssupplier ) override; + + // XComponent + virtual void SAL_CALL dispose() override; + virtual void SAL_CALL addEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override + { + cppu::WeakComponentImplHelperBase::addEventListener(aListener); + } + virtual void SAL_CALL removeEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override + { + cppu::WeakComponentImplHelperBase::removeEventListener(aListener); + } + + // XChild + virtual css::uno::Reference< css::uno::XInterface > SAL_CALL getParent( ) override; + virtual void SAL_CALL setParent( const css::uno::Reference< css::uno::XInterface >& Parent ) override; + }; +} +#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_FORMATTEDFIELD_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/reportdesign/source/core/inc/Function.hxx b/reportdesign/source/core/inc/Function.hxx new file mode 100644 index 000000000..891b5427d --- /dev/null +++ b/reportdesign/source/core/inc/Function.hxx @@ -0,0 +1,134 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +#ifndef INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_FUNCTION_HXX +#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_FUNCTION_HXX + +#include <comphelper/uno3.hxx> +#include <cppuhelper/propertysetmixin.hxx> +#include <com/sun/star/report/XFunction.hpp> +#include <com/sun/star/report/XFunctions.hpp> +#include <cppuhelper/basemutex.hxx> +#include <cppuhelper/compbase.hxx> +#include <com/sun/star/lang/XServiceInfo.hpp> + +namespace reportdesign +{ + typedef ::cppu::PropertySetMixin< css::report::XFunction > FunctionPropertySet; + typedef ::cppu::WeakComponentImplHelper< css::report::XFunction + ,css::lang::XServiceInfo > FunctionBase; + + /** \class OFunction Defines the implementation of a \interface com:::sun::star::report::XFunction + * \ingroup reportdesign_api + * + */ + class OFunction : public cppu::BaseMutex, + public FunctionBase, + public FunctionPropertySet + { + css::beans::Optional< OUString> m_sInitialFormula; + css::uno::WeakReference< css::report::XFunctions > m_xParent; + OUString m_sName; + OUString m_sFormula; + bool m_bPreEvaluated; + bool m_bDeepTraversing; + private: + OFunction(const OFunction&) = delete; + OFunction& operator=(const OFunction&) = delete; + + template <typename T> void set( const OUString& _sProperty + ,const T& Value + ,T& _member) + { + BoundListeners l; + { + ::osl::MutexGuard aGuard(m_aMutex); + prepareSet(_sProperty, css::uno::Any(_member), css::uno::Any(Value), &l); + _member = Value; + } + l.notify(); + } + void set( const OUString& _sProperty + ,bool Value + ,bool& _member) + { + BoundListeners l; + { + ::osl::MutexGuard aGuard(m_aMutex); + prepareSet(_sProperty, css::uno::Any(_member), css::uno::Any(Value), &l); + _member = Value; + } + l.notify(); + } + protected: + virtual ~OFunction() override; + public: + explicit OFunction(css::uno::Reference< css::uno::XComponentContext > const & _xContext); + + DECLARE_XINTERFACE( ) + // css::lang::XServiceInfo + virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override; + virtual OUString SAL_CALL getImplementationName( ) override; + virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames( ) override; + + /// @throws css::uno::RuntimeException + static css::uno::Sequence< OUString > getSupportedServiceNames_Static(); + /// @throws css::uno::RuntimeException + static OUString getImplementationName_Static(); + static css::uno::Reference< css::uno::XInterface > + create(css::uno::Reference< css::uno::XComponentContext > const & xContext); + // css::beans::XPropertySet + virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) override; + virtual void SAL_CALL setPropertyValue( const OUString& aPropertyName, const css::uno::Any& aValue ) override; + virtual css::uno::Any SAL_CALL getPropertyValue( const OUString& PropertyName ) override; + virtual void SAL_CALL addPropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& xListener ) override; + virtual void SAL_CALL removePropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& aListener ) override; + virtual void SAL_CALL addVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override; + virtual void SAL_CALL removeVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override; + + // css::report::XFunction: + virtual sal_Bool SAL_CALL getPreEvaluated() override; + virtual void SAL_CALL setPreEvaluated(sal_Bool the_value) override; + virtual sal_Bool SAL_CALL getDeepTraversing() override; + virtual void SAL_CALL setDeepTraversing(sal_Bool the_value) override; + virtual OUString SAL_CALL getName() override; + virtual void SAL_CALL setName(const OUString & the_value) override; + virtual OUString SAL_CALL getFormula() override; + virtual void SAL_CALL setFormula(const OUString & the_value) override; + virtual css::beans::Optional< OUString> SAL_CALL getInitialFormula() override; + virtual void SAL_CALL setInitialFormula(const css::beans::Optional< OUString> & the_value) override; + + // XComponent + virtual void SAL_CALL dispose() override; + virtual void SAL_CALL addEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override + { + cppu::WeakComponentImplHelperBase::addEventListener(aListener); + } + virtual void SAL_CALL removeEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override + { + cppu::WeakComponentImplHelperBase::removeEventListener(aListener); + } + + // XChild + virtual css::uno::Reference< css::uno::XInterface > SAL_CALL getParent( ) override; + virtual void SAL_CALL setParent( const css::uno::Reference< css::uno::XInterface >& Parent ) override; + }; +} +#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_FUNCTION_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/reportdesign/source/core/inc/Functions.hxx b/reportdesign/source/core/inc/Functions.hxx new file mode 100644 index 000000000..94a54beeb --- /dev/null +++ b/reportdesign/source/core/inc/Functions.hxx @@ -0,0 +1,99 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +#ifndef INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_FUNCTIONS_HXX +#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_FUNCTIONS_HXX + +#include <com/sun/star/report/XFunctions.hpp> +#include <com/sun/star/report/XFunctionsSupplier.hpp> +#include <cppuhelper/compbase.hxx> +#include <comphelper/interfacecontainer3.hxx> +#include <cppuhelper/basemutex.hxx> +#include <com/sun/star/uno/XComponentContext.hpp> +#include <vector> + + +namespace reportdesign +{ + typedef ::cppu::WeakComponentImplHelper< css::report::XFunctions> FunctionsBase; + /** \class OFunctions Defines the implementation of a \interface com:::sun::star::report::XFunctions + * \ingroup reportdesign_api + * + */ + class OFunctions : public cppu::BaseMutex, + public FunctionsBase + { + typedef ::std::vector< css::uno::Reference< css::report::XFunction > > TFunctions; + ::comphelper::OInterfaceContainerHelper3<css::container::XContainerListener> m_aContainerListeners; + css::uno::Reference< css::uno::XComponentContext > m_xContext; + css::uno::WeakReference< css::report::XFunctionsSupplier > m_xParent; + TFunctions m_aFunctions; + private: + OFunctions& operator=(const OFunctions&) = delete; + OFunctions(const OFunctions&) = delete; + void checkIndex(sal_Int32 _nIndex); + protected: + // TODO: VirtualFunctionFinder: This is virtual function! + + virtual ~OFunctions() override; + + /** this function is called upon disposing the component + */ + // TODO: VirtualFunctionFinder: This is virtual function! + + virtual void SAL_CALL disposing() override; + public: + explicit OFunctions( const css::uno::Reference< css::report::XFunctionsSupplier >& _xParent + ,const css::uno::Reference< css::uno::XComponentContext >& context); + + // XFunctions + // Methods + virtual css::uno::Reference< css::report::XFunction > SAL_CALL createFunction( ) override; + // XIndexContainer + virtual void SAL_CALL insertByIndex( ::sal_Int32 Index, const css::uno::Any& Element ) override; + virtual void SAL_CALL removeByIndex( ::sal_Int32 Index ) override; + // XIndexReplace + virtual void SAL_CALL replaceByIndex( ::sal_Int32 Index, const css::uno::Any& Element ) override; + // XIndexAccess + virtual ::sal_Int32 SAL_CALL getCount( ) override; + virtual css::uno::Any SAL_CALL getByIndex( ::sal_Int32 Index ) override; + // XElementAccess + virtual css::uno::Type SAL_CALL getElementType( ) override; + virtual sal_Bool SAL_CALL hasElements( ) override; + // XChild + virtual css::uno::Reference< css::uno::XInterface > SAL_CALL getParent( ) override; + virtual void SAL_CALL setParent( const css::uno::Reference< css::uno::XInterface >& Parent ) override; + // XContainer + virtual void SAL_CALL addContainerListener( const css::uno::Reference< css::container::XContainerListener >& xListener ) override; + virtual void SAL_CALL removeContainerListener( const css::uno::Reference< css::container::XContainerListener >& xListener ) override; + + // XComponent + virtual void SAL_CALL dispose() override; + virtual void SAL_CALL addEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override + { + cppu::WeakComponentImplHelperBase::addEventListener(aListener); + } + virtual void SAL_CALL removeEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override + { + cppu::WeakComponentImplHelperBase::removeEventListener(aListener); + } + }; +} +#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_FUNCTIONS_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/reportdesign/source/core/inc/Group.hxx b/reportdesign/source/core/inc/Group.hxx new file mode 100644 index 000000000..a30debf41 --- /dev/null +++ b/reportdesign/source/core/inc/Group.hxx @@ -0,0 +1,168 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +#ifndef INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_GROUP_HXX +#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_GROUP_HXX + +#include <com/sun/star/report/XGroup.hpp> +#include <cppuhelper/compbase.hxx> +#include <comphelper/broadcasthelper.hxx> +#include <cppuhelper/propertysetmixin.hxx> +#include <com/sun/star/uno/XComponentContext.hpp> +#include <GroupProperties.hxx> +#include <comphelper/uno3.hxx> +#include <com/sun/star/lang/XServiceInfo.hpp> + +namespace reportdesign +{ + typedef ::cppu::WeakComponentImplHelper< css::report::XGroup + , css::lang::XServiceInfo> GroupBase; + typedef ::cppu::PropertySetMixin< css::report::XGroup> GroupPropertySet; + + /** \class OGroup Defines the implementation of a \interface com:::sun::star::report::XGroup + * \ingroup reportdesign_api + * + */ + class OGroup : public comphelper::OMutexAndBroadcastHelper + ,public GroupBase + ,public GroupPropertySet + { + css::uno::Reference< css::uno::XComponentContext > m_xContext; + css::uno::WeakReference< css::report::XGroups > m_xParent; + css::uno::Reference< css::report::XSection> m_xHeader; + css::uno::Reference< css::report::XSection> m_xFooter; + css::uno::Reference< css::report::XFunctions > m_xFunctions; + ::rptshared::GroupProperties m_aProps; + + private: + OGroup& operator=(const OGroup&) = delete; + OGroup(const OGroup&) = delete; + + template <typename T> void set( const OUString& _sProperty + ,const T& Value + ,T& _member) + { + BoundListeners l; + { + ::osl::MutexGuard aGuard(m_aMutex); + if ( _member != Value ) + { + prepareSet(_sProperty, css::uno::Any(_member), css::uno::Any(Value), &l); + _member = Value; + } + } + l.notify(); + } + void set( const OUString& _sProperty + ,bool Value + ,bool& _member) + { + BoundListeners l; + { + ::osl::MutexGuard aGuard(m_aMutex); + if ( _member != Value ) + { + prepareSet(_sProperty, css::uno::Any(_member), css::uno::Any(Value), &l); + _member = Value; + } + } + l.notify(); + } + void setSection( const OUString& _sProperty + ,bool _bOn + ,const OUString& _sName + ,css::uno::Reference< css::report::XSection>& _member); + protected: + // TODO: VirtualFunctionFinder: This is virtual function! + + virtual ~OGroup() override; + + /** this function is called upon disposing the component + */ + // TODO: VirtualFunctionFinder: This is virtual function! + + virtual void SAL_CALL disposing() override; + public: + OGroup(const css::uno::Reference< css::report::XGroups >& _xParent + ,const css::uno::Reference< css::uno::XComponentContext >& context); + + DECLARE_XINTERFACE( ) + // css::lang::XServiceInfo + virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override; + virtual OUString SAL_CALL getImplementationName( ) override; + virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames( ) override; + + /// @throws css::uno::RuntimeException + static css::uno::Sequence< OUString > getSupportedServiceNames_Static(); + + // css::beans::XPropertySet + virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) override; + virtual void SAL_CALL setPropertyValue( const OUString& aPropertyName, const css::uno::Any& aValue ) override; + virtual css::uno::Any SAL_CALL getPropertyValue( const OUString& PropertyName ) override; + virtual void SAL_CALL addPropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& xListener ) override; + virtual void SAL_CALL removePropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& aListener ) override; + virtual void SAL_CALL addVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override; + virtual void SAL_CALL removeVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override; + + // XGroup + virtual sal_Bool SAL_CALL getSortAscending() override; + virtual void SAL_CALL setSortAscending( sal_Bool _sortascending ) override; + virtual sal_Bool SAL_CALL getHeaderOn() override; + virtual void SAL_CALL setHeaderOn( sal_Bool _headeron ) override; + virtual sal_Bool SAL_CALL getFooterOn() override; + virtual void SAL_CALL setFooterOn( sal_Bool _footeron ) override; + virtual css::uno::Reference< css::report::XSection > SAL_CALL getHeader() override; + virtual css::uno::Reference< css::report::XSection > SAL_CALL getFooter() override; + virtual ::sal_Int16 SAL_CALL getGroupOn() override; + virtual void SAL_CALL setGroupOn( ::sal_Int16 _groupon ) override; + virtual ::sal_Int32 SAL_CALL getGroupInterval() override; + virtual void SAL_CALL setGroupInterval( ::sal_Int32 _groupinterval ) override; + virtual ::sal_Int16 SAL_CALL getKeepTogether() override; + virtual void SAL_CALL setKeepTogether( ::sal_Int16 _keeptogether ) override; + virtual css::uno::Reference< css::report::XGroups > SAL_CALL getGroups() override; + virtual OUString SAL_CALL getExpression() override; + virtual void SAL_CALL setExpression( const OUString& _expression ) override; + virtual sal_Bool SAL_CALL getStartNewColumn() override; + virtual void SAL_CALL setStartNewColumn( sal_Bool _startnewcolumn ) override; + virtual sal_Bool SAL_CALL getResetPageNumber() override; + virtual void SAL_CALL setResetPageNumber( sal_Bool _resetpagenumber ) override; + + //XFunctionsSupplier + virtual css::uno::Reference< css::report::XFunctions > SAL_CALL getFunctions() override; + + // XChild + virtual css::uno::Reference< css::uno::XInterface > SAL_CALL getParent( ) override; + virtual void SAL_CALL setParent( const css::uno::Reference< css::uno::XInterface >& Parent ) override; + + // XComponent + virtual void SAL_CALL dispose() override; + virtual void SAL_CALL addEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override + { + cppu::WeakComponentImplHelperBase::addEventListener(aListener); + } + virtual void SAL_CALL removeEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override + { + cppu::WeakComponentImplHelperBase::removeEventListener(aListener); + } + }; + +} // namespace reportdesign + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/reportdesign/source/core/inc/Groups.hxx b/reportdesign/source/core/inc/Groups.hxx new file mode 100644 index 000000000..9897abd3a --- /dev/null +++ b/reportdesign/source/core/inc/Groups.hxx @@ -0,0 +1,100 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +#ifndef INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_GROUPS_HXX +#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_GROUPS_HXX + +#include <com/sun/star/report/XGroups.hpp> +#include <cppuhelper/compbase.hxx> +#include <cppuhelper/basemutex.hxx> +#include <comphelper/interfacecontainer3.hxx> +#include <com/sun/star/uno/XComponentContext.hpp> +#include <vector> + + +namespace reportdesign +{ + typedef ::cppu::WeakComponentImplHelper< css::report::XGroups> GroupsBase; + /** \class OGroups Defines the implementation of a \interface com:::sun::star::report::XGroups + * \ingroup reportdesign_api + * + */ + class OGroups : public cppu::BaseMutex, + public GroupsBase + { + typedef ::std::vector< css::uno::Reference< css::report::XGroup > > TGroups; + ::comphelper::OInterfaceContainerHelper3<css::container::XContainerListener> m_aContainerListeners; + css::uno::Reference< css::uno::XComponentContext > m_xContext; + css::uno::WeakReference< css::report::XReportDefinition > m_xParent; + TGroups m_aGroups; + private: + OGroups& operator=(const OGroups&) = delete; + OGroups(const OGroups&) = delete; + void checkIndex(sal_Int32 _nIndex); + protected: + // TODO: VirtualFunctionFinder: This is virtual function! + + virtual ~OGroups() override; + + /** this function is called upon disposing the component + */ + // TODO: VirtualFunctionFinder: This is virtual function! + + virtual void SAL_CALL disposing() override; + public: + OGroups( const css::uno::Reference< css::report::XReportDefinition >& _xParent + ,const css::uno::Reference< css::uno::XComponentContext >& context); + + // XGroups + // Attributes + virtual css::uno::Reference< css::report::XReportDefinition > SAL_CALL getReportDefinition() override; + // Methods + virtual css::uno::Reference< css::report::XGroup > SAL_CALL createGroup( ) override; + // XIndexContainer + virtual void SAL_CALL insertByIndex( ::sal_Int32 Index, const css::uno::Any& Element ) override; + virtual void SAL_CALL removeByIndex( ::sal_Int32 Index ) override; + // XIndexReplace + virtual void SAL_CALL replaceByIndex( ::sal_Int32 Index, const css::uno::Any& Element ) override; + // XIndexAccess + virtual ::sal_Int32 SAL_CALL getCount( ) override; + virtual css::uno::Any SAL_CALL getByIndex( ::sal_Int32 Index ) override; + // XElementAccess + virtual css::uno::Type SAL_CALL getElementType( ) override; + virtual sal_Bool SAL_CALL hasElements( ) override; + // XChild + virtual css::uno::Reference< css::uno::XInterface > SAL_CALL getParent( ) override; + virtual void SAL_CALL setParent( const css::uno::Reference< css::uno::XInterface >& Parent ) override; + // XContainer + virtual void SAL_CALL addContainerListener( const css::uno::Reference< css::container::XContainerListener >& xListener ) override; + virtual void SAL_CALL removeContainerListener( const css::uno::Reference< css::container::XContainerListener >& xListener ) override; + + // XComponent + virtual void SAL_CALL dispose() override; + virtual void SAL_CALL addEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override + { + cppu::WeakComponentImplHelperBase::addEventListener(aListener); + } + virtual void SAL_CALL removeEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override + { + cppu::WeakComponentImplHelperBase::removeEventListener(aListener); + } + }; +} +#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_GROUPS_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/reportdesign/source/core/inc/ImageControl.hxx b/reportdesign/source/core/inc/ImageControl.hxx new file mode 100644 index 000000000..748659913 --- /dev/null +++ b/reportdesign/source/core/inc/ImageControl.hxx @@ -0,0 +1,171 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +#ifndef INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_IMAGECONTROL_HXX +#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_IMAGECONTROL_HXX + +#include <comphelper/uno3.hxx> +#include <cppuhelper/propertysetmixin.hxx> +#include <com/sun/star/report/XImageControl.hpp> +#include "ReportControlModel.hxx" +#include <cppuhelper/compbase.hxx> +#include <cppuhelper/basemutex.hxx> +#include <com/sun/star/lang/XServiceInfo.hpp> +#include <ReportHelperDefines.hxx> + +namespace reportdesign +{ + typedef ::cppu::PropertySetMixin< css::report::XImageControl > ImageControlPropertySet; + typedef ::cppu::WeakComponentImplHelper< css::report::XImageControl + ,css::lang::XServiceInfo > ImageControlBase; + + /** \class OImageControl Defines the implementation of a \interface com:::sun::star::report::XImageControl + * \ingroup reportdesign_api + * + */ + class OImageControl : public cppu::BaseMutex, + public ImageControlBase, + public ImageControlPropertySet + { + friend class OShapeHelper; + OReportControlModel m_aProps; + OUString m_aImageURL; + sal_Int16 m_nScaleMode; + bool m_bPreserveIRI; + private: + OImageControl(const OImageControl&) = delete; + OImageControl& operator=(const OImageControl&) = delete; + + template <typename T> void set( const OUString& _sProperty + ,const T& Value + ,T& _member) + { + BoundListeners l; + { + ::osl::MutexGuard aGuard(m_aMutex); + prepareSet(_sProperty, css::uno::Any(_member), css::uno::Any(Value), &l); + _member = Value; + } + l.notify(); + } + void set( const OUString& _sProperty + ,bool Value + ,bool& _member) + { + BoundListeners l; + { + ::osl::MutexGuard aGuard(m_aMutex); + prepareSet(_sProperty, css::uno::Any(_member), css::uno::Any(Value), &l); + _member = Value; + } + l.notify(); + } + protected: + virtual ~OImageControl() override; + public: + explicit OImageControl(css::uno::Reference< css::uno::XComponentContext > const & _xContext); + explicit OImageControl(css::uno::Reference< css::uno::XComponentContext > const & _xContext + ,const css::uno::Reference< css::lang::XMultiServiceFactory > & _xFactory + ,css::uno::Reference< css::drawing::XShape >& _xShape); + + DECLARE_XINTERFACE( ) + // css::lang::XServiceInfo + virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override; + virtual OUString SAL_CALL getImplementationName( ) override; + virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames( ) override; + + /// @throws css::uno::RuntimeException + static css::uno::Sequence< OUString > getSupportedServiceNames_Static(); + /// @throws css::uno::RuntimeException + static OUString getImplementationName_Static(); + static css::uno::Reference< css::uno::XInterface > + create(css::uno::Reference< css::uno::XComponentContext > const & xContext); + // css::beans::XPropertySet + virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) override; + virtual void SAL_CALL setPropertyValue( const OUString& aPropertyName, const css::uno::Any& aValue ) override; + virtual css::uno::Any SAL_CALL getPropertyValue( const OUString& PropertyName ) override; + virtual void SAL_CALL addPropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& xListener ) override; + virtual void SAL_CALL removePropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& aListener ) override; + virtual void SAL_CALL addVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override; + virtual void SAL_CALL removeVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override; + + // XReportComponent + REPORTCOMPONENT_HEADER() + // XShape + SHAPE_HEADER() + + // XShapeDescriptor + virtual OUString SAL_CALL getShapeType( ) override; + + // XReportControlModel + REPORTCONTROLMODEL_HEADER() + + // XReportControlFormat + REPORTCONTROLFORMAT_HEADER() + + // XCloneable + virtual css::uno::Reference< css::util::XCloneable > SAL_CALL createClone( ) override; + + // XImageControl + virtual OUString SAL_CALL getImageURL() override; + virtual void SAL_CALL setImageURL( const OUString& _imageurl ) override; + virtual sal_Bool SAL_CALL getPreserveIRI() override; + virtual void SAL_CALL setPreserveIRI( sal_Bool _preserveiri ) override; + virtual ::sal_Int16 SAL_CALL getScaleMode() override; + virtual void SAL_CALL setScaleMode( ::sal_Int16 _scalemode ) override; + + // XImageProducerSupplier + virtual css::uno::Reference< css::awt::XImageProducer > SAL_CALL getImageProducer( ) override; + + // XComponent + virtual void SAL_CALL dispose() override; + virtual void SAL_CALL addEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override + { + cppu::WeakComponentImplHelperBase::addEventListener(aListener); + } + virtual void SAL_CALL removeEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override + { + cppu::WeakComponentImplHelperBase::removeEventListener(aListener); + } + + // XChild + virtual css::uno::Reference< css::uno::XInterface > SAL_CALL getParent( ) override; + virtual void SAL_CALL setParent( const css::uno::Reference< css::uno::XInterface >& Parent ) override; + // XContainer + virtual void SAL_CALL addContainerListener( const css::uno::Reference< css::container::XContainerListener >& xListener ) override; + virtual void SAL_CALL removeContainerListener( const css::uno::Reference< css::container::XContainerListener >& xListener ) override; + + // XElementAccess + virtual css::uno::Type SAL_CALL getElementType( ) override; + virtual sal_Bool SAL_CALL hasElements( ) override; + + // XIndexReplace + virtual void SAL_CALL replaceByIndex( ::sal_Int32 Index, const css::uno::Any& Element ) override; + + // XIndexContainer + virtual void SAL_CALL insertByIndex( ::sal_Int32 Index, const css::uno::Any& Element ) override; + virtual void SAL_CALL removeByIndex( ::sal_Int32 Index ) override; + + // XIndexAccess + virtual ::sal_Int32 SAL_CALL getCount( ) override; + virtual css::uno::Any SAL_CALL getByIndex( ::sal_Int32 Index ) override; + }; +} +#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_IMAGECONTROL_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/reportdesign/source/core/inc/ReportComponent.hxx b/reportdesign/source/core/inc/ReportComponent.hxx new file mode 100644 index 000000000..b6f966040 --- /dev/null +++ b/reportdesign/source/core/inc/ReportComponent.hxx @@ -0,0 +1,82 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_REPORTCOMPONENT_HXX +#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_REPORTCOMPONENT_HXX + +#include <com/sun/star/uno/XComponentContext.hpp> +#include <com/sun/star/container/XChild.hpp> +#include <com/sun/star/drawing/XShape.hpp> +#include <com/sun/star/lang/XServiceInfo.hpp> +#include <com/sun/star/lang/XTypeProvider.hpp> +#include <com/sun/star/lang/XUnoTunnel.hpp> +#include <com/sun/star/uno/XAggregation.hpp> +#include <com/sun/star/report/XReportComponent.hpp> +#include <com/sun/star/lang/XMultiServiceFactory.hpp> +#include <cppuhelper/weakref.hxx> + +namespace reportdesign +{ + class OReportComponentProperties + { + public: + css::uno::WeakReference<css::container::XChild> m_xParent; + css::uno::Reference<css::uno::XComponentContext> m_xContext; + css::uno::Reference<css::lang::XMultiServiceFactory> m_xFactory; + css::uno::Reference<css::drawing::XShape> m_xShape; + css::uno::Reference<css::uno::XAggregation> m_xProxy; + css::uno::Reference<css::beans::XPropertySet> m_xProperty; + css::uno::Reference<css::lang::XTypeProvider> m_xTypeProvider; + css::uno::Reference<css::lang::XUnoTunnel> m_xUnoTunnel; + css::uno::Reference<css::lang::XServiceInfo> m_xServiceInfo; + css::uno::Sequence<OUString> m_aMasterFields; + css::uno::Sequence<OUString> m_aDetailFields; + OUString m_sName; + ::sal_Int32 m_nHeight; + ::sal_Int32 m_nWidth; + ::sal_Int32 m_nPosX; + ::sal_Int32 m_nPosY; + ::sal_Int32 m_nBorderColor; + ::sal_Int16 m_nBorder; + bool m_bPrintRepeatedValues; + bool m_bAutoGrow; + + OReportComponentProperties( + css::uno::Reference<css::uno::XComponentContext> const& xContext) + : m_xContext(xContext) + , m_nHeight(0) + , m_nWidth(0) + , m_nPosX(0) + , m_nPosY(0) + , m_nBorderColor(0) + , m_nBorder(2) + , m_bPrintRepeatedValues(true) + , m_bAutoGrow(false) + {} + ~OReportComponentProperties(); + + void setShape(css::uno::Reference<css::drawing::XShape>& xShape, + const css::uno::Reference<css::report::XReportComponent>& xTunnel, + oslInterlockedCount& rRefCount); + }; +} + +#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_REPORTCOMPONENT_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/reportdesign/source/core/inc/ReportControlModel.hxx b/reportdesign/source/core/inc/ReportControlModel.hxx new file mode 100644 index 000000000..98d209fc6 --- /dev/null +++ b/reportdesign/source/core/inc/ReportControlModel.hxx @@ -0,0 +1,138 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_REPORTCONTROLMODEL_HXX +#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_REPORTCONTROLMODEL_HXX + +#include "ReportComponent.hxx" +#include <com/sun/star/style/VerticalAlignment.hpp> +#include <com/sun/star/awt/FontDescriptor.hpp> +#include <com/sun/star/report/XFormatCondition.hpp> +#include <com/sun/star/container/XContainer.hpp> +#include <com/sun/star/lang/Locale.hpp> +#include <com/sun/star/style/ParagraphAdjust.hpp> +#include <comphelper/interfacecontainer3.hxx> + + +namespace reportdesign +{ + struct OFormatProperties + { + css::style::ParagraphAdjust nAlign; + css::awt::FontDescriptor aFontDescriptor; + css::awt::FontDescriptor aAsianFontDescriptor; + css::awt::FontDescriptor aComplexFontDescriptor; + css::lang::Locale aCharLocale; + css::lang::Locale aCharLocaleAsian; + css::lang::Locale aCharLocaleComplex; + ::sal_Int16 nFontEmphasisMark; + ::sal_Int16 nFontRelief; + ::sal_Int32 nTextColor; + ::sal_Int32 nTextLineColor; + ::sal_Int32 nBackgroundColor; + OUString sCharCombinePrefix; + OUString sCharCombineSuffix; + OUString sHyperLinkURL; + OUString sHyperLinkTarget; + OUString sHyperLinkName; + OUString sVisitedCharStyleName; + OUString sUnvisitedCharStyleName; + css::style::VerticalAlignment aVerticalAlignment; + ::sal_Int16 nCharEscapement; + ::sal_Int16 nCharCaseMap; + ::sal_Int16 nCharKerning; + ::sal_Int8 nCharEscapementHeight; + bool m_bBackgroundTransparent; + bool bCharFlash; + bool bCharAutoKerning; + bool bCharCombineIsOn; + bool bCharHidden; + bool bCharShadowed; + bool bCharContoured; + OFormatProperties(); + }; + class OReportControlModel + { + void checkIndex(sal_Int32 _nIndex); + OReportControlModel(OReportControlModel const &) = delete; + void operator =(OReportControlModel const &) = delete; + public: + ::comphelper::OInterfaceContainerHelper3<css::container::XContainerListener> aContainerListeners; + OReportComponentProperties aComponent; + OFormatProperties aFormatProperties; + css::container::XContainer* m_pOwner; + ::std::vector< css::uno::Reference< css::report::XFormatCondition> > + m_aFormatConditions; + osl::Mutex& m_rMutex; + OUString aDataField; + OUString aConditionalPrintExpression; + bool bPrintWhenGroupChange; + + OReportControlModel(osl::Mutex& _rMutex + ,css::container::XContainer* _pOwner + ,css::uno::Reference< css::uno::XComponentContext > const & _xContext) + :aContainerListeners(_rMutex) + ,aComponent(_xContext) + ,m_pOwner(_pOwner) + ,m_rMutex(_rMutex) + ,bPrintWhenGroupChange(true) + {} + + // XContainer + /// @throws css::uno::RuntimeException + void addContainerListener( const css::uno::Reference< css::container::XContainerListener >& xListener ); + /// @throws css::uno::RuntimeException + void removeContainerListener( const css::uno::Reference< css::container::XContainerListener >& xListener ); + + // XElementAccess + /// @throws css::uno::RuntimeException + bool hasElements( ); + + // XIndexReplace + /// @throws css::lang::IllegalArgumentException + /// @throws css::lang::IndexOutOfBoundsException + /// @throws css::lang::WrappedTargetException + /// @throws css::uno::RuntimeException + void replaceByIndex( ::sal_Int32 Index, const css::uno::Any& Element ); + + // XIndexContainer + /// @throws css::lang::IllegalArgumentException + /// @throws css::lang::IndexOutOfBoundsException + /// @throws css::lang::WrappedTargetException + /// @throws css::uno::RuntimeException + void insertByIndex( ::sal_Int32 Index, const css::uno::Any& Element ); + /// @throws css::lang::IndexOutOfBoundsException + /// @throws css::lang::WrappedTargetException + /// @throws css::uno::RuntimeException + void removeByIndex( ::sal_Int32 Index ); + + // XIndexAccess + /// @throws css::uno::RuntimeException + ::sal_Int32 getCount( ); + /// @throws css::lang::IndexOutOfBoundsException + /// @throws css::lang::WrappedTargetException + /// @throws css::uno::RuntimeException + css::uno::Any getByIndex( ::sal_Int32 Index ); + + static bool isInterfaceForbidden(const css::uno::Type& _rType); + }; +} +#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_REPORTCONTROLMODEL_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/reportdesign/source/core/inc/ReportDrawPage.hxx b/reportdesign/source/core/inc/ReportDrawPage.hxx new file mode 100644 index 000000000..e1b432247 --- /dev/null +++ b/reportdesign/source/core/inc/ReportDrawPage.hxx @@ -0,0 +1,42 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_REPORTDRAWPAGE_HXX +#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_REPORTDRAWPAGE_HXX + +#include <svx/unopage.hxx> +#include <com/sun/star/report/XSection.hpp> + +namespace reportdesign +{ + class OReportDrawPage : public SvxDrawPage + { + css::uno::WeakReference< css::report::XSection > m_xSection; + OReportDrawPage(const OReportDrawPage&) = delete; + void operator =(const OReportDrawPage&) = delete; + protected: + virtual SdrObject *CreateSdrObject_( const css::uno::Reference< css::drawing::XShape > & xShape ) override; + virtual css::uno::Reference< css::drawing::XShape > CreateShape( SdrObject *pObj ) const override; + public: + OReportDrawPage(SdrPage* pPage,const css::uno::Reference< css::report::XSection >& _xSection); + }; +} +#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_REPORTDRAWPAGE_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/reportdesign/source/core/inc/ReportEngineJFree.hxx b/reportdesign/source/core/inc/ReportEngineJFree.hxx new file mode 100644 index 000000000..e0ab1d60b --- /dev/null +++ b/reportdesign/source/core/inc/ReportEngineJFree.hxx @@ -0,0 +1,133 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +#ifndef INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_REPORTENGINEJFREE_HXX +#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_REPORTENGINEJFREE_HXX + +#include <sal/config.h> + +#include <com/sun/star/report/XReportEngine.hpp> +#include <cppuhelper/compbase.hxx> +#include <comphelper/broadcasthelper.hxx> +#include <comphelper/uno3.hxx> +#include <cppuhelper/propertysetmixin.hxx> +#include <com/sun/star/uno/XComponentContext.hpp> +#include <com/sun/star/lang/XServiceInfo.hpp> + +namespace reportdesign +{ + typedef ::cppu::WeakComponentImplHelper< css::report::XReportEngine + ,css::lang::XServiceInfo> ReportEngineBase; + typedef ::cppu::PropertySetMixin<css::report::XReportEngine> ReportEnginePropertySet; + + class OReportEngineJFree : public comphelper::OMutexAndBroadcastHelper, + public ReportEngineBase, + public ReportEnginePropertySet + { + css::uno::Reference< css::uno::XComponentContext > m_xContext; + css::uno::Reference< css::report::XReportDefinition > m_xReport; + css::uno::Reference< css::task::XStatusIndicator> m_StatusIndicator; + css::uno::Reference< css::sdbc::XConnection > m_xActiveConnection; + ::sal_Int32 m_nMaxRows; + private: + OReportEngineJFree(const OReportEngineJFree&) = delete; + OReportEngineJFree& operator=(const OReportEngineJFree&) = delete; + template <typename T> void set( const OUString& _sProperty + ,const T& Value + ,T& _member) + { + BoundListeners l; + { + ::osl::MutexGuard aGuard(m_aMutex); + prepareSet(_sProperty, css::uno::Any(_member), css::uno::Any(Value), &l); + _member = Value; + } + l.notify(); + } + + /** returns the file url for a new model + * + * \return The new file url. + */ + OUString getNewOutputName(); + + protected: + // TODO: VirtualFunctionFinder: This is virtual function! + + virtual ~OReportEngineJFree() override; + public: + OReportEngineJFree(const css::uno::Reference< css::uno::XComponentContext >& context); + + DECLARE_XINTERFACE( ) + // css::lang::XServiceInfo + virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override; + virtual OUString SAL_CALL getImplementationName( ) override; + virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames( ) override; + + /// @throws css::uno::RuntimeException + static css::uno::Sequence< OUString > getSupportedServiceNames_Static(); + /// @throws css::uno::RuntimeException + static OUString getImplementationName_Static(); + static css::uno::Reference< css::uno::XInterface > + create(css::uno::Reference< css::uno::XComponentContext > const & xContext); + private: + // css::beans::XPropertySet + virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) override; + virtual void SAL_CALL setPropertyValue( const OUString& aPropertyName, const css::uno::Any& aValue ) override; + virtual css::uno::Any SAL_CALL getPropertyValue( const OUString& PropertyName ) override; + virtual void SAL_CALL addPropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& xListener ) override; + virtual void SAL_CALL removePropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& aListener ) override; + virtual void SAL_CALL addVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override; + virtual void SAL_CALL removeVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override; + + // XReportEngine + // Attributes + virtual css::uno::Reference< css::report::XReportDefinition > SAL_CALL getReportDefinition() override ; + virtual void SAL_CALL setReportDefinition( const css::uno::Reference< css::report::XReportDefinition >& _reportdefinition ) override; + virtual css::uno::Reference< css::sdbc::XConnection > SAL_CALL getActiveConnection() override; + virtual void SAL_CALL setActiveConnection( const css::uno::Reference< css::sdbc::XConnection >& _activeconnection ) override; + virtual css::uno::Reference< css::task::XStatusIndicator > SAL_CALL getStatusIndicator() override ; + virtual void SAL_CALL setStatusIndicator( const css::uno::Reference< css::task::XStatusIndicator >& _statusindicator ) override ; + virtual ::sal_Int32 SAL_CALL getMaxRows() override; + virtual void SAL_CALL setMaxRows( ::sal_Int32 MaxRows ) override; + // Methods + virtual css::uno::Reference< css::frame::XModel > SAL_CALL createDocumentModel( ) override ; + virtual css::uno::Reference< css::frame::XModel > SAL_CALL createDocumentAlive( const css::uno::Reference< css::frame::XFrame >& _frame ) override ; + /// @throws css::lang::DisposedException + /// @throws css::lang::IllegalArgumentException + /// @throws css::uno::Exception + /// @throws css::uno::RuntimeException + css::uno::Reference< css::frame::XModel > createDocumentAlive( const css::uno::Reference< css::frame::XFrame >& _frame ,bool _bHidden) ; + virtual css::util::URL SAL_CALL createDocument( ) override ; + virtual void SAL_CALL interrupt( ) override ; + + // XComponent + virtual void SAL_CALL dispose() override; + virtual void SAL_CALL addEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override + { + cppu::WeakComponentImplHelperBase::addEventListener(aListener); + } + virtual void SAL_CALL removeEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override + { + cppu::WeakComponentImplHelperBase::removeEventListener(aListener); + } + }; +} +#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_REPORTENGINEJFREE_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/reportdesign/source/core/inc/ReportHelperImpl.hxx b/reportdesign/source/core/inc/ReportHelperImpl.hxx new file mode 100644 index 000000000..4d5a1f41e --- /dev/null +++ b/reportdesign/source/core/inc/ReportHelperImpl.hxx @@ -0,0 +1,1293 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +#ifndef INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_REPORTHELPERIMPL_HXX +#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_REPORTHELPERIMPL_HXX +// css::report::XReportComponent: +#define REPORTCOMPONENT_IMPL3(clazz,arg) \ +OUString SAL_CALL clazz::getName() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return (arg).m_sName; \ +} \ +void SAL_CALL clazz::setName( const OUString& _name ) \ +{ \ + set(PROPERTY_NAME,_name,(arg).m_sName); \ +} \ +::sal_Int32 SAL_CALL clazz::getHeight() \ +{ \ + return getSize().Height; \ +} \ +void SAL_CALL clazz::setHeight( ::sal_Int32 _height ) \ +{ \ + awt::Size aSize = getSize(); \ + aSize.Height = _height; \ + setSize(aSize); \ +} \ +::sal_Int32 SAL_CALL clazz::getPositionX() \ +{ \ + return getPosition().X; \ +} \ +void SAL_CALL clazz::setPositionX( ::sal_Int32 _positionx ) \ +{ \ + awt::Point aPos = getPosition(); \ + aPos.X = _positionx; \ + setPosition(aPos); \ +} \ +::sal_Int32 SAL_CALL clazz::getPositionY() \ +{ \ + return getPosition().Y; \ +} \ +void SAL_CALL clazz::setPositionY( ::sal_Int32 _positiony ) \ +{ \ + awt::Point aPos = getPosition(); \ + aPos.Y = _positiony; \ + setPosition(aPos); \ +} \ +::sal_Int32 SAL_CALL clazz::getWidth() \ +{ \ + return getSize().Width; \ +} \ +void SAL_CALL clazz::setWidth( ::sal_Int32 _width ) \ +{ \ + awt::Size aSize = getSize(); \ + aSize.Width = _width; \ + setSize(aSize); \ +} \ +uno::Reference< report::XSection > SAL_CALL clazz::getSection() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + uno::Reference< container::XChild > xParent(getParent( ),uno::UNO_QUERY); \ + return lcl_getSection(xParent); \ +} \ +sal_Bool SAL_CALL clazz::getAutoGrow() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return (arg).m_bAutoGrow; \ +} \ +void SAL_CALL clazz::setAutoGrow(sal_Bool _autogrow) \ +{ \ + set(PROPERTY_AUTOGROW,static_cast<bool>(_autogrow),(arg).m_bAutoGrow); \ +} + +#define REPORTCOMPONENT_IMPL(clazz,arg) \ +REPORTCOMPONENT_IMPL3(clazz,arg)\ +sal_Bool SAL_CALL clazz::getPrintRepeatedValues() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return (arg).m_bPrintRepeatedValues; \ +} \ +void SAL_CALL clazz::setPrintRepeatedValues( sal_Bool _printrepeatedvalues ) \ +{ \ + set(PROPERTY_PRINTREPEATEDVALUES,_printrepeatedvalues,(arg).m_bPrintRepeatedValues); \ +} + +#define REPORTCOMPONENT_IMPL2(clazz,arg) \ +::sal_Int16 SAL_CALL clazz::getControlBorder() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return (arg).m_nBorder; \ +} \ +void SAL_CALL clazz::setControlBorder( ::sal_Int16 _border )\ +{ \ + set(PROPERTY_CONTROLBORDER,_border,(arg).m_nBorder); \ +} \ +::sal_Int32 SAL_CALL clazz::getControlBorderColor() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return (arg).m_nBorderColor; \ +} \ +void SAL_CALL clazz::setControlBorderColor( ::sal_Int32 _bordercolor ) \ +{ \ + set(PROPERTY_CONTROLBORDERCOLOR,_bordercolor,(arg).m_nBorderColor); \ +} + +#define REPORTCOMPONENT_MASTERDETAIL(clazz,arg) \ +css::uno::Sequence< OUString > SAL_CALL clazz::getMasterFields() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return (arg).m_aMasterFields; \ +} \ +void SAL_CALL clazz::setMasterFields( const css::uno::Sequence< OUString >& _masterfields )\ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + set(PROPERTY_MASTERFIELDS,_masterfields,(arg).m_aMasterFields); \ +} \ +css::uno::Sequence< OUString > SAL_CALL clazz::getDetailFields()\ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return (arg).m_aDetailFields; \ +} \ +void SAL_CALL clazz::setDetailFields( const css::uno::Sequence< OUString >& _detailfields )\ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + set(PROPERTY_DETAILFIELDS,_detailfields,(arg).m_aDetailFields); \ +} + +#define REPORTCOMPONENT_NOMASTERDETAIL(clazz) \ +css::uno::Sequence< OUString > SAL_CALL clazz::getMasterFields() \ +{ \ + throw css::beans::UnknownPropertyException();\ +} \ +void SAL_CALL clazz::setMasterFields( const css::uno::Sequence< OUString >& )\ +{ \ + throw css::beans::UnknownPropertyException();\ +} \ +css::uno::Sequence< OUString > SAL_CALL clazz::getDetailFields()\ +{ \ + throw css::beans::UnknownPropertyException();\ +} \ +void SAL_CALL clazz::setDetailFields( const css::uno::Sequence< OUString >& )\ +{ \ + throw css::beans::UnknownPropertyException();\ +} + +// css::report::XReportControlFormat: +#define REPORTCONTROLFORMAT_IMPL1(clazz,varName) \ +::sal_Int32 SAL_CALL clazz::getControlBackground() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.m_bBackgroundTransparent ? sal_Int32(COL_TRANSPARENT) : varName.nBackgroundColor; \ +} \ + \ +void SAL_CALL clazz::setControlBackground( ::sal_Int32 _backgroundcolor )\ +{ \ + bool bTransparent = _backgroundcolor == static_cast<sal_Int32>(COL_TRANSPARENT);\ + setControlBackgroundTransparent(bTransparent);\ + if ( !bTransparent )\ + set(PROPERTY_CONTROLBACKGROUND,_backgroundcolor,varName.nBackgroundColor);\ +} \ + \ +sal_Bool SAL_CALL clazz::getControlBackgroundTransparent() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.m_bBackgroundTransparent; \ +} \ + \ +void SAL_CALL clazz::setControlBackgroundTransparent( sal_Bool _controlbackgroundtransparent ) \ +{ \ + set(PROPERTY_CONTROLBACKGROUNDTRANSPARENT,_controlbackgroundtransparent,varName.m_bBackgroundTransparent);\ + if ( _controlbackgroundtransparent )\ + set(PROPERTY_CONTROLBACKGROUND,static_cast<sal_Int32>(COL_TRANSPARENT),varName.nBackgroundColor);\ +} + +#define REPORTCONTROLFORMAT_IMPL2(clazz,varName) \ +::sal_Int16 SAL_CALL clazz::getCharStrikeout() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.aFontDescriptor.Strikeout; \ +} \ + \ +void SAL_CALL clazz::setCharStrikeout(::sal_Int16 the_value) \ +{ \ + set(PROPERTY_CHARSTRIKEOUT,the_value,varName.aFontDescriptor.Strikeout); \ +} \ + \ +sal_Bool SAL_CALL clazz::getCharWordMode() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.aFontDescriptor.WordLineMode; \ +} \ + \ +void SAL_CALL clazz::setCharWordMode(sal_Bool the_value) \ +{ \ + set(PROPERTY_CHARWORDMODE,the_value,varName.aFontDescriptor.WordLineMode); \ +} \ + \ +::sal_Int16 SAL_CALL clazz::getCharRotation() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return static_cast<sal_Int16>(varName.aFontDescriptor.Orientation); \ +} \ + \ +void SAL_CALL clazz::setCharRotation(::sal_Int16 the_value) \ +{ \ + float newValue = the_value; \ + set(PROPERTY_CHARROTATION,newValue,varName.aFontDescriptor.Orientation); \ +} \ + \ +::sal_Int16 SAL_CALL clazz::getCharScaleWidth() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return static_cast<sal_Int16>(varName.aFontDescriptor.CharacterWidth); \ +} \ + \ +void SAL_CALL clazz::setCharScaleWidth(::sal_Int16 the_value) \ +{ \ + float newValue = the_value; \ + set(PROPERTY_CHARSCALEWIDTH,newValue,varName.aFontDescriptor.CharacterWidth); \ +} \ +sal_Int16 SAL_CALL clazz::getParaAdjust() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return static_cast<sal_Int16>(varName.nAlign); \ +} \ + \ +void SAL_CALL clazz::setParaAdjust( sal_Int16 _align ) \ +{ \ + set(PROPERTY_PARAADJUST,_align,varName.nAlign); \ +} \ + \ +awt::FontDescriptor SAL_CALL clazz::getFontDescriptor() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.aFontDescriptor; \ +} \ + \ +void SAL_CALL clazz::setFontDescriptor( const awt::FontDescriptor& _fontdescriptor ) \ +{ \ + set(PROPERTY_FONTDESCRIPTOR,_fontdescriptor,varName.aFontDescriptor); \ +} \ +awt::FontDescriptor SAL_CALL clazz::getFontDescriptorAsian() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.aAsianFontDescriptor; \ +} \ + \ +void SAL_CALL clazz::setFontDescriptorAsian( const awt::FontDescriptor& _fontdescriptor ) \ +{ \ + set(PROPERTY_FONTDESCRIPTORASIAN,_fontdescriptor,varName.aAsianFontDescriptor); \ +} \ +awt::FontDescriptor SAL_CALL clazz::getFontDescriptorComplex() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.aComplexFontDescriptor; \ +} \ + \ +void SAL_CALL clazz::setFontDescriptorComplex( const awt::FontDescriptor& _fontdescriptor ) \ +{ \ + set(PROPERTY_FONTDESCRIPTORCOMPLEX,_fontdescriptor,varName.aComplexFontDescriptor); \ +} \ + \ +::sal_Int16 SAL_CALL clazz::getControlTextEmphasis() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.nFontEmphasisMark; \ +} \ + \ +void SAL_CALL clazz::setControlTextEmphasis( ::sal_Int16 _fontemphasismark ) \ +{ \ + set(PROPERTY_CONTROLTEXTEMPHASISMARK,_fontemphasismark,varName.nFontEmphasisMark); \ +} \ + \ +::sal_Int16 SAL_CALL clazz::getCharRelief() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.nFontRelief; \ +} \ + \ +void SAL_CALL clazz::setCharRelief( ::sal_Int16 _fontrelief ) \ +{ \ + set(PROPERTY_CHARRELIEF,_fontrelief,varName.nFontRelief); \ +} \ + \ +::sal_Int32 SAL_CALL clazz::getCharColor() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.nTextColor; \ +} \ + \ +void SAL_CALL clazz::setCharColor( ::sal_Int32 _textcolor ) \ +{ \ + set(PROPERTY_CHARCOLOR,_textcolor,varName.nTextColor); \ +} \ + \ +::sal_Int32 SAL_CALL clazz::getCharUnderlineColor() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.nTextLineColor; \ +} \ + \ +void SAL_CALL clazz::setCharUnderlineColor( ::sal_Int32 _textlinecolor ) \ +{ \ + set(PROPERTY_CHARUNDERLINECOLOR,_textlinecolor,varName.nTextLineColor); \ +} \ + \ +style::VerticalAlignment SAL_CALL clazz::getVerticalAlign() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.aVerticalAlignment; \ +} \ + \ +void SAL_CALL clazz::setVerticalAlign( style::VerticalAlignment _verticalalign ) \ +{ \ + set(PROPERTY_VERTICALALIGN,_verticalalign,varName.aVerticalAlignment); \ +} \ + \ +::sal_Int16 SAL_CALL clazz::getCharEmphasis() \ +{ \ + return getControlTextEmphasis(); \ +} \ + \ +void SAL_CALL clazz::setCharEmphasis( ::sal_Int16 _charemphasis ) \ +{ \ + set(PROPERTY_CHAREMPHASIS,_charemphasis,varName.nFontEmphasisMark); \ +} \ + \ +OUString SAL_CALL clazz::getCharFontName() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.aFontDescriptor.Name; \ +} \ + \ +void SAL_CALL clazz::setCharFontName( const OUString& _charfontname ) \ +{ \ + set(PROPERTY_CHARFONTNAME,_charfontname,varName.aFontDescriptor.Name); \ +} \ + \ +OUString SAL_CALL clazz::getCharFontStyleName() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.aFontDescriptor.StyleName; \ +} \ + \ +void SAL_CALL clazz::setCharFontStyleName( const OUString& _charfontstylename ) \ +{ \ + set(PROPERTY_CHARFONTSTYLENAME,_charfontstylename,varName.aFontDescriptor.StyleName); \ +} \ + \ +::sal_Int16 SAL_CALL clazz::getCharFontFamily() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.aFontDescriptor.Family; \ +} \ + \ +void SAL_CALL clazz::setCharFontFamily( ::sal_Int16 _charfontfamily ) \ +{ \ + set(PROPERTY_CHARFONTFAMILY,_charfontfamily,varName.aFontDescriptor.Family); \ +} \ + \ +::sal_Int16 SAL_CALL clazz::getCharFontCharSet() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.aFontDescriptor.CharSet; \ +} \ + \ +void SAL_CALL clazz::setCharFontCharSet( ::sal_Int16 _charfontcharset ) \ +{ \ + set(PROPERTY_CHARFONTCHARSET,_charfontcharset,varName.aFontDescriptor.CharSet); \ +} \ + \ +::sal_Int16 SAL_CALL clazz::getCharFontPitch() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.aFontDescriptor.Pitch; \ +} \ + \ +void SAL_CALL clazz::setCharFontPitch( ::sal_Int16 _charfontpitch ) \ +{ \ + set(PROPERTY_CHARFONTPITCH,_charfontpitch,varName.aFontDescriptor.Pitch); \ +} \ + \ +float SAL_CALL clazz::getCharHeight() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.aFontDescriptor.Height; \ +} \ + \ +void SAL_CALL clazz::setCharHeight( float _charheight ) \ +{ \ + set(PROPERTY_CHARHEIGHT,static_cast<sal_Int16>(_charheight),varName.aFontDescriptor.Height); \ +} \ + \ +::sal_Int16 SAL_CALL clazz::getCharUnderline() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.aFontDescriptor.Underline; \ +} \ + \ +void SAL_CALL clazz::setCharUnderline( ::sal_Int16 _charunderline ) \ +{ \ + set(PROPERTY_CHARUNDERLINE,_charunderline,varName.aFontDescriptor.Underline); \ +} \ + \ +float SAL_CALL clazz::getCharWeight() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.aFontDescriptor.Weight; \ +} \ + \ +void SAL_CALL clazz::setCharWeight( float _charweight ) \ +{ \ + set(PROPERTY_CHARWEIGHT,_charweight,varName.aFontDescriptor.Weight); \ +} \ + \ +awt::FontSlant SAL_CALL clazz::getCharPosture() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.aFontDescriptor.Slant; \ +} \ + \ +void SAL_CALL clazz::setCharPosture( awt::FontSlant _charposture ) \ +{ \ + set(PROPERTY_CHARPOSTURE,_charposture,varName.aFontDescriptor.Slant); \ +}\ +sal_Bool SAL_CALL clazz::getCharFlash()\ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.bCharFlash; \ +} \ +void SAL_CALL clazz::setCharFlash(sal_Bool the_value)\ +{ \ + set(PROPERTY_CHARFLASH,the_value,varName.bCharFlash); \ +}\ +sal_Bool SAL_CALL clazz::getCharAutoKerning()\ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.bCharAutoKerning; \ +} \ +void SAL_CALL clazz::setCharAutoKerning(sal_Bool the_value)\ +{ \ + set(PROPERTY_CHARAUTOKERNING,the_value,varName.bCharAutoKerning); \ +}\ +::sal_Int8 SAL_CALL clazz::getCharEscapementHeight() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.nCharEscapementHeight; \ +} \ +void SAL_CALL clazz::setCharEscapementHeight(::sal_Int8 the_value) \ +{ \ + set(PROPERTY_CHARESCAPEMENTHEIGHT,the_value,varName.nCharEscapementHeight); \ +}\ +lang::Locale SAL_CALL clazz::getCharLocale() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.aCharLocale; \ +} \ +void SAL_CALL clazz::setCharLocale(const lang::Locale & the_value) \ +{ \ + BoundListeners l; \ + { \ + ::osl::MutexGuard aGuard(m_aMutex); \ + if ( varName.aCharLocale.Language != the_value.Language \ + || varName.aCharLocale.Country != the_value.Country \ + || varName.aCharLocale.Variant != the_value.Variant ) \ + { \ + prepareSet(PROPERTY_CHARLOCALE, css::uno::Any(varName.aCharLocale), css::uno::Any(the_value), &l); \ + varName.aCharLocale = the_value; \ + } \ + } \ + l.notify(); \ +}\ +::sal_Int16 SAL_CALL clazz::getCharEscapement() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.nCharEscapement; \ +} \ +void SAL_CALL clazz::setCharEscapement(::sal_Int16 the_value) \ +{ \ + set(PROPERTY_CHARESCAPEMENT,the_value,varName.nCharEscapement); \ +}\ +::sal_Int16 SAL_CALL clazz::getCharCaseMap() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.nCharCaseMap; \ +} \ +void SAL_CALL clazz::setCharCaseMap(::sal_Int16 the_value) \ +{ \ + set(PROPERTY_CHARCASEMAP,the_value,varName.nCharCaseMap); \ +}\ +sal_Bool SAL_CALL clazz::getCharCombineIsOn() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.bCharCombineIsOn; \ +} \ +void SAL_CALL clazz::setCharCombineIsOn(sal_Bool the_value) \ +{ \ + set(PROPERTY_CHARCOMBINEISON,the_value,varName.bCharCombineIsOn); \ +}\ +OUString SAL_CALL clazz::getCharCombinePrefix() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.sCharCombinePrefix; \ +} \ +void SAL_CALL clazz::setCharCombinePrefix(const OUString & the_value) \ +{ \ + set(PROPERTY_CHARCOMBINEPREFIX,the_value,varName.sCharCombinePrefix); \ +}\ +OUString SAL_CALL clazz::getCharCombineSuffix() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.sCharCombineSuffix; \ +} \ +void SAL_CALL clazz::setCharCombineSuffix(const OUString & the_value) \ +{ \ + set(PROPERTY_CHARCOMBINESUFFIX,the_value,varName.sCharCombineSuffix); \ +}\ +sal_Bool SAL_CALL clazz::getCharHidden() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.bCharHidden; \ +} \ +void SAL_CALL clazz::setCharHidden(sal_Bool the_value) \ +{ \ + set(PROPERTY_CHARHIDDEN,the_value,varName.bCharHidden); \ +}\ +sal_Bool SAL_CALL clazz::getCharShadowed() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.bCharShadowed; \ +} \ +void SAL_CALL clazz::setCharShadowed(sal_Bool the_value) \ +{ \ + set(PROPERTY_CHARSHADOWED,the_value,varName.bCharShadowed); \ +}\ +sal_Bool SAL_CALL clazz::getCharContoured() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.bCharContoured; \ +} \ +void SAL_CALL clazz::setCharContoured(sal_Bool the_value) \ +{ \ + set(PROPERTY_CHARCONTOURED,the_value,varName.bCharContoured); \ +}\ +OUString SAL_CALL clazz::getHyperLinkURL() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.sHyperLinkURL; \ +} \ +void SAL_CALL clazz::setHyperLinkURL(const OUString & the_value) \ +{ \ + set(PROPERTY_HYPERLINKURL,the_value,varName.sHyperLinkURL); \ +}\ +OUString SAL_CALL clazz::getHyperLinkTarget() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.sHyperLinkTarget; \ +} \ +void SAL_CALL clazz::setHyperLinkTarget(const OUString & the_value) \ +{ \ + set(PROPERTY_HYPERLINKTARGET,the_value,varName.sHyperLinkTarget); \ +}\ +OUString SAL_CALL clazz::getHyperLinkName() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.sHyperLinkName; \ +} \ +void SAL_CALL clazz::setHyperLinkName(const OUString & the_value) \ +{ \ + set(PROPERTY_HYPERLINKNAME,the_value,varName.sHyperLinkName); \ +}\ +OUString SAL_CALL clazz::getVisitedCharStyleName() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.sVisitedCharStyleName; \ +} \ +void SAL_CALL clazz::setVisitedCharStyleName(const OUString & the_value) \ +{ \ + set(PROPERTY_VISITEDCHARSTYLENAME,the_value,varName.sVisitedCharStyleName); \ +}\ +OUString SAL_CALL clazz::getUnvisitedCharStyleName() \ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.sUnvisitedCharStyleName; \ +} \ +void SAL_CALL clazz::setUnvisitedCharStyleName(const OUString & the_value) \ +{ \ + set(PROPERTY_UNVISITEDCHARSTYLENAME,the_value,varName.sUnvisitedCharStyleName); \ +}\ +::sal_Int16 SAL_CALL clazz::getCharKerning()\ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.nCharKerning; \ +}\ +void SAL_CALL clazz::setCharKerning(::sal_Int16 the_value)\ +{ \ + set(PROPERTY_CHARKERNING,the_value,varName.nCharKerning); \ +}\ +float SAL_CALL clazz::getCharHeightAsian()\ + { \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.aAsianFontDescriptor.Height; \ +}\ +void SAL_CALL clazz::setCharHeightAsian( float the_value )\ +{ \ + set(PROPERTY_CHARHEIGHTASIAN,static_cast<sal_Int16>(the_value),varName.aAsianFontDescriptor.Height); \ +}\ +float SAL_CALL clazz::getCharWeightAsian()\ + { \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.aAsianFontDescriptor.Weight; \ +}\ +void SAL_CALL clazz::setCharWeightAsian( float the_value )\ +{ \ + set(PROPERTY_CHARWEIGHTASIAN,the_value,varName.aAsianFontDescriptor.Weight); \ +}\ +OUString SAL_CALL clazz::getCharFontNameAsian()\ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.aAsianFontDescriptor.Name; \ +}\ +void SAL_CALL clazz::setCharFontNameAsian( const OUString& the_value )\ +{ \ + set(PROPERTY_CHARFONTNAMEASIAN,the_value,varName.aAsianFontDescriptor.Name); \ +}\ +OUString SAL_CALL clazz::getCharFontStyleNameAsian()\ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.aAsianFontDescriptor.StyleName; \ +}\ +void SAL_CALL clazz::setCharFontStyleNameAsian( const OUString& the_value )\ +{ \ + set(PROPERTY_CHARFONTSTYLENAMEASIAN,the_value,varName.aAsianFontDescriptor.StyleName); \ +}\ +::sal_Int16 SAL_CALL clazz::getCharFontFamilyAsian()\ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.aAsianFontDescriptor.Family; \ +}\ +void SAL_CALL clazz::setCharFontFamilyAsian( ::sal_Int16 the_value )\ +{ \ + set(PROPERTY_CHARFONTFAMILYASIAN,the_value,varName.aAsianFontDescriptor.Family); \ +}\ +::sal_Int16 SAL_CALL clazz::getCharFontCharSetAsian()\ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.aAsianFontDescriptor.CharSet; \ +}\ +void SAL_CALL clazz::setCharFontCharSetAsian( ::sal_Int16 the_value )\ +{ \ + set(PROPERTY_CHARFONTCHARSETASIAN,the_value,varName.aAsianFontDescriptor.CharSet); \ +}\ +::sal_Int16 SAL_CALL clazz::getCharFontPitchAsian()\ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.aAsianFontDescriptor.Pitch; \ +}\ +void SAL_CALL clazz::setCharFontPitchAsian( ::sal_Int16 the_value )\ +{ \ + set(PROPERTY_CHARFONTPITCHASIAN,the_value,varName.aAsianFontDescriptor.Pitch); \ +}\ +css::awt::FontSlant SAL_CALL clazz::getCharPostureAsian()\ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.aAsianFontDescriptor.Slant; \ +}\ +void SAL_CALL clazz::setCharPostureAsian( css::awt::FontSlant the_value )\ +{ \ + set(PROPERTY_CHARPOSTUREASIAN,the_value,varName.aAsianFontDescriptor.Slant); \ +}\ +css::lang::Locale SAL_CALL clazz::getCharLocaleAsian()\ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.aCharLocaleAsian; \ +}\ +void SAL_CALL clazz::setCharLocaleAsian( const css::lang::Locale& the_value )\ +{ \ + BoundListeners l; \ + { \ + ::osl::MutexGuard aGuard(m_aMutex); \ + if ( varName.aCharLocaleAsian.Language != the_value.Language \ + || varName.aCharLocaleAsian.Country != the_value.Country \ + || varName.aCharLocaleAsian.Variant != the_value.Variant ) \ + { \ + prepareSet(PROPERTY_CHARLOCALEASIAN, css::uno::Any(varName.aCharLocaleAsian), css::uno::Any(the_value), &l); \ + varName.aCharLocaleAsian = the_value; \ + } \ + } \ + l.notify(); \ +}\ +float SAL_CALL clazz::getCharHeightComplex()\ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.aComplexFontDescriptor.Height; \ +}\ +void SAL_CALL clazz::setCharHeightComplex( float the_value )\ +{ \ + set(PROPERTY_CHARHEIGHTCOMPLEX,static_cast<sal_Int16>(the_value),varName.aComplexFontDescriptor.Height); \ +}\ +float SAL_CALL clazz::getCharWeightComplex()\ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.aComplexFontDescriptor.Weight; \ +}\ +void SAL_CALL clazz::setCharWeightComplex( float the_value )\ +{ \ + set(PROPERTY_CHARWEIGHTCOMPLEX,the_value,varName.aComplexFontDescriptor.Weight); \ +}\ +OUString SAL_CALL clazz::getCharFontNameComplex()\ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.aComplexFontDescriptor.Name; \ +}\ +void SAL_CALL clazz::setCharFontNameComplex( const OUString& the_value )\ +{ \ + set(PROPERTY_CHARFONTNAMECOMPLEX,the_value,varName.aComplexFontDescriptor.Name); \ +}\ +OUString SAL_CALL clazz::getCharFontStyleNameComplex()\ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.aComplexFontDescriptor.StyleName; \ +}\ +void SAL_CALL clazz::setCharFontStyleNameComplex( const OUString& the_value )\ +{ \ + set(PROPERTY_CHARFONTSTYLENAMECOMPLEX,the_value,varName.aComplexFontDescriptor.StyleName); \ +}\ +::sal_Int16 SAL_CALL clazz::getCharFontFamilyComplex()\ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.aComplexFontDescriptor.Family; \ +}\ +void SAL_CALL clazz::setCharFontFamilyComplex( ::sal_Int16 the_value )\ +{ \ + set(PROPERTY_CHARFONTFAMILYCOMPLEX,the_value,varName.aComplexFontDescriptor.Family); \ +}\ +::sal_Int16 SAL_CALL clazz::getCharFontCharSetComplex()\ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.aComplexFontDescriptor.CharSet; \ +}\ +void SAL_CALL clazz::setCharFontCharSetComplex( ::sal_Int16 the_value )\ +{ \ + set(PROPERTY_CHARFONTCHARSETCOMPLEX,the_value,varName.aComplexFontDescriptor.CharSet); \ +}\ +::sal_Int16 SAL_CALL clazz::getCharFontPitchComplex()\ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.aComplexFontDescriptor.Pitch; \ +}\ +void SAL_CALL clazz::setCharFontPitchComplex( ::sal_Int16 the_value )\ +{ \ + set(PROPERTY_CHARFONTPITCHCOMPLEX,the_value,varName.aComplexFontDescriptor.Pitch); \ +}\ +css::awt::FontSlant SAL_CALL clazz::getCharPostureComplex()\ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.aComplexFontDescriptor.Slant; \ +}\ +void SAL_CALL clazz::setCharPostureComplex( css::awt::FontSlant the_value )\ +{ \ + set(PROPERTY_CHARPOSTURECOMPLEX,the_value,varName.aComplexFontDescriptor.Slant); \ +}\ +css::lang::Locale SAL_CALL clazz::getCharLocaleComplex()\ +{ \ + ::osl::MutexGuard aGuard(m_aMutex); \ + return varName.aCharLocaleComplex; \ +}\ +void SAL_CALL clazz::setCharLocaleComplex( const css::lang::Locale& the_value )\ +{ \ + BoundListeners l; \ + { \ + ::osl::MutexGuard aGuard(m_aMutex); \ + if ( varName.aCharLocaleComplex.Language != the_value.Language \ + || varName.aCharLocaleComplex.Country != the_value.Country \ + || varName.aCharLocaleComplex.Variant != the_value.Variant ) \ + { \ + prepareSet(PROPERTY_CHARLOCALECOMPLEX, css::uno::Any(varName.aCharLocaleComplex), css::uno::Any(the_value), &l); \ + varName.aCharLocaleComplex = the_value; \ + } \ + } \ + l.notify(); \ +}\ + + +#define NO_REPORTCONTROLFORMAT_IMPL(clazz) \ +sal_Int16 SAL_CALL clazz::getParaAdjust()\ +{\ + throw beans::UnknownPropertyException();\ +}\ +void SAL_CALL clazz::setParaAdjust(sal_Int16 /*the_value*/)\ +{\ + throw beans::UnknownPropertyException();\ +}\ +::sal_Int16 SAL_CALL clazz::getCharStrikeout()\ +{\ + throw beans::UnknownPropertyException();\ +}\ +void SAL_CALL clazz::setCharStrikeout(::sal_Int16 /*the_value*/)\ +{\ + throw beans::UnknownPropertyException();\ +}\ +sal_Bool SAL_CALL clazz::getCharWordMode()\ +{\ + throw beans::UnknownPropertyException();\ +}\ +void SAL_CALL clazz::setCharWordMode(sal_Bool /*the_value*/)\ +{\ + throw beans::UnknownPropertyException();\ +}\ +::sal_Int16 SAL_CALL clazz::getCharRotation()\ +{\ + throw beans::UnknownPropertyException();\ +}\ +void SAL_CALL clazz::setCharRotation(::sal_Int16 /*the_value*/)\ +{\ + throw beans::UnknownPropertyException();\ +}\ +::sal_Int16 SAL_CALL clazz::getCharScaleWidth()\ +{\ + throw beans::UnknownPropertyException();\ +}\ +void SAL_CALL clazz::setCharScaleWidth(::sal_Int16 /*the_value*/)\ +{\ + throw beans::UnknownPropertyException();\ +}\ +sal_Bool SAL_CALL clazz::getCharFlash()\ +{ \ + throw beans::UnknownPropertyException();\ +} \ +void SAL_CALL clazz::setCharFlash(sal_Bool /*the_value*/)\ +{ \ + throw beans::UnknownPropertyException();\ +}\ +sal_Bool SAL_CALL clazz::getCharAutoKerning()\ +{ \ + throw beans::UnknownPropertyException();\ +} \ +void SAL_CALL clazz::setCharAutoKerning(sal_Bool /*the_value*/)\ +{ \ + throw beans::UnknownPropertyException();\ +}\ +::sal_Int8 SAL_CALL clazz::getCharEscapementHeight() \ +{ \ + throw beans::UnknownPropertyException();\ +} \ +void SAL_CALL clazz::setCharEscapementHeight(::sal_Int8 /*the_value*/) \ +{ \ + throw beans::UnknownPropertyException();\ +}\ +lang::Locale SAL_CALL clazz::getCharLocale() \ +{ \ + throw beans::UnknownPropertyException();\ +} \ +void SAL_CALL clazz::setCharLocale(const lang::Locale & /*the_value*/) \ +{ \ + throw beans::UnknownPropertyException();\ +}\ +::sal_Int16 SAL_CALL clazz::getCharEscapement() \ +{ \ + throw beans::UnknownPropertyException();\ +} \ +void SAL_CALL clazz::setCharEscapement(::sal_Int16 /*the_value*/) \ +{ \ + throw beans::UnknownPropertyException();\ +}\ +::sal_Int16 SAL_CALL clazz::getCharCaseMap() \ +{ \ + throw beans::UnknownPropertyException();\ +} \ +void SAL_CALL clazz::setCharCaseMap(::sal_Int16 /*the_value*/) \ +{ \ + throw beans::UnknownPropertyException();\ +}\ +sal_Bool SAL_CALL clazz::getCharCombineIsOn() \ +{ \ + throw beans::UnknownPropertyException();\ +} \ +void SAL_CALL clazz::setCharCombineIsOn(sal_Bool /*the_value*/) \ +{ \ + throw beans::UnknownPropertyException();\ +}\ +OUString SAL_CALL clazz::getCharCombinePrefix() \ +{ \ + throw beans::UnknownPropertyException();\ +} \ +void SAL_CALL clazz::setCharCombinePrefix(const OUString & /*the_value*/) \ +{ \ + throw beans::UnknownPropertyException();\ +}\ +OUString SAL_CALL clazz::getCharCombineSuffix() \ +{ \ + throw beans::UnknownPropertyException();\ +} \ +void SAL_CALL clazz::setCharCombineSuffix(const OUString & /*the_value*/) \ +{ \ + throw beans::UnknownPropertyException();\ +}\ +sal_Bool SAL_CALL clazz::getCharHidden() \ +{ \ + throw beans::UnknownPropertyException();\ +} \ +void SAL_CALL clazz::setCharHidden(sal_Bool /*the_value*/) \ +{ \ + throw beans::UnknownPropertyException();\ +}\ +sal_Bool SAL_CALL clazz::getCharShadowed() \ +{ \ + throw beans::UnknownPropertyException();\ +} \ +void SAL_CALL clazz::setCharShadowed(sal_Bool /*the_value*/) \ +{ \ + throw beans::UnknownPropertyException();\ +}\ +sal_Bool SAL_CALL clazz::getCharContoured() \ +{ \ + throw beans::UnknownPropertyException();\ +} \ +void SAL_CALL clazz::setCharContoured(sal_Bool /*the_value*/) \ +{ \ + throw beans::UnknownPropertyException();\ +}\ +OUString SAL_CALL clazz::getVisitedCharStyleName() \ +{ \ + throw beans::UnknownPropertyException();\ +} \ +void SAL_CALL clazz::setVisitedCharStyleName(const OUString & /*the_value*/) \ +{ \ + throw beans::UnknownPropertyException();\ +}\ +OUString SAL_CALL clazz::getUnvisitedCharStyleName() \ +{ \ + throw beans::UnknownPropertyException();\ +} \ +void SAL_CALL clazz::setUnvisitedCharStyleName(const OUString & /*the_value*/) \ +{ \ + throw beans::UnknownPropertyException();\ +}\ +::sal_Int16 SAL_CALL clazz::getCharKerning()\ +{ \ + throw beans::UnknownPropertyException();\ +}\ +void SAL_CALL clazz::setCharKerning(::sal_Int16 /*the_value*/)\ +{ \ + throw beans::UnknownPropertyException();\ +}\ +\ +awt::FontDescriptor SAL_CALL clazz::getFontDescriptor()\ +{\ + throw beans::UnknownPropertyException();\ +}\ +\ +void SAL_CALL clazz::setFontDescriptor( const awt::FontDescriptor& /*_fontdescriptor*/ )\ +{\ + throw beans::UnknownPropertyException();\ +}\ +awt::FontDescriptor SAL_CALL clazz::getFontDescriptorAsian()\ +{\ + throw beans::UnknownPropertyException();\ +}\ +\ +void SAL_CALL clazz::setFontDescriptorAsian( const awt::FontDescriptor& /*_fontdescriptor*/ )\ +{\ + throw beans::UnknownPropertyException();\ +}\ +awt::FontDescriptor SAL_CALL clazz::getFontDescriptorComplex()\ +{\ +throw beans::UnknownPropertyException();\ +}\ +\ +void SAL_CALL clazz::setFontDescriptorComplex( const awt::FontDescriptor& /*_fontdescriptor*/ )\ +{\ +throw beans::UnknownPropertyException();\ +}\ +\ +::sal_Int16 SAL_CALL clazz::getControlTextEmphasis()\ +{\ + throw beans::UnknownPropertyException();\ +}\ +\ +void SAL_CALL clazz::setControlTextEmphasis( ::sal_Int16 /*_fontemphasismark*/ )\ +{\ + throw beans::UnknownPropertyException();\ +}\ +\ +::sal_Int16 SAL_CALL clazz::getCharRelief()\ +{\ + throw beans::UnknownPropertyException();\ +}\ +\ +void SAL_CALL clazz::setCharRelief( ::sal_Int16 /*_fontrelief*/ )\ +{\ + throw beans::UnknownPropertyException();\ +}\ +\ +::sal_Int32 SAL_CALL clazz::getCharColor()\ +{\ + throw beans::UnknownPropertyException();\ +}\ +\ +void SAL_CALL clazz::setCharColor( ::sal_Int32 /*_textcolor*/ )\ +{\ + throw beans::UnknownPropertyException();\ +}\ +\ +::sal_Int32 SAL_CALL clazz::getCharUnderlineColor()\ +{\ + throw beans::UnknownPropertyException();\ +}\ +\ +void SAL_CALL clazz::setCharUnderlineColor( ::sal_Int32 /*_textlinecolor*/ )\ +{\ + throw beans::UnknownPropertyException();\ +}\ +\ +style::VerticalAlignment SAL_CALL clazz::getVerticalAlign()\ +{\ + ::osl::MutexGuard aGuard(m_aMutex);\ + return m_aProps.aFormatProperties.aVerticalAlignment;\ +}\ +\ +void SAL_CALL clazz::setVerticalAlign( style::VerticalAlignment _verticalalign )\ +{\ + set(PROPERTY_VERTICALALIGN,_verticalalign,m_aProps.aFormatProperties.aVerticalAlignment);\ +}\ +\ +::sal_Int16 SAL_CALL clazz::getCharEmphasis()\ +{\ + throw beans::UnknownPropertyException();\ +}\ +\ +void SAL_CALL clazz::setCharEmphasis( ::sal_Int16 /*_charemphasis*/ )\ +{\ + throw beans::UnknownPropertyException();\ +}\ +\ +OUString SAL_CALL clazz::getCharFontName()\ +{\ + throw beans::UnknownPropertyException();\ +}\ +\ +void SAL_CALL clazz::setCharFontName( const OUString& /*_charfontname*/ )\ +{\ + throw beans::UnknownPropertyException();\ +}\ +\ +OUString SAL_CALL clazz::getCharFontStyleName()\ +{\ + throw beans::UnknownPropertyException();\ +}\ +\ +void SAL_CALL clazz::setCharFontStyleName( const OUString& /*_charfontstylename*/ )\ +{\ + throw beans::UnknownPropertyException();\ +}\ +\ +::sal_Int16 SAL_CALL clazz::getCharFontFamily()\ +{\ + throw beans::UnknownPropertyException();\ +}\ +\ +void SAL_CALL clazz::setCharFontFamily( ::sal_Int16 /*_charfontfamily*/ )\ +{\ + throw beans::UnknownPropertyException();\ +}\ +\ +::sal_Int16 SAL_CALL clazz::getCharFontCharSet()\ +{\ + throw beans::UnknownPropertyException();\ +}\ +\ +void SAL_CALL clazz::setCharFontCharSet( ::sal_Int16 /*_charfontcharset*/ )\ +{\ + throw beans::UnknownPropertyException();\ +}\ +\ +::sal_Int16 SAL_CALL clazz::getCharFontPitch()\ +{\ + throw beans::UnknownPropertyException();\ +}\ +\ +void SAL_CALL clazz::setCharFontPitch( ::sal_Int16 /*_charfontpitch*/ )\ +{\ + throw beans::UnknownPropertyException();\ +}\ +\ +float SAL_CALL clazz::getCharHeight()\ +{\ + throw beans::UnknownPropertyException();\ +}\ +\ +void SAL_CALL clazz::setCharHeight( float /*_charheight*/ )\ +{\ + throw beans::UnknownPropertyException();\ +}\ +\ +::sal_Int16 SAL_CALL clazz::getCharUnderline()\ +{\ + throw beans::UnknownPropertyException();\ +}\ +\ +void SAL_CALL clazz::setCharUnderline( ::sal_Int16 /*_charunderline*/ )\ +{\ + throw beans::UnknownPropertyException();\ +}\ +\ +float SAL_CALL clazz::getCharWeight()\ +{\ + throw beans::UnknownPropertyException();\ +}\ +\ +void SAL_CALL clazz::setCharWeight( float /*_charweight*/ )\ +{\ + throw beans::UnknownPropertyException();\ +}\ +\ +awt::FontSlant SAL_CALL clazz::getCharPosture()\ +{\ + throw beans::UnknownPropertyException();\ +}\ +\ +void SAL_CALL clazz::setCharPosture( awt::FontSlant /*_charposture*/ )\ +{\ + throw beans::UnknownPropertyException();\ +}\ + float SAL_CALL clazz::getCharHeightAsian()\ + {\ + throw beans::UnknownPropertyException();\ +}\ + void SAL_CALL clazz::setCharHeightAsian( float )\ + {\ + throw beans::UnknownPropertyException();\ +}\ + float SAL_CALL clazz::getCharWeightAsian()\ + {\ + throw beans::UnknownPropertyException();\ +}\ + void SAL_CALL clazz::setCharWeightAsian( float )\ + {\ + throw beans::UnknownPropertyException();\ +}\ + OUString SAL_CALL clazz::getCharFontNameAsian()\ + {\ + throw beans::UnknownPropertyException();\ +}\ + void SAL_CALL clazz::setCharFontNameAsian( const OUString& )\ + {\ + throw beans::UnknownPropertyException();\ +}\ + OUString SAL_CALL clazz::getCharFontStyleNameAsian()\ + {\ + throw beans::UnknownPropertyException();\ +}\ + void SAL_CALL clazz::setCharFontStyleNameAsian( const OUString& )\ + {\ + throw beans::UnknownPropertyException();\ +}\ + ::sal_Int16 SAL_CALL clazz::getCharFontFamilyAsian()\ + {\ + throw beans::UnknownPropertyException();\ +}\ + void SAL_CALL clazz::setCharFontFamilyAsian( ::sal_Int16 )\ + {\ + throw beans::UnknownPropertyException();\ +}\ + ::sal_Int16 SAL_CALL clazz::getCharFontCharSetAsian()\ + {\ + throw beans::UnknownPropertyException();\ +}\ + void SAL_CALL clazz::setCharFontCharSetAsian( ::sal_Int16 )\ + {\ + throw beans::UnknownPropertyException();\ +}\ + ::sal_Int16 SAL_CALL clazz::getCharFontPitchAsian()\ + {\ + throw beans::UnknownPropertyException();\ +}\ + void SAL_CALL clazz::setCharFontPitchAsian( ::sal_Int16 )\ + {\ + throw beans::UnknownPropertyException();\ +}\ + css::awt::FontSlant SAL_CALL clazz::getCharPostureAsian()\ + {\ + throw beans::UnknownPropertyException();\ +}\ + void SAL_CALL clazz::setCharPostureAsian( css::awt::FontSlant )\ + {\ + throw beans::UnknownPropertyException();\ +}\ + css::lang::Locale SAL_CALL clazz::getCharLocaleAsian()\ + {\ + throw beans::UnknownPropertyException();\ +}\ + void SAL_CALL clazz::setCharLocaleAsian( const css::lang::Locale& )\ + {\ + throw beans::UnknownPropertyException();\ +}\ + float SAL_CALL clazz::getCharHeightComplex()\ + {\ + throw beans::UnknownPropertyException();\ +}\ + void SAL_CALL clazz::setCharHeightComplex( float )\ + {\ + throw beans::UnknownPropertyException();\ +}\ + float SAL_CALL clazz::getCharWeightComplex()\ + {\ + throw beans::UnknownPropertyException();\ +}\ + void SAL_CALL clazz::setCharWeightComplex( float )\ + {\ + throw beans::UnknownPropertyException();\ +}\ + OUString SAL_CALL clazz::getCharFontNameComplex()\ + {\ + throw beans::UnknownPropertyException();\ +}\ + void SAL_CALL clazz::setCharFontNameComplex( const OUString& )\ + {\ + throw beans::UnknownPropertyException();\ +}\ + OUString SAL_CALL clazz::getCharFontStyleNameComplex()\ + {\ + throw beans::UnknownPropertyException();\ +}\ + void SAL_CALL clazz::setCharFontStyleNameComplex( const OUString& )\ + {\ + throw beans::UnknownPropertyException();\ +}\ + ::sal_Int16 SAL_CALL clazz::getCharFontFamilyComplex()\ + {\ + throw beans::UnknownPropertyException();\ +}\ + void SAL_CALL clazz::setCharFontFamilyComplex( ::sal_Int16 )\ + {\ + throw beans::UnknownPropertyException();\ +}\ + ::sal_Int16 SAL_CALL clazz::getCharFontCharSetComplex()\ + {\ + throw beans::UnknownPropertyException();\ +}\ + void SAL_CALL clazz::setCharFontCharSetComplex( ::sal_Int16 )\ + {\ + throw beans::UnknownPropertyException();\ +}\ + ::sal_Int16 SAL_CALL clazz::getCharFontPitchComplex()\ + {\ + throw beans::UnknownPropertyException();\ +}\ + void SAL_CALL clazz::setCharFontPitchComplex( ::sal_Int16 )\ + {\ + throw beans::UnknownPropertyException();\ +}\ + css::awt::FontSlant SAL_CALL clazz::getCharPostureComplex()\ + {\ + throw beans::UnknownPropertyException();\ +}\ + void SAL_CALL clazz::setCharPostureComplex( css::awt::FontSlant )\ + {\ + throw beans::UnknownPropertyException();\ +}\ + css::lang::Locale SAL_CALL clazz::getCharLocaleComplex()\ + {\ + throw beans::UnknownPropertyException();\ +}\ + void SAL_CALL clazz::setCharLocaleComplex( const css::lang::Locale& )\ + {\ + throw beans::UnknownPropertyException();\ +} + + +// css::report::XReportControlFormat: +#define REPORTCONTROLFORMAT_IMPL(clazz,varName) \ + REPORTCONTROLFORMAT_IMPL1(clazz,varName) \ + REPORTCONTROLFORMAT_IMPL2(clazz,varName) + + +#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_REPORTHELPERIMPL_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/reportdesign/source/core/inc/ReportUndoFactory.hxx b/reportdesign/source/core/inc/ReportUndoFactory.hxx new file mode 100644 index 000000000..c5721c0bc --- /dev/null +++ b/reportdesign/source/core/inc/ReportUndoFactory.hxx @@ -0,0 +1,74 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +#ifndef INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_REPORTUNDOFACTORY_HXX +#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_REPORTUNDOFACTORY_HXX + +#include <svx/svdundo.hxx> +#include <memory> + +namespace rptui +{ + class OReportUndoFactory : public SdrUndoFactory + { + ::std::unique_ptr<SdrUndoFactory> m_pUndoFactory; + + OReportUndoFactory(const OReportUndoFactory&) = delete; + OReportUndoFactory& operator=(const OReportUndoFactory&) = delete; + public: + OReportUndoFactory(); + virtual ~OReportUndoFactory() override; + + // shapes + virtual std::unique_ptr<SdrUndoAction> CreateUndoMoveObject( SdrObject& rObject, const Size& rDist ) override; + virtual std::unique_ptr<SdrUndoAction> CreateUndoGeoObject( SdrObject& rObject ) override; + virtual std::unique_ptr<SdrUndoAction> CreateUndoAttrObject( SdrObject& rObject, bool bStyleSheet1 = false, bool bSaveText = false ) override; + virtual std::unique_ptr<SdrUndoAction> CreateUndoRemoveObject(SdrObject& rObject) override; + virtual std::unique_ptr<SdrUndoAction> CreateUndoInsertObject( SdrObject& rObject, bool bOrdNumDirect = false) override; + virtual std::unique_ptr<SdrUndoAction> CreateUndoDeleteObject( SdrObject& rObject, bool bOrdNumDirect = false) override; + virtual std::unique_ptr<SdrUndoAction> CreateUndoNewObject( SdrObject& rObject, bool bOrdNumDirect = false) override; + virtual std::unique_ptr<SdrUndoAction> CreateUndoCopyObject( SdrObject& rObject, bool bOrdNumDirect = false) override; + + virtual std::unique_ptr<SdrUndoAction> CreateUndoObjectOrdNum( SdrObject& rObject, sal_uInt32 nOldOrdNum1, sal_uInt32 nNewOrdNum1) override; + + virtual std::unique_ptr<SdrUndoAction> CreateUndoReplaceObject( SdrObject& rOldObject, SdrObject& rNewObject ) override; + virtual std::unique_ptr<SdrUndoAction> CreateUndoObjectLayerChange( SdrObject& rObject, SdrLayerID aOldLayer, SdrLayerID aNewLayer ) override; + virtual std::unique_ptr<SdrUndoAction> CreateUndoObjectSetText( SdrObject& rNewObj, sal_Int32 nText ) override; + + // layer + virtual std::unique_ptr<SdrUndoAction> CreateUndoNewLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel) override; + virtual std::unique_ptr<SdrUndoAction> CreateUndoDeleteLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel) override; + + // page + virtual std::unique_ptr<SdrUndoAction> CreateUndoDeletePage(SdrPage& rPage) override; + virtual std::unique_ptr<SdrUndoAction> CreateUndoNewPage(SdrPage& rPage) override; + virtual std::unique_ptr<SdrUndoAction> CreateUndoCopyPage(SdrPage& rPage) override; + virtual std::unique_ptr<SdrUndoAction> CreateUndoSetPageNum(SdrPage& rNewPg, sal_uInt16 nOldPageNum1, sal_uInt16 nNewPageNum1) override; + + // master page + virtual std::unique_ptr<SdrUndoAction> CreateUndoPageRemoveMasterPage(SdrPage& rChangedPage) override; + virtual std::unique_ptr<SdrUndoAction> CreateUndoPageChangeMasterPage(SdrPage& rChangedPage) override; + + }; + +} // rptui + + +#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_REPORTUNDOFACTORY_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/reportdesign/source/core/inc/RptObjectListener.hxx b/reportdesign/source/core/inc/RptObjectListener.hxx new file mode 100644 index 000000000..d27a4bf33 --- /dev/null +++ b/reportdesign/source/core/inc/RptObjectListener.hxx @@ -0,0 +1,50 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_RPTOBJECTLISTENER_HXX +#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_RPTOBJECTLISTENER_HXX + +#include <cppuhelper/implbase.hxx> +#include <com/sun/star/beans/XPropertyChangeListener.hpp> + +namespace rptui +{ +class OObjectBase; + +class OObjectListener: public ::cppu::WeakImplHelper< css::beans::XPropertyChangeListener > +{ +private: + OObjectBase* m_pObject; + OObjectListener(const OObjectListener&) = delete; + void operator =(const OObjectListener&) = delete; +protected: + virtual ~OObjectListener() override; +public: + OObjectListener(OObjectBase* _pObject); + + // XEventListener + virtual void SAL_CALL disposing( const css::lang::EventObject& Source ) override; + + // XPropertyChangeListener + virtual void SAL_CALL propertyChange( const css::beans::PropertyChangeEvent& evt ) override; +}; +} +#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_RPTOBJECTLISTENER_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/reportdesign/source/core/inc/Section.hxx b/reportdesign/source/core/inc/Section.hxx new file mode 100644 index 000000000..5417af2a9 --- /dev/null +++ b/reportdesign/source/core/inc/Section.hxx @@ -0,0 +1,232 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +#ifndef INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_SECTION_HXX +#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_SECTION_HXX + +#include <com/sun/star/report/XSection.hpp> +#include <cppuhelper/compbase.hxx> +#include <comphelper/broadcasthelper.hxx> +#include <comphelper/uno3.hxx> +#include <cppuhelper/propertysetmixin.hxx> +#include <comphelper/interfacecontainer3.hxx> +#include <com/sun/star/uno/XComponentContext.hpp> +#include <com/sun/star/drawing/XDrawPage.hpp> +#include <com/sun/star/drawing/XShapeGrouper.hpp> +#include <com/sun/star/drawing/XShapes.hpp> +#include <com/sun/star/form/XFormsSupplier2.hpp> +#include <com/sun/star/lang/XUnoTunnel.hpp> +#include <com/sun/star/lang/XServiceInfo.hpp> + +namespace reportdesign +{ + typedef ::cppu::WeakComponentImplHelper + < css::report::XSection + , css::lang::XServiceInfo + , css::lang::XUnoTunnel + // SvxDrawPage forward + , css::drawing::XDrawPage + , css::drawing::XShapeGrouper + // SvxFmDrawPage forward + , css::form::XFormsSupplier2 + > SectionBase; + typedef ::cppu::PropertySetMixin<css::report::XSection> SectionPropertySet; + + class OSection : public comphelper::OMutexAndBroadcastHelper, + public SectionBase, + public SectionPropertySet + { + ::comphelper::OInterfaceContainerHelper3<css::container::XContainerListener> m_aContainerListeners; + css::uno::Reference< css::drawing::XDrawPage > m_xDrawPage; + css::uno::Reference< css::drawing::XShapeGrouper > m_xDrawPage_ShapeGrouper; + css::uno::Reference< css::form::XFormsSupplier2 > m_xDrawPage_FormSupplier; + css::uno::Reference< css::lang::XUnoTunnel > m_xDrawPage_Tunnel; + css::uno::WeakReference< css::report::XGroup > m_xGroup; + css::uno::WeakReference< css::report::XReportDefinition > m_xReportDefinition; + OUString m_sName; + OUString m_sConditionalPrintExpression; + ::sal_uInt32 m_nHeight; + ::sal_Int32 m_nBackgroundColor; + ::sal_Int16 m_nForceNewPage; + ::sal_Int16 m_nNewRowOrCol; + bool m_bKeepTogether; + bool m_bRepeatSection; + bool m_bVisible; + bool m_bBacktransparent; + bool m_bInRemoveNotify; + bool m_bInInsertNotify; + + private: + OSection(const OSection&) = delete; + OSection& operator=(const OSection&) = delete; + + template <typename T> void set( const OUString& _sProperty + ,const T& Value + ,T& _member) + { + BoundListeners l; + { + ::osl::MutexGuard aGuard(m_aMutex); + if ( _member != Value ) + { + prepareSet(_sProperty, css::uno::Any(_member), css::uno::Any(Value), &l); + _member = Value; + } + } + l.notify(); + } + void set( const OUString& _sProperty + ,bool Value + ,bool& _member) + { + BoundListeners l; + { + ::osl::MutexGuard aGuard(m_aMutex); + if ( _member != Value ) + { + prepareSet(_sProperty, css::uno::Any(_member), css::uno::Any(Value), &l); + _member = Value; + } + } + l.notify(); + } + + /** checks if this section is either the page header or footer and if so it throws an UnknownPropertyException + * + */ + void checkNotPageHeaderFooter(); + + void init(); + protected: + // TODO: VirtualFunctionFinder: This is virtual function! + + virtual ~OSection() override; + + /** this function is called upon disposing the component + */ + // TODO: VirtualFunctionFinder: This is virtual function! + + virtual void SAL_CALL disposing() override; + private: + OSection(const css::uno::Reference< css::report::XReportDefinition >& xParentDef + ,const css::uno::Reference< css::report::XGroup >& xParentGroup + ,const css::uno::Reference< css::uno::XComponentContext >& context, + css::uno::Sequence< OUString> const&); + public: + 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); + static css::uno::Reference< css::report::XSection> + createOSection(const css::uno::Reference< css::report::XGroup >& _xParent + ,const css::uno::Reference< css::uno::XComponentContext >& context); + + DECLARE_XINTERFACE( ) + + // css::lang::XServiceInfo + virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override; + virtual OUString SAL_CALL getImplementationName( ) override; + virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames( ) override; + + /// @throws css::uno::RuntimeException + static css::uno::Sequence< OUString > getSupportedServiceNames_Static(); + // css::beans::XPropertySet + virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) override; + virtual void SAL_CALL setPropertyValue( const OUString& aPropertyName, const css::uno::Any& aValue ) override; + virtual css::uno::Any SAL_CALL getPropertyValue( const OUString& PropertyName ) override; + virtual void SAL_CALL addPropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& xListener ) override; + virtual void SAL_CALL removePropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& aListener ) override; + virtual void SAL_CALL addVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override; + virtual void SAL_CALL removeVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override; + + // XSection + virtual sal_Bool SAL_CALL getVisible() override; + virtual void SAL_CALL setVisible( sal_Bool _visible ) override; + virtual OUString SAL_CALL getName() override; + virtual void SAL_CALL setName( const OUString& _name ) override; + virtual ::sal_uInt32 SAL_CALL getHeight() override; + virtual void SAL_CALL setHeight( ::sal_uInt32 _height ) override; + virtual ::sal_Int32 SAL_CALL getBackColor() override; + virtual void SAL_CALL setBackColor( ::sal_Int32 _backgroundcolor ) override; + virtual sal_Bool SAL_CALL getBackTransparent() override; + virtual void SAL_CALL setBackTransparent( sal_Bool _backtransparent ) override; + virtual OUString SAL_CALL getConditionalPrintExpression() override; + virtual void SAL_CALL setConditionalPrintExpression( const OUString& _conditionalprintexpression ) override; + virtual ::sal_Int16 SAL_CALL getForceNewPage() override; + virtual void SAL_CALL setForceNewPage( ::sal_Int16 _forcenewpage ) override; + virtual ::sal_Int16 SAL_CALL getNewRowOrCol() override; + virtual void SAL_CALL setNewRowOrCol( ::sal_Int16 _newroworcol ) override; + virtual sal_Bool SAL_CALL getKeepTogether() override; + virtual void SAL_CALL setKeepTogether( sal_Bool _keeptogether ) override; + virtual sal_Bool SAL_CALL getCanGrow() override; + virtual void SAL_CALL setCanGrow( sal_Bool _cangrow ) override; + virtual sal_Bool SAL_CALL getCanShrink() override; + virtual void SAL_CALL setCanShrink( sal_Bool _canshrink ) override; + virtual sal_Bool SAL_CALL getRepeatSection() override; + virtual void SAL_CALL setRepeatSection( sal_Bool _repeatsection ) override; + virtual css::uno::Reference< css::report::XGroup > SAL_CALL getGroup() override; + virtual css::uno::Reference< css::report::XReportDefinition > SAL_CALL getReportDefinition() override; + + // XChild + virtual css::uno::Reference< css::uno::XInterface > SAL_CALL getParent( ) override; + virtual void SAL_CALL setParent( const css::uno::Reference< css::uno::XInterface >& Parent ) override; + // XContainer + virtual void SAL_CALL addContainerListener( const css::uno::Reference< css::container::XContainerListener >& xListener ) override; + virtual void SAL_CALL removeContainerListener( const css::uno::Reference< css::container::XContainerListener >& xListener ) override; + // XElementAccess + virtual css::uno::Type SAL_CALL getElementType( ) override; + virtual sal_Bool SAL_CALL hasElements( ) override; + // XShapes + virtual void SAL_CALL add( const css::uno::Reference< css::drawing::XShape >& xShape ) override; + virtual void SAL_CALL remove( const css::uno::Reference< css::drawing::XShape >& xShape ) override; + // XShapeGrouper + virtual css::uno::Reference< css::drawing::XShapeGroup > SAL_CALL group( const css::uno::Reference< css::drawing::XShapes >& xShapes ) override; + virtual void SAL_CALL ungroup( const css::uno::Reference< css::drawing::XShapeGroup >& aGroup ) override; + + // XFormsSupplier + virtual css::uno::Reference< css::container::XNameContainer > SAL_CALL getForms() override; + // XFormsSupplier2 + virtual sal_Bool SAL_CALL hasForms() override; + + // XIndexAccess + virtual ::sal_Int32 SAL_CALL getCount( ) override; + virtual css::uno::Any SAL_CALL getByIndex( ::sal_Int32 Index ) override; + // XEnumerationAccess + virtual css::uno::Reference< css::container::XEnumeration > SAL_CALL createEnumeration( ) override; + + // XComponent + virtual void SAL_CALL dispose() override; + virtual void SAL_CALL addEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override + { + cppu::WeakComponentImplHelperBase::addEventListener(aListener); + } + virtual void SAL_CALL removeEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override + { + cppu::WeakComponentImplHelperBase::removeEventListener(aListener); + } + + // css::lang::XUnoTunnel + virtual sal_Int64 SAL_CALL getSomething( const css::uno::Sequence< sal_Int8 >& aIdentifier ) override; + static const css::uno::Sequence< sal_Int8 > & getUnoTunnelId(); + + void notifyElementAdded(const css::uno::Reference< css::drawing::XShape >& xShape); + void notifyElementRemoved(const css::uno::Reference< css::drawing::XShape >& xShape); + }; +} +#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_SECTION_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/reportdesign/source/core/inc/Shape.hxx b/reportdesign/source/core/inc/Shape.hxx new file mode 100644 index 000000000..73f6c63f6 --- /dev/null +++ b/reportdesign/source/core/inc/Shape.hxx @@ -0,0 +1,209 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +#ifndef INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_SHAPE_HXX +#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_SHAPE_HXX + +#include <cppuhelper/propertysetmixin.hxx> +#include <com/sun/star/report/XShape.hpp> +#include "ReportControlModel.hxx" +#include <cppuhelper/compbase.hxx> +#include <cppuhelper/basemutex.hxx> +#include <com/sun/star/lang/XServiceInfo.hpp> +#include <ReportHelperDefines.hxx> +#include <comphelper/propagg.hxx> +#include <memory> + +namespace reportdesign +{ + typedef ::cppu::PropertySetMixin< css::report::XShape > ShapePropertySet; + typedef ::cppu::WeakComponentImplHelper< css::report::XShape + ,css::lang::XServiceInfo > ShapeBase; + + /** \class OShape Defines the implementation of a \interface com:::sun::star::report::XShape + * \ingroup reportdesign_api + * + */ + class OShape : public cppu::BaseMutex, + public ShapeBase, + public ShapePropertySet + { + friend class OShapeHelper; + ::std::unique_ptr< ::comphelper::OPropertyArrayAggregationHelper> m_pAggHelper; + OReportControlModel m_aProps; + css::drawing::HomogenMatrix3 m_Transformation; + sal_Int32 m_nZOrder; + bool m_bOpaque; + + OUString m_sServiceName; + OUString m_CustomShapeEngine; + OUString m_CustomShapeData; + css::uno::Sequence< css::beans::PropertyValue > m_CustomShapeGeometry; + + private: + OShape(const OShape&) = delete; + OShape& operator=(const OShape&) = delete; + + // internally, we store PROPERTY_PARAADJUST as css::style::ParagraphAdjust, but externally the property is visible as a sal_Int16 + void set( const OUString& _sProperty + ,sal_Int16 Value + ,css::style::ParagraphAdjust& _member) + { + BoundListeners l; + { + ::osl::MutexGuard aGuard(m_aMutex); + if ( static_cast<sal_Int16>(_member) != Value ) + { + prepareSet(_sProperty, css::uno::Any(static_cast<sal_Int16>(_member)), css::uno::Any(Value), &l); + _member = static_cast<css::style::ParagraphAdjust>(Value); + } + } + l.notify(); + } + template <typename T> void set( const OUString& _sProperty + ,const T& Value + ,T& _member) + { + BoundListeners l; + { + ::osl::MutexGuard aGuard(m_aMutex); + if ( _member != Value ) + { + prepareSet(_sProperty, css::uno::Any(_member), css::uno::Any(Value), &l); + _member = Value; + } + } + l.notify(); + } + void set( const OUString& _sProperty + ,bool Value + ,bool& _member) + { + BoundListeners l; + { + ::osl::MutexGuard aGuard(m_aMutex); + if ( _member != Value ) + { + prepareSet(_sProperty, css::uno::Any(_member), css::uno::Any(Value), &l); + _member = Value; + } + } + l.notify(); + } + cppu::IPropertyArrayHelper& getInfoHelper(); + protected: + virtual ~OShape() override; + public: + explicit OShape(css::uno::Reference< css::uno::XComponentContext > const & _xContext); + explicit OShape(css::uno::Reference< css::uno::XComponentContext > const & _xContext + ,const css::uno::Reference< css::lang::XMultiServiceFactory > & _xFactory + ,css::uno::Reference< css::drawing::XShape >& _xShape + ,const OUString& _sServiceName); + + DECLARE_XINTERFACE( ) + // css::lang::XServiceInfo + virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override; + virtual OUString SAL_CALL getImplementationName( ) override; + virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames( ) override; + + /// @throws css::uno::RuntimeException + static css::uno::Sequence< OUString > getSupportedServiceNames_Static(); + /// @throws css::uno::RuntimeException + static OUString getImplementationName_Static(); + static css::uno::Reference< css::uno::XInterface > + create(css::uno::Reference< css::uno::XComponentContext > const & xContext); + // css::beans::XPropertySet + virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) override; + virtual void SAL_CALL setPropertyValue( const OUString& aPropertyName, const css::uno::Any& aValue ) override; + virtual css::uno::Any SAL_CALL getPropertyValue( const OUString& PropertyName ) override; + virtual void SAL_CALL addPropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& xListener ) override; + virtual void SAL_CALL removePropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& aListener ) override; + virtual void SAL_CALL addVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override; + virtual void SAL_CALL removeVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override; + + // XReportComponent + REPORTCOMPONENT_HEADER() + + // XShape + SHAPE_HEADER() + + virtual OUString SAL_CALL getCustomShapeEngine() override; + virtual void SAL_CALL setCustomShapeEngine( const OUString& _customshapeengine ) override; + virtual OUString SAL_CALL getCustomShapeData() override; + virtual void SAL_CALL setCustomShapeData( const OUString& _customshapedata ) override; + virtual css::uno::Sequence< css::beans::PropertyValue > SAL_CALL getCustomShapeGeometry() override; + virtual void SAL_CALL setCustomShapeGeometry( const css::uno::Sequence< css::beans::PropertyValue >& _customshapegeometry ) override; + + virtual sal_Bool SAL_CALL getOpaque() override; + virtual void SAL_CALL setOpaque( sal_Bool _opaque ) override; + + // XShapeDescriptor + virtual OUString SAL_CALL getShapeType( ) override; + + // XReportControlModel + REPORTCONTROLMODEL_HEADER() + + // XReportControlFormat + REPORTCONTROLFORMAT_HEADER() + // XShape + virtual ::sal_Int32 SAL_CALL getZOrder() override; + virtual void SAL_CALL setZOrder( ::sal_Int32 _zorder ) override; + virtual css::drawing::HomogenMatrix3 SAL_CALL getTransformation() override; + virtual void SAL_CALL setTransformation( const css::drawing::HomogenMatrix3& _transformation ) override; + + // XCloneable + virtual css::uno::Reference< css::util::XCloneable > SAL_CALL createClone( ) override; + + // XComponent + virtual void SAL_CALL dispose() override; + virtual void SAL_CALL addEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override + { + cppu::WeakComponentImplHelperBase::addEventListener(aListener); + } + virtual void SAL_CALL removeEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override + { + cppu::WeakComponentImplHelperBase::removeEventListener(aListener); + } + + // XChild + virtual css::uno::Reference< css::uno::XInterface > SAL_CALL getParent( ) override; + virtual void SAL_CALL setParent( const css::uno::Reference< css::uno::XInterface >& Parent ) override; + + // XContainer + virtual void SAL_CALL addContainerListener( const css::uno::Reference< css::container::XContainerListener >& xListener ) override; + virtual void SAL_CALL removeContainerListener( const css::uno::Reference< css::container::XContainerListener >& xListener ) override; + + // XElementAccess + virtual css::uno::Type SAL_CALL getElementType( ) override; + virtual sal_Bool SAL_CALL hasElements( ) override; + + // XIndexReplace + virtual void SAL_CALL replaceByIndex( ::sal_Int32 Index, const css::uno::Any& Element ) override; + + // XIndexContainer + virtual void SAL_CALL insertByIndex( ::sal_Int32 Index, const css::uno::Any& Element ) override; + virtual void SAL_CALL removeByIndex( ::sal_Int32 Index ) override; + + // XIndexAccess + virtual ::sal_Int32 SAL_CALL getCount( ) override; + virtual css::uno::Any SAL_CALL getByIndex( ::sal_Int32 Index ) override; + }; +} +#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_SHAPE_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/reportdesign/source/core/inc/Tools.hxx b/reportdesign/source/core/inc/Tools.hxx new file mode 100644 index 000000000..3e0a699ce --- /dev/null +++ b/reportdesign/source/core/inc/Tools.hxx @@ -0,0 +1,155 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +#ifndef INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_TOOLS_HXX +#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_TOOLS_HXX + +#include <com/sun/star/report/XSection.hpp> +#include <com/sun/star/awt/Point.hpp> +#include <com/sun/star/awt/Size.hpp> +#include <com/sun/star/container/XChild.hpp> +#include <com/sun/star/lang/XMultiServiceFactory.hpp> + + +#include <strings.hxx> +#include <osl/diagnose.h> +#include <comphelper/uno3.hxx> + +namespace reportdesign +{ + /** uses the XChild interface to get the section from any child of it. + * + * \param _xReportComponent A report component which is a child of the section. + * \return The section where this report component resists in. + */ + css::uno::Reference< css::report::XSection> lcl_getSection(const css::uno::Reference< css::uno::XInterface>& _xReportComponent); + + /** throws an illegal argument exception. The message text is the resource RID_STR_ERROR_WRONG_ARGUMENT + the type as reference. + * + * \param _sTypeName The reference where to look for the correct values. + * \param ExceptionContext_ The exception context. + * \param ArgumentPosition_ The argument position. + */ + void throwIllegallArgumentException(std::u16string_view _sTypeName + ,const css::uno::Reference< css::uno::XInterface >& ExceptionContext_ + ,sal_Int16 ArgumentPosition_); + + /** clones the given object + * + * \param _xReportComponent the object to be cloned + * \param _xFactory the factory to create the clone + * \param _sServiceName the service of the to be cloned object + * \return the clone + */ + css::uno::Reference< css::util::XCloneable > cloneObject( + const css::uno::Reference< css::report::XReportComponent>& _xReportComponent + ,const css::uno::Reference< css::lang::XMultiServiceFactory>& _xFactory + ,const OUString& _sServiceName); + + class OShapeHelper + { + public: + template<typename T> static void setSize(const css::awt::Size& aSize,T* _pShape) + { + OSL_ENSURE(aSize.Width >= 0 && aSize.Height >= 0,"Illegal width or height!"); + + ::osl::MutexGuard aGuard(_pShape->m_aMutex); + if ( _pShape->m_aProps.aComponent.m_xShape.is() ) + { + css::awt::Size aOldSize = _pShape->m_aProps.aComponent.m_xShape->getSize(); + if ( aOldSize.Height != aSize.Height || aOldSize.Width != aSize.Width ) + { + _pShape->m_aProps.aComponent.m_nWidth = aOldSize.Width; + _pShape->m_aProps.aComponent.m_nHeight = aOldSize.Height; + _pShape->m_aProps.aComponent.m_xShape->setSize(aSize); + } + } + _pShape->set(PROPERTY_WIDTH,aSize.Width,_pShape->m_aProps.aComponent.m_nWidth); + _pShape->set(PROPERTY_HEIGHT,aSize.Height,_pShape->m_aProps.aComponent.m_nHeight); + } + template<typename T> static css::awt::Size getSize( T* _pShape ) + { + ::osl::MutexGuard aGuard(_pShape->m_aMutex); + if ( _pShape->m_aProps.aComponent.m_xShape.is() ) + { + css::awt::Size aSize = _pShape->m_aProps.aComponent.m_xShape->getSize(); + OSL_ENSURE(aSize.Width >= 0 && aSize.Height >= 0,"Illegal width or height!"); + return aSize; + } + return css::awt::Size(_pShape->m_aProps.aComponent.m_nWidth,_pShape->m_aProps.aComponent.m_nHeight); + } + + template<typename T> static void setPosition( const css::awt::Point& _aPosition ,T* _pShape) + { + // we know it is not allowed that the position in smaller 0, but in NbcMove() it will handled right. + // only at 'Undo' it is possible to short set the position smaller 0 + // OSL_ENSURE(_aPosition.X >= 0 && _aPosition.Y >= 0,"set to Illegal position!"); + ::osl::MutexGuard aGuard(_pShape->m_aMutex); + css::awt::Point aOldPos; + aOldPos.X = _pShape->m_aProps.aComponent.m_nPosX; + aOldPos.Y = _pShape->m_aProps.aComponent.m_nPosY; + + css::awt::Point aPosition(_aPosition); + if ( _pShape->m_aProps.aComponent.m_xShape.is() ) + { + aOldPos = _pShape->m_aProps.aComponent.m_xShape->getPosition(); + if ( aOldPos.X != aPosition.X || aOldPos.Y != aPosition.Y ) + { + _pShape->m_aProps.aComponent.m_nPosX = aOldPos.X; + _pShape->m_aProps.aComponent.m_nPosY = aOldPos.Y; + _pShape->m_aProps.aComponent.m_xShape->setPosition(aPosition); + } + } + _pShape->set(PROPERTY_POSITIONX,aPosition.X,aOldPos.X); + _pShape->set(PROPERTY_POSITIONY,aPosition.Y,aOldPos.Y); + } + template<typename T> static css::awt::Point getPosition(T* _pShape) + { + ::osl::MutexGuard aGuard(_pShape->m_aMutex); + if ( _pShape->m_aProps.aComponent.m_xShape.is() ) + { + css::awt::Point aPosition = _pShape->m_aProps.aComponent.m_xShape->getPosition(); + return aPosition; + } + return css::awt::Point(_pShape->m_aProps.aComponent.m_nPosX,_pShape->m_aProps.aComponent.m_nPosY); + } + template<typename T> static void setParent( const css::uno::Reference< css::uno::XInterface >& Parent, T* _pShape) + { + ::osl::MutexGuard aGuard(_pShape->m_aMutex); + _pShape->m_aProps.aComponent.m_xParent = css::uno::Reference< css::container::XChild >(Parent,css::uno::UNO_QUERY); + css::uno::Reference< css::container::XChild > xChild; + comphelper::query_aggregation(_pShape->m_aProps.aComponent.m_xProxy,xChild); + if ( xChild.is() ) + xChild->setParent(Parent); + } + template<typename T> static css::uno::Reference< css::uno::XInterface > getParent( T* _pShape ) + { + ::osl::MutexGuard aGuard(_pShape->m_aMutex); + css::uno::Reference< css::container::XChild > xChild; + comphelper::query_aggregation(_pShape->m_aProps.aComponent.m_xProxy,xChild); + if ( xChild.is() ) + return xChild->getParent(); + return _pShape->m_aProps.aComponent.m_xParent; + } + }; + +} // namespace reportdesign + +#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_TOOLS_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/reportdesign/source/core/inc/conditionupdater.hxx b/reportdesign/source/core/inc/conditionupdater.hxx new file mode 100644 index 000000000..8102f6766 --- /dev/null +++ b/reportdesign/source/core/inc/conditionupdater.hxx @@ -0,0 +1,62 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_CONDITIONUPDATER_HXX +#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_CONDITIONUPDATER_HXX + +#include <conditionalexpression.hxx> + +#include <com/sun/star/beans/PropertyChangeEvent.hpp> +#include <com/sun/star/report/XReportControlModel.hpp> + + +namespace rptui +{ + + class ConditionUpdater + { + public: + ConditionUpdater(); + ~ConditionUpdater(); + ConditionUpdater(const ConditionUpdater&) = delete; + ConditionUpdater& operator=(const ConditionUpdater&) = delete; + + /// notifies the object about the change of a property value, somewhere in the report definition + void notifyPropertyChange( const css::beans::PropertyChangeEvent& _rEvent ); + + private: + /// does late initializations, return whether or not successful + void impl_lateInit_nothrow(); + + void impl_adjustFormatConditions_nothrow( + const css::uno::Reference< css::report::XReportControlModel >& _rxRptControlModel, + const OUString& _rOldDataSource, + const OUString& _rNewDataSource + ); + + private: + ConditionalExpressions m_aConditionalExpressions; + }; + +} // namespace rptui + + +#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_CONDITIONUPDATER_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |