1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
|
/* -*- 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_RPTUNDO_HXX
#define INCLUDED_REPORTDESIGN_SOURCE_UI_INC_RPTUNDO_HXX
#include <RptModel.hxx>
#include <UndoActions.hxx>
#include <functional>
namespace com::sun::star {
namespace drawing {
class XShape;
}
}
namespace rptui
{
/** \class OSectionUndo
* Undo class for section add and remove.
*/
class OSectionUndo : public OCommentUndoAction
{
OSectionUndo(const OSectionUndo&) = delete;
void operator =(const OSectionUndo&) = delete;
protected:
::std::vector< css::uno::Reference< css::drawing::XShape> >
m_aControls;
::std::vector< ::std::pair< OUString ,css::uno::Any> >
m_aValues;
Action m_eAction;
sal_uInt16 m_nSlot;
bool m_bInserted;
virtual void implReInsert( ) = 0;
virtual void implReRemove( ) = 0;
void collectControls(const css::uno::Reference< css::report::XSection >& _xSection);
public:
OSectionUndo( OReportModel& rMod
,sal_uInt16 _nSlot
,Action _eAction
,const char* pCommentID);
virtual ~OSectionUndo() override;
virtual void Undo() override;
virtual void Redo() override;
};
/** Undo action for the group header, footer, page header, footer
*/
class OReportSectionUndo : public OSectionUndo
{
OReportHelper m_aReportHelper;
::std::function<css::uno::Reference< css::report::XSection >(OReportHelper *)> m_pMemberFunction;
void implReInsert( ) override;
void implReRemove( ) override;
OReportSectionUndo(const OReportSectionUndo&) = delete;
void operator =(const OReportSectionUndo&) = delete;
public:
//OReportSectionUndo( const css::uno::Reference< css::report::XSection >& _xSection
OReportSectionUndo( OReportModel& rMod
,sal_uInt16 _nSlot
,::std::function<css::uno::Reference< css::report::XSection >(OReportHelper *)> _pMemberFunction
,const css::uno::Reference< css::report::XReportDefinition >& _xReport
,Action _eAction);
virtual ~OReportSectionUndo() override;
};
/** Undo action for the group header, footer
*/
class OGroupSectionUndo : public OSectionUndo
{
OGroupHelper m_aGroupHelper;
::std::function<css::uno::Reference< css::report::XSection >(OGroupHelper *)> m_pMemberFunction;
mutable OUString m_sName;
void implReInsert( ) override;
void implReRemove( ) override;
OGroupSectionUndo(const OGroupSectionUndo&) = delete;
void operator =(const OGroupSectionUndo&) = delete;
public:
//OGroupSectionUndo( const css::uno::Reference< css::report::XSection >& _xSection
OGroupSectionUndo( OReportModel& rMod
,sal_uInt16 _nSlot
,::std::function<css::uno::Reference< css::report::XSection >(OGroupHelper *)> _pMemberFunction
,const css::uno::Reference< css::report::XGroup >& _xGroup
,Action _eAction
,const char* pCommentID);
virtual OUString GetComment() const override;
};
/** /class OGroupUndo
* \brief Undo action for removing a group object.
*/
class OGroupUndo : public OCommentUndoAction
{
css::uno::Reference< css::report::XGroup> m_xGroup; ///<! the group for the undo redo action
css::uno::Reference< css::report::XReportDefinition > m_xReportDefinition; ///<! the parent report definition
Action m_eAction; ///<! the current action
sal_Int32 m_nLastPosition; ///<! the last position of the group
void implReInsert( );
void implReRemove( );
public:
OGroupUndo(OReportModel& rMod
,const char* pCommentID
,Action _eAction
,const css::uno::Reference< css::report::XGroup>& _xGroup
,const css::uno::Reference< css::report::XReportDefinition >& _xReportDefinition);
virtual void Undo() override;
virtual void Redo() override;
};
}
#endif // INCLUDED_REPORTDESIGN_SOURCE_UI_INC_RPTUNDO_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|