/* -*- 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_UI_INC_REPORTSECTION_HXX #define INCLUDED_REPORTDESIGN_SOURCE_UI_INC_REPORTSECTION_HXX #include #include "RptPage.hxx" #include #include #include #include "ReportDefines.hxx" #include "dlgedfunc.hxx" #include #include #include namespace rptui { class OReportModel; class OReportPage; class OSectionView; class OSectionWindow; class OReportSection : public vcl::Window , public ::cppu::BaseMutex , public ::comphelper::OPropertyChangeListener , public DropTargetHelper { OReportPage* m_pPage; OSectionView* m_pView; VclPtr m_pParent; ::std::unique_ptr m_pFunc; std::shared_ptr m_pModel; ::rtl::Reference< comphelper::OPropertyChangeMultiplexer> m_pMulti; ::rtl::Reference< comphelper::OPropertyChangeMultiplexer> m_pReportListener; ::com::sun::star::uno::Reference< ::com::sun::star::report::XSection > m_xSection; sal_Int32 m_nPaintEntranceCount; DlgEdMode m_eMode; /** fills the section with all control from the report section */ void fill(); /** checks all objects if they fit in the new paper width. */ void impl_adjustObjectSizePosition(sal_Int32 i_nPaperWidth,sal_Int32 i_nLeftMargin,sal_Int32 i_nRightMargin); OReportSection(OReportSection&) SAL_DELETED_FUNCTION; void operator =(OReportSection&) SAL_DELETED_FUNCTION; protected: // DropTargetHelper overridables virtual sal_Int8 AcceptDrop( const AcceptDropEvent& _rEvt ) SAL_OVERRIDE; virtual sal_Int8 ExecuteDrop( const ExecuteDropEvent& _rEvt ) SAL_OVERRIDE; // window overrides virtual void Paint( vcl::RenderContext& rRenderContext, const Rectangle& rRect ) SAL_OVERRIDE; virtual void MouseMove( const MouseEvent& rMEvt ) SAL_OVERRIDE; virtual void Command( const CommandEvent& rCEvt ) SAL_OVERRIDE; virtual void Resize() SAL_OVERRIDE; // OPropertyChangeListener virtual void _propertyChanged(const ::com::sun::star::beans::PropertyChangeEvent& _rEvent) throw( ::com::sun::star::uno::RuntimeException) SAL_OVERRIDE; public: OReportSection(OSectionWindow* _pParent,const ::com::sun::star::uno::Reference< ::com::sun::star::report::XSection >& _xSection); virtual ~OReportSection(); virtual void dispose() SAL_OVERRIDE; // window overrides virtual void MouseButtonDown( const MouseEvent& rMEvt ) SAL_OVERRIDE; virtual void MouseButtonUp( const MouseEvent& rMEvt ) SAL_OVERRIDE; /** copies the current selection in this section @param _rAllreadyCopiedObjects This is an out/in put param which contains all already copied objects. */ void Copy(::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue >& _rAllreadyCopiedObjects); void Copy(::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue >& _rAllreadyCopiedObjects,bool _bEraseAnddNoClone); /** paste a new control in this section @param _aAllreadyCopiedObjects objects to paste into the section. Only objects are pasted where the name is equal to the section name. @param _bForce If set to than the objects will be copied into this section. The name is not compared in this case. */ void Paste(const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue >& _aAllreadyCopiedObjects,bool _bForce = false); /** Deletes the current selection in this section * */ void Delete(); /** All objects will be marked. */ void SelectAll(const sal_uInt16 _nObjectType); /** makes the grid visible * * \param _bVisible when the grid is made visible */ void SetGridVisible(bool _bVisible); inline OSectionWindow* getSectionWindow() const { return m_pParent; } inline OSectionView& getSectionView() const { return *m_pView; } inline OReportPage* getPage() const { return m_pPage; } inline ::com::sun::star::uno::Reference< ::com::sun::star::report::XSection > getSection() const { return m_xSection; } DlgEdMode GetMode() const { return m_eMode; } void SetMode( DlgEdMode m_eMode ); /** checks if the keycode is known by the child windows @param _rCode the keycode @return if the keycode is handled otherwise */ bool handleKeyEvent(const KeyEvent& _rEvent); /** returns the current control report model or */ ::com::sun::star::uno::Reference< ::com::sun::star::report::XReportComponent > getCurrentControlModel() const; /** fills the vector with all selected control models /param _rSelection The vector will be filled and will not be cleared before. */ void fillControlModelSelection(::std::vector< ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > >& _rSelection) const; /** creates a default object (custom shape) * * @param _sType */ void createDefault(const OUString& _sType); /** creates a new default custom shape * * \param _sType * \param _pObj */ static void createDefault(const OUString& _sType,SdrObject* _pObj); void stopScrollTimer(); /** deactivate the current active ole object if any */ void deactivateOle(); /** returns true when an ole object is currently active */ bool isUiActive() const; }; } //rptui #endif // INCLUDED_REPORTDESIGN_SOURCE_UI_INC_REPORTSECTION_HXX /* vim:set shiftwidth=4 softtabstop=4 expandtab: */