summaryrefslogtreecommitdiffstats
path: root/reportdesign/inc
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--reportdesign/inc/PropertyForward.hxx84
-rw-r--r--reportdesign/inc/ReportDefinition.hxx411
-rw-r--r--reportdesign/inc/ReportHelperDefines.hxx189
-rw-r--r--reportdesign/inc/ReportVisitor.hxx63
-rw-r--r--reportdesign/inc/RptDef.hxx90
-rw-r--r--reportdesign/inc/RptModel.hxx91
-rw-r--r--reportdesign/inc/RptObject.hxx284
-rw-r--r--reportdesign/inc/RptPage.hxx87
-rw-r--r--reportdesign/inc/UndoActions.hxx284
-rw-r--r--reportdesign/inc/UndoEnv.hxx146
-rw-r--r--reportdesign/inc/bitmaps.hlst29
-rw-r--r--reportdesign/inc/conditionalexpression.hxx109
-rw-r--r--reportdesign/inc/core_resource.hxx31
-rw-r--r--reportdesign/inc/dllapi.h33
-rw-r--r--reportdesign/inc/helpids.h85
-rw-r--r--reportdesign/inc/pch/precompiled_rpt.cxx12
-rw-r--r--reportdesign/inc/pch/precompiled_rpt.hxx304
-rw-r--r--reportdesign/inc/pch/precompiled_rptui.cxx12
-rw-r--r--reportdesign/inc/pch/precompiled_rptui.hxx482
-rw-r--r--reportdesign/inc/pch/precompiled_rptxml.cxx12
-rw-r--r--reportdesign/inc/pch/precompiled_rptxml.hxx117
-rw-r--r--reportdesign/inc/reportformula.hxx119
-rw-r--r--reportdesign/inc/rptui_slotid.hrc201
-rw-r--r--reportdesign/inc/stringarray.hrc85
-rw-r--r--reportdesign/inc/strings.hrc185
-rw-r--r--reportdesign/inc/strings.hxx279
26 files changed, 3824 insertions, 0 deletions
diff --git a/reportdesign/inc/PropertyForward.hxx b/reportdesign/inc/PropertyForward.hxx
new file mode 100644
index 000000000..8a9a058a0
--- /dev/null
+++ b/reportdesign/inc/PropertyForward.hxx
@@ -0,0 +1,84 @@
+/* -*- 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_INC_PROPERTYFORWARD_HXX
+#define INCLUDED_REPORTDESIGN_INC_PROPERTYFORWARD_HXX
+
+#include "dllapi.h"
+#include <com/sun/star/beans/XPropertyChangeListener.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/beans/XPropertySetInfo.hpp>
+#include <cppuhelper/compbase.hxx>
+#include <cppuhelper/basemutex.hxx>
+#include "RptDef.hxx"
+
+
+namespace rptui
+{
+
+ typedef ::cppu::WeakComponentImplHelper< css::beans::XPropertyChangeListener
+ > OPropertyForward_Base;
+
+ /** \class OPropertyMediator
+ * \brief This class ensures the communication between two XPropertySet instances.
+ * Identical properties will be set at the other propertyset.
+ * \ingroup reportdesign_source_ui_misc
+ */
+ class REPORTDESIGN_DLLPUBLIC OPropertyMediator final : public ::cppu::BaseMutex
+ ,public OPropertyForward_Base
+ {
+ TPropertyNamePair m_aNameMap;
+ css::uno::Reference< css::beans::XPropertySet> m_xSource;
+ css::uno::Reference< css::beans::XPropertySetInfo> m_xSourceInfo;
+ css::uno::Reference< css::beans::XPropertySet> m_xDest;
+ css::uno::Reference< css::beans::XPropertySetInfo> m_xDestInfo;
+ bool m_bInChange;
+ OPropertyMediator(OPropertyMediator const &) = delete;
+ void operator =(OPropertyMediator const &) = delete;
+
+ virtual ~OPropertyMediator() override;
+
+ /** this function is called upon disposing the component
+ */
+ virtual void SAL_CALL disposing() override;
+ public:
+ OPropertyMediator(const css::uno::Reference< css::beans::XPropertySet>& _xSource
+ ,const css::uno::Reference< css::beans::XPropertySet>& _xDest
+ ,TPropertyNamePair&& _aNameMap
+ ,bool _bReverse = false);
+
+ // css::beans::XPropertyChangeListener
+ virtual void SAL_CALL propertyChange( const css::beans::PropertyChangeEvent& evt ) override;
+
+ // css::lang::XEventListener
+ virtual void SAL_CALL disposing( const css::lang::EventObject& _rSource ) override;
+
+ /** stop the listening mode.
+ */
+ void stopListening();
+
+ /** starts the listening mode again.
+ */
+ void startListening();
+ };
+
+} // namespace rptui
+
+#endif // INCLUDED_REPORTDESIGN_INC_PROPERTYFORWARD_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/inc/ReportDefinition.hxx b/reportdesign/inc/ReportDefinition.hxx
new file mode 100644
index 000000000..f58a3add9
--- /dev/null
+++ b/reportdesign/inc/ReportDefinition.hxx
@@ -0,0 +1,411 @@
+/* -*- 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_INC_REPORTDEFINITION_HXX
+#define INCLUDED_REPORTDESIGN_INC_REPORTDEFINITION_HXX
+
+#include "dllapi.h"
+
+#include "ReportHelperDefines.hxx"
+
+#include <com/sun/star/datatransfer/XTransferable.hpp>
+#include <com/sun/star/document/XDocumentEventBroadcaster.hpp>
+#include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
+#include <com/sun/star/document/XUndoManagerSupplier.hpp>
+#include <com/sun/star/frame/XModule.hpp>
+#include <com/sun/star/frame/XTitle.hpp>
+#include <com/sun/star/frame/XTitleChangeBroadcaster.hpp>
+#include <com/sun/star/frame/XUntitledNumbers.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/lang/XUnoTunnel.hpp>
+#include <com/sun/star/report/XReportDefinition.hpp>
+#include <com/sun/star/util/XNumberFormatsSupplier.hpp>
+#include <com/sun/star/ui/XUIConfigurationManager2.hpp>
+
+#include <comphelper/embeddedobjectcontainer.hxx>
+#include <comphelper/uno3.hxx>
+#include <cppuhelper/basemutex.hxx>
+#include <cppuhelper/compbase.hxx>
+#include <cppuhelper/propertysetmixin.hxx>
+#include <svx/unomod.hxx>
+
+#include <memory>
+
+
+namespace rptui
+{
+ class OReportModel;
+}
+namespace utl
+{
+ class MediaDescriptor;
+}
+namespace reportdesign
+{
+ class OReportComponentProperties;
+ typedef cppu::PartialWeakComponentImplHelper< css::report::XReportDefinition
+ , css::document::XEventBroadcaster
+ , css::document::XDocumentEventBroadcaster
+ , css::lang::XServiceInfo
+ , css::frame::XModule
+ , css::lang::XUnoTunnel
+ , css::util::XNumberFormatsSupplier
+ , css::frame::XTitle
+ , css::frame::XTitleChangeBroadcaster
+ , css::frame::XUntitledNumbers
+ , css::document::XDocumentPropertiesSupplier
+ , css::datatransfer::XTransferable
+ , css::document::XUndoManagerSupplier
+ , SvxUnoDrawMSFactory
+ > ReportDefinitionBase;
+
+ typedef ::cppu::PropertySetMixin< css::report::XReportDefinition > ReportDefinitionPropertySet;
+
+ struct OReportDefinitionImpl;
+ /** \class OReportDefinition Defines the implementation of a \interface com:::sun::star::report::XReportDefinition
+ * \ingroup reportdesign_api
+ *
+ */
+ class REPORTDESIGN_DLLPUBLIC OReportDefinition final :public ::cppu::BaseMutex
+ ,public ReportDefinitionBase
+ ,public ReportDefinitionPropertySet
+ ,public ::comphelper::IEmbeddedHelper
+ {
+ std::shared_ptr<OReportComponentProperties> m_aProps;
+ std::shared_ptr<OReportDefinitionImpl> m_pImpl;
+
+ OReportDefinition(const OReportDefinition&) = delete;
+ OReportDefinition& operator=(const OReportDefinition&) = delete;
+
+ void setSection( const OUString& _sProperty
+ ,bool _bOn
+ ,const OUString& _sName
+ ,css::uno::Reference< css::report::XSection>& _member);
+
+ 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();
+ }
+
+ /// write a single XML stream into the package
+ bool WriteThroughComponent(
+ /// the component we export
+ const css::uno::Reference< css::lang::XComponent> & xComponent,
+ const char* pStreamName, /// the stream name
+ const char* pServiceName, /// service name of the component
+ /// the argument (XInitialization)
+ const css::uno::Sequence< css::uno::Any> & rArguments,
+ /// output descriptor
+ const css::uno::Sequence< css::beans::PropertyValue> & rMediaDesc,
+ const css::uno::Reference< css::embed::XStorage >& _xStorageToSaveTo);
+
+ /// write a single output stream
+ /// (to be called either directly or by WriteThroughComponent(...))
+ bool WriteThroughComponent(
+ const css::uno::Reference< css::io::XOutputStream> & xOutputStream,
+ const css::uno::Reference< css::lang::XComponent> & xComponent,
+ const char* pServiceName,
+ const css::uno::Sequence< css::uno::Any> & rArguments,
+ const css::uno::Sequence< css::beans::PropertyValue> & rMediaDesc);
+
+ void notifyEvent(const OUString& _sEventName);
+ void init();
+ void fillArgs(utl::MediaDescriptor& _aDescriptor);
+
+ css::uno::Reference< css::frame::XTitle > impl_getTitleHelper_throw();
+ css::uno::Reference< css::frame::XUntitledNumbers > impl_getUntitledHelper_throw();
+
+ /** loads the report definition from the given storage
+ @precond
+ our mutex is locked
+ @throws
+ */
+ void impl_loadFromStorage_nolck_throw(
+ const css::uno::Reference< css::embed::XStorage >& _rxStorage,
+ const css::uno::Sequence< css::beans::PropertyValue >& _rArguments
+ );
+
+ virtual ~OReportDefinition() override;
+
+ /** this function is called upon disposing the component
+ */
+ virtual void SAL_CALL disposing() override;
+ public:
+ explicit OReportDefinition(css::uno::Reference< css::uno::XComponentContext > const & _xContext);
+ explicit OReportDefinition(css::uno::Reference< css::uno::XComponentContext > const & _xContext
+ ,const css::uno::Reference< css::lang::XMultiServiceFactory > & _xFactory
+ ,css::uno::Reference< css::drawing::XShape >& _xShape);
+
+ /// @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::uno::Reference< css::uno::XComponentContext > getContext();
+
+ private:
+ /** abstract SdrModel provider */
+ virtual SdrModel& getSdrModelFromUnoModel() const override;
+
+ public:
+ //TTTT Needed? Or same as above?
+ static const css::uno::Sequence< sal_Int8 > & getUnoTunnelId();
+ static std::shared_ptr<rptui::OReportModel> getSdrModel(const css::uno::Reference< css::report::XReportDefinition >& _xReportDefinition);
+
+ private:
+ DECLARE_XINTERFACE( )
+ DECLARE_XTYPEPROVIDER( )
+ // 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;
+
+ // 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;
+
+ // XReportDefinition
+ virtual OUString SAL_CALL getMimeType() override;
+ virtual void SAL_CALL setMimeType( const OUString& _mimetype ) override;
+ virtual OUString SAL_CALL getCaption() override;
+ virtual void SAL_CALL setCaption( const OUString& _caption ) override;
+ virtual ::sal_Int16 SAL_CALL getGroupKeepTogether() override;
+ virtual void SAL_CALL setGroupKeepTogether( ::sal_Int16 _groupkeeptogether ) override;
+ virtual ::sal_Int16 SAL_CALL getPageHeaderOption() override;
+ virtual void SAL_CALL setPageHeaderOption( ::sal_Int16 _pageheaderoption ) override;
+ virtual ::sal_Int16 SAL_CALL getPageFooterOption() override;
+ virtual void SAL_CALL setPageFooterOption( ::sal_Int16 _pagefooteroption ) override;
+ virtual OUString SAL_CALL getCommand() override;
+ virtual void SAL_CALL setCommand( const OUString& _command ) override;
+ virtual ::sal_Int32 SAL_CALL getCommandType() override;
+ virtual void SAL_CALL setCommandType( ::sal_Int32 _commandtype ) override;
+ virtual OUString SAL_CALL getFilter() override;
+ virtual void SAL_CALL setFilter( const OUString& _filter ) override;
+ virtual sal_Bool SAL_CALL getEscapeProcessing() override;
+ virtual void SAL_CALL setEscapeProcessing( sal_Bool _escapeprocessing ) 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 OUString SAL_CALL getDataSourceName() override;
+ virtual void SAL_CALL setDataSourceName( const OUString& _datasourcename ) override;
+ virtual sal_Bool SAL_CALL getReportHeaderOn() override;
+ virtual void SAL_CALL setReportHeaderOn( sal_Bool _reportheaderon ) override;
+ virtual sal_Bool SAL_CALL getReportFooterOn() override;
+ virtual void SAL_CALL setReportFooterOn( sal_Bool _reportfooteron ) override;
+ virtual sal_Bool SAL_CALL getPageHeaderOn() override;
+ virtual void SAL_CALL setPageHeaderOn( sal_Bool _pageheaderon ) override;
+ virtual sal_Bool SAL_CALL getPageFooterOn() override;
+ virtual void SAL_CALL setPageFooterOn( sal_Bool _pagefooteron ) override;
+ virtual css::uno::Reference< css::report::XGroups > SAL_CALL getGroups() override;
+ virtual css::uno::Reference< css::report::XSection > SAL_CALL getReportHeader() override;
+ virtual css::uno::Reference< css::report::XSection > SAL_CALL getPageHeader() override;
+ virtual css::uno::Reference< css::report::XSection > SAL_CALL getDetail() override;
+ virtual css::uno::Reference< css::report::XSection > SAL_CALL getPageFooter() override;
+ virtual css::uno::Reference< css::report::XSection > SAL_CALL getReportFooter() override;
+ virtual css::uno::Reference< css::document::XEventBroadcaster > SAL_CALL getEventBroadcaster( ) override;
+ virtual css::uno::Sequence< OUString > SAL_CALL getAvailableMimeTypes( ) override;
+
+ // XReportComponent
+ REPORTCOMPONENT_HEADER()
+
+ // XShape
+ SHAPE_HEADER()
+
+ // XShapeDescriptor
+ virtual OUString SAL_CALL getShapeType( ) override;
+
+ //XFunctionsSupplier
+ virtual css::uno::Reference< css::report::XFunctions > SAL_CALL getFunctions() 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;
+
+ // XCloseBroadcaster
+ virtual void SAL_CALL addCloseListener( const css::uno::Reference< css::util::XCloseListener >& Listener ) override;
+ virtual void SAL_CALL removeCloseListener( const css::uno::Reference< css::util::XCloseListener >& Listener ) override;
+
+ // XCloseable
+ virtual void SAL_CALL close( sal_Bool DeliverOwnership ) override;
+
+ // XModel
+ virtual sal_Bool SAL_CALL attachResource( const OUString& URL, const css::uno::Sequence< css::beans::PropertyValue >& Arguments ) override;
+ virtual OUString SAL_CALL getURL( ) override;
+ virtual css::uno::Sequence< css::beans::PropertyValue > SAL_CALL getArgs( ) override;
+ virtual void SAL_CALL connectController( const css::uno::Reference< css::frame::XController >& Controller ) override;
+ virtual void SAL_CALL disconnectController( const css::uno::Reference< css::frame::XController >& Controller ) override;
+ virtual void SAL_CALL lockControllers( ) override;
+ virtual void SAL_CALL unlockControllers( ) override;
+ virtual sal_Bool SAL_CALL hasControllersLocked( ) override;
+ virtual css::uno::Reference< css::frame::XController > SAL_CALL getCurrentController( ) override;
+ virtual void SAL_CALL setCurrentController( const css::uno::Reference< css::frame::XController >& Controller ) override;
+ virtual css::uno::Reference< css::uno::XInterface > SAL_CALL getCurrentSelection( ) override;
+
+ // XStorageBasedDocument
+ virtual void SAL_CALL loadFromStorage( const css::uno::Reference< css::embed::XStorage >& xStorage, const css::uno::Sequence< css::beans::PropertyValue >& aMediaDescriptor ) override;
+ virtual void SAL_CALL storeToStorage( const css::uno::Reference< css::embed::XStorage >& xStorage, const css::uno::Sequence< css::beans::PropertyValue >& aMediaDescriptor ) override;
+ virtual void SAL_CALL switchToStorage( const css::uno::Reference< css::embed::XStorage >& xStorage ) override;
+ virtual css::uno::Reference< css::embed::XStorage > SAL_CALL getDocumentStorage( ) override;
+ virtual void SAL_CALL addStorageChangeListener( const css::uno::Reference< css::document::XStorageChangeListener >& xListener ) override;
+ virtual void SAL_CALL removeStorageChangeListener( const css::uno::Reference< css::document::XStorageChangeListener >& xListener ) override;
+
+ // XViewDataSupplier
+ virtual css::uno::Reference< css::container::XIndexAccess > SAL_CALL getViewData( ) override;
+ virtual void SAL_CALL setViewData( const css::uno::Reference< css::container::XIndexAccess >& Data ) override;
+
+ // XLoadable
+ virtual void SAL_CALL initNew( ) override;
+ virtual void SAL_CALL load( const css::uno::Sequence< css::beans::PropertyValue >& lArguments ) override;
+
+ // XVisualObject
+ virtual void SAL_CALL setVisualAreaSize( ::sal_Int64 nAspect, const css::awt::Size& aSize ) override;
+ virtual css::awt::Size SAL_CALL getVisualAreaSize( ::sal_Int64 nAspect ) override;
+ virtual css::embed::VisualRepresentation SAL_CALL getPreferredVisualRepresentation( ::sal_Int64 nAspect ) override;
+ virtual ::sal_Int32 SAL_CALL getMapUnit( ::sal_Int64 nAspect ) override;
+
+ // XModifiable2
+ virtual sal_Bool SAL_CALL disableSetModified( ) override;
+ virtual sal_Bool SAL_CALL enableSetModified( ) override;
+ virtual sal_Bool SAL_CALL isSetModifiedEnabled( ) override;
+
+ // XModifiable
+ virtual sal_Bool SAL_CALL isModified( ) override;
+ virtual void SAL_CALL setModified( sal_Bool bModified ) override;
+
+ // XModifyBroadcaster
+ virtual void SAL_CALL addModifyListener( const css::uno::Reference< css::util::XModifyListener >& aListener ) override;
+ virtual void SAL_CALL removeModifyListener( const css::uno::Reference< css::util::XModifyListener >& aListener ) override;
+
+ // document::XEventBroadcaster
+ virtual void SAL_CALL addEventListener( const css::uno::Reference< css::document::XEventListener >& aListener ) override;
+ virtual void SAL_CALL removeEventListener( const css::uno::Reference< css::document::XEventListener >& aListener ) override;
+
+ // document::XDocumentEventBroadcaster
+ virtual void SAL_CALL addDocumentEventListener( const css::uno::Reference< css::document::XDocumentEventListener >& rListener ) override;
+ virtual void SAL_CALL removeDocumentEventListener( const css::uno::Reference< css::document::XDocumentEventListener >& rListener ) override;
+ virtual void SAL_CALL notifyDocumentEvent( const OUString& rEventName, const css::uno::Reference< css::frame::XController2 >& rViewController, const css::uno::Any& rSupplement ) override;
+
+ // XUIConfigurationManagerSupplier
+ virtual css::uno::Reference< css::ui::XUIConfigurationManager > SAL_CALL getUIConfigurationManager( ) override;
+
+ // XDocumentSubStorageSupplier
+ virtual css::uno::Reference< css::embed::XStorage > SAL_CALL getDocumentSubStorage( const OUString& aStorageName, sal_Int32 nMode ) override;
+ virtual css::uno::Sequence< OUString > SAL_CALL getDocumentSubStoragesNames( ) override;
+
+ // css::lang::XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const css::uno::Sequence< sal_Int8 >& aIdentifier ) override;
+
+ // SvxUnoDrawMSFactory
+ virtual css::uno::Reference< css::uno::XInterface > SAL_CALL createInstance( const OUString& aServiceSpecifier ) override;
+ virtual css::uno::Reference< css::uno::XInterface > SAL_CALL createInstanceWithArguments( const OUString& ServiceSpecifier, const css::uno::Sequence< css::uno::Any >& Arguments ) override;
+ css::uno::Sequence< OUString > SAL_CALL getAvailableServiceNames() override;
+
+ // XStyleFamiliesSupplier
+ virtual css::uno::Reference< css::container::XNameAccess > SAL_CALL getStyleFamilies( ) override;
+
+ // XModule
+ virtual void SAL_CALL setIdentifier( const OUString& Identifier ) override;
+ virtual OUString SAL_CALL getIdentifier( ) override;
+
+ // XNumberFormatsSupplier
+ virtual css::uno::Reference< css::beans::XPropertySet > SAL_CALL getNumberFormatSettings( ) override;
+ virtual css::uno::Reference< css::util::XNumberFormats > SAL_CALL getNumberFormats( ) override;
+
+ // XTitle
+ virtual OUString SAL_CALL getTitle( ) override;
+ virtual void SAL_CALL setTitle( const OUString& sTitle ) override;
+
+ // XTitleChangeBroadcaster
+ virtual void SAL_CALL addTitleChangeListener( const css::uno::Reference< css::frame::XTitleChangeListener >& xListener ) override;
+ virtual void SAL_CALL removeTitleChangeListener( const css::uno::Reference< css::frame::XTitleChangeListener >& xListener ) override;
+
+ // XUntitledNumbers
+ virtual ::sal_Int32 SAL_CALL leaseNumber( const css::uno::Reference< css::uno::XInterface >& xComponent ) override;
+ virtual void SAL_CALL releaseNumber( ::sal_Int32 nNumber ) override;
+ virtual void SAL_CALL releaseNumberForComponent( const css::uno::Reference< css::uno::XInterface >& xComponent ) override;
+ virtual OUString SAL_CALL getUntitledPrefix( ) override;
+
+ // XDocumentPropertiesSupplier
+ virtual css::uno::Reference< css::document::XDocumentProperties > SAL_CALL getDocumentProperties( ) override;
+
+ // XTransferable
+ virtual css::uno::Any SAL_CALL getTransferData( const css::datatransfer::DataFlavor& aFlavor ) override;
+ virtual css::uno::Sequence< css::datatransfer::DataFlavor > SAL_CALL getTransferDataFlavors( ) override;
+ virtual sal_Bool SAL_CALL isDataFlavorSupported( const css::datatransfer::DataFlavor& aFlavor ) override;
+
+ // XUndoManagerSupplier
+ virtual css::uno::Reference< css::document::XUndoManager > SAL_CALL getUndoManager( ) override;
+
+ // comphelper::IEmbeddedHelper
+ virtual css::uno::Reference < css::embed::XStorage > getStorage() const override;
+ virtual ::comphelper::EmbeddedObjectContainer& getEmbeddedObjectContainer() const override;
+ virtual css::uno::Reference< css::task::XInteractionHandler > getInteractionHandler() const override;
+ virtual bool isEnableSetModified() const override;
+ virtual OUString getDocumentBaseURL() const override;
+
+ /// @throws css::uno::RuntimeException
+ css::uno::Reference< css::ui::XUIConfigurationManager2 > getUIConfigurationManager2( );
+ };
+
+} // namespace reportdesign
+
+#endif // INCLUDED_REPORTDESIGN_INC_REPORTDEFINITION_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/inc/ReportHelperDefines.hxx b/reportdesign/inc/ReportHelperDefines.hxx
new file mode 100644
index 000000000..5eeb0b40c
--- /dev/null
+++ b/reportdesign/inc/ReportHelperDefines.hxx
@@ -0,0 +1,189 @@
+/* -*- 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_INC_REPORTHELPERDEFINES_HXX
+#define INCLUDED_REPORTDESIGN_INC_REPORTHELPERDEFINES_HXX
+
+#define REPORTCONTROLMODEL_HEADER() \
+ virtual OUString SAL_CALL getDataField() override; \
+ virtual void SAL_CALL setDataField(const OUString & the_value) override; \
+ virtual sal_Bool SAL_CALL getPrintWhenGroupChange() override; \
+ virtual void SAL_CALL setPrintWhenGroupChange(sal_Bool the_value) override; \
+ virtual OUString SAL_CALL getConditionalPrintExpression() override; \
+ virtual void SAL_CALL setConditionalPrintExpression(const OUString & the_value) override; \
+ virtual css::uno::Reference< css::report::XFormatCondition > SAL_CALL createFormatCondition() override;
+
+#define SHAPE_HEADER() \
+ virtual css::awt::Point SAL_CALL getPosition() override; \
+ virtual void SAL_CALL setPosition(const css::awt::Point & aPosition) override; \
+ virtual css::awt::Size SAL_CALL getSize() override; \
+ virtual void SAL_CALL setSize(const css::awt::Size & aSize) override;
+
+#define REPORTCOMPONENT_HEADER() \
+ virtual OUString SAL_CALL getName() override; \
+ virtual void SAL_CALL setName(const OUString & the_value) override; \
+ virtual ::sal_Int32 SAL_CALL getHeight() override; \
+ virtual void SAL_CALL setHeight(::sal_Int32 the_value) override; \
+ virtual ::sal_Int32 SAL_CALL getPositionX() override; \
+ virtual void SAL_CALL setPositionX(::sal_Int32 the_value) override; \
+ virtual ::sal_Int32 SAL_CALL getPositionY() override; \
+ virtual void SAL_CALL setPositionY(::sal_Int32 the_value) override; \
+ virtual ::sal_Int32 SAL_CALL getWidth() override; \
+ virtual void SAL_CALL setWidth(::sal_Int32 the_value) override; \
+ virtual sal_Bool SAL_CALL getAutoGrow() override; \
+ virtual void SAL_CALL setAutoGrow(sal_Bool the_value) override; \
+ virtual ::sal_Int16 SAL_CALL getControlBorder() override; \
+ virtual void SAL_CALL setControlBorder(::sal_Int16 the_value) override; \
+ virtual ::sal_Int32 SAL_CALL getControlBorderColor() override; \
+ virtual void SAL_CALL setControlBorderColor(::sal_Int32 the_value) override; \
+ virtual sal_Bool SAL_CALL getPrintRepeatedValues() override; \
+ virtual void SAL_CALL setPrintRepeatedValues(sal_Bool the_value) override; \
+ virtual css::uno::Sequence< OUString > SAL_CALL getMasterFields() override; \
+ virtual void SAL_CALL setMasterFields( const css::uno::Sequence< OUString >& _masterfields ) override; \
+ virtual css::uno::Sequence< OUString > SAL_CALL getDetailFields() override; \
+ virtual void SAL_CALL setDetailFields( const css::uno::Sequence< OUString >& _detailfields ) override; \
+ virtual css::uno::Reference< css::report::XSection > SAL_CALL getSection() override;
+
+#define REPORTCONTROLFORMAT_HEADER() \
+ virtual ::sal_Int32 SAL_CALL getControlBackground() override;\
+ virtual void SAL_CALL setControlBackground( ::sal_Int32 _controlbackground ) override;\
+ virtual sal_Bool SAL_CALL getControlBackgroundTransparent() override;\
+ virtual void SAL_CALL setControlBackgroundTransparent( sal_Bool _controlbackgroundtransparent ) override;\
+ virtual ::sal_Int16 SAL_CALL getParaAdjust() override;\
+ virtual void SAL_CALL setParaAdjust( ::sal_Int16 _paraadjust ) override;\
+ virtual css::awt::FontDescriptor SAL_CALL getFontDescriptor() override;\
+ virtual void SAL_CALL setFontDescriptor( const css::awt::FontDescriptor& _fontdescriptor ) override;\
+ virtual css::awt::FontDescriptor SAL_CALL getFontDescriptorAsian() override;\
+ virtual void SAL_CALL setFontDescriptorAsian( const css::awt::FontDescriptor& _fontdescriptor ) override;\
+ virtual css::awt::FontDescriptor SAL_CALL getFontDescriptorComplex() override;\
+ virtual void SAL_CALL setFontDescriptorComplex( const css::awt::FontDescriptor& _fontdescriptor ) override;\
+ virtual ::sal_Int16 SAL_CALL getControlTextEmphasis() override;\
+ virtual void SAL_CALL setControlTextEmphasis( ::sal_Int16 _controltextemphasis ) override;\
+ virtual ::sal_Int16 SAL_CALL getCharEmphasis() override;\
+ virtual void SAL_CALL setCharEmphasis( ::sal_Int16 _charemphasis ) override;\
+ virtual sal_Bool SAL_CALL getCharCombineIsOn() override;\
+ virtual void SAL_CALL setCharCombineIsOn( sal_Bool _charcombineison ) override;\
+ virtual OUString SAL_CALL getCharCombinePrefix() override;\
+ virtual void SAL_CALL setCharCombinePrefix( const OUString& _charcombineprefix ) override;\
+ virtual OUString SAL_CALL getCharCombineSuffix() override;\
+ virtual void SAL_CALL setCharCombineSuffix( const OUString& _charcombinesuffix ) override;\
+ virtual sal_Bool SAL_CALL getCharHidden() override;\
+ virtual void SAL_CALL setCharHidden( sal_Bool _charhidden ) override;\
+ virtual sal_Bool SAL_CALL getCharShadowed() override;\
+ virtual void SAL_CALL setCharShadowed( sal_Bool _charshadowed ) override;\
+ virtual sal_Bool SAL_CALL getCharContoured() override;\
+ virtual void SAL_CALL setCharContoured( sal_Bool _charcontoured ) override;\
+ virtual ::sal_Int16 SAL_CALL getCharCaseMap() override;\
+ virtual void SAL_CALL setCharCaseMap( ::sal_Int16 _charcasemap ) override;\
+ virtual css::lang::Locale SAL_CALL getCharLocale() override;\
+ virtual void SAL_CALL setCharLocale( const css::lang::Locale& _charlocale ) override;\
+ virtual ::sal_Int16 SAL_CALL getCharEscapement() override;\
+ virtual void SAL_CALL setCharEscapement( ::sal_Int16 _charescapement ) override;\
+ virtual ::sal_Int8 SAL_CALL getCharEscapementHeight() override;\
+ virtual void SAL_CALL setCharEscapementHeight( ::sal_Int8 _charescapementheight ) override;\
+ virtual sal_Bool SAL_CALL getCharAutoKerning() override;\
+ virtual void SAL_CALL setCharAutoKerning( sal_Bool _charautokerning ) override;\
+ virtual ::sal_Int16 SAL_CALL getCharKerning() override;\
+ virtual void SAL_CALL setCharKerning( ::sal_Int16 _charkerning ) override;\
+ virtual sal_Bool SAL_CALL getCharFlash() override;\
+ virtual void SAL_CALL setCharFlash( sal_Bool _charflash ) override;\
+ virtual ::sal_Int16 SAL_CALL getCharRelief() override;\
+ virtual void SAL_CALL setCharRelief( ::sal_Int16 _charrelief ) override;\
+ virtual OUString SAL_CALL getCharFontName() override;\
+ virtual void SAL_CALL setCharFontName( const OUString& _charfontname ) override;\
+ virtual OUString SAL_CALL getCharFontStyleName() override;\
+ virtual void SAL_CALL setCharFontStyleName( const OUString& _charfontstylename ) override;\
+ virtual ::sal_Int16 SAL_CALL getCharFontFamily() override;\
+ virtual void SAL_CALL setCharFontFamily( ::sal_Int16 _charfontfamily ) override;\
+ virtual ::sal_Int16 SAL_CALL getCharFontCharSet() override;\
+ virtual void SAL_CALL setCharFontCharSet( ::sal_Int16 _charfontcharset ) override;\
+ virtual ::sal_Int16 SAL_CALL getCharFontPitch() override;\
+ virtual void SAL_CALL setCharFontPitch( ::sal_Int16 _charfontpitch ) override;\
+ virtual ::sal_Int32 SAL_CALL getCharColor() override;\
+ virtual void SAL_CALL setCharColor( ::sal_Int32 _charcolor ) override;\
+ virtual ::sal_Int32 SAL_CALL getCharUnderlineColor() override;\
+ virtual void SAL_CALL setCharUnderlineColor( ::sal_Int32 _charunderlinecolor ) override;\
+ virtual float SAL_CALL getCharHeight() override;\
+ virtual void SAL_CALL setCharHeight( float _charheight ) override;\
+ virtual ::sal_Int16 SAL_CALL getCharUnderline() override;\
+ virtual void SAL_CALL setCharUnderline( ::sal_Int16 _charunderline ) override;\
+ virtual float SAL_CALL getCharWeight() override;\
+ virtual void SAL_CALL setCharWeight( float _charweight ) override;\
+ virtual css::awt::FontSlant SAL_CALL getCharPosture() override;\
+ virtual void SAL_CALL setCharPosture( css::awt::FontSlant _charposture ) override;\
+ virtual ::sal_Int16 SAL_CALL getCharStrikeout() override;\
+ virtual void SAL_CALL setCharStrikeout( ::sal_Int16 _charstrikeout ) override;\
+ virtual sal_Bool SAL_CALL getCharWordMode() override;\
+ virtual void SAL_CALL setCharWordMode( sal_Bool _charwordmode ) override;\
+ virtual ::sal_Int16 SAL_CALL getCharRotation() override;\
+ virtual void SAL_CALL setCharRotation( ::sal_Int16 _charrotation ) override;\
+ virtual ::sal_Int16 SAL_CALL getCharScaleWidth() override;\
+ virtual void SAL_CALL setCharScaleWidth( ::sal_Int16 _charscalewidth ) override;\
+ virtual css::style::VerticalAlignment SAL_CALL getVerticalAlign() override;\
+ virtual void SAL_CALL setVerticalAlign( css::style::VerticalAlignment _paravertalignment ) override;\
+ virtual OUString SAL_CALL getHyperLinkURL() override;\
+ virtual void SAL_CALL setHyperLinkURL( const OUString& _hyperlinkurl ) override;\
+ virtual OUString SAL_CALL getHyperLinkTarget() override;\
+ virtual void SAL_CALL setHyperLinkTarget( const OUString& _hyperlinktarget ) override;\
+ virtual OUString SAL_CALL getHyperLinkName() override;\
+ virtual void SAL_CALL setHyperLinkName( const OUString& _hyperlinkname ) override;\
+ virtual OUString SAL_CALL getVisitedCharStyleName() override;\
+ virtual void SAL_CALL setVisitedCharStyleName( const OUString& _visitedcharstylename ) override;\
+ virtual OUString SAL_CALL getUnvisitedCharStyleName() override;\
+ virtual void SAL_CALL setUnvisitedCharStyleName( const OUString& _unvisitedcharstylename ) override;\
+ virtual float SAL_CALL getCharHeightAsian() override;\
+ virtual void SAL_CALL setCharHeightAsian( float _charheightasian ) override;\
+ virtual float SAL_CALL getCharWeightAsian() override;\
+ virtual void SAL_CALL setCharWeightAsian( float _charweightasian ) override;\
+ virtual OUString SAL_CALL getCharFontNameAsian() override;\
+ virtual void SAL_CALL setCharFontNameAsian( const OUString& _charfontnameasian ) override;\
+ virtual OUString SAL_CALL getCharFontStyleNameAsian() override;\
+ virtual void SAL_CALL setCharFontStyleNameAsian( const OUString& _charfontstylenameasian ) override;\
+ virtual ::sal_Int16 SAL_CALL getCharFontFamilyAsian() override;\
+ virtual void SAL_CALL setCharFontFamilyAsian( ::sal_Int16 _charfontfamilyasian ) override;\
+ virtual ::sal_Int16 SAL_CALL getCharFontCharSetAsian() override;\
+ virtual void SAL_CALL setCharFontCharSetAsian( ::sal_Int16 _charfontcharsetasian ) override;\
+ virtual ::sal_Int16 SAL_CALL getCharFontPitchAsian() override;\
+ virtual void SAL_CALL setCharFontPitchAsian( ::sal_Int16 _charfontpitchasian ) override;\
+ virtual css::awt::FontSlant SAL_CALL getCharPostureAsian() override;\
+ virtual void SAL_CALL setCharPostureAsian( css::awt::FontSlant _charpostureasian ) override;\
+ virtual css::lang::Locale SAL_CALL getCharLocaleAsian() override;\
+ virtual void SAL_CALL setCharLocaleAsian( const css::lang::Locale& _charlocaleasian ) override;\
+ virtual float SAL_CALL getCharHeightComplex() override;\
+ virtual void SAL_CALL setCharHeightComplex( float _charheightcomplex ) override;\
+ virtual float SAL_CALL getCharWeightComplex() override;\
+ virtual void SAL_CALL setCharWeightComplex( float _charweightcomplex ) override;\
+ virtual OUString SAL_CALL getCharFontNameComplex() override;\
+ virtual void SAL_CALL setCharFontNameComplex( const OUString& _charfontnamecomplex ) override;\
+ virtual OUString SAL_CALL getCharFontStyleNameComplex() override;\
+ virtual void SAL_CALL setCharFontStyleNameComplex( const OUString& _charfontstylenamecomplex ) override;\
+ virtual ::sal_Int16 SAL_CALL getCharFontFamilyComplex() override;\
+ virtual void SAL_CALL setCharFontFamilyComplex( ::sal_Int16 _charfontfamilycomplex ) override;\
+ virtual ::sal_Int16 SAL_CALL getCharFontCharSetComplex() override;\
+ virtual void SAL_CALL setCharFontCharSetComplex( ::sal_Int16 _charfontcharsetcomplex ) override;\
+ virtual ::sal_Int16 SAL_CALL getCharFontPitchComplex() override;\
+ virtual void SAL_CALL setCharFontPitchComplex( ::sal_Int16 _charfontpitchcomplex ) override;\
+ virtual css::awt::FontSlant SAL_CALL getCharPostureComplex() override;\
+ virtual void SAL_CALL setCharPostureComplex( css::awt::FontSlant _charposturecomplex ) override;\
+ virtual css::lang::Locale SAL_CALL getCharLocaleComplex() override;\
+ virtual void SAL_CALL setCharLocaleComplex( const css::lang::Locale& _charlocalecomplex ) override;
+
+
+#endif // INCLUDED_REPORTDESIGN_INC_REPORTHELPERDEFINES_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/inc/ReportVisitor.hxx b/reportdesign/inc/ReportVisitor.hxx
new file mode 100644
index 000000000..3752b52c3
--- /dev/null
+++ b/reportdesign/inc/ReportVisitor.hxx
@@ -0,0 +1,63 @@
+/* -*- 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_INC_REPORTVISITOR_HXX
+#define INCLUDED_REPORTDESIGN_INC_REPORTVISITOR_HXX
+
+#include "dllapi.h"
+#include <com/sun/star/report/XReportDefinition.hpp>
+
+
+namespace reportdesign
+{
+ class SAL_NO_VTABLE ITraverseReport
+ {
+ public:
+ virtual void traverseReport(const css::uno::Reference< css::report::XReportDefinition>& _xReport) = 0;
+ virtual void traverseReportFunctions(const css::uno::Reference< css::report::XFunctions>& _xFunctions) = 0;
+ virtual void traverseReportHeader(const css::uno::Reference< css::report::XSection>& _xSection) = 0;
+ virtual void traverseReportFooter(const css::uno::Reference< css::report::XSection>& _xSection) = 0;
+ virtual void traversePageHeader(const css::uno::Reference< css::report::XSection>& _xSection) = 0;
+ virtual void traversePageFooter(const css::uno::Reference< css::report::XSection>& _xSection) = 0;
+
+ virtual void traverseGroups(const css::uno::Reference< css::report::XGroups>& _xGroups) = 0;
+ virtual void traverseGroup(const css::uno::Reference< css::report::XGroup>& _xGroup) = 0;
+ virtual void traverseGroupFunctions(const css::uno::Reference< css::report::XFunctions>& _xFunctions) = 0;
+ virtual void traverseGroupHeader(const css::uno::Reference< css::report::XSection>& _xSection) = 0;
+ virtual void traverseGroupFooter(const css::uno::Reference< css::report::XSection>& _xSection) = 0;
+
+ virtual void traverseDetail(const css::uno::Reference< css::report::XSection>& _xSection) = 0;
+
+ protected:
+ ~ITraverseReport() {}
+ };
+
+ class REPORTDESIGN_DLLPUBLIC OReportVisitor
+ {
+ ITraverseReport* m_pTraverseReport;
+ public:
+ OReportVisitor(ITraverseReport* _pTraverseReport);
+ void start(const css::uno::Reference< css::report::XReportDefinition>& _xReportDefinition);
+ void start(const css::uno::Reference< css::report::XGroup>& _xGroup);
+ };
+
+} // namespace reportdesign
+
+#endif // INCLUDED_REPORTDESIGN_INC_REPORTVISITOR_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/inc/RptDef.hxx b/reportdesign/inc/RptDef.hxx
new file mode 100644
index 000000000..9d60fe359
--- /dev/null
+++ b/reportdesign/inc/RptDef.hxx
@@ -0,0 +1,90 @@
+/* -*- 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 .
+ */
+
+#pragma once
+
+#include <memory>
+#include <map>
+
+#include <sal/config.h>
+
+#include "dllapi.h"
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/style/XStyle.hpp>
+#include <svx/svdobjkind.hxx>
+#include <svx/svdtypes.hxx>
+
+namespace com::sun::star {
+ namespace report {
+ class XReportComponent;
+ class XReportDefinition;
+ }
+}
+
+namespace rptui
+{
+// not all used at the moment
+constexpr SdrLayerID RPT_LAYER_FRONT (0);
+constexpr SdrLayerID RPT_LAYER_BACK (1);
+constexpr SdrLayerID RPT_LAYER_HIDDEN (2);
+
+// allows the alignment and resizing of controls
+enum class ControlModification
+{
+ NONE = 0,
+ LEFT = 1,
+ RIGHT = 2,
+ TOP = 3,
+ BOTTOM = 4,
+ CENTER_HORIZONTAL = 5,
+ CENTER_VERTICAL = 6,
+ WIDTH_SMALLEST = 7,
+ HEIGHT_SMALLEST = 8,
+ WIDTH_GREATEST = 9,
+ HEIGHT_GREATEST = 10,
+};
+
+class AnyConverter
+{
+public:
+ virtual ~AnyConverter(){}
+ virtual css::uno::Any operator() (const OUString& /*_sPropertyName*/,const css::uno::Any& lhs) const
+ {
+ return lhs;
+ }
+};
+typedef ::std::pair< OUString, std::shared_ptr<AnyConverter> > TPropertyConverter;
+typedef std::map<OUString, TPropertyConverter> TPropertyNamePair;
+/** returns the property name map for the given property id
+ @param _nObjectId the object id
+*/
+REPORTDESIGN_DLLPUBLIC const TPropertyNamePair& getPropertyNameMap(SdrObjKind _nObjectId);
+REPORTDESIGN_DLLPUBLIC css::uno::Reference< css::style::XStyle> getUsedStyle(const css::uno::Reference< css::report::XReportDefinition>& _xReport);
+
+template < typename T> T getStyleProperty(const css::uno::Reference< css::report::XReportDefinition>& _xReport,const OUString& _sPropertyName)
+{
+ T nReturn = T();
+ css::uno::Reference<css::beans::XPropertySet> xProp(getUsedStyle(_xReport),css::uno::UNO_QUERY_THROW);
+ xProp->getPropertyValue(_sPropertyName) >>= nReturn;
+ return nReturn;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/inc/RptModel.hxx b/reportdesign/inc/RptModel.hxx
new file mode 100644
index 000000000..b0c14aabc
--- /dev/null
+++ b/reportdesign/inc/RptModel.hxx
@@ -0,0 +1,91 @@
+/* -*- 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_INC_RPTMODEL_HXX
+#define INCLUDED_REPORTDESIGN_INC_RPTMODEL_HXX
+
+#include "dllapi.h"
+#include <svx/svdmodel.hxx>
+#include <com/sun/star/report/XReportDefinition.hpp>
+
+namespace dbaui
+{
+ class DBSubComponentController;
+}
+namespace reportdesign
+{
+ class OReportDefinition;
+}
+namespace rptui
+{
+class OReportPage;
+class OXUndoEnvironment;
+
+class REPORTDESIGN_DLLPUBLIC OReportModel final : public SdrModel
+{
+ friend class OReportPage;
+
+private:
+ rtl::Reference<OXUndoEnvironment> m_xUndoEnv;
+ ::dbaui::DBSubComponentController* m_pController;
+ ::reportdesign::OReportDefinition* m_pReportDefinition;
+
+ virtual css::uno::Reference< css::uno::XInterface > createUnoModel() override;
+
+ OReportModel( const OReportModel& ) = delete;
+ void operator=(const OReportModel& rSrcModel) = delete;
+
+public:
+
+ OReportModel(::reportdesign::OReportDefinition* _pReportDefinition);
+ virtual ~OReportModel() override;
+
+ virtual void SetChanged(bool bFlg = true) override;
+ virtual rtl::Reference<SdrPage> AllocPage(bool bMasterPage) override;
+ virtual rtl::Reference<SdrPage> RemovePage(sal_uInt16 nPgNum) override;
+ /** @returns the numbering type that is used to format page fields in drawing shapes */
+ virtual SvxNumType GetPageNumType() const override;
+
+ OXUndoEnvironment& GetUndoEnv() { return *m_xUndoEnv;}
+ void SetModified(bool _bModified);
+
+ dbaui::DBSubComponentController* getController() const { return m_pController; }
+ void attachController( dbaui::DBSubComponentController& _rController ) { m_pController = &_rController; }
+ void detachController();
+
+ OReportPage* createNewPage(const css::uno::Reference< css::report::XSection >& _xSection);
+
+ /** returns the page which belongs to a section
+ *
+ * @param _xSection
+ * @return The page or <NULL/> when no page could be found.
+ */
+ OReportPage* getPage(const css::uno::Reference< css::report::XSection >& _xSection);
+
+ /// returns the XReportDefinition which the OReportModel belongs to
+ css::uno::Reference< css::report::XReportDefinition >
+ getReportDefinition() const;
+
+ css::uno::Reference< css::uno::XInterface > createShape(const OUString& aServiceSpecifier,css::uno::Reference< css::drawing::XShape >& _rShape,sal_Int32 nOrientation = -1);
+};
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/inc/RptObject.hxx b/reportdesign/inc/RptObject.hxx
new file mode 100644
index 000000000..2c89dc6d4
--- /dev/null
+++ b/reportdesign/inc/RptObject.hxx
@@ -0,0 +1,284 @@
+/* -*- 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_INC_RPTOBJECT_HXX
+#define INCLUDED_REPORTDESIGN_INC_RPTOBJECT_HXX
+
+#include "dllapi.h"
+
+#include <svx/svdoole2.hxx>
+#include <svx/svdouno.hxx>
+
+
+#include <com/sun/star/beans/XPropertyChangeListener.hpp>
+#include <com/sun/star/report/XReportComponent.hpp>
+#include <com/sun/star/report/XSection.hpp>
+#include <svx/svdoashp.hxx>
+
+#include <map>
+
+namespace rptui
+{
+typedef ::std::multimap< sal_Int16, OUString > IndexToNameMap;
+ enum DlgEdHintKind
+ {
+ RPTUI_HINT_WINDOWSCROLLED,
+ RPTUI_HINT_SELECTIONCHANGED
+ };
+
+ class OUnoObject;
+ class REPORTDESIGN_DLLPUBLIC DlgEdHint final : public SfxHint
+ {
+ private:
+ DlgEdHintKind eHintKind;
+
+ DlgEdHint(DlgEdHint const &) = delete;
+ void operator =(DlgEdHint const &) = delete;
+ public:
+ DlgEdHint( DlgEdHintKind eHint );
+ virtual ~DlgEdHint() override;
+
+ DlgEdHintKind GetKind() const { return eHintKind; }
+ };
+
+
+class OReportPage;
+class OPropertyMediator;
+
+class REPORTDESIGN_DLLPUBLIC OObjectBase
+{
+protected:
+ mutable rtl::Reference<OPropertyMediator> m_xMediator;
+ mutable css::uno::Reference< css::beans::XPropertyChangeListener> m_xPropertyChangeListener;
+ mutable css::uno::Reference< css::report::XReportComponent> m_xReportComponent;
+ css::uno::Reference< css::uno::XInterface > m_xKeepShapeAlive;
+ OUString m_sComponentName;
+ bool m_bIsListening;
+
+ OObjectBase(const css::uno::Reference< css::report::XReportComponent>& _xComponent);
+ OObjectBase(const OUString& _sComponentName);
+
+ virtual ~OObjectBase();
+
+ bool isListening() const { return m_bIsListening; }
+
+ void SetPropsFromRect(const tools::Rectangle& _rRect);
+
+ virtual SdrPage* GetImplPage() const = 0;
+
+ /** called by instances of derived classes to implement their overriding of getUnoShape
+ */
+ css::uno::Reference< css::drawing::XShape >
+ getUnoShapeOf( SdrObject& _rSdrObject );
+
+private:
+ static void ensureSdrObjectOwnership(
+ const css::uno::Reference< css::uno::XInterface >& _rxShape );
+
+public:
+ OObjectBase(const OObjectBase&) = delete;
+ OObjectBase& operator=(const OObjectBase&) = delete;
+ void StartListening();
+ void EndListening();
+ // PropertyChangeListener
+ /// @throws css::uno::RuntimeException
+ virtual void _propertyChange( const css::beans::PropertyChangeEvent& evt );
+ virtual void initializeOle() {}
+
+ bool supportsService( const OUString& _sServiceName ) const;
+
+ const css::uno::Reference< css::report::XReportComponent>& getReportComponent() const { return m_xReportComponent;}
+ virtual css::uno::Reference< css::beans::XPropertySet> getAwtComponent();
+ css::uno::Reference< css::report::XSection> getSection() const;
+ const OUString& getServiceName() const { return m_sComponentName; }
+
+ /** releases the reference to our UNO shape (m_xKeepShapeAlive)
+ */
+ void releaseUnoShape() { m_xKeepShapeAlive.clear(); }
+
+ static SdrObject* createObject(
+ SdrModel& rTargetModel,
+ const css::uno::Reference< css::report::XReportComponent>& _xComponent);
+ static SdrObjKind getObjectType(const css::uno::Reference< css::report::XReportComponent>& _xComponent);
+};
+
+// OCustomShape
+
+class REPORTDESIGN_DLLPUBLIC OCustomShape final : public SdrObjCustomShape , public OObjectBase
+{
+ friend class OReportPage;
+ friend class DlgEdFactory;
+
+private:
+ // protected destructor - due to final, make private
+ virtual ~OCustomShape() override;
+
+public:
+ static OCustomShape* Create(
+ SdrModel& rSdrModel,
+ const css::uno::Reference< css::report::XReportComponent>& _xComponent)
+ {
+ return new OCustomShape(rSdrModel, _xComponent );
+ }
+
+ virtual css::uno::Reference< css::beans::XPropertySet> getAwtComponent() override;
+
+ virtual css::uno::Reference< css::drawing::XShape > getUnoShape() override;
+ virtual SdrObjKind GetObjIdentifier() const override;
+ virtual SdrInventor GetObjInventor() const override;
+
+private:
+ virtual void setUnoShape( const css::uno::Reference< css::drawing::XShape >& rxUnoShape ) override;
+
+ OCustomShape(
+ SdrModel& rSdrModel,
+ const css::uno::Reference< css::report::XReportComponent>& _xComponent);
+ OCustomShape(
+ SdrModel& rSdrModel,
+ const OUString& _sComponentName);
+
+ virtual void NbcMove( const Size& rSize ) override;
+ virtual void NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact) override;
+ virtual void NbcSetLogicRect(const tools::Rectangle& rRect) override;
+ virtual bool EndCreate(SdrDragStat& rStat, SdrCreateCmd eCmd) override;
+
+ virtual SdrPage* GetImplPage() const override;
+};
+
+
+// OOle2Obj
+
+class REPORTDESIGN_DLLPUBLIC OOle2Obj final : public SdrOle2Obj , public OObjectBase
+{
+ friend class OReportPage;
+ friend class DlgEdFactory;
+
+private:
+ // protected destructor - due to final, make private
+ virtual ~OOle2Obj() override;
+
+public:
+ static OOle2Obj* Create(
+ SdrModel& rSdrModel,
+ const css::uno::Reference< css::report::XReportComponent>& _xComponent,
+ SdrObjKind _nType)
+ {
+ return new OOle2Obj(rSdrModel, _xComponent, _nType);
+ }
+
+ virtual css::uno::Reference< css::beans::XPropertySet> getAwtComponent() override;
+
+ virtual css::uno::Reference< css::drawing::XShape > getUnoShape() override;
+ virtual SdrObjKind GetObjIdentifier() const override;
+ virtual SdrInventor GetObjInventor() const override;
+ // Clone() should make a complete copy of the object.
+ virtual OOle2Obj* CloneSdrObject(SdrModel& rTargetModel) const override;
+ virtual void initializeOle() override;
+
+ void initializeChart( const css::uno::Reference< css::frame::XModel>& _xModel);
+
+private:
+ OOle2Obj(
+ SdrModel& rSdrModel,
+ const css::uno::Reference< css::report::XReportComponent>& _xComponent,
+ SdrObjKind _nType);
+ OOle2Obj(
+ SdrModel& rSdrModel,
+ const OUString& _sComponentName,
+ SdrObjKind _nType);
+ // copy constructor
+ OOle2Obj(SdrModel& rSdrModel, const OOle2Obj& rSource);
+
+ virtual void NbcMove( const Size& rSize ) override;
+ virtual void NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact) override;
+ virtual void NbcSetLogicRect(const tools::Rectangle& rRect) override;
+ virtual bool EndCreate(SdrDragStat& rStat, SdrCreateCmd eCmd) override;
+
+ virtual SdrPage* GetImplPage() const override;
+
+ void impl_createDataProvider_nothrow( const css::uno::Reference< css::frame::XModel>& _xModel);
+ virtual void setUnoShape( const css::uno::Reference< css::drawing::XShape >& rxUnoShape ) override;
+
+ SdrObjKind m_nType;
+ bool m_bOnlyOnce;
+};
+
+
+// OUnoObject
+
+class REPORTDESIGN_DLLPUBLIC OUnoObject final : public SdrUnoObj , public OObjectBase
+{
+ friend class OReportPage;
+ friend class OObjectBase;
+ friend class DlgEdFactory;
+
+ SdrObjKind m_nObjectType;
+ // tdf#118730 remember if this object was created interactively (due to ::EndCreate being called)
+ bool m_bSetDefaultLabel;
+
+ OUnoObject(SdrModel& rSdrModel,
+ const OUString& _sComponentName,
+ const OUString& rModelName,
+ SdrObjKind _nObjectType);
+ OUnoObject(
+ SdrModel& rSdrModel,
+ const css::uno::Reference< css::report::XReportComponent>& _xComponent,
+ const OUString& rModelName,
+ SdrObjKind _nObjectType);
+ // copy constructor
+ OUnoObject(SdrModel& rSdrModel, OUnoObject const & rSource);
+
+ // protected destructor
+ virtual ~OUnoObject() override;
+
+ virtual void NbcMove( const Size& rSize ) override;
+ virtual void NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact) override;
+ virtual void NbcSetLogicRect(const tools::Rectangle& rRect) override;
+ virtual bool EndCreate(SdrDragStat& rStat, SdrCreateCmd eCmd) override;
+
+ virtual SdrPage* GetImplPage() const override;
+
+public:
+
+ virtual void _propertyChange( const css::beans::PropertyChangeEvent& evt ) override;
+
+ /** creates the m_xMediator when it doesn't already exist.
+ @param _bReverse when set to <TRUE/> then the properties from the uno control will be copied into report control
+ */
+ void CreateMediator(bool _bReverse = false);
+
+ virtual css::uno::Reference< css::beans::XPropertySet> getAwtComponent() override;
+
+ static OUString GetDefaultName(const OUnoObject* _pObj);
+
+ virtual css::uno::Reference< css::drawing::XShape > getUnoShape() override;
+ virtual SdrObjKind GetObjIdentifier() const override;
+ virtual SdrInventor GetObjInventor() const override;
+ virtual OUnoObject* CloneSdrObject(SdrModel& rTargetModel) const override;
+
+private:
+ virtual void setUnoShape( const css::uno::Reference< css::drawing::XShape >& rxUnoShape ) override;
+ void impl_initializeModel_nothrow();
+};
+
+
+} // rptui
+
+#endif // INCLUDED_REPORTDESIGN_INC_RPTOBJECT_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/inc/RptPage.hxx b/reportdesign/inc/RptPage.hxx
new file mode 100644
index 000000000..637687ad9
--- /dev/null
+++ b/reportdesign/inc/RptPage.hxx
@@ -0,0 +1,87 @@
+/* -*- 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_INC_RPTPAGE_HXX
+#define INCLUDED_REPORTDESIGN_INC_RPTPAGE_HXX
+
+#include "dllapi.h"
+#include <svx/svdpage.hxx>
+#include <com/sun/star/report/XReportComponent.hpp>
+#include <com/sun/star/report/XSection.hpp>
+
+namespace rptui
+{
+
+// OReportPage
+
+
+class OReportModel;
+
+class REPORTDESIGN_DLLPUBLIC OReportPage final : public SdrPage
+{
+ OReportPage& operator=(const OReportPage&) = delete;
+ OReportPage(const OReportPage&) = delete;
+
+ OReportModel& rModel;
+ css::uno::Reference< css::report::XSection > m_xSection;
+ bool m_bSpecialInsertMode;
+ std::vector<SdrObject*> m_aTemporaryObjectList;
+
+ // method to remove temporary objects, created by 'special mode'
+ // (BegDragObj)
+ void removeTempObject(SdrObject const *_pToRemoveObj);
+
+ virtual ~OReportPage() override;
+
+ virtual css::uno::Reference< css::uno::XInterface > createUnoPage() override;
+public:
+
+ OReportPage( OReportModel& rModel
+ ,const css::uno::Reference< css::report::XSection >& _xSection );
+
+ virtual rtl::Reference<SdrPage> CloneSdrPage(SdrModel& rTargetModel) const override;
+
+ virtual void NbcInsertObject(SdrObject* pObj, size_t nPos=SAL_MAX_SIZE) override;
+ virtual SdrObject* RemoveObject(size_t nObjNum) override;
+
+ /** returns the index inside the object list which belongs to the report component.
+ @param _xObject the report component
+ */
+ size_t getIndexOf(const css::uno::Reference< css::report::XReportComponent >& _xObject);
+
+ /** removes the SdrObject which belongs to the report component.
+ @param _xObject the report component
+ */
+ void removeSdrObject(const css::uno::Reference< css::report::XReportComponent >& _xObject);
+
+ void setSpecialMode() {m_bSpecialInsertMode = true;}
+ bool getSpecialMode() const {return m_bSpecialInsertMode;}
+ // all temporary objects will remove and destroy
+ void resetSpecialMode();
+
+ /** insert a new SdrObject which belongs to the report component.
+ @param _xObject the report component
+ */
+ void insertObject(const css::uno::Reference< css::report::XReportComponent >& _xObject);
+
+ const css::uno::Reference< css::report::XSection >& getSection() const { return m_xSection;}
+};
+}
+#endif // INCLUDED_REPORTDESIGN_INC_RPTPAGE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/inc/UndoActions.hxx b/reportdesign/inc/UndoActions.hxx
new file mode 100644
index 000000000..7b1fb2005
--- /dev/null
+++ b/reportdesign/inc/UndoActions.hxx
@@ -0,0 +1,284 @@
+/* -*- 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_INC_UNDOACTIONS_HXX
+#define INCLUDED_REPORTDESIGN_INC_UNDOACTIONS_HXX
+
+#include "dllapi.h"
+
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/beans/PropertyChangeEvent.hpp>
+#include <com/sun/star/report/XReportDefinition.hpp>
+#include <com/sun/star/report/XGroup.hpp>
+
+#include <svx/svdundo.hxx>
+
+#include <functional>
+
+namespace dbaui
+{
+ class IController;
+}
+namespace rptui
+{
+ enum Action
+ {
+ Inserted = 1,
+ Removed = 2
+ };
+
+ /** Helper class to allow std::mem_fun for SAL_CALL
+ */
+ class OGroupHelper
+ {
+ css::uno::Reference< css::report::XGroup > m_xGroup;
+ OGroupHelper(const OGroupHelper&) = delete;
+ OGroupHelper& operator=(const OGroupHelper&) = delete;
+ public:
+ OGroupHelper(const css::uno::Reference< css::report::XGroup >& _xGroup)
+ :m_xGroup(_xGroup)
+ {
+ }
+ css::uno::Reference< css::report::XSection > getHeader() { return m_xGroup->getHeader(); }
+ css::uno::Reference< css::report::XSection > getFooter() { return m_xGroup->getFooter(); }
+ const css::uno::Reference< css::report::XGroup >& getGroup() const { return m_xGroup; }
+
+ bool getHeaderOn() { return m_xGroup->getHeaderOn(); }
+ bool getFooterOn() { return m_xGroup->getFooterOn(); }
+
+ static ::std::function<css::uno::Reference< css::report::XSection>(OGroupHelper *)> getMemberFunction(const css::uno::Reference< css::report::XSection >& _xSection);
+
+ };
+
+ /** Helper class to allow std::mem_fun for SAL_CALL
+ */
+ class OReportHelper
+ {
+ css::uno::Reference< css::report::XReportDefinition > m_xReport;
+ public:
+ OReportHelper(const css::uno::Reference< css::report::XReportDefinition >& _xReport)
+ :m_xReport(_xReport)
+ {
+ }
+ css::uno::Reference< css::report::XSection > getReportHeader() { return m_xReport->getReportHeader(); }
+ css::uno::Reference< css::report::XSection > getReportFooter() { return m_xReport->getReportFooter(); }
+ css::uno::Reference< css::report::XSection > getPageHeader() { return m_xReport->getPageHeader(); }
+ css::uno::Reference< css::report::XSection > getPageFooter() { return m_xReport->getPageFooter(); }
+ css::uno::Reference< css::report::XSection > getDetail() { return m_xReport->getDetail(); }
+
+ bool getReportHeaderOn() { return m_xReport->getReportHeaderOn(); }
+ bool getReportFooterOn() { return m_xReport->getReportFooterOn(); }
+ bool getPageHeaderOn() { return m_xReport->getPageHeaderOn(); }
+ bool getPageFooterOn() { return m_xReport->getPageFooterOn(); }
+
+ static ::std::function<css::uno::Reference< css::report::XSection>(OReportHelper *)> getMemberFunction(const css::uno::Reference< css::report::XSection >& _xSection);
+ };
+
+
+ //= UndoContext
+
+ class UndoContext
+ {
+ public:
+ UndoContext( SfxUndoManager& i_undoManager, const OUString& i_undoTitle )
+ :m_rUndoManager( i_undoManager )
+ {
+ m_rUndoManager.EnterListAction( i_undoTitle, OUString(), 0, ViewShellId(-1) );
+ }
+
+ ~UndoContext()
+ {
+ m_rUndoManager.LeaveListAction();
+ }
+
+ private:
+ SfxUndoManager& m_rUndoManager;
+ };
+
+
+ //= UndoSuppressor
+
+ class UndoSuppressor
+ {
+ public:
+ UndoSuppressor( SfxUndoManager& i_undoManager )
+ :m_rUndoManager( i_undoManager )
+ {
+ m_rUndoManager.EnableUndo( false );
+ }
+
+ ~UndoSuppressor()
+ {
+ m_rUndoManager.EnableUndo( true );
+ }
+
+ private:
+ SfxUndoManager& m_rUndoManager;
+ };
+
+
+ //= OCommentUndoAction
+
+ class REPORTDESIGN_DLLPUBLIC OCommentUndoAction : public SdrUndoAction
+ {
+ protected:
+ OUString m_strComment; // undo, redo comment
+ ::dbaui::IController* m_pController;
+
+ public:
+ OCommentUndoAction(SdrModel& rMod, TranslateId pCommentID);
+ virtual ~OCommentUndoAction() override;
+
+ virtual OUString GetComment() const override { return m_strComment; }
+ virtual void Undo() override;
+ virtual void Redo() override;
+ };
+
+ // OUndoContainerAction
+
+ class OUndoContainerAction: public OCommentUndoAction
+ {
+ OUndoContainerAction(OUndoContainerAction const &) = delete;
+ void operator =(OUndoContainerAction const &) = delete;
+ protected:
+ css::uno::Reference< css::uno::XInterface >
+ m_xElement; // object not owned by the action
+ css::uno::Reference< css::uno::XInterface >
+ m_xOwnElement; // object owned by the action
+ css::uno::Reference< css::container::XIndexContainer >
+ m_xContainer;
+ Action m_eAction;
+
+ public:
+ OUndoContainerAction(SdrModel& rMod
+ ,Action _eAction
+ ,const css::uno::Reference< css::container::XIndexContainer >& rContainer
+ ,const css::uno::Reference< css::uno::XInterface>& xElem
+ ,TranslateId pCommentId);
+ virtual ~OUndoContainerAction() override;
+
+ virtual void Undo() override;
+ virtual void Redo() override;
+
+ protected:
+ virtual void implReInsert( );
+ virtual void implReRemove( );
+ };
+
+
+ // OUndoReportSectionAction
+
+ class OUndoReportSectionAction final : public OUndoContainerAction
+ {
+ OReportHelper m_aReportHelper;
+ ::std::function<css::uno::Reference< css::report::XSection >(OReportHelper *)> m_pMemberFunction;
+ public:
+ OUndoReportSectionAction(SdrModel& rMod
+ ,Action _eAction
+ ,::std::function<css::uno::Reference< css::report::XSection >(OReportHelper *)> _pMemberFunction
+ ,const css::uno::Reference< css::report::XReportDefinition >& _xReport
+ ,const css::uno::Reference< css::uno::XInterface>& xElem
+ ,TranslateId pCommentId);
+
+ private:
+ virtual void implReInsert( ) override;
+ virtual void implReRemove( ) override;
+ };
+
+
+ // OUndoGroupSectionAction
+ class OUndoGroupSectionAction final : public OUndoContainerAction
+ {
+ OGroupHelper m_aGroupHelper;
+ ::std::function<css::uno::Reference< css::report::XSection >(OGroupHelper *)> m_pMemberFunction;
+ public:
+ OUndoGroupSectionAction(SdrModel& rMod
+ ,Action _eAction
+ ,::std::function<css::uno::Reference< css::report::XSection >(OGroupHelper *)> _pMemberFunction
+ ,const css::uno::Reference< css::report::XGroup >& _xGroup
+ ,const css::uno::Reference< css::uno::XInterface>& xElem
+ ,TranslateId pCommentId);
+
+ private:
+ virtual void implReInsert( ) override;
+ virtual void implReRemove( ) override;
+ };
+
+ // ORptUndoPropertyAction
+ class ORptUndoPropertyAction: public OCommentUndoAction
+ {
+ css::uno::Reference< css::beans::XPropertySet> m_xObj;
+ OUString m_aPropertyName;
+ css::uno::Any m_aNewValue;
+ css::uno::Any m_aOldValue;
+
+ /** sets either the old value or the new value again at the property set.
+ *
+ * \param _bOld If set to <TRUE/> than the old value will be set otherwise the new value will be set.
+ */
+ void setProperty(bool _bOld);
+ protected:
+ virtual css::uno::Reference< css::beans::XPropertySet> getObject();
+
+ public:
+ ORptUndoPropertyAction(SdrModel& rMod, const css::beans::PropertyChangeEvent& evt);
+
+ virtual void Undo() override;
+ virtual void Redo() override;
+
+ virtual OUString GetComment() const override;
+ };
+
+
+ // OUndoPropertyReportSectionAction
+
+ class OUndoPropertyReportSectionAction final : public ORptUndoPropertyAction
+ {
+ OReportHelper m_aReportHelper;
+ ::std::function<css::uno::Reference< css::report::XSection >(OReportHelper *)> m_pMemberFunction;
+
+ virtual css::uno::Reference< css::beans::XPropertySet> getObject() override;
+ public:
+ OUndoPropertyReportSectionAction(SdrModel& rMod
+ ,const css::beans::PropertyChangeEvent& evt
+ ,::std::function<css::uno::Reference< css::report::XSection >(OReportHelper *)> _pMemberFunction
+ ,const css::uno::Reference< css::report::XReportDefinition >& _xReport
+ );
+ };
+
+
+ // OUndoPropertyGroupSectionAction
+
+ class OUndoPropertyGroupSectionAction final : public ORptUndoPropertyAction
+ {
+ OGroupHelper m_aGroupHelper;
+ ::std::function<css::uno::Reference< css::report::XSection >(OGroupHelper *)> m_pMemberFunction;
+
+ virtual css::uno::Reference< css::beans::XPropertySet> getObject() override;
+ public:
+ OUndoPropertyGroupSectionAction(SdrModel& rMod
+ ,const css::beans::PropertyChangeEvent& evt
+ ,::std::function<css::uno::Reference< css::report::XSection >(OGroupHelper *)> _pMemberFunction
+ ,const css::uno::Reference< css::report::XGroup >& _xGroup
+ );
+ };
+
+}
+#endif // INCLUDED_REPORTDESIGN_INC_UNDOACTIONS_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/inc/UndoEnv.hxx b/reportdesign/inc/UndoEnv.hxx
new file mode 100644
index 000000000..af893f68d
--- /dev/null
+++ b/reportdesign/inc/UndoEnv.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_INC_UNDOENV_HXX
+#define INCLUDED_REPORTDESIGN_INC_UNDOENV_HXX
+
+#include <com/sun/star/beans/XPropertyChangeListener.hpp>
+#include <com/sun/star/beans/PropertyChangeEvent.hpp>
+#include <com/sun/star/container/XContainerListener.hpp>
+#include <com/sun/star/container/XIndexAccess.hpp>
+#include <com/sun/star/util/XModifyListener.hpp>
+#include <com/sun/star/report/XSection.hpp>
+
+#include <memory>
+#include <cppuhelper/implbase.hxx>
+#include <svl/lstner.hxx>
+#include "dllapi.h"
+#include "RptPage.hxx"
+
+namespace rptui
+{
+ class OXUndoEnvironmentImpl;
+
+
+ class REPORTDESIGN_DLLPUBLIC OXUndoEnvironment final
+ : public ::cppu::WeakImplHelper< css::beans::XPropertyChangeListener
+ , css::container::XContainerListener
+ , css::util::XModifyListener
+ >
+ , public SfxListener
+ {
+ const ::std::unique_ptr<OXUndoEnvironmentImpl> m_pImpl;
+
+ OXUndoEnvironment(const OXUndoEnvironment&) = delete;
+ OXUndoEnvironment& operator=(const OXUndoEnvironment&) = delete;
+
+ virtual ~OXUndoEnvironment() override;
+
+ void SetUndoMode(bool _bUndo);
+
+ public:
+ OXUndoEnvironment(OReportModel& _rModel);
+
+ /**
+ Create an object ob OUndoEnvLock locks the undo possibility
+ As long as in the OUndoEnvLock scope, no undo is possible for manipulated object.
+ */
+ class OUndoEnvLock
+ {
+ OXUndoEnvironment& m_rUndoEnv;
+ public:
+ OUndoEnvLock(OXUndoEnvironment& _rUndoEnv): m_rUndoEnv(_rUndoEnv){m_rUndoEnv.Lock();}
+ ~OUndoEnvLock(){ m_rUndoEnv.UnLock(); }
+ };
+
+ /**
+ This is near the same as OUndoEnvLock but it is also possible to ask for the current mode.
+ UndoMode will set if SID_UNDO is called in execute()
+ */
+ class OUndoMode
+ {
+ OXUndoEnvironment& m_rUndoEnv;
+ public:
+ OUndoMode(OXUndoEnvironment& _rUndoEnv)
+ :m_rUndoEnv(_rUndoEnv)
+ {
+ m_rUndoEnv.Lock();
+ m_rUndoEnv.SetUndoMode(true);
+ }
+ ~OUndoMode()
+ {
+ m_rUndoEnv.SetUndoMode(false);
+ m_rUndoEnv.UnLock();
+ }
+ };
+
+ void Lock();
+ void UnLock();
+ bool IsLocked() const;
+
+ // returns sal_True is we are in UNDO
+ bool IsUndoMode() const;
+
+ // access control
+ struct Accessor { friend class OReportModel; private: Accessor() { } };
+ void Clear(const Accessor& _r);
+
+ void AddElement(const css::uno::Reference< css::uno::XInterface>& Element);
+ void RemoveElement(const css::uno::Reference< css::uno::XInterface>& Element);
+
+ void AddSection( const css::uno::Reference< css::report::XSection>& _xSection);
+ void RemoveSection( const css::uno::Reference< css::report::XSection>& _xSection );
+ /** removes the section from the page out of the undo env
+ *
+ * \param _pPage
+ */
+ void RemoveSection(OReportPage const * _pPage);
+
+ private:
+ // XEventListener
+ virtual void SAL_CALL disposing(const css::lang::EventObject& Source) override;
+
+ // XPropertyChangeListener
+ virtual void SAL_CALL propertyChange(const css::beans::PropertyChangeEvent& evt) override;
+
+ // XContainerListener
+ virtual void SAL_CALL elementInserted(const css::container::ContainerEvent& rEvent) override;
+ virtual void SAL_CALL elementReplaced(const css::container::ContainerEvent& rEvent) override;
+ virtual void SAL_CALL elementRemoved(const css::container::ContainerEvent& rEvent) override;
+
+ // XModifyListener
+ virtual void SAL_CALL modified( const css::lang::EventObject& aEvent ) override;
+
+ void ModeChanged();
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) override;
+
+ private:
+ void implSetModified();
+
+ void switchListening( const css::uno::Reference< css::container::XIndexAccess >& _rxContainer, bool _bStartListening );
+ void switchListening( const css::uno::Reference< css::uno::XInterface >& _rxObject, bool _bStartListening );
+
+ ::std::vector< css::uno::Reference< css::container::XChild> >::const_iterator
+ getSection(const css::uno::Reference< css::container::XChild>& _xContainer) const;
+ };
+
+}
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/inc/bitmaps.hlst b/reportdesign/inc/bitmaps.hlst
new file mode 100644
index 000000000..f66cf4250
--- /dev/null
+++ b/reportdesign/inc/bitmaps.hlst
@@ -0,0 +1,29 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
+/*
+ * 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/.
+ */
+#pragma once
+
+inline constexpr OUStringLiteral RID_SVXBMP_SELECT_REPORT = u"reportdesign/res/sx12464.png";
+inline constexpr OUStringLiteral RID_SVXBMP_FM_FIXEDTEXT = u"reportdesign/res/sx10597.png";
+inline constexpr OUStringLiteral RID_SVXBMP_INSERT_HFIXEDLINE = u"reportdesign/res/sx10928.png";
+inline constexpr OUStringLiteral RID_SVXBMP_INSERT_VFIXEDLINE = u"reportdesign/res/sx10929.png";
+inline constexpr OUStringLiteral RID_SVXBMP_FM_IMAGECONTROL = u"reportdesign/res/sx10710.png";
+inline constexpr OUStringLiteral RID_SVXBMP_FM_EDIT = u"reportdesign/res/sx10599.png";
+inline constexpr OUStringLiteral RID_SVXBMP_RPT_NEW_FUNCTION = u"reportdesign/res/sx12594.png";
+inline constexpr OUStringLiteral RID_SVXBMP_REPORTHEADERFOOTER = u"reportdesign/res/sx12453.png";
+inline constexpr OUStringLiteral RID_SVXBMP_PAGEHEADERFOOTER = u"reportdesign/res/sx12452.png";
+inline constexpr OUStringLiteral RID_SVXBMP_GROUPHEADER = u"reportdesign/res/sx12466.png";
+inline constexpr OUStringLiteral RID_SVXBMP_GROUPFOOTER = u"reportdesign/res/sx12468.png";
+inline constexpr OUStringLiteral RID_SVXBMP_SORTINGANDGROUPING = u"reportdesign/res/sx12454.png";
+inline constexpr OUStringLiteral RID_SVXBMP_DRAWTBX_CS_BASIC = u"reportdesign/res/sx11047.png";
+inline constexpr OUStringLiteral RID_SVXBMP_GROUP = u"reportdesign/res/sx10454.png";
+inline constexpr OUStringLiteral RID_SVXBMP_ICON_DETAIL = u"reportdesign/res/sx12603.png";
+inline constexpr OUStringLiteral RID_BMP_TREENODE_COLLAPSED = u"res/plus.png";
+inline constexpr OUStringLiteral RID_BMP_TREENODE_EXPANDED = u"res/minus.png";
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
diff --git a/reportdesign/inc/conditionalexpression.hxx b/reportdesign/inc/conditionalexpression.hxx
new file mode 100644
index 000000000..12b84f95e
--- /dev/null
+++ b/reportdesign/inc/conditionalexpression.hxx
@@ -0,0 +1,109 @@
+/* -*- 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_INC_CONDITIONALEXPRESSION_HXX
+#define INCLUDED_REPORTDESIGN_INC_CONDITIONALEXPRESSION_HXX
+
+#include "dllapi.h"
+
+#include <rtl/ustring.hxx>
+#include <map>
+#include <memory>
+
+namespace rptui
+{
+
+
+ // = ConditionalExpression
+
+ class REPORTDESIGN_DLLPUBLIC ConditionalExpression
+ {
+ private:
+ const OUString m_sPattern;
+
+ public:
+ ConditionalExpression( const char* _pAsciiPattern );
+
+ /** assembles an expression string from a field data source, and one or two operands
+ */
+ OUString assembleExpression( const OUString& _rFieldDataSource, const OUString& _rLHS, const OUString& _rRHS ) const;
+
+ /** matches the given expression string to the expression pattern represented by the object
+ @param _rExpression
+ the expression to match
+ @param _rFieldDataSource
+ the field data source
+ @param _out_rLHS
+ output parameter taking the left hand side operand, if successful
+ @param _out_rRHS
+ output parameter taking the right hand side operand, if successful
+ @return
+ <TRUE/> if and only if the expression string could be successfully matched to
+ the pattern.
+ */
+ bool matchExpression( const OUString& _rExpression, const OUString& _rFieldDataSource, OUString& _out_rLHS, OUString& _out_rRHS ) const;
+ };
+
+
+ //= ConditionType
+
+ enum ConditionType
+ {
+ eFieldValueComparison = 0,
+ eExpression = 1
+ };
+
+
+ //= ComparisonOperation
+
+ enum ComparisonOperation
+ {
+ eBetween = 0,
+ eNotBetween = 1,
+ eEqualTo = 2,
+ eNotEqualTo = 3,
+ eGreaterThan = 4,
+ eLessThan = 5,
+ eGreaterOrEqual = 6,
+ eLessOrEqual = 7
+ };
+
+ typedef std::shared_ptr< ConditionalExpression > PConditionalExpression;
+ typedef ::std::map< ComparisonOperation, PConditionalExpression > ConditionalExpressions;
+
+
+ // = ConditionalExpressionFactory
+
+ class REPORTDESIGN_DLLPUBLIC ConditionalExpressionFactory
+ {
+ public:
+ /// fills the given map with all ConditionalExpressions which we know
+ static size_t getKnownConditionalExpressions( ConditionalExpressions& _out_rCondExp );
+
+ private:
+ ConditionalExpressionFactory( const ConditionalExpressionFactory& ) = delete;
+ ConditionalExpressionFactory& operator=( const ConditionalExpressionFactory& ) = delete;
+ };
+
+} // namespace rptui
+
+
+#endif // INCLUDED_REPORTDESIGN_INC_CONDITIONALEXPRESSION_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/inc/core_resource.hxx b/reportdesign/inc/core_resource.hxx
new file mode 100644
index 000000000..4c298216d
--- /dev/null
+++ b/reportdesign/inc/core_resource.hxx
@@ -0,0 +1,31 @@
+/* -*- 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_CORE_RESOURCE_HXX
+#define INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_CORE_RESOURCE_HXX
+
+#include "dllapi.h"
+
+#include <rtl/ustring.hxx>
+#include <unotools/resmgr.hxx>
+
+OUString REPORTDESIGN_DLLPUBLIC RptResId(TranslateId pId);
+
+#endif // INCLUDED_REPORTDESIGN_SOURCE_CORE_INC_CORE_RESOURCE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/inc/dllapi.h b/reportdesign/inc/dllapi.h
new file mode 100644
index 000000000..bb730c003
--- /dev/null
+++ b/reportdesign/inc/dllapi.h
@@ -0,0 +1,33 @@
+/* -*- 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_INC_DLLAPI_H
+#define INCLUDED_REPORTDESIGN_INC_DLLAPI_H
+
+#include <sal/types.h>
+
+#if defined(REPORTDESIGN_DLLIMPLEMENTATION)
+#define REPORTDESIGN_DLLPUBLIC SAL_DLLPUBLIC_EXPORT
+#else
+#define REPORTDESIGN_DLLPUBLIC SAL_DLLPUBLIC_IMPORT
+#endif
+
+#endif // INCLUDED_REPORTDESIGN_INC_DLLAPI_H
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/inc/helpids.h b/reportdesign/inc/helpids.h
new file mode 100644
index 000000000..219d96722
--- /dev/null
+++ b/reportdesign/inc/helpids.h
@@ -0,0 +1,85 @@
+/* -*- 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 .
+ */
+#pragma once
+
+#include <rtl/ustring.hxx>
+
+inline constexpr OUStringLiteral UID_RPT_PROP_FORMULA = u"REPORTDESIGN_UID_RPT_PROP_FORMULA";
+inline constexpr OUStringLiteral UID_RPT_RPT_PROP_DLG_FONT_TYPE = u"REPORTDESIGN_UID_RPT_RPT_PROP_DLG_FONT_TYPE";
+inline constexpr OUStringLiteral UID_RPT_RPT_PROP_DLG_AREA = u"REPORTDESIGN_UID_RPT_RPT_PROP_DLG_AREA";
+inline constexpr OUStringLiteral UID_RPT_PROP_CHARTTYPE_DLG = u"REPORTDESIGN_UID_RPT_PROP_CHARTTYPE_DLG";
+inline constexpr OUStringLiteral UID_RPT_PROP_DLG_LINKFIELDS = u"REPORTDESIGN_UID_RPT_PROP_DLG_LINKFIELDS";
+
+#define UID_RPT_RPT_APP_VIEW "REPORTDESIGN_UID_RPT_RPT_APP_VIEW"
+inline constexpr OStringLiteral UID_RPT_REPORTWINDOW = "REPORTDESIGN_UID_RPT_REPORTWINDOW";
+inline constexpr OStringLiteral HID_REPORTSECTION = "REPORTDESIGN_HID_REPORTSECTION";
+inline constexpr OStringLiteral HID_RPT_FIELDEXPRESSION = "REPORTDESIGN_HID_RPT_FIELDEXPRESSION";
+inline constexpr OStringLiteral HID_RPT_FIELD_SEL = "REPORTDESIGN_HID_RPT_FIELD_SEL";
+#define HID_RPT_FIELD_SEL_WIN "REPORTDESIGN_HID_RPT_FIELD_SEL_WIN"
+inline constexpr OStringLiteral HID_RPT_PROPDLG_TAB_GENERAL = "REPORTDESIGN_HID_RPT_PROPDLG_TAB_GENERAL";
+inline constexpr OStringLiteral HID_RPT_PROPDLG_TAB_DATA = "REPORTDESIGN_HID_RPT_PROPDLG_TAB_DATA";
+
+inline constexpr OStringLiteral HID_RPT_PROP_FORCENEWPAGE = "REPORTDESIGN_HID_RPT_PROP_FORCENEWPAGE";
+inline constexpr OStringLiteral HID_RPT_PROP_NEWROWORCOL = "REPORTDESIGN_HID_RPT_PROP_NEWROWORCOL";
+inline constexpr OStringLiteral HID_RPT_PROP_KEEPTOGETHER = "REPORTDESIGN_HID_RPT_PROP_KEEPTOGETHER";
+inline constexpr OStringLiteral HID_RPT_PROP_CANGROW = "REPORTDESIGN_HID_RPT_PROP_CANGROW";
+inline constexpr OStringLiteral HID_RPT_PROP_CANSHRINK = "REPORTDESIGN_HID_RPT_PROP_CANSHRINK";
+inline constexpr OStringLiteral HID_RPT_PROP_REPEATSECTION = "REPORTDESIGN_HID_RPT_PROP_REPEATSECTION";
+inline constexpr OStringLiteral HID_RPT_PROP_FORMULALIST = "REPORTDESIGN_HID_RPT_PROP_FORMULALIST";
+inline constexpr OStringLiteral HID_RPT_PROP_SCOPE = "REPORTDESIGN_HID_RPT_PROP_SCOPE";
+inline constexpr OStringLiteral HID_RPT_PROP_TYPE = "REPORTDESIGN_HID_RPT_PROP_TYPE";
+inline constexpr OStringLiteral HID_RPT_PROP_MASTERFIELDS = "REPORTDESIGN_HID_RPT_PROP_MASTERFIELDS";
+inline constexpr OStringLiteral HID_RPT_PROP_DETAILFIELDS = "REPORTDESIGN_HID_RPT_PROP_DETAILFIELDS";
+inline constexpr OStringLiteral HID_RPT_PROP_AREA = "REPORTDESIGN_HID_RPT_PROP_AREA";
+inline constexpr OStringLiteral HID_RPT_PROP_MIMETYPE = "REPORTDESIGN_HID_RPT_PROP_MIMETYPE";
+// free
+// free
+inline constexpr OStringLiteral HID_RPT_PROP_PRINTREPEATEDVALUES = "REPORTDESIGN_HID_RPT_PROP_PRINTREPEATEDVALUES";
+inline constexpr OStringLiteral HID_RPT_PROP_CONDITIONALPRINTEXPRESSION = "REPORTDESIGN_HID_RPT_PROP_CONDITIONALPRINTEXPRESSION";
+inline constexpr OStringLiteral HID_RPT_PROP_VERTICALALIGN = "REPORTDESIGN_HID_RPT_PROP_VERTICALALIGN";
+inline constexpr OStringLiteral HID_RPT_PROP_STARTNEWCOLUMN = "REPORTDESIGN_HID_RPT_PROP_STARTNEWCOLUMN";
+inline constexpr OStringLiteral HID_RPT_PROP_RESETPAGENUMBER = "REPORTDESIGN_HID_RPT_PROP_RESETPAGENUMBER";
+inline constexpr OStringLiteral HID_RPT_PROP_PARAADJUST = "REPORTDESIGN_HID_RPT_PROP_PARAADJUST";
+inline constexpr OStringLiteral HID_RPT_PROP_PRINTWHENGROUPCHANGE = "REPORTDESIGN_HID_RPT_PROP_PRINTWHENGROUPCHANGE";
+inline constexpr OStringLiteral HID_RPT_PROP_CHARTTYPE = "REPORTDESIGN_HID_RPT_PROP_CHARTTYPE";
+// free
+// free
+inline constexpr OStringLiteral HID_RPT_PROP_VISIBLE = "REPORTDESIGN_HID_RPT_PROP_VISIBLE";
+inline constexpr OStringLiteral HID_RPT_PROP_GROUPKEEPTOGETHER = "REPORTDESIGN_HID_RPT_PROP_GROUPKEEPTOGETHER";
+inline constexpr OStringLiteral HID_RPT_PROP_PAGEHEADEROPTION = "REPORTDESIGN_HID_RPT_PROP_PAGEHEADEROPTION";
+inline constexpr OStringLiteral HID_RPT_PROP_PAGEFOOTEROPTION = "REPORTDESIGN_HID_RPT_PROP_PAGEFOOTEROPTION";
+inline constexpr OStringLiteral HID_RPT_PROP_PREVIEW_COUNT = "REPORTDESIGN_HID_RPT_PROP_PREVIEW_COUNT";
+inline constexpr OStringLiteral HID_RPT_PROP_DATAFIELD = "REPORTDESIGN_HID_RPT_PROP_DATAFIELD";
+inline constexpr OStringLiteral HID_RPT_PROP_BACKCOLOR = "REPORTDESIGN_HID_RPT_PROP_BACKCOLOR";
+inline constexpr OStringLiteral HID_RPT_PROP_RPT_POSITIONX = "REPORTDESIGN_HID_RPT_PROP_RPT_POSITIONX";
+inline constexpr OStringLiteral HID_RPT_PROP_RPT_POSITIONY = "REPORTDESIGN_HID_RPT_PROP_RPT_POSITIONY";
+inline constexpr OStringLiteral HID_RPT_PROP_RPT_WIDTH = "REPORTDESIGN_HID_RPT_PROP_RPT_WIDTH";
+inline constexpr OStringLiteral HID_RPT_PROP_RPT_HEIGHT = "REPORTDESIGN_HID_RPT_PROP_RPT_HEIGHT";
+inline constexpr OStringLiteral HID_RPT_PROP_RPT_AUTOGROW = "REPORTDESIGN_HID_RPT_PROP_RPT_AUTOGROW";
+inline constexpr OStringLiteral HID_RPT_PROP_DEEPTRAVERSING = "REPORTDESIGN_HID_RPT_PROP_DEEPTRAVERSING";
+inline constexpr OStringLiteral HID_RPT_PROP_PREEVALUATED = "REPORTDESIGN_HID_RPT_PROP_PREEVALUATED";
+inline constexpr OStringLiteral HID_REPORT_NAVIGATOR_TREE = "REPORTDESIGN_HID_REPORT_NAVIGATOR_TREE";
+inline constexpr OStringLiteral HID_RPT_PROP_FORMULA = "REPORTDESIGN_HID_RPT_PROP_FORMULA";
+inline constexpr OStringLiteral HID_RPT_PROP_INITIALFORMULA = "REPORTDESIGN_HID_RPT_PROP_INITIALFORMULA";
+inline constexpr OStringLiteral HID_RPT_PROP_RPT_FONT = "REPORTDESIGN_HID_RPT_PROP_RPT_FONT";
+inline constexpr OStringLiteral HID_RPT_PROP_PRESERVEIRI = "REPORTDESIGN_HID_RPT_PROP_PRESERVEIRI";
+inline constexpr OStringLiteral HID_RPT_PROP_BACKTRANSPARENT = "REPORTDESIGN_HID_RPT_PROP_BACKTRANSPARENT";
+inline constexpr OStringLiteral HID_RPT_PROP_CONTROLBACKGROUNDTRANSPARENT = "REPORTDESIGN_HID_RPT_PROP_CONTROLBACKGROUNDTRANSPARENT";
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/inc/pch/precompiled_rpt.cxx b/reportdesign/inc/pch/precompiled_rpt.cxx
new file mode 100644
index 000000000..b1ead1a26
--- /dev/null
+++ b/reportdesign/inc/pch/precompiled_rpt.cxx
@@ -0,0 +1,12 @@
+/* -*- 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/.
+ */
+
+#include "precompiled_rpt.hxx"
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/inc/pch/precompiled_rpt.hxx b/reportdesign/inc/pch/precompiled_rpt.hxx
new file mode 100644
index 000000000..002da98ac
--- /dev/null
+++ b/reportdesign/inc/pch/precompiled_rpt.hxx
@@ -0,0 +1,304 @@
+/* -*- 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 has been autogenerated by update_pch.sh. It is possible to edit it
+ manually (such as when an include file has been moved/renamed/removed). All such
+ manual changes will be rewritten by the next run of update_pch.sh (which presumably
+ also fixes all possible problems, so it's usually better to use it).
+
+ Generated on 2021-09-12 11:51:50 using:
+ ./bin/update_pch reportdesign rpt --cutoff=9 --exclude:system --include:module --include:local
+
+ If after updating build fails, use the following command to locate conflicting headers:
+ ./bin/update_pch_bisect ./reportdesign/inc/pch/precompiled_rpt.hxx "make reportdesign.build" --find-conflicts
+*/
+
+#include <sal/config.h>
+#if PCH_LEVEL >= 1
+#include <algorithm>
+#include <array>
+#include <cassert>
+#include <chrono>
+#include <cmath>
+#include <cstddef>
+#include <cstdlib>
+#include <cstring>
+#include <deque>
+#include <float.h>
+#include <functional>
+#include <initializer_list>
+#include <iomanip>
+#include <limits.h>
+#include <limits>
+#include <map>
+#include <math.h>
+#include <memory>
+#include <new>
+#include <numeric>
+#include <optional>
+#include <ostream>
+#include <stddef.h>
+#include <stdexcept>
+#include <string.h>
+#include <string>
+#include <string_view>
+#include <type_traits>
+#include <unordered_map>
+#include <unordered_set>
+#include <utility>
+#include <vector>
+#include <boost/property_tree/ptree_fwd.hpp>
+#endif // PCH_LEVEL >= 1
+#if PCH_LEVEL >= 2
+#include <osl/diagnose.h>
+#include <osl/diagnose.hxx>
+#include <osl/doublecheckedlocking.h>
+#include <osl/endian.h>
+#include <osl/getglobalmutex.hxx>
+#include <osl/interlck.h>
+#include <osl/mutex.h>
+#include <osl/mutex.hxx>
+#include <osl/thread.h>
+#include <osl/time.h>
+#include <rtl/alloc.h>
+#include <rtl/instance.hxx>
+#include <rtl/locale.h>
+#include <rtl/math.h>
+#include <rtl/ref.hxx>
+#include <rtl/strbuf.hxx>
+#include <rtl/string.h>
+#include <rtl/string.hxx>
+#include <rtl/stringconcat.hxx>
+#include <rtl/stringutils.hxx>
+#include <rtl/textcvt.h>
+#include <rtl/textenc.h>
+#include <rtl/unload.h>
+#include <rtl/ustrbuf.hxx>
+#include <rtl/ustring.h>
+#include <rtl/ustring.hxx>
+#include <rtl/uuid.h>
+#include <sal/backtrace.hxx>
+#include <sal/detail/log.h>
+#include <sal/macros.h>
+#include <sal/saldllapi.h>
+#include <sal/types.h>
+#include <sal/typesizes.h>
+#include <vcl/BinaryDataContainer.hxx>
+#include <vcl/GraphicExternalLink.hxx>
+#include <vcl/Scanline.hxx>
+#include <vcl/alpha.hxx>
+#include <vcl/animate/Animation.hxx>
+#include <vcl/animate/AnimationBitmap.hxx>
+#include <vcl/bitmap.hxx>
+#include <vcl/bitmap/BitmapTypes.hxx>
+#include <vcl/bitmapex.hxx>
+#include <vcl/cairo.hxx>
+#include <vcl/checksum.hxx>
+#include <vcl/devicecoordinate.hxx>
+#include <vcl/dllapi.h>
+#include <vcl/errcode.hxx>
+#include <vcl/fntstyle.hxx>
+#include <vcl/font.hxx>
+#include <vcl/gfxlink.hxx>
+#include <vcl/gradient.hxx>
+#include <vcl/graph.hxx>
+#include <vcl/mapmod.hxx>
+#include <vcl/metaactiontypes.hxx>
+#include <vcl/outdev.hxx>
+#include <vcl/region.hxx>
+#include <vcl/rendercontext/AddFontSubstituteFlags.hxx>
+#include <vcl/rendercontext/AntialiasingFlags.hxx>
+#include <vcl/rendercontext/DrawGridFlags.hxx>
+#include <vcl/rendercontext/DrawImageFlags.hxx>
+#include <vcl/rendercontext/DrawModeFlags.hxx>
+#include <vcl/rendercontext/DrawTextFlags.hxx>
+#include <vcl/rendercontext/GetDefaultFontFlags.hxx>
+#include <vcl/rendercontext/ImplMapRes.hxx>
+#include <vcl/rendercontext/InvertFlags.hxx>
+#include <vcl/rendercontext/RasterOp.hxx>
+#include <vcl/rendercontext/SalLayoutFlags.hxx>
+#include <vcl/rendercontext/State.hxx>
+#include <vcl/rendercontext/SystemTextColorFlags.hxx>
+#include <vcl/salnativewidgets.hxx>
+#include <vcl/scopedbitmapaccess.hxx>
+#include <vcl/task.hxx>
+#include <vcl/timer.hxx>
+#include <vcl/vclenum.hxx>
+#include <vcl/vclptr.hxx>
+#include <vcl/vclreferencebase.hxx>
+#include <vcl/vectorgraphicdata.hxx>
+#include <vcl/wall.hxx>
+#endif // PCH_LEVEL >= 2
+#if PCH_LEVEL >= 3
+#include <basegfx/basegfxdllapi.h>
+#include <basegfx/color/bcolor.hxx>
+#include <basegfx/numeric/ftools.hxx>
+#include <basegfx/point/b2dpoint.hxx>
+#include <basegfx/point/b2ipoint.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <basegfx/range/b2drange.hxx>
+#include <basegfx/range/basicrange.hxx>
+#include <basegfx/tuple/Tuple2D.hxx>
+#include <basegfx/tuple/Tuple3D.hxx>
+#include <basegfx/tuple/b2dtuple.hxx>
+#include <basegfx/tuple/b2ituple.hxx>
+#include <basegfx/tuple/b3dtuple.hxx>
+#include <basegfx/utils/common.hxx>
+#include <basegfx/vector/b2dsize.hxx>
+#include <basegfx/vector/b2dvector.hxx>
+#include <basegfx/vector/b2enums.hxx>
+#include <basegfx/vector/b2ivector.hxx>
+#include <com/sun/star/awt/DeviceInfo.hpp>
+#include <com/sun/star/awt/FontDescriptor.hpp>
+#include <com/sun/star/beans/XFastPropertySet.hpp>
+#include <com/sun/star/beans/XMultiPropertySet.hpp>
+#include <com/sun/star/beans/XPropertyAccess.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/container/XChild.hpp>
+#include <com/sun/star/drawing/LineCap.hpp>
+#include <com/sun/star/drawing/TextFitToSizeType.hpp>
+#include <com/sun/star/drawing/XShape.hpp>
+#include <com/sun/star/form/FormComponentType.hpp>
+#include <com/sun/star/graphic/XPrimitive2D.hpp>
+#include <com/sun/star/lang/DisposedException.hpp>
+#include <com/sun/star/lang/EventObject.hpp>
+#include <com/sun/star/lang/Locale.hpp>
+#include <com/sun/star/lang/XComponent.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.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/report/XReportComponent.hpp>
+#include <com/sun/star/style/XStyle.hpp>
+#include <com/sun/star/uno/Any.h>
+#include <com/sun/star/uno/Any.hxx>
+#include <com/sun/star/uno/Reference.h>
+#include <com/sun/star/uno/Reference.hxx>
+#include <com/sun/star/uno/RuntimeException.hpp>
+#include <com/sun/star/uno/Sequence.h>
+#include <com/sun/star/uno/Sequence.hxx>
+#include <com/sun/star/uno/Type.h>
+#include <com/sun/star/uno/Type.hxx>
+#include <com/sun/star/uno/TypeClass.hdl>
+#include <com/sun/star/uno/XAggregation.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/uno/XInterface.hpp>
+#include <com/sun/star/uno/XWeak.hpp>
+#include <com/sun/star/uno/genfunc.h>
+#include <com/sun/star/uno/genfunc.hxx>
+#include <com/sun/star/util/Date.hpp>
+#include <com/sun/star/util/DateTime.hpp>
+#include <com/sun/star/util/Time.hpp>
+#include <comphelper/comphelperdllapi.h>
+#include <comphelper/interfacecontainer2.hxx>
+#include <comphelper/sequence.hxx>
+#include <comphelper/uno3.hxx>
+#include <comphelper/weak.hxx>
+#include <cppu/cppudllapi.h>
+#include <cppu/unotype.hxx>
+#include <cppuhelper/basemutex.hxx>
+#include <cppuhelper/compbase.hxx>
+#include <cppuhelper/compbase_ex.hxx>
+#include <cppuhelper/cppuhelperdllapi.h>
+#include <cppuhelper/implbase.hxx>
+#include <cppuhelper/implbase_ex.hxx>
+#include <cppuhelper/implbase_ex_post.hxx>
+#include <cppuhelper/implbase_ex_pre.hxx>
+#include <cppuhelper/interfacecontainer.h>
+#include <cppuhelper/propertysetmixin.hxx>
+#include <cppuhelper/supportsservice.hxx>
+#include <cppuhelper/weak.hxx>
+#include <cppuhelper/weakagg.hxx>
+#include <cppuhelper/weakref.hxx>
+#include <drawinglayer/drawinglayerdllapi.h>
+#include <drawinglayer/primitive2d/CommonTypes.hxx>
+#include <drawinglayer/primitive2d/Primitive2DContainer.hxx>
+#include <drawinglayer/primitive2d/Primitive2DVisitor.hxx>
+#include <editeng/editengdllapi.h>
+#include <editeng/outlobj.hxx>
+#include <editeng/paragraphdata.hxx>
+#include <i18nlangtag/lang.h>
+#include <o3tl/cow_wrapper.hxx>
+#include <o3tl/safeint.hxx>
+#include <o3tl/strong_int.hxx>
+#include <o3tl/typed_flags_set.hxx>
+#include <o3tl/underlyingenumvalue.hxx>
+#include <o3tl/unit_conversion.hxx>
+#include <salhelper/simplereferenceobject.hxx>
+#include <svl/SfxBroadcaster.hxx>
+#include <svl/cenumitm.hxx>
+#include <svl/eitem.hxx>
+#include <svl/hint.hxx>
+#include <svl/itemset.hxx>
+#include <svl/lstner.hxx>
+#include <svl/poolitem.hxx>
+#include <svl/style.hxx>
+#include <svl/stylesheetuser.hxx>
+#include <svl/svldllapi.h>
+#include <svl/typedwhich.hxx>
+#include <svl/whichranges.hxx>
+#include <svx/itextprovider.hxx>
+#include <svx/sdr/properties/defaultproperties.hxx>
+#include <svx/sdr/properties/properties.hxx>
+#include <svx/sdtaditm.hxx>
+#include <svx/sdtaitm.hxx>
+#include <svx/sdtakitm.hxx>
+#include <svx/svddef.hxx>
+#include <svx/svdoattr.hxx>
+#include <svx/svdobj.hxx>
+#include <svx/svdobjkind.hxx>
+#include <svx/svdsob.hxx>
+#include <svx/svdtext.hxx>
+#include <svx/svdtrans.hxx>
+#include <svx/svdtypes.hxx>
+#include <svx/svxdllapi.h>
+#include <svx/xdef.hxx>
+#include <tools/color.hxx>
+#include <tools/date.hxx>
+#include <tools/datetime.hxx>
+#include <tools/degree.hxx>
+#include <tools/diagnose_ex.h>
+#include <tools/fldunit.hxx>
+#include <tools/fontenum.hxx>
+#include <tools/fract.hxx>
+#include <tools/gen.hxx>
+#include <tools/helpers.hxx>
+#include <tools/link.hxx>
+#include <tools/long.hxx>
+#include <tools/mapunit.hxx>
+#include <tools/poly.hxx>
+#include <tools/ref.hxx>
+#include <tools/solar.h>
+#include <tools/time.hxx>
+#include <tools/toolsdllapi.h>
+#include <tools/weakbase.h>
+#include <tools/weakbase.hxx>
+#include <typelib/typeclass.h>
+#include <typelib/typedescription.h>
+#include <typelib/uik.h>
+#include <uno/any2.h>
+#include <uno/data.h>
+#include <uno/sequence2.h>
+#include <unotools/fontdefs.hxx>
+#include <unotools/options.hxx>
+#include <unotools/resmgr.hxx>
+#include <unotools/syslocale.hxx>
+#include <unotools/unotoolsdllapi.h>
+#endif // PCH_LEVEL >= 3
+#if PCH_LEVEL >= 4
+#include <RptModel.hxx>
+#include <Tools.hxx>
+#include <core_resource.hxx>
+#include <dllapi.h>
+#include <strings.hxx>
+#endif // PCH_LEVEL >= 4
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/inc/pch/precompiled_rptui.cxx b/reportdesign/inc/pch/precompiled_rptui.cxx
new file mode 100644
index 000000000..36a9cbf87
--- /dev/null
+++ b/reportdesign/inc/pch/precompiled_rptui.cxx
@@ -0,0 +1,12 @@
+/* -*- 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/.
+ */
+
+#include "precompiled_rptui.hxx"
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/inc/pch/precompiled_rptui.hxx b/reportdesign/inc/pch/precompiled_rptui.hxx
new file mode 100644
index 000000000..d67a85cf3
--- /dev/null
+++ b/reportdesign/inc/pch/precompiled_rptui.hxx
@@ -0,0 +1,482 @@
+/* -*- 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 has been autogenerated by update_pch.sh. It is possible to edit it
+ manually (such as when an include file has been moved/renamed/removed). All such
+ manual changes will be rewritten by the next run of update_pch.sh (which presumably
+ also fixes all possible problems, so it's usually better to use it).
+
+ Generated on 2021-09-12 11:51:58 using:
+ ./bin/update_pch reportdesign rptui --cutoff=4 --exclude:system --include:module --include:local
+
+ If after updating build fails, use the following command to locate conflicting headers:
+ ./bin/update_pch_bisect ./reportdesign/inc/pch/precompiled_rptui.hxx "make reportdesign.build" --find-conflicts
+*/
+
+#include <sal/config.h>
+#if PCH_LEVEL >= 1
+#include <algorithm>
+#include <array>
+#include <assert.h>
+#include <cassert>
+#include <chrono>
+#include <cmath>
+#include <cstddef>
+#include <cstdlib>
+#include <cstring>
+#include <deque>
+#include <float.h>
+#include <functional>
+#include <initializer_list>
+#include <iomanip>
+#include <iterator>
+#include <limits.h>
+#include <limits>
+#include <map>
+#include <math.h>
+#include <memory>
+#include <mutex>
+#include <new>
+#include <numeric>
+#include <optional>
+#include <ostream>
+#include <sstream>
+#include <stddef.h>
+#include <stdexcept>
+#include <string.h>
+#include <string>
+#include <string_view>
+#include <type_traits>
+#include <typeinfo>
+#include <unordered_map>
+#include <unordered_set>
+#include <utility>
+#include <vector>
+#include <boost/intrusive_ptr.hpp>
+#include <boost/property_tree/ptree_fwd.hpp>
+#endif // PCH_LEVEL >= 1
+#if PCH_LEVEL >= 2
+#include <osl/diagnose.h>
+#include <osl/diagnose.hxx>
+#include <osl/doublecheckedlocking.h>
+#include <osl/endian.h>
+#include <osl/getglobalmutex.hxx>
+#include <osl/interlck.h>
+#include <osl/mutex.hxx>
+#include <osl/thread.h>
+#include <osl/time.h>
+#include <rtl/alloc.h>
+#include <rtl/instance.hxx>
+#include <rtl/locale.h>
+#include <rtl/math.h>
+#include <rtl/ref.hxx>
+#include <rtl/string.h>
+#include <rtl/string.hxx>
+#include <rtl/stringconcat.hxx>
+#include <rtl/stringutils.hxx>
+#include <rtl/textcvt.h>
+#include <rtl/textenc.h>
+#include <rtl/ustrbuf.h>
+#include <rtl/ustrbuf.hxx>
+#include <rtl/ustring.h>
+#include <rtl/ustring.hxx>
+#include <rtl/uuid.h>
+#include <sal/backtrace.hxx>
+#include <sal/detail/log.h>
+#include <sal/log.hxx>
+#include <sal/macros.h>
+#include <sal/saldllapi.h>
+#include <sal/types.h>
+#include <sal/typesizes.h>
+#include <vcl/AccessibleBrowseBoxObjType.hxx>
+#include <vcl/BinaryDataContainer.hxx>
+#include <vcl/EnumContext.hxx>
+#include <vcl/GraphicAttributes.hxx>
+#include <vcl/GraphicExternalLink.hxx>
+#include <vcl/GraphicObject.hxx>
+#include <vcl/IDialogRenderable.hxx>
+#include <vcl/Scanline.hxx>
+#include <vcl/abstdlg.hxx>
+#include <vcl/alpha.hxx>
+#include <vcl/animate/Animation.hxx>
+#include <vcl/animate/AnimationBitmap.hxx>
+#include <vcl/bitmap.hxx>
+#include <vcl/bitmap/BitmapTypes.hxx>
+#include <vcl/bitmapex.hxx>
+#include <vcl/builderpage.hxx>
+#include <vcl/cairo.hxx>
+#include <vcl/checksum.hxx>
+#include <vcl/commandevent.hxx>
+#include <vcl/ctrl.hxx>
+#include <vcl/devicecoordinate.hxx>
+#include <vcl/dllapi.h>
+#include <vcl/errcode.hxx>
+#include <vcl/event.hxx>
+#include <vcl/fntstyle.hxx>
+#include <vcl/font.hxx>
+#include <vcl/gdimtf.hxx>
+#include <vcl/gfxlink.hxx>
+#include <vcl/gradient.hxx>
+#include <vcl/graph.hxx>
+#include <vcl/headbar.hxx>
+#include <vcl/idle.hxx>
+#include <vcl/keycod.hxx>
+#include <vcl/keycodes.hxx>
+#include <vcl/mapmod.hxx>
+#include <vcl/metaactiontypes.hxx>
+#include <vcl/outdev.hxx>
+#include <vcl/region.hxx>
+#include <vcl/rendercontext/AddFontSubstituteFlags.hxx>
+#include <vcl/rendercontext/AntialiasingFlags.hxx>
+#include <vcl/rendercontext/DrawGridFlags.hxx>
+#include <vcl/rendercontext/DrawImageFlags.hxx>
+#include <vcl/rendercontext/DrawModeFlags.hxx>
+#include <vcl/rendercontext/DrawTextFlags.hxx>
+#include <vcl/rendercontext/GetDefaultFontFlags.hxx>
+#include <vcl/rendercontext/ImplMapRes.hxx>
+#include <vcl/rendercontext/InvertFlags.hxx>
+#include <vcl/rendercontext/RasterOp.hxx>
+#include <vcl/rendercontext/SalLayoutFlags.hxx>
+#include <vcl/rendercontext/State.hxx>
+#include <vcl/rendercontext/SystemTextColorFlags.hxx>
+#include <vcl/salnativewidgets.hxx>
+#include <vcl/scopedbitmapaccess.hxx>
+#include <vcl/settings.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/task.hxx>
+#include <vcl/timer.hxx>
+#include <vcl/transfer.hxx>
+#include <vcl/uitest/factory.hxx>
+#include <vcl/vclenum.hxx>
+#include <vcl/vclptr.hxx>
+#include <vcl/vclreferencebase.hxx>
+#include <vcl/vectorgraphicdata.hxx>
+#include <vcl/wall.hxx>
+#include <vcl/weld.hxx>
+#include <vcl/window.hxx>
+#include <vcl/windowstate.hxx>
+#endif // PCH_LEVEL >= 2
+#if PCH_LEVEL >= 3
+#include <basegfx/basegfxdllapi.h>
+#include <basegfx/color/bcolor.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <basegfx/numeric/ftools.hxx>
+#include <basegfx/point/b2dpoint.hxx>
+#include <basegfx/point/b2ipoint.hxx>
+#include <basegfx/point/b3dpoint.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <basegfx/range/b2drange.hxx>
+#include <basegfx/range/b2drectangle.hxx>
+#include <basegfx/range/b2irange.hxx>
+#include <basegfx/range/basicrange.hxx>
+#include <basegfx/tuple/Tuple2D.hxx>
+#include <basegfx/tuple/Tuple3D.hxx>
+#include <basegfx/tuple/b2dtuple.hxx>
+#include <basegfx/tuple/b2i64tuple.hxx>
+#include <basegfx/tuple/b2ituple.hxx>
+#include <basegfx/tuple/b3dtuple.hxx>
+#include <basegfx/utils/common.hxx>
+#include <basegfx/vector/b2dsize.hxx>
+#include <basegfx/vector/b2dvector.hxx>
+#include <basegfx/vector/b2enums.hxx>
+#include <basegfx/vector/b2ivector.hxx>
+#include <basegfx/vector/b3dvector.hxx>
+#include <com/sun/star/accessibility/XAccessible.hpp>
+#include <com/sun/star/accessibility/XAccessibleRelationSet.hpp>
+#include <com/sun/star/awt/DeviceInfo.hpp>
+#include <com/sun/star/awt/FontSlant.hpp>
+#include <com/sun/star/awt/Gradient.hpp>
+#include <com/sun/star/awt/GradientStyle.hpp>
+#include <com/sun/star/awt/Key.hpp>
+#include <com/sun/star/awt/KeyGroup.hpp>
+#include <com/sun/star/awt/XVclWindowPeer.hpp>
+#include <com/sun/star/beans/PropertyChangeEvent.hpp>
+#include <com/sun/star/beans/PropertyState.hpp>
+#include <com/sun/star/beans/PropertyValue.hpp>
+#include <com/sun/star/beans/XPropertyChangeListener.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/beans/XPropertySetInfo.hpp>
+#include <com/sun/star/container/XIndexReplace.hpp>
+#include <com/sun/star/container/XNameContainer.hpp>
+#include <com/sun/star/datatransfer/DataFlavor.hpp>
+#include <com/sun/star/datatransfer/XTransferable2.hpp>
+#include <com/sun/star/datatransfer/clipboard/XClipboard.hpp>
+#include <com/sun/star/datatransfer/clipboard/XClipboardOwner.hpp>
+#include <com/sun/star/datatransfer/dnd/DNDConstants.hpp>
+#include <com/sun/star/datatransfer/dnd/DropTargetDragEvent.hpp>
+#include <com/sun/star/datatransfer/dnd/DropTargetDropEvent.hpp>
+#include <com/sun/star/datatransfer/dnd/XDragGestureListener.hpp>
+#include <com/sun/star/datatransfer/dnd/XDragSourceListener.hpp>
+#include <com/sun/star/datatransfer/dnd/XDropTargetListener.hpp>
+#include <com/sun/star/drawing/DashStyle.hpp>
+#include <com/sun/star/drawing/HatchStyle.hpp>
+#include <com/sun/star/drawing/LineCap.hpp>
+#include <com/sun/star/drawing/TextFitToSizeType.hpp>
+#include <com/sun/star/embed/Aspects.hpp>
+#include <com/sun/star/embed/XStorage.hpp>
+#include <com/sun/star/form/FormComponentType.hpp>
+#include <com/sun/star/frame/XFrame.hpp>
+#include <com/sun/star/frame/XStatusbarController.hpp>
+#include <com/sun/star/frame/XTerminateListener.hpp>
+#include <com/sun/star/graphic/XPrimitive2D.hpp>
+#include <com/sun/star/i18n/CharacterIteratorMode.hpp>
+#include <com/sun/star/i18n/ForbiddenCharacters.hpp>
+#include <com/sun/star/i18n/WordType.hpp>
+#include <com/sun/star/inspection/XPropertyHandler.hpp>
+#include <com/sun/star/lang/DisposedException.hpp>
+#include <com/sun/star/lang/EventObject.hpp>
+#include <com/sun/star/lang/IllegalArgumentException.hpp>
+#include <com/sun/star/lang/Locale.hpp>
+#include <com/sun/star/lang/NullPointerException.hpp>
+#include <com/sun/star/lang/XComponent.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/report/XReportComponent.hpp>
+#include <com/sun/star/report/XReportDefinition.hpp>
+#include <com/sun/star/style/NumberingType.hpp>
+#include <com/sun/star/style/XStyle.hpp>
+#include <com/sun/star/table/CellAddress.hpp>
+#include <com/sun/star/text/textfield/Type.hpp>
+#include <com/sun/star/uno/Any.h>
+#include <com/sun/star/uno/Any.hxx>
+#include <com/sun/star/uno/Exception.hpp>
+#include <com/sun/star/uno/Reference.h>
+#include <com/sun/star/uno/Reference.hxx>
+#include <com/sun/star/uno/RuntimeException.hpp>
+#include <com/sun/star/uno/Sequence.h>
+#include <com/sun/star/uno/Sequence.hxx>
+#include <com/sun/star/uno/Type.h>
+#include <com/sun/star/uno/Type.hxx>
+#include <com/sun/star/uno/TypeClass.hdl>
+#include <com/sun/star/uno/TypeClass.hpp>
+#include <com/sun/star/uno/XAggregation.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/uno/XInterface.hpp>
+#include <com/sun/star/uno/XWeak.hpp>
+#include <com/sun/star/uno/genfunc.h>
+#include <com/sun/star/uno/genfunc.hxx>
+#include <com/sun/star/util/Date.hpp>
+#include <com/sun/star/util/DateTime.hpp>
+#include <com/sun/star/util/Time.hpp>
+#include <comphelper/comphelperdllapi.h>
+#include <comphelper/interfacecontainer2.hxx>
+#include <comphelper/multicontainer2.hxx>
+#include <comphelper/propertysequence.hxx>
+#include <comphelper/propertysetinfo.hxx>
+#include <comphelper/sequence.hxx>
+#include <comphelper/types.hxx>
+#include <comphelper/weak.hxx>
+#include <connectivity/dbtools.hxx>
+#include <cppu/cppudllapi.h>
+#include <cppu/unotype.hxx>
+#include <cppuhelper/basemutex.hxx>
+#include <cppuhelper/compbase.hxx>
+#include <cppuhelper/compbase_ex.hxx>
+#include <cppuhelper/cppuhelperdllapi.h>
+#include <cppuhelper/implbase.hxx>
+#include <cppuhelper/implbase1.hxx>
+#include <cppuhelper/implbase_ex.hxx>
+#include <cppuhelper/implbase_ex_post.hxx>
+#include <cppuhelper/implbase_ex_pre.hxx>
+#include <cppuhelper/interfacecontainer.h>
+#include <cppuhelper/supportsservice.hxx>
+#include <cppuhelper/weak.hxx>
+#include <cppuhelper/weakagg.hxx>
+#include <cppuhelper/weakref.hxx>
+#include <drawinglayer/drawinglayerdllapi.h>
+#include <drawinglayer/primitive2d/CommonTypes.hxx>
+#include <drawinglayer/primitive2d/Primitive2DContainer.hxx>
+#include <drawinglayer/primitive2d/Primitive2DVisitor.hxx>
+#include <editeng/editdata.hxx>
+#include <editeng/editeng.hxx>
+#include <editeng/editengdllapi.h>
+#include <editeng/editobj.hxx>
+#include <editeng/editstat.hxx>
+#include <editeng/editview.hxx>
+#include <editeng/eedata.hxx>
+#include <editeng/flditem.hxx>
+#include <editeng/forbiddencharacterstable.hxx>
+#include <editeng/macros.hxx>
+#include <editeng/outliner.hxx>
+#include <editeng/outlobj.hxx>
+#include <editeng/overflowingtxt.hxx>
+#include <editeng/paragraphdata.hxx>
+#include <editeng/svxenum.hxx>
+#include <editeng/svxfont.hxx>
+#include <formula/IFunctionDescription.hxx>
+#include <formula/compiler.hxx>
+#include <formula/formuladllapi.h>
+#include <formula/opcode.hxx>
+#include <formula/paramclass.hxx>
+#include <formula/types.hxx>
+#include <i18nlangtag/i18nlangtagdllapi.h>
+#include <i18nlangtag/lang.h>
+#include <i18nlangtag/mslangid.hxx>
+#include <o3tl/cow_wrapper.hxx>
+#include <o3tl/deleter.hxx>
+#include <o3tl/enumarray.hxx>
+#include <o3tl/safeint.hxx>
+#include <o3tl/sorted_vector.hxx>
+#include <o3tl/strong_int.hxx>
+#include <o3tl/typed_flags_set.hxx>
+#include <o3tl/underlyingenumvalue.hxx>
+#include <o3tl/unit_conversion.hxx>
+#include <salhelper/salhelperdllapi.h>
+#include <salhelper/simplereferenceobject.hxx>
+#include <sfx2/basedlgs.hxx>
+#include <sfx2/dllapi.h>
+#include <sfx2/tabdlg.hxx>
+#include <sot/exchange.hxx>
+#include <sot/formats.hxx>
+#include <sot/sotdllapi.h>
+#include <svl/SfxBroadcaster.hxx>
+#include <svl/cenumitm.hxx>
+#include <svl/cintitem.hxx>
+#include <svl/custritm.hxx>
+#include <svl/eitem.hxx>
+#include <svl/hint.hxx>
+#include <svl/intitem.hxx>
+#include <svl/itempool.hxx>
+#include <svl/itemprop.hxx>
+#include <svl/itemset.hxx>
+#include <svl/languageoptions.hxx>
+#include <svl/lstner.hxx>
+#include <svl/poolitem.hxx>
+#include <svl/setitem.hxx>
+#include <svl/sharedstring.hxx>
+#include <svl/stritem.hxx>
+#include <svl/style.hxx>
+#include <svl/stylesheetuser.hxx>
+#include <svl/svldllapi.h>
+#include <svl/typedwhich.hxx>
+#include <svl/undo.hxx>
+#include <svl/whichranges.hxx>
+#include <svtools/accessibilityoptions.hxx>
+#include <svtools/colorcfg.hxx>
+#include <svtools/extcolorcfg.hxx>
+#include <svtools/statusbarcontroller.hxx>
+#include <svtools/svtdllapi.h>
+#include <svx/XPropertyEntry.hxx>
+#include <svx/ipolypolygoneditorcontroller.hxx>
+#include <svx/itextprovider.hxx>
+#include <svx/sdr/animation/scheduler.hxx>
+#include <svx/sdr/overlay/overlayobject.hxx>
+#include <svx/sdr/overlay/overlayobjectlist.hxx>
+#include <svx/sdr/properties/defaultproperties.hxx>
+#include <svx/sdr/properties/properties.hxx>
+#include <svx/sdrobjectuser.hxx>
+#include <svx/sdtaditm.hxx>
+#include <svx/sdtaitm.hxx>
+#include <svx/sdtakitm.hxx>
+#include <svx/selectioncontroller.hxx>
+#include <svx/svdcrtv.hxx>
+#include <svx/svddef.hxx>
+#include <svx/svddrag.hxx>
+#include <svx/svddrgv.hxx>
+#include <svx/svdedtv.hxx>
+#include <svx/svdedxv.hxx>
+#include <svx/svdglev.hxx>
+#include <svx/svdglue.hxx>
+#include <svx/svdhdl.hxx>
+#include <svx/svdhlpln.hxx>
+#include <svx/svditer.hxx>
+#include <svx/svdlayer.hxx>
+#include <svx/svdmark.hxx>
+#include <svx/svdmodel.hxx>
+#include <svx/svdmrkv.hxx>
+#include <svx/svdoattr.hxx>
+#include <svx/svdobj.hxx>
+#include <svx/svdobjkind.hxx>
+#include <svx/svdoedge.hxx>
+#include <svx/svdotext.hxx>
+#include <svx/svdpntv.hxx>
+#include <svx/svdpoev.hxx>
+#include <svx/svdsnpv.hxx>
+#include <svx/svdsob.hxx>
+#include <svx/svdtext.hxx>
+#include <svx/svdtrans.hxx>
+#include <svx/svdtypes.hxx>
+#include <svx/svdundo.hxx>
+#include <svx/svdxcgv.hxx>
+#include <svx/svxdllapi.h>
+#include <svx/xdash.hxx>
+#include <svx/xdef.hxx>
+#include <svx/xgrad.hxx>
+#include <svx/xhatch.hxx>
+#include <svx/xit.hxx>
+#include <svx/xpoly.hxx>
+#include <svx/xtable.hxx>
+#include <toolkit/helper/convert.hxx>
+#include <toolkit/helper/vclunohelper.hxx>
+#include <tools/color.hxx>
+#include <tools/date.hxx>
+#include <tools/datetime.hxx>
+#include <tools/debug.hxx>
+#include <tools/degree.hxx>
+#include <tools/diagnose_ex.h>
+#include <tools/fldunit.hxx>
+#include <tools/fontenum.hxx>
+#include <tools/fract.hxx>
+#include <tools/gen.hxx>
+#include <tools/globname.hxx>
+#include <tools/helpers.hxx>
+#include <tools/lineend.hxx>
+#include <tools/link.hxx>
+#include <tools/long.hxx>
+#include <tools/mapunit.hxx>
+#include <tools/poly.hxx>
+#include <tools/ref.hxx>
+#include <tools/solar.h>
+#include <tools/time.hxx>
+#include <tools/toolsdllapi.h>
+#include <tools/weakbase.h>
+#include <tools/weakbase.hxx>
+#include <tools/wintypes.hxx>
+#include <typelib/typeclass.h>
+#include <typelib/typedescription.h>
+#include <typelib/uik.h>
+#include <uno/any2.h>
+#include <uno/data.h>
+#include <uno/sequence2.h>
+#include <unotools/fontdefs.hxx>
+#include <unotools/localedatawrapper.hxx>
+#include <unotools/options.hxx>
+#include <unotools/resmgr.hxx>
+#include <unotools/syslocale.hxx>
+#include <unotools/unotoolsdllapi.h>
+#endif // PCH_LEVEL >= 3
+#if PCH_LEVEL >= 4
+#include <AddField.hxx>
+#include <DesignView.hxx>
+#include <IReportControllerObserver.hxx>
+#include <ReportController.hxx>
+#include <ReportSection.hxx>
+#include <ReportWindow.hxx>
+#include <RptDef.hxx>
+#include <RptModel.hxx>
+#include <RptObject.hxx>
+#include <RptPage.hxx>
+#include <ScrollHelper.hxx>
+#include <SectionView.hxx>
+#include <SectionWindow.hxx>
+#include <UITools.hxx>
+#include <UndoActions.hxx>
+#include <ViewsWindow.hxx>
+#include <core_resource.hxx>
+#include <dllapi.h>
+#include <helpids.h>
+#include <metadata.hxx>
+#include <reportformula.hxx>
+#include <strings.hxx>
+#endif // PCH_LEVEL >= 4
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/inc/pch/precompiled_rptxml.cxx b/reportdesign/inc/pch/precompiled_rptxml.cxx
new file mode 100644
index 000000000..b7b388c7e
--- /dev/null
+++ b/reportdesign/inc/pch/precompiled_rptxml.cxx
@@ -0,0 +1,12 @@
+/* -*- 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/.
+ */
+
+#include "precompiled_rptxml.hxx"
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/inc/pch/precompiled_rptxml.hxx b/reportdesign/inc/pch/precompiled_rptxml.hxx
new file mode 100644
index 000000000..8d80da38e
--- /dev/null
+++ b/reportdesign/inc/pch/precompiled_rptxml.hxx
@@ -0,0 +1,117 @@
+/* -*- 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 has been autogenerated by update_pch.sh. It is possible to edit it
+ manually (such as when an include file has been moved/renamed/removed). All such
+ manual changes will be rewritten by the next run of update_pch.sh (which presumably
+ also fixes all possible problems, so it's usually better to use it).
+
+ Generated on 2021-03-08 13:14:10 using:
+ ./bin/update_pch reportdesign rptxml --cutoff=2 --exclude:system --exclude:module --include:local
+
+ If after updating build fails, use the following command to locate conflicting headers:
+ ./bin/update_pch_bisect ./reportdesign/inc/pch/precompiled_rptxml.hxx "make reportdesign.build" --find-conflicts
+*/
+
+#include <sal/config.h>
+#if PCH_LEVEL >= 1
+#include <cassert>
+#include <cstddef>
+#include <cstring>
+#include <functional>
+#include <limits>
+#include <memory>
+#include <new>
+#include <string_view>
+#include <type_traits>
+#include <vector>
+#endif // PCH_LEVEL >= 1
+#if PCH_LEVEL >= 2
+#include <osl/diagnose.h>
+#include <osl/endian.h>
+#include <rtl/math.hxx>
+#include <rtl/ref.hxx>
+#include <rtl/strbuf.h>
+#include <rtl/strbuf.hxx>
+#include <rtl/string.hxx>
+#include <rtl/stringconcat.hxx>
+#include <rtl/stringutils.hxx>
+#include <rtl/textenc.h>
+#include <rtl/ustrbuf.h>
+#include <rtl/ustrbuf.hxx>
+#include <rtl/ustring.hxx>
+#include <sal/log.hxx>
+#include <sal/types.h>
+#include <vcl/dllapi.h>
+#include <vcl/svapp.hxx>
+#endif // PCH_LEVEL >= 2
+#if PCH_LEVEL >= 3
+#include <basegfx/color/bcolor.hxx>
+#include <com/sun/star/awt/FontDescriptor.hpp>
+#include <com/sun/star/awt/ImageScaleMode.hpp>
+#include <com/sun/star/beans/NamedValue.hpp>
+#include <com/sun/star/beans/PropertyAttribute.hpp>
+#include <com/sun/star/chart/XComplexDescriptionAccess.hpp>
+#include <com/sun/star/chart2/data/XDatabaseDataProvider.hpp>
+#include <com/sun/star/embed/ElementModes.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/reflection/ProxyFactory.hpp>
+#include <com/sun/star/report/ForceNewPage.hpp>
+#include <com/sun/star/report/GroupOn.hpp>
+#include <com/sun/star/report/KeepTogether.hpp>
+#include <com/sun/star/report/ReportPrintOption.hpp>
+#include <com/sun/star/report/XFixedLine.hpp>
+#include <com/sun/star/report/XFixedText.hpp>
+#include <com/sun/star/report/XShape.hpp>
+#include <com/sun/star/sdb/CommandType.hpp>
+#include <com/sun/star/table/BorderLine2.hpp>
+#include <com/sun/star/uno/Any.hxx>
+#include <com/sun/star/uno/Reference.h>
+#include <com/sun/star/uno/Reference.hxx>
+#include <com/sun/star/util/MeasureUnit.hpp>
+#include <comphelper/comphelperdllapi.h>
+#include <comphelper/documentconstants.hxx>
+#include <comphelper/genericpropertyset.hxx>
+#include <comphelper/propertysetinfo.hxx>
+#include <comphelper/sequenceashashmap.hxx>
+#include <connectivity/dbtools.hxx>
+#include <cppuhelper/supportsservice.hxx>
+#include <o3tl/typed_flags_set.hxx>
+#include <salhelper/simplereferenceobject.hxx>
+#include <tools/color.hxx>
+#include <tools/diagnose_ex.h>
+#include <tools/link.hxx>
+#include <tools/toolsdllapi.h>
+#include <unotools/options.hxx>
+#include <unotools/saveopt.hxx>
+#include <unotools/unotoolsdllapi.h>
+#include <xmloff/ProgressBarHelper.hxx>
+#include <xmloff/attrlist.hxx>
+#include <xmloff/dllapi.h>
+#include <xmloff/families.hxx>
+#include <xmloff/maptype.hxx>
+#include <xmloff/namespacemap.hxx>
+#include <xmloff/prstylei.hxx>
+#include <xmloff/txtimp.hxx>
+#include <xmloff/xmlement.hxx>
+#include <xmloff/xmlictxt.hxx>
+#include <xmloff/xmlimppr.hxx>
+#include <xmloff/xmlnamespace.hxx>
+#include <xmloff/xmlstyle.hxx>
+#include <xmloff/xmltkmap.hxx>
+#include <xmloff/xmltoken.hxx>
+#include <xmloff/xmluconv.hxx>
+#endif // PCH_LEVEL >= 3
+#if PCH_LEVEL >= 4
+#include <RptDef.hxx>
+#include <strings.hxx>
+#endif // PCH_LEVEL >= 4
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/inc/reportformula.hxx b/reportdesign/inc/reportformula.hxx
new file mode 100644
index 000000000..b94368701
--- /dev/null
+++ b/reportdesign/inc/reportformula.hxx
@@ -0,0 +1,119 @@
+/* -*- 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_INC_REPORTFORMULA_HXX
+#define INCLUDED_REPORTDESIGN_INC_REPORTFORMULA_HXX
+
+#include "dllapi.h"
+
+#include <osl/diagnose.h>
+#include <rtl/ustring.hxx>
+
+
+namespace rptui
+{
+
+
+ //= ReportFormula
+
+ class REPORTDESIGN_DLLPUBLIC ReportFormula
+ {
+ public:
+ enum BindType
+ {
+ Expression,
+ Field,
+
+ Invalid
+ };
+
+ private:
+ BindType m_eType;
+ OUString m_sCompleteFormula;
+ OUString m_sUndecoratedContent;
+
+ public:
+ /// constructs a ReportFormula object from a string
+ ReportFormula( const OUString& _rFormula );
+
+ /// constructs a ReportFormula by BindType
+ ReportFormula( const BindType _eType, const OUString& _rFieldOrExpression );
+ ~ReportFormula();
+
+ /// returns whether the object denotes a valid formula
+ bool isValid() const;
+
+ /// returns the type of the binding represented by the formula
+ BindType getType() const { return m_eType; }
+
+ /// returns the complete formula represented by the object
+ const OUString&
+ getCompleteFormula() const { return m_sCompleteFormula; }
+
+ /** gets the <em>undecorated formula</em> content
+
+ If the formula denotes a field binding, the <em>undecorated content</em> is the
+ field name.
+
+ If the formula denotes an expression, then the <em>undecorated content</em> is the expression
+ itself.
+ */
+ const OUString& getUndecoratedContent() const { return m_sUndecoratedContent; }
+
+ /// convenience alias for <code>getUndecoratedContent</code>, which asserts (in a non-product build) when used on an expression
+ inline OUString const & getFieldName() const;
+
+ /**
+ @returns "=" + getFieldName()
+ */
+ OUString getEqualUndecoratedContent() const;
+
+ /// convenience alias for <code>getUndecoratedContent</code>, which asserts (in a non-product build) when used on a field
+ inline OUString const & getExpression() const;
+
+ /** returns a bracketed field name of the formula denotes a field reference,
+ or the undecorated expression if the formula denotes an expression.
+
+ Effectively, this means the method returns the complete formula, stripped by the prefix
+ which indicates a field or an expression.
+ */
+ OUString getBracketedFieldOrExpression() const;
+ };
+
+
+ inline OUString const & ReportFormula::getFieldName() const
+ {
+ OSL_PRECOND( getType() == Field, "ReportFormula::getFieldName: not bound to a field!" );
+ return getUndecoratedContent();
+ }
+
+
+ inline OUString const & ReportFormula::getExpression() const
+ {
+ OSL_PRECOND( getType() == Expression, "ReportFormula::getExpression: not bound to an expression!" );
+ return getUndecoratedContent();
+ }
+
+
+} // namespace rptui
+
+
+#endif // INCLUDED_REPORTDESIGN_INC_REPORTFORMULA_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/inc/rptui_slotid.hrc b/reportdesign/inc/rptui_slotid.hrc
new file mode 100644
index 000000000..c66fb556e
--- /dev/null
+++ b/reportdesign/inc/rptui_slotid.hrc
@@ -0,0 +1,201 @@
+/* -*- 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_INC_RPTUI_SLOTID_HRC
+#define INCLUDED_REPORTDESIGN_INC_RPTUI_SLOTID_HRC
+
+#include <svl/solar.hrc>
+
+#define SID_PAGEHEADERFOOTER ( SID_RPTUI_START + 0 )
+#define SID_REPORTHEADERFOOTER ( SID_RPTUI_START + 1 )
+#define SID_SORTINGANDGROUPING ( SID_RPTUI_START + 2 )
+#define SID_INSERT_FLD_PGNUMBER ( SID_RPTUI_START + 3 )
+#define SID_CONDITIONALFORMATTING ( SID_RPTUI_START + 4 )
+#define SID_PAGEDIALOG ( SID_RPTUI_START + 5 )
+#define SID_SETCONTROLDEFAULTS ( SID_RPTUI_START + 6 )
+
+#define SID_PAGEHEADER_WITHOUT_UNDO ( SID_RPTUI_START + 8 )
+#define SID_PAGEFOOTER_WITHOUT_UNDO ( SID_RPTUI_START + 9 )
+#define SID_REPORTHEADER_WITHOUT_UNDO ( SID_RPTUI_START + 10 )
+#define SID_REPORTFOOTER_WITHOUT_UNDO ( SID_RPTUI_START + 11 )
+#define SID_SELECT_REPORT ( SID_RPTUI_START + 12 )
+#define SID_GROUPHEADER_WITHOUT_UNDO ( SID_RPTUI_START + 13 )
+#define SID_GROUPHEADER ( SID_RPTUI_START + 14 )
+#define SID_GROUPFOOTER_WITHOUT_UNDO ( SID_RPTUI_START + 15 )
+#define SID_GROUPFOOTER ( SID_RPTUI_START + 16 )
+#define SID_GROUP_REMOVE ( SID_RPTUI_START + 17 )
+#define SID_GROUP_APPEND ( SID_RPTUI_START + 18 )
+#define SID_EXECUTE_REPORT ( SID_RPTUI_START + 19 )
+#define SID_DATETIME ( SID_RPTUI_START + 20 )
+#define SID_ESCAPE ( SID_RPTUI_START + 21 )
+#define SID_ADD_CONTROL_PAIR ( SID_RPTUI_START + 22 )
+#define SID_SPLIT_POSITION ( SID_RPTUI_START + 23 )
+#define SID_PROPERTYBROWSER_LAST_PAGE ( SID_RPTUI_START + 24 )
+// free
+#define SID_DRAWTBX_CS_BASIC1 ( SID_RPTUI_START + 26 )
+#define SID_DRAWTBX_CS_BASIC2 ( SID_RPTUI_START + 27 )
+#define SID_DRAWTBX_CS_BASIC3 ( SID_RPTUI_START + 28 )
+#define SID_DRAWTBX_CS_BASIC4 ( SID_RPTUI_START + 29 )
+#define SID_DRAWTBX_CS_BASIC5 ( SID_RPTUI_START + 30 )
+#define SID_DRAWTBX_CS_BASIC6 ( SID_RPTUI_START + 31 )
+#define SID_DRAWTBX_CS_BASIC7 ( SID_RPTUI_START + 32 )
+#define SID_DRAWTBX_CS_BASIC8 ( SID_RPTUI_START + 33 )
+#define SID_DRAWTBX_CS_BASIC9 ( SID_RPTUI_START + 34 )
+#define SID_DRAWTBX_CS_BASIC10 ( SID_RPTUI_START + 35 )
+#define SID_DRAWTBX_CS_BASIC11 ( SID_RPTUI_START + 36 )
+#define SID_DRAWTBX_CS_BASIC12 ( SID_RPTUI_START + 37 )
+#define SID_DRAWTBX_CS_BASIC13 ( SID_RPTUI_START + 38 )
+#define SID_DRAWTBX_CS_BASIC14 ( SID_RPTUI_START + 39 )
+#define SID_DRAWTBX_CS_BASIC15 ( SID_RPTUI_START + 40 )
+#define SID_DRAWTBX_CS_BASIC16 ( SID_RPTUI_START + 41 )
+#define SID_DRAWTBX_CS_BASIC17 ( SID_RPTUI_START + 42 )
+#define SID_DRAWTBX_CS_BASIC18 ( SID_RPTUI_START + 43 )
+#define SID_DRAWTBX_CS_BASIC19 ( SID_RPTUI_START + 44 )
+#define SID_DRAWTBX_CS_BASIC20 ( SID_RPTUI_START + 45 )
+#define SID_DRAWTBX_CS_BASIC21 ( SID_RPTUI_START + 46 )
+#define SID_DRAWTBX_CS_BASIC22 ( SID_RPTUI_START + 47 )
+#define SID_DRAWTBX_CS_SYMBOL1 ( SID_RPTUI_START + 48 )
+#define SID_DRAWTBX_CS_SYMBOL2 ( SID_RPTUI_START + 49 )
+#define SID_DRAWTBX_CS_SYMBOL3 ( SID_RPTUI_START + 50 )
+#define SID_DRAWTBX_CS_SYMBOL4 ( SID_RPTUI_START + 51 )
+#define SID_DRAWTBX_CS_SYMBOL5 ( SID_RPTUI_START + 52 )
+#define SID_DRAWTBX_CS_SYMBOL6 ( SID_RPTUI_START + 53 )
+#define SID_DRAWTBX_CS_SYMBOL7 ( SID_RPTUI_START + 54 )
+#define SID_DRAWTBX_CS_SYMBOL8 ( SID_RPTUI_START + 55 )
+#define SID_DRAWTBX_CS_SYMBOL9 ( SID_RPTUI_START + 56 )
+#define SID_DRAWTBX_CS_SYMBOL10 ( SID_RPTUI_START + 57 )
+#define SID_DRAWTBX_CS_SYMBOL11 ( SID_RPTUI_START + 58 )
+#define SID_DRAWTBX_CS_SYMBOL12 ( SID_RPTUI_START + 59 )
+#define SID_DRAWTBX_CS_SYMBOL13 ( SID_RPTUI_START + 60 )
+#define SID_DRAWTBX_CS_SYMBOL14 ( SID_RPTUI_START + 61 )
+#define SID_DRAWTBX_CS_SYMBOL15 ( SID_RPTUI_START + 62 )
+#define SID_DRAWTBX_CS_SYMBOL16 ( SID_RPTUI_START + 63 )
+#define SID_DRAWTBX_CS_SYMBOL17 ( SID_RPTUI_START + 64 )
+#define SID_DRAWTBX_CS_SYMBOL18 ( SID_RPTUI_START + 65 )
+#define SID_DRAWTBX_CS_ARROW1 ( SID_RPTUI_START + 66 )
+#define SID_DRAWTBX_CS_ARROW2 ( SID_RPTUI_START + 67 )
+#define SID_DRAWTBX_CS_ARROW3 ( SID_RPTUI_START + 68 )
+#define SID_DRAWTBX_CS_ARROW4 ( SID_RPTUI_START + 69 )
+#define SID_DRAWTBX_CS_ARROW5 ( SID_RPTUI_START + 70 )
+#define SID_DRAWTBX_CS_ARROW6 ( SID_RPTUI_START + 71 )
+#define SID_DRAWTBX_CS_ARROW7 ( SID_RPTUI_START + 72 )
+#define SID_DRAWTBX_CS_ARROW8 ( SID_RPTUI_START + 73 )
+#define SID_DRAWTBX_CS_ARROW9 ( SID_RPTUI_START + 74 )
+#define SID_DRAWTBX_CS_ARROW10 ( SID_RPTUI_START + 75 )
+#define SID_DRAWTBX_CS_ARROW11 ( SID_RPTUI_START + 76 )
+#define SID_DRAWTBX_CS_ARROW12 ( SID_RPTUI_START + 77 )
+#define SID_DRAWTBX_CS_ARROW13 ( SID_RPTUI_START + 78 )
+#define SID_DRAWTBX_CS_ARROW14 ( SID_RPTUI_START + 79 )
+#define SID_DRAWTBX_CS_ARROW15 ( SID_RPTUI_START + 80 )
+#define SID_DRAWTBX_CS_ARROW16 ( SID_RPTUI_START + 81 )
+#define SID_DRAWTBX_CS_ARROW17 ( SID_RPTUI_START + 82 )
+#define SID_DRAWTBX_CS_ARROW18 ( SID_RPTUI_START + 83 )
+#define SID_DRAWTBX_CS_ARROW19 ( SID_RPTUI_START + 84 )
+#define SID_DRAWTBX_CS_ARROW20 ( SID_RPTUI_START + 85 )
+#define SID_DRAWTBX_CS_ARROW21 ( SID_RPTUI_START + 86 )
+#define SID_DRAWTBX_CS_ARROW22 ( SID_RPTUI_START + 87 )
+#define SID_DRAWTBX_CS_ARROW23 ( SID_RPTUI_START + 88 )
+#define SID_DRAWTBX_CS_ARROW24 ( SID_RPTUI_START + 89 )
+#define SID_DRAWTBX_CS_ARROW25 ( SID_RPTUI_START + 90 )
+#define SID_DRAWTBX_CS_ARROW26 ( SID_RPTUI_START + 91 )
+#define SID_DRAWTBX_CS_STAR1 ( SID_RPTUI_START + 92 )
+#define SID_DRAWTBX_CS_STAR2 ( SID_RPTUI_START + 93 )
+#define SID_DRAWTBX_CS_STAR3 ( SID_RPTUI_START + 94 )
+#define SID_DRAWTBX_CS_STAR4 ( SID_RPTUI_START + 95 )
+#define SID_DRAWTBX_CS_STAR5 ( SID_RPTUI_START + 96 )
+#define SID_DRAWTBX_CS_STAR6 ( SID_RPTUI_START + 97 )
+#define SID_DRAWTBX_CS_STAR7 ( SID_RPTUI_START + 98 )
+#define SID_DRAWTBX_CS_STAR8 ( SID_RPTUI_START + 99 )
+#define SID_DRAWTBX_CS_STAR9 ( SID_RPTUI_START + 100 )
+#define SID_DRAWTBX_CS_STAR10 ( SID_RPTUI_START + 101 )
+#define SID_DRAWTBX_CS_STAR11 ( SID_RPTUI_START + 102 )
+#define SID_DRAWTBX_CS_STAR12 ( SID_RPTUI_START + 103 )
+#define SID_DRAWTBX_CS_FLOWCHART1 ( SID_RPTUI_START + 104 )
+#define SID_DRAWTBX_CS_FLOWCHART2 ( SID_RPTUI_START + 105 )
+#define SID_DRAWTBX_CS_FLOWCHART3 ( SID_RPTUI_START + 106 )
+#define SID_DRAWTBX_CS_FLOWCHART4 ( SID_RPTUI_START + 107 )
+#define SID_DRAWTBX_CS_FLOWCHART5 ( SID_RPTUI_START + 108 )
+#define SID_DRAWTBX_CS_FLOWCHART6 ( SID_RPTUI_START + 109 )
+#define SID_DRAWTBX_CS_FLOWCHART7 ( SID_RPTUI_START + 110 )
+#define SID_DRAWTBX_CS_FLOWCHART8 ( SID_RPTUI_START + 111 )
+#define SID_DRAWTBX_CS_FLOWCHART9 ( SID_RPTUI_START + 112 )
+#define SID_DRAWTBX_CS_FLOWCHART10 ( SID_RPTUI_START + 113 )
+#define SID_DRAWTBX_CS_FLOWCHART11 ( SID_RPTUI_START + 114 )
+#define SID_DRAWTBX_CS_FLOWCHART12 ( SID_RPTUI_START + 115 )
+#define SID_DRAWTBX_CS_FLOWCHART13 ( SID_RPTUI_START + 116 )
+#define SID_DRAWTBX_CS_FLOWCHART14 ( SID_RPTUI_START + 117 )
+#define SID_DRAWTBX_CS_FLOWCHART15 ( SID_RPTUI_START + 118 )
+#define SID_DRAWTBX_CS_FLOWCHART16 ( SID_RPTUI_START + 119 )
+#define SID_DRAWTBX_CS_FLOWCHART17 ( SID_RPTUI_START + 120 )
+#define SID_DRAWTBX_CS_FLOWCHART18 ( SID_RPTUI_START + 121 )
+#define SID_DRAWTBX_CS_FLOWCHART19 ( SID_RPTUI_START + 122 )
+#define SID_DRAWTBX_CS_FLOWCHART20 ( SID_RPTUI_START + 123 )
+#define SID_DRAWTBX_CS_FLOWCHART21 ( SID_RPTUI_START + 124 )
+#define SID_DRAWTBX_CS_FLOWCHART22 ( SID_RPTUI_START + 125 )
+#define SID_DRAWTBX_CS_FLOWCHART23 ( SID_RPTUI_START + 126 )
+#define SID_DRAWTBX_CS_FLOWCHART24 ( SID_RPTUI_START + 127 )
+#define SID_DRAWTBX_CS_FLOWCHART25 ( SID_RPTUI_START + 128 )
+#define SID_DRAWTBX_CS_FLOWCHART26 ( SID_RPTUI_START + 129 )
+#define SID_DRAWTBX_CS_FLOWCHART27 ( SID_RPTUI_START + 130 )
+#define SID_DRAWTBX_CS_FLOWCHART28 ( SID_RPTUI_START + 131 )
+#define SID_DRAWTBX_CS_CALLOUT1 ( SID_RPTUI_START + 132 )
+#define SID_DRAWTBX_CS_CALLOUT2 ( SID_RPTUI_START + 133 )
+#define SID_DRAWTBX_CS_CALLOUT3 ( SID_RPTUI_START + 134 )
+#define SID_DRAWTBX_CS_CALLOUT4 ( SID_RPTUI_START + 135 )
+#define SID_DRAWTBX_CS_CALLOUT5 ( SID_RPTUI_START + 136 )
+#define SID_DRAWTBX_CS_CALLOUT6 ( SID_RPTUI_START + 137 )
+#define SID_DRAWTBX_CS_CALLOUT7 ( SID_RPTUI_START + 138 )
+
+#define SID_RPT_TEXTDOCUMENT ( SID_RPTUI_START + 139 )
+#define SID_RPT_SPREADSHEET ( SID_RPTUI_START + 140 )
+#define SID_RPT_SHOWREPORTEXPLORER ( SID_RPTUI_START + 141 )
+#define SID_RPT_NEW_FUNCTION ( SID_RPTUI_START + 142 )
+
+#define SID_OBJECT_SMALLESTWIDTH ( SID_RPTUI_START + 143 )
+#define SID_OBJECT_SMALLESTHEIGHT ( SID_RPTUI_START + 144 )
+#define SID_OBJECT_GREATESTWIDTH ( SID_RPTUI_START + 145 )
+#define SID_OBJECT_GREATESTHEIGHT ( SID_RPTUI_START + 146 )
+#define SID_OBJECT_RESIZING ( SID_RPTUI_START + 147 )
+#define SID_ARRANGEMENU ( SID_RPTUI_START + 148 )
+#define SID_SELECTALL_IN_SECTION ( SID_RPTUI_START + 149 )
+
+#define SID_SECTION_ALIGN ( SID_RPTUI_START + 152 )
+#define SID_SECTION_ALIGN_LEFT ( SID_RPTUI_START + 153 )
+#define SID_SECTION_ALIGN_CENTER ( SID_RPTUI_START + 154 )
+#define SID_SECTION_ALIGN_RIGHT ( SID_RPTUI_START + 155 )
+#define SID_SECTION_ALIGN_UP ( SID_RPTUI_START + 156 )
+#define SID_SECTION_ALIGN_MIDDLE ( SID_RPTUI_START + 157 )
+#define SID_SECTION_ALIGN_DOWN ( SID_RPTUI_START + 158 )
+
+#define SID_NEXT_MARK ( SID_RPTUI_START + 159 )
+#define SID_PREV_MARK ( SID_RPTUI_START + 160 )
+
+#define SID_SELECT_ALL_LABELS ( SID_RPTUI_START + 161 )
+#define SID_SELECT_ALL_EDITS ( SID_RPTUI_START + 162 )
+
+#define SID_SECTION_SHRINK ( SID_RPTUI_START + 163 )
+#define SID_SECTION_SHRINK_TOP ( SID_RPTUI_START + 164 )
+#define SID_SECTION_SHRINK_BOTTOM ( SID_RPTUI_START + 165 )
+
+#define SID_COLLAPSE_SECTION ( SID_RPTUI_START + 167 )
+#define SID_EXPAND_SECTION ( SID_RPTUI_START + 168 )
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/inc/stringarray.hrc b/reportdesign/inc/stringarray.hrc
new file mode 100644
index 000000000..1d6800bf0
--- /dev/null
+++ b/reportdesign/inc/stringarray.hrc
@@ -0,0 +1,85 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
+/*
+ * 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/.
+ */
+
+#ifndef INCLUDED_REPORTDESIGN_INC_FNP_HRC
+#define INCLUDED_REPORTDESIGN_INC_FNP_HRC
+
+#include <unotools/resmgr.hxx>
+
+#define NC_(Context, String) TranslateId(Context, reinterpret_cast<char const *>(u8##String))
+
+const TranslateId RID_STR_FORCENEWPAGE_CONST[] =
+{
+ NC_("RID_STR_FORCENEWPAGE_CONST", "None"),
+ NC_("RID_STR_FORCENEWPAGE_CONST", "Before Section"),
+ NC_("RID_STR_FORCENEWPAGE_CONST", "After Section"),
+ NC_("RID_STR_FORCENEWPAGE_CONST", "Before & After Section"),
+ {}
+};
+
+const TranslateId RID_STR_GROUPKEEPTOGETHER_CONST[] =
+{
+ NC_("RID_STR_GROUPKEEPTOGETHER_CONST", "Per Page"),
+ NC_("RID_STR_GROUPKEEPTOGETHER_CONST", "Per Column"),
+ {}
+};
+
+const TranslateId RID_STR_REPORTPRINTOPTION_CONST[] =
+{
+ NC_("RID_STR_REPORTPRINTOPTION_CONST", "All Pages"),
+ NC_("RID_STR_REPORTPRINTOPTION_CONST", "Not With Report Header"),
+ NC_("RID_STR_REPORTPRINTOPTION_CONST", "Not With Report Footer"),
+ NC_("RID_STR_REPORTPRINTOPTION_CONST", "Not With Report Header/Footer"),
+ {}
+};
+
+const TranslateId RID_STR_TYPE_CONST[] =
+{
+ NC_("RID_STR_TYPE_CONST", "Field or Formula"),
+ NC_("RID_STR_TYPE_CONST", "Function"),
+ NC_("RID_STR_TYPE_CONST", "Counter"),
+ NC_("RID_STR_TYPE_CONST", "User defined Function"),
+ {}
+};
+
+const TranslateId RID_STR_BOOL[] =
+{
+ NC_("RID_STR_BOOL", "No"),
+ NC_("RID_STR_BOOL", "Yes"),
+ {}
+};
+
+const TranslateId RID_STR_KEEPTOGETHER_CONST[] =
+{
+ NC_("RID_STR_KEEPTOGETHER_CONST", "No"),
+ NC_("RID_STR_KEEPTOGETHER_CONST", "Whole Group"),
+ NC_("RID_STR_KEEPTOGETHER_CONST", "With First Detail"),
+ {}
+};
+
+const TranslateId RID_STR_VERTICAL_ALIGN_CONST[] =
+{
+ NC_("RID_STR_VERTICAL_ALIGN_CONST", "Top"),
+ NC_("RID_STR_VERTICAL_ALIGN_CONST", "Middle"),
+ NC_("RID_STR_VERTICAL_ALIGN_CONST", "Bottom"),
+ {}
+};
+
+const TranslateId RID_STR_PARAADJUST_CONST[] =
+{
+ NC_("RID_STR_PARAADJUST_CONST", "Left"),
+ NC_("RID_STR_PARAADJUST_CONST", "Right"),
+ NC_("RID_STR_PARAADJUST_CONST", "Block"),
+ NC_("RID_STR_PARAADJUST_CONST", "Center"),
+ {}
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
diff --git a/reportdesign/inc/strings.hrc b/reportdesign/inc/strings.hrc
new file mode 100644
index 000000000..0a2ca496a
--- /dev/null
+++ b/reportdesign/inc/strings.hrc
@@ -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_INC_STRINGS_HRC
+#define INCLUDED_REPORTDESIGN_INC_STRINGS_HRC
+
+#define NC_(Context, String) TranslateId(Context, reinterpret_cast<char const *>(u8##String))
+
+#define RID_STR_PROPPAGE_DEFAULT NC_("RID_STR_PROPPAGE_DEFAULT", "General")
+#define RID_STR_PROPPAGE_DATA NC_("RID_STR_PROPPAGE_DATA", "Data")
+#define RID_STR_FORCENEWPAGE NC_("RID_STR_FORCENEWPAGE", "Force New Page")
+#define RID_STR_NEWROWORCOL NC_("RID_STR_NEWROWORCOL", "New Row Or Column")
+#define RID_STR_KEEPTOGETHER NC_("RID_STR_KEEPTOGETHER", "Keep Together")
+#define RID_STR_CANGROW NC_("RID_STR_CANGROW", "Can Grow")
+#define RID_STR_CANSHRINK NC_("RID_STR_CANSHRINK", "Can Shrink")
+#define RID_STR_REPEATSECTION NC_("RID_STR_REPEATSECTION", "Repeat Section")
+#define RID_STR_PRINTREPEATEDVALUES NC_("RID_STR_PRINTREPEATEDVALUES", "Print repeated values")
+#define RID_STR_CONDITIONALPRINTEXPRESSION NC_("RID_STR_CONDITIONALPRINTEXPRESSION", "Conditional Print Expression")
+#define RID_STR_STARTNEWCOLUMN NC_("RID_STR_STARTNEWCOLUMN", "Start new column")
+#define RID_STR_STARTNEWPAGE NC_("RID_STR_STARTNEWPAGE", "Start new page")
+#define RID_STR_RESETPAGENUMBER NC_("RID_STR_RESETPAGENUMBER", "Reset page number")
+#define RID_STR_CHARTTYPE NC_("RID_STR_CHARTTYPE", "Chart type")
+#define RID_STR_PRINTWHENGROUPCHANGE NC_("RID_STR_PRINTWHENGROUPCHANGE", "Print repeated value on group change")
+#define RID_STR_VISIBLE NC_("RID_STR_VISIBLE", "Visible")
+#define RID_STR_GROUPKEEPTOGETHER NC_("RID_STR_GROUPKEEPTOGETHER", "Group keep together")
+#define RID_STR_PAGEHEADEROPTION NC_("RID_STR_PAGEHEADEROPTION", "Page header")
+#define RID_STR_PAGEFOOTEROPTION NC_("RID_STR_PAGEFOOTEROPTION", "Page footer")
+#define RID_STR_DEEPTRAVERSING NC_("RID_STR_DEEPTRAVERSING", "Deep traversing")
+#define RID_STR_PREEVALUATED NC_("RID_STR_PREEVALUATED", "Pre evaluation")
+#define RID_STR_POSITIONX NC_("RID_STR_POSITIONX", "Position X")
+#define RID_STR_POSITIONY NC_("RID_STR_POSITIONY", "Position Y")
+#define RID_STR_WIDTH NC_("RID_STR_WIDTH", "Width")
+#define RID_STR_HEIGHT NC_("RID_STR_HEIGHT", "Height")
+#define RID_STR_AUTOGROW NC_("RID_STR_AUTOGROW", "Auto Grow")
+#define RID_STR_INITIALFORMULA NC_("RID_STR_INITIALFORMULA", "Initial value")
+#define RID_STR_PRESERVEIRI NC_("RID_STR_PRESERVEIRI", "Preserve as Link")
+#define RID_STR_FORMULA NC_("RID_STR_FORMULA", "Formula")
+#define RID_STR_DATAFIELD NC_("RID_STR_DATAFIELD", "Data field")
+#define RID_STR_FONT NC_("RID_STR_FONT", "Font")
+#define RID_STR_BACKCOLOR NC_("RID_STR_BACKCOLOR", "Background color")
+#define RID_STR_BACKTRANSPARENT NC_("RID_STR_BACKTRANSPARENT", "Background Transparent")
+#define RID_STR_CONTROLBACKGROUNDTRANSPARENT NC_("RID_STR_CONTROLBACKGROUNDTRANSPARENT", "Background Transparent")
+#define RID_STR_OVERLAP_OTHER_CONTROL NC_("RID_STR_OVERLAP_OTHER_CONTROL", "This operation is not allowed. The control overlaps with another one.")
+#define RID_STR_ILLEGAL_POSITION NC_("RID_STR_ILLEGAL_POSITION", "This position can not be set. It is invalid.")
+#define RID_STR_SCOPE_GROUP NC_("RID_STR_SCOPE_GROUP", "Group: %1")
+#define RID_STR_FORMULALIST NC_("RID_STR_FORMULALIST", "Function")
+#define RID_STR_SCOPE NC_("RID_STR_SCOPE", "Scope")
+#define RID_STR_TYPE NC_("RID_STR_TYPE", "Data Field Type")
+#define RID_STR_MASTERFIELDS NC_("RID_STR_MASTERFIELDS", "Link master fields")
+#define RID_STR_DETAILFIELDS NC_("RID_STR_DETAILFIELDS", "Link slave fields")
+#define RID_STR_EXPLANATION ("Charts can be used to display detailed data about the current record of the report. To do this, you can specify which columns in the chart match which columns in the report.")
+#define RID_STR_DETAILLABEL NC_("RID_STR_DETAILLABEL", "Chart")
+#define RID_STR_MASTERLABEL NC_("RID_STR_MASTERLABEL", "Report")
+#define RID_STR_PREVIEW_COUNT NC_("RID_STR_PREVIEW_COUNT", "Preview Row(s)")
+#define RID_STR_AREA NC_("RID_STR_AREA", "Area")
+#define RID_STR_MIMETYPE NC_("RID_STR_MIMETYPE", "Report Output Format")
+#define RID_STR_VERTICALALIGN NC_("RID_STR_VERTICALALIGN", "Vert. Alignment")
+#define RID_STR_PARAADJUST NC_("RID_STR_PARAADJUST", "Horz. Alignment")
+#define RID_STR_F_COUNTER NC_("RID_STR_F_COUNTER", "Counter")
+#define RID_STR_F_ACCUMULATION NC_("RID_STR_F_ACCUMULATION", "Accumulation")
+#define RID_STR_F_MINIMUM NC_("RID_STR_F_MINIMUM", "Minimum")
+#define RID_STR_F_MAXIMUM NC_("RID_STR_F_MAXIMUM", "Maximum")
+
+#define RID_STR_BRWTITLE_PROPERTIES NC_("RID_STR_BRWTITLE_PROPERTIES", "Properties: ")
+#define RID_STR_BRWTITLE_NO_PROPERTIES NC_("RID_STR_BRWTITLE_NO_PROPERTIES", "No Control marked")
+#define RID_STR_BRWTITLE_MULTISELECT NC_("RID_STR_BRWTITLE_MULTISELECT", "Multiselection")
+#define RID_STR_PROPTITLE_IMAGECONTROL NC_("RID_STR_PROPTITLE_IMAGECONTROL", "Image Control")
+#define RID_STR_PROPTITLE_FIXEDTEXT NC_("RID_STR_PROPTITLE_FIXEDTEXT", "Label field")
+#define RID_STR_PROPTITLE_FIXEDLINE NC_("RID_STR_PROPTITLE_FIXEDLINE", "Line")
+#define RID_STR_PROPTITLE_FORMATTED NC_("RID_STR_PROPTITLE_FORMATTED", "Formatted Field")
+#define RID_STR_PROPTITLE_SHAPE NC_("RID_STR_PROPTITLE_SHAPE", "Shape")
+#define RID_STR_PROPTITLE_REPORT NC_("RID_STR_PROPTITLE_REPORT", "Report")
+#define RID_STR_PROPTITLE_SECTION NC_("RID_STR_PROPTITLE_SECTION", "Section")
+#define RID_STR_PROPTITLE_FUNCTION NC_("RID_STR_PROPTITLE_FUNCTION", "Function")
+#define RID_STR_PROPTITLE_GROUP NC_("RID_STR_PROPTITLE_GROUP", "Group")
+#define RID_STR_UNDO_CHANGEPOSITION NC_("RID_STR_UNDO_CHANGEPOSITION", "Change Object")
+#define RID_STR_UNDO_MOVE_GROUP NC_("RID_STR_UNDO_MOVE_GROUP", "Move Group(s)")
+#define RID_STR_UNDO_CONDITIONAL_FORMATTING NC_("RID_STR_UNDO_CONDITIONAL_FORMATTING", "Conditional Formatting")
+#define RID_STR_UNDO_REMOVE_REPORTHEADERFOOTER NC_("RID_STR_UNDO_REMOVE_REPORTHEADERFOOTER", "Remove report header / report footer")
+#define RID_STR_UNDO_ADD_REPORTHEADERFOOTER NC_("RID_STR_UNDO_ADD_REPORTHEADERFOOTER", "Add report header / report footer")
+// The # character is used for replacing
+#define RID_STR_UNDO_PROPERTY NC_("RID_STR_UNDO_PROPERTY", "Change property '#'")
+#define RID_STR_UNDO_ADD_GROUP_HEADER NC_("RID_STR_UNDO_ADD_GROUP_HEADER", "Add group header ")
+#define RID_STR_UNDO_REMOVE_GROUP_HEADER NC_("RID_STR_UNDO_REMOVE_GROUP_HEADER", "Remove group header ")
+#define RID_STR_UNDO_ADD_GROUP_FOOTER NC_("RID_STR_UNDO_ADD_GROUP_FOOTER", "Add group footer ")
+#define RID_STR_UNDO_REMOVE_GROUP_FOOTER NC_("RID_STR_UNDO_REMOVE_GROUP_FOOTER", "Remove group footer ")
+#define RID_STR_UNDO_ADDFUNCTION NC_("RID_STR_UNDO_ADDFUNCTION", "Add function")
+#define STR_RPT_LABEL NC_("STR_RPT_LABEL", "~Report name")
+#define RID_STR_UNDO_REMOVE_GROUP NC_("RID_STR_UNDO_REMOVE_GROUP", "Delete Group")
+#define RID_STR_UNDO_APPEND_GROUP NC_("RID_STR_UNDO_APPEND_GROUP", "Add Group")
+#define RID_STR_UNDO_REMOVE_SELECTION NC_("RID_STR_UNDO_REMOVE_SELECTION", "Delete Selection")
+#define RID_STR_UNDO_REMOVE_FUNCTION NC_("RID_STR_UNDO_REMOVE_FUNCTION", "Delete Function")
+#define RID_STR_UNDO_CHANGE_SIZE NC_("RID_STR_UNDO_CHANGE_SIZE", "Change Size")
+#define RID_STR_UNDO_PASTE NC_("RID_STR_UNDO_PASTE", "Paste")
+#define RID_STR_UNDO_INSERT_CONTROL NC_("RID_STR_UNDO_INSERT_CONTROL", "Insert Control")
+#define RID_STR_UNDO_DELETE_CONTROL NC_("RID_STR_UNDO_DELETE_CONTROL", "Delete Control")
+// Please try to avoid spaces in the name. It is used as a programmatic one.
+#define RID_STR_GROUPHEADER NC_("RID_STR_GROUPHEADER", "GroupHeader")
+// Please try to avoid spaces in the name. It is used as a programmatic one.
+#define RID_STR_GROUPFOOTER NC_("RID_STR_GROUPFOOTER", "GroupFooter")
+#define RID_STR_FIELDSELECTION NC_("RID_STR_FIELDSELECTION", "Add field:")
+#define RID_STR_FILTER NC_("RID_STR_FILTER", "Filter")
+#define RID_STR_UNDO_ALIGNMENT NC_("RID_STR_UNDO_ALIGNMENT", "Change Alignment")
+// # will be replaced with a name.
+#define RID_STR_HEADER NC_("RID_STR_HEADER", "# Header")
+// # will be replaced with a name.";
+#define RID_STR_FOOTER NC_("RID_STR_FOOTER", "# Footer")
+#define RID_STR_IMPORT_GRAPHIC NC_("RID_STR_IMPORT_GRAPHIC", "Insert graphics")
+#define RID_STR_DELETE NC_("RID_STR_DELETE", "Delete")
+#define RID_STR_FUNCTION NC_("RID_STR_FUNCTION", "Function")
+#define RID_STR_COULD_NOT_CREATE_REPORT NC_("RID_STR_COULD_NOT_CREATE_REPORT", "An error occurred while creating the report.")
+#define RID_STR_CAUGHT_FOREIGN_EXCEPTION NC_("RID_STR_CAUGHT_FOREIGN_EXCEPTION", "An exception of type $type$ was caught.")
+#define RID_STR_UNDO_CHANGEFONT NC_("RID_STR_UNDO_CHANGEFONT", "Change font")
+#define RID_STR_UNDO_CHANGEPAGE NC_("RID_STR_UNDO_CHANGEPAGE", "Change page attributes")
+#define RID_STR_PAGEHEADERFOOTER_INSERT NC_("RID_STR_PAGEHEADERFOOTER_INSERT", "Insert Page Header/Footer")
+#define RID_STR_PAGEHEADERFOOTER_DELETE NC_("RID_STR_PAGEHEADERFOOTER_DELETE", "Delete Page Header/Footer")
+#define RID_STR_REPORTHEADERFOOTER_INSERT NC_("RID_STR_REPORTHEADERFOOTER_INSERT", "Insert Report Header/Footer")
+#define RID_STR_REPORTHEADERFOOTER_DELETE NC_("RID_STR_REPORTHEADERFOOTER_DELETE", "Delete Report Header/Footer")
+#define RID_ERR_NO_COMMAND NC_("RID_ERR_NO_COMMAND", "The report can not be executed unless it is bound to content.")
+#define RID_ERR_NO_OBJECTS NC_("RID_ERR_NO_OBJECTS", "The report can not be executed unless at least one object has been inserted.")
+#define RID_STR_UNDO_SHRINK NC_("RID_STR_UNDO_SHRINK", "Shrink Section")
+#define RID_STR_DETAIL NC_("RID_STR_DETAIL", "Detail")
+#define RID_STR_PAGE_HEADER NC_("RID_STR_PAGE_HEADER", "Page Header")
+#define RID_STR_PAGE_FOOTER NC_("RID_STR_PAGE_FOOTER", "Page Footer")
+#define RID_STR_REPORT_HEADER NC_("RID_STR_REPORT_HEADER", "Report Header")
+#define RID_STR_REPORT_FOOTER NC_("RID_STR_REPORT_FOOTER", "Report Footer")
+
+#define STR_NUMBERED_CONDITION NC_("STR_NUMBERED_CONDITION", "Condition $number$")
+
+#define STR_RPT_EXPRESSION NC_("STR_RPT_EXPRESSION", "Field/Expression")
+#define STR_RPT_PREFIXCHARS NC_("STR_RPT_PREFIXCHARS", "Prefix Characters")
+#define STR_RPT_YEAR NC_("STR_RPT_YEAR", "Year")
+#define STR_RPT_QUARTER NC_("STR_RPT_QUARTER", "Quarter")
+#define STR_RPT_MONTH NC_("STR_RPT_MONTH", "Month")
+#define STR_RPT_WEEK NC_("STR_RPT_WEEK", "Week")
+#define STR_RPT_DAY NC_("STR_RPT_DAY", "Day")
+#define STR_RPT_HOUR NC_("STR_RPT_HOUR", "Hour")
+#define STR_RPT_MINUTE NC_("STR_RPT_MINUTE", "Minute")
+#define STR_RPT_INTERVAL NC_("STR_RPT_INTERVAL", "Interval")
+#define STR_RPT_HELP_FIELD NC_("STR_RPT_HELP_FIELD", "Select a field or type an expression to sort or group on.")
+#define STR_RPT_HELP_HEADER NC_("STR_RPT_HELP_HEADER", "Display a header for this group?")
+#define STR_RPT_HELP_FOOTER NC_("STR_RPT_HELP_FOOTER", "Display a footer for this group?")
+#define STR_RPT_HELP_GROUPON NC_("STR_RPT_HELP_GROUPON", "Select the value or range of values that starts a new group.")
+#define STR_RPT_HELP_INTERVAL NC_("STR_RPT_HELP_INTERVAL", "Interval or number of characters to group on.")
+#define STR_RPT_HELP_KEEP NC_("STR_RPT_HELP_KEEP", "Keep group together on one page?")
+#define STR_RPT_HELP_SORT NC_("STR_RPT_HELP_SORT", "Select ascending or descending sort order. Ascending means from A to Z or 0 to 9")
+
+// The space after the word is no error. #PAGENUMBER# is a replacement and & must not be translated as well as "
+#define STR_RPT_PN_PAGE NC_("STR_RPT_PN_PAGE", "\"Page \" & #PAGENUMBER#")
+// The space before and after the word is no error. #PAGECOUNT# is a replacement and & must not be translated as well as "
+#define STR_RPT_PN_PAGE_OF NC_("STR_RPT_PN_PAGE_OF", " & \" of \" & #PAGECOUNT#")
+
+#define RID_STR_FUNCTIONS NC_("RID_STR_FUNCTIONS", "Functions")
+#define RID_STR_GROUPS NC_("RID_STR_GROUPS", "Groups")
+
+#define RID_STR_GROUP_HEADER NC_("RID_STR_GROUP_HEADER", "Group Header")
+#define RID_STR_GROUP_FOOTER NC_("RID_STR_GROUP_FOOTER", "Group Footer")
+#define RID_STR_ERROR_WRONG_ARGUMENT NC_("RID_STR_ERROR_WRONG_ARGUMENT", "You tried to set an illegal argument. Please have a look at '#1' for valid arguments.")
+#define RID_STR_ARGUMENT_IS_NULL NC_("RID_STR_ARGUMENT_IS_NULL", "The element is invalid.")
+#define RID_STR_FIXEDTEXT NC_("RID_STR_FIXEDTEXT", "Label field")
+#define RID_STR_FORMATTEDFIELD NC_("RID_STR_FORMATTEDFIELD", "Formatted field")
+#define RID_STR_IMAGECONTROL NC_("RID_STR_IMAGECONTROL", "Image control")
+#define RID_STR_REPORT NC_("RID_STR_REPORT", "Report")
+#define RID_STR_SHAPE NC_("RID_STR_SHAPE", "Shape")
+#define RID_STR_FIXEDLINE NC_("RID_STR_FIXEDLINE", "Fixed line")
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/reportdesign/inc/strings.hxx b/reportdesign/inc/strings.hxx
new file mode 100644
index 000000000..565658b24
--- /dev/null
+++ b/reportdesign/inc/strings.hxx
@@ -0,0 +1,279 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
+/*
+ * 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/.
+ */
+#pragma once
+
+#include <rtl/ustring.hxx>
+
+// Dialog Controls
+
+inline constexpr OUStringLiteral RID_STR_CLASS_FIXEDTEXT = u"Label";
+inline constexpr OUStringLiteral RID_STR_CLASS_FIXEDLINE = u"Line";
+inline constexpr OUStringLiteral RID_STR_CLASS_IMAGECONTROL = u"Graphic";
+inline constexpr OUStringLiteral RID_STR_CLASS_FORMATTEDFIELD = u"FormattedField";
+
+//= service names
+
+inline constexpr OUStringLiteral SERVICE_FIXEDTEXT = u"com.sun.star.report.FixedText";
+inline constexpr OUStringLiteral SERVICE_FORMATTEDFIELD = u"com.sun.star.report.FormattedField";
+inline constexpr OUStringLiteral SERVICE_IMAGECONTROL = u"com.sun.star.report.ImageControl";
+inline constexpr OUStringLiteral SERVICE_FORMATCONDITION = u"com.sun.star.report.FormatCondition";
+inline constexpr OUStringLiteral SERVICE_FUNCTION = u"com.sun.star.report.Function";
+inline constexpr OUStringLiteral SERVICE_REPORTDEFINITION = u"com.sun.star.report.ReportDefinition";
+inline constexpr OUStringLiteral SERVICE_SHAPE = u"com.sun.star.report.Shape";
+inline constexpr OUStringLiteral SERVICE_FIXEDLINE = u"com.sun.star.report.FixedLine";
+inline constexpr OUStringLiteral SERVICE_SECTION = u"com.sun.star.report.Section";
+inline constexpr OUStringLiteral SERVICE_GROUP = u"com.sun.star.report.Group";
+
+//= property names
+
+#define PROPERTY_VISIBLE "Visible"
+#define PROPERTY_NAME "Name"
+#define PROPERTY_HEIGHT "Height"
+#define PROPERTY_BACKCOLOR "BackColor"
+#define PROPERTY_BACKTRANSPARENT "BackTransparent"
+#define PROPERTY_CONTROLBACKGROUND "ControlBackground"
+#define PROPERTY_CONTROLBACKGROUNDTRANSPARENT "ControlBackgroundTransparent"
+#define PROPERTY_FORCENEWPAGE "ForceNewPage"
+#define PROPERTY_NEWROWORCOL "NewRowOrCol"
+#define PROPERTY_KEEPTOGETHER "KeepTogether"
+#define PROPERTY_CANGROW "CanGrow"
+#define PROPERTY_CANSHRINK "CanShrink"
+#define PROPERTY_REPEATSECTION "RepeatSection"
+#define PROPERTY_GROUP "Group"
+#define PROPERTY_REPORTDEFINITION "ReportDefinition"
+
+#define PROPERTY_GROUPINTERVAL "GroupInterval"
+#define PROPERTY_EXPRESSION "Expression"
+#define PROPERTY_GROUPON "GroupOn"
+#define PROPERTY_SORTASCENDING "SortAscending"
+
+#define PROPERTY_MASTERFIELDS "MasterFields"
+#define PROPERTY_DETAILFIELDS "DetailFields"
+#define PROPERTY_CAPTION "Caption"
+#define PROPERTY_COMMAND "Command"
+#define PROPERTY_BACKGRAPHICLOCATION "BackGraphicLocation"
+#define PROPERTY_ORIENTATION "Orientation"
+#define PROPERTY_PAPERSIZE "Size"
+#define PROPERTY_GROUPKEEPTOGETHER "GroupKeepTogether"
+#define PROPERTY_PAGEHEADEROPTION "PageHeaderOption"
+#define PROPERTY_PAGEFOOTEROPTION "PageFooterOption"
+#define PROPERTY_COMMANDTYPE "CommandType"
+#define PROPERTY_REPORTHEADERON "ReportHeaderOn"
+#define PROPERTY_REPORTFOOTERON "ReportFooterOn"
+#define PROPERTY_PAGEHEADERON "PageHeaderOn"
+#define PROPERTY_PAGEFOOTERON "PageFooterOn"
+#define PROPERTY_HEADERON u"HeaderOn"
+#define PROPERTY_FOOTERON u"FooterOn"
+#define PROPERTY_WIDTH "Width"
+#define PROPERTY_POSITIONX "PositionX"
+#define PROPERTY_POSITIONY "PositionY"
+#define PROPERTY_AUTOGROW "AutoGrow"
+#define PROPERTY_MINHEIGHT "MinHeight"
+#define PROPERTY_DATAFIELD "DataField"
+#define PROPERTY_PARAADJUST "ParaAdjust"
+#define PROPERTY_FONTDESCRIPTOR "FontDescriptor"
+#define PROPERTY_FONTDESCRIPTORASIAN "FontDescriptorAsian"
+#define PROPERTY_FONTDESCRIPTORCOMPLEX "FontDescriptorComplex"
+#define PROPERTY_CONTROLTEXTEMPHASISMARK "ControlTextEmphasis"
+#define PROPERTY_CHARRELIEF "CharRelief"
+#define PROPERTY_CHARCOLOR "CharColor"
+#define PROPERTY_VERTICALALIGN "VerticalAlign"
+#define PROPERTY_IMAGEURL "ImageURL"
+#define PROPERTY_CHARUNDERLINECOLOR "CharUnderlineColor"
+#define PROPERTY_LABEL "Label"
+#define PROPERTY_EFFECTIVEDEFAULT "EffectiveDefault"
+#define PROPERTY_EFFECTIVEMAX "EffectiveMax"
+#define PROPERTY_EFFECTIVEMIN "EffectiveMin"
+#define PROPERTY_FORMATKEY "FormatKey"
+#define PROPERTY_MAXTEXTLEN "MaxTextLen"
+#define PROPERTY_FORMATSSUPPLIER "FormatsSupplier"
+#define PROPERTY_CONTROLBORDER "ControlBorder"
+#define PROPERTY_CONTROLBORDERCOLOR "ControlBorderColor"
+#define PROPERTY_BORDER "Border"
+#define PROPERTY_BORDERCOLOR "BorderColor"
+#define PROPERTY_DEFAULTCONTROL "DefaultControl"
+
+#define PROPERTY_LEFTMARGIN "LeftMargin"
+#define PROPERTY_RIGHTMARGIN "RightMargin"
+#define PROPERTY_TOPMARGIN "TopMargin"
+#define PROPERTY_BOTTOMMARGIN "BottomMargin"
+
+#define PROPERTY_PRINTREPEATEDVALUES "PrintRepeatedValues"
+#define PROPERTY_CONDITIONALPRINTEXPRESSION "ConditionalPrintExpression"
+#define PROPERTY_STARTNEWCOLUMN "StartNewColumn"
+#define PROPERTY_RESETPAGENUMBER "ResetPageNumber"
+#define PROPERTY_PRINTWHENGROUPCHANGE "PrintWhenGroupChange"
+#define PROPERTY_STATE "State"
+#define PROPERTY_TIME_STATE "TimeState"
+#define PROPERTY_DATE_STATE "DateState"
+#define PROPERTY_FONTCHARWIDTH "FontCharWidth"
+#define PROPERTY_FONTCHARSET "CharFontCharSet"
+#define PROPERTY_FONTFAMILY "CharFontFamily"
+#define PROPERTY_CHARFONTHEIGHT "CharHeight"
+#define PROPERTY_FONTHEIGHT "FontHeight"
+#define PROPERTY_FONTKERNING "FontKerning"
+#define PROPERTY_FONT "FontDescriptor"
+#define PROPERTY_FONTNAME "FontName"
+#define PROPERTY_FONTORIENTATION "CharRotation"
+#define PROPERTY_FONTPITCH "CharFontPitch"
+#define PROPERTY_CHARSTRIKEOUT "CharStrikeout"
+#define PROPERTY_FONTSTRIKEOUT "FontStrikeout"
+#define PROPERTY_FONTSTYLENAME "CharFontStyleName"
+#define PROPERTY_FONTUNDERLINE "CharUnderline"
+#define PROPERTY_FONTWEIGHT "CharWeight"
+#define PROPERTY_FONTWIDTH "FontWidth"
+#define PROPERTY_FONTTYPE "FontType"
+
+#define PROPERTY_ENABLED "Enabled"
+
+#define PROPERTY_CHAREMPHASIS "CharEmphasis"
+#define PROPERTY_CHARFONTNAME "CharFontName"
+#define PROPERTY_CHARFONTSTYLENAME "CharFontStyleName"
+#define PROPERTY_CHARFONTFAMILY "CharFontFamily"
+#define PROPERTY_CHARFONTCHARSET "CharFontCharSet"
+#define PROPERTY_CHARFONTPITCH "CharFontPitch"
+#define PROPERTY_CHARHEIGHT "CharHeight"
+#define PROPERTY_CHARUNDERLINE "CharUnderline"
+#define PROPERTY_CHARWEIGHT "CharWeight"
+#define PROPERTY_CHARPOSTURE "CharPosture"
+#define PROPERTY_CHARWORDMODE "CharWordMode"
+#define PROPERTY_CHARROTATION "CharRotation"
+#define PROPERTY_CHARSCALEWIDTH "CharScaleWidth"
+
+// Asian
+#define PROPERTY_CHAREMPHASISASIAN "CharEmphasisAsian"
+#define PROPERTY_CHARFONTNAMEASIAN "CharFontNameAsian"
+#define PROPERTY_CHARFONTSTYLENAMEASIAN "CharFontStyleNameAsian"
+#define PROPERTY_CHARFONTFAMILYASIAN "CharFontFamilyAsian"
+#define PROPERTY_CHARFONTCHARSETASIAN "CharFontCharSetAsian"
+#define PROPERTY_CHARFONTPITCHASIAN "CharFontPitchAsian"
+#define PROPERTY_CHARHEIGHTASIAN "CharHeightAsian"
+#define PROPERTY_CHARUNDERLINEASIAN "CharUnderlineAsian"
+#define PROPERTY_CHARWEIGHTASIAN "CharWeightAsian"
+#define PROPERTY_CHARPOSTUREASIAN "CharPostureAsian"
+#define PROPERTY_CHARWORDMODEASIAN "CharWordModeAsian"
+#define PROPERTY_CHARROTATIONASIAN "CharRotationAsian"
+#define PROPERTY_CHARSCALEWIDTHASIAN "CharScaleWidthAsian"
+#define PROPERTY_CHARLOCALEASIAN "CharLocaleAsian"
+
+// Complex
+#define PROPERTY_CHAREMPHASISCOMPLEX "CharEmphasisComplex"
+#define PROPERTY_CHARFONTNAMECOMPLEX "CharFontNameComplex"
+#define PROPERTY_CHARFONTSTYLENAMECOMPLEX "CharFontStyleNameComplex"
+#define PROPERTY_CHARFONTFAMILYCOMPLEX "CharFontFamilyComplex"
+#define PROPERTY_CHARFONTCHARSETCOMPLEX "CharFontCharSetComplex"
+#define PROPERTY_CHARFONTPITCHCOMPLEX "CharFontPitchComplex"
+#define PROPERTY_CHARHEIGHTCOMPLEX "CharHeightComplex"
+#define PROPERTY_CHARUNDERLINECOMPLEX "CharUnderlineComplex"
+#define PROPERTY_CHARWEIGHTCOMPLEX "CharWeightComplex"
+#define PROPERTY_CHARPOSTURECOMPLEX "CharPostureComplex"
+#define PROPERTY_CHARWORDMODECOMPLEX "CharWordModeComplex"
+#define PROPERTY_CHARROTATIONCOMPLEX "CharRotationComplex"
+#define PROPERTY_CHARSCALEWIDTHCOMPLEX "CharScaleWidthComplex"
+#define PROPERTY_CHARLOCALECOMPLEX "CharLocaleComplex"
+
+#define PROPERTY_STATUSINDICATOR "StatusIndicator"
+#define PROPERTY_SECTION "Section"
+#define PROPERTY_FILTER "Filter"
+#define PROPERTY_ESCAPEPROCESSING "EscapeProcessing"
+
+#define PROPERTY_MULTILINE "MultiLine"
+#define PROPERTY_ACTIVECONNECTION "ActiveConnection"
+#define PROPERTY_DATASOURCENAME "DataSourceName"
+#define PROPERTY_FORMULA "Formula"
+#define PROPERTY_INITIALFORMULA "InitialFormula"
+#define PROPERTY_PREEVALUATED "PreEvaluated"
+#define PROPERTY_DEEPTRAVERSING "DeepTraversing"
+#define PROPERTY_MIMETYPE "MimeType"
+#define PROPERTY_BACKGROUNDCOLOR "BackgroundColor"
+#define PROPERTY_TEXT "Text"
+#define PROPERTY_TEXTCOLOR "TextColor"
+#define PROPERTY_TEXTLINECOLOR "TextLineColor"
+#define PROPERTY_FONTRELIEF "FontRelief"
+#define PROPERTY_FONTEMPHASISMARK "FontEmphasisMark"
+#define PROPERTY_ZORDER "ZOrder"
+#define PROPERTY_OPAQUE "Opaque"
+#define PROPERTY_TRANSFORMATION "Transformation"
+#define PROPERTY_CUSTOMSHAPEENGINE "CustomShapeEngine"
+#define PROPERTY_CUSTOMSHAPEDATA "CustomShapeData"
+#define PROPERTY_CUSTOMSHAPEGEOMETRY "CustomShapeGeometry"
+
+#define PROPERTY_NUMBERINGTYPE "NumberingType"
+#define PROPERTY_PAGESTYLELAYOUT "PageStyleLayout"
+#define PROPERTY_ISLANDSCAPE "IsLandscape"
+#define PROPERTY_ALIGN "Align"
+#define PROPERTY_TYPE "Type"
+
+#define PROPERTY_PRESERVEIRI "PreserveIRI"
+#define PROPERTY_SCALEMODE "ScaleMode"
+
+#define PROPERTY_LINESTYLE "LineStyle"
+#define PROPERTY_LINEDASH "LineDash"
+#define PROPERTY_LINECOLOR "LineColor"
+#define PROPERTY_LINETRANSPARENCE "LineTransparence"
+#define PROPERTY_LINEWIDTH "LineWidth"
+
+#define PROPERTY_CHARFLASH "CharFlash"
+#define PROPERTY_CHARESCAPEMENTHEIGHT "CharEscapementHeight"
+#define PROPERTY_CHARLOCALE "CharLocale"
+#define PROPERTY_CHARESCAPEMENT "CharEscapement"
+#define PROPERTY_CHARCASEMAP "CharCaseMap"
+#define PROPERTY_CHARCOMBINEISON "CharCombineIsOn"
+#define PROPERTY_CHARCOMBINEPREFIX "CharCombinePrefix"
+#define PROPERTY_CHARCOMBINESUFFIX "CharCombineSuffix"
+#define PROPERTY_CHARHIDDEN "CharHidden"
+#define PROPERTY_CHARSHADOWED "CharShadowed"
+#define PROPERTY_CHARCONTOURED "CharContoured"
+#define PROPERTY_CHARAUTOKERNING "CharAutoKerning"
+#define PROPERTY_CHARKERNING "CharKerning"
+#define PROPERTY_HYPERLINKURL "HyperLinkURL"
+#define PROPERTY_HYPERLINKTARGET "HyperLinkTarget"
+#define PROPERTY_HYPERLINKNAME "HyperLinkName"
+#define PROPERTY_VISITEDCHARSTYLENAME "VisitedCharStyleName"
+#define PROPERTY_UNVISITEDCHARSTYLENAME "UnvisitedCharStyleName"
+#define PROPERTY_APPLYFILTER "ApplyFilter"
+#define PROPERTY_MAXROWS "MaxRows"
+
+#define PROPERTY_REPORTNAME "ReportName"
+inline constexpr OUStringLiteral CFG_REPORTDESIGNER = u"SunReportBuilder";
+inline constexpr OUStringLiteral DBREPORTHEADER = u"ReportHeader";
+inline constexpr OUStringLiteral DBREPORTFOOTER = u"ReportFooter";
+inline constexpr OUStringLiteral DBPAGEHEADER = u"PageHeader";
+inline constexpr OUStringLiteral DBPAGEFOOTER = u"PageFooter";
+inline constexpr OUStringLiteral DBGROUPHEADER = u"GroupHeader";
+inline constexpr OUStringLiteral DBGROUPFOOTER = u"GroupFooter";
+inline constexpr OUStringLiteral DBDETAIL = u"Detail";
+inline constexpr OUStringLiteral REPORTCONTROLFORMAT = u"ReportControlFormat";
+inline constexpr OUStringLiteral CURRENT_WINDOW = u"CurrentWindow";
+#define PROPERTY_FONTCOLOR "FontColor"
+#define PROPERTY_EMPTY_IS_NULL "ConvertEmptyToNull"
+#define PROPERTY_FILTERPROPOSAL "UseFilterValueProposal"
+#define PROPERTY_POSITION "Position"
+#define PROPERTY_FORMATKEYDATE "FormatKeyDate"
+#define PROPERTY_FORMATKEYTIME "FormatKeyTime"
+inline constexpr OUStringLiteral DBOVERLAPPEDCONTROL = u"OverlappedControl";
+#define PROPERTY_FORMULALIST "FormulaList"
+#define PROPERTY_SCOPE "Scope"
+#define PROPERTY_CHARTTYPE "ChartType"
+#define PROPERTY_PREVIEW_COUNT "RowLimit"
+#define PROPERTY_TITLE "Title"
+#define PROPERTY_AREA "Area"
+#define PROPERTY_FILLCOLOR "FillColor"
+inline constexpr OUStringLiteral DBTEXTBOXBOUNDCONTENT = u"TextBoxBoundContent";
+
+inline constexpr OUStringLiteral SERVICE_SETTINGSIMPORTER = u"com.sun.star.comp.Report.XMLOasisSettingsImporter";
+inline constexpr OUStringLiteral SERVICE_STYLESIMPORTER = u"com.sun.star.comp.Report.XMLOasisStylesImporter";
+inline constexpr OUStringLiteral SERVICE_CONTENTIMPORTER = u"com.sun.star.comp.Report.XMLOasisContentImporter";
+inline constexpr OUStringLiteral SERVICE_METAIMPORTER = u"com.sun.star.comp.Report.XMLOasisMetaImporter";
+#define PROPERTY_BORDERLEFT "BorderLeft"
+#define PROPERTY_BORDERRIGHT "BorderRight"
+#define PROPERTY_BORDERTOP "BorderTop"
+#define PROPERTY_BORDERBOTTOM "BorderBottom"
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */