LibreOffice Module sw (master) 1
IDocumentRedlineAccess.hxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 */
19
20#ifndef INCLUDED_SW_INC_IDOCUMENTREDLINEACCESS_HXX
21#define INCLUDED_SW_INC_IDOCUMENTREDLINEACCESS_HXX
22
23#include <sal/config.h>
24
25#include <cstddef>
26
27#include <sal/types.h>
28
29#include <com/sun/star/uno/Sequence.h>
31#include <svx/ctredlin.hxx>
32
33#include "docary.hxx"
34
35class SwRangeRedline;
38class SwPaM;
39struct SwPosition;
40class SwStartNode;
41class SwNode;
42
43enum class RedlineFlags
44{
45 NONE = 0x000,
46 On = 0x001,
47 Ignore = 0x002,
48 ShowInsert = 0x010,
49 ShowDelete = 0x020,
51
52 // For internal management:
53 // remove the original Redlines together with their content
54 // (Clipboard/text modules).
55 DeleteRedlines = 0x100,
56 // don't combine any redlines. This flag may be only used in Undo.
57 DontCombineRedlines = 0x400,
58};
59namespace o3tl
60{
61 template<> struct typed_flags<RedlineFlags> : is_typed_flags<RedlineFlags, 0x533> {};
62}
63
65{
66 OUString sRet;
67 switch(eType)
68 {
69 case RedlineType::Insert: sRet = "Insert"; break;
70 case RedlineType::Delete: sRet = "Delete"; break;
71 case RedlineType::Format: sRet = "Format"; break;
72 case RedlineType::ParagraphFormat: sRet = "ParagraphFormat"; break;
73 case RedlineType::Table: sRet = "TextTable"; break;
74 case RedlineType::FmtColl:sRet = "Style"; break;
75 default: break;
76 }
77 return sRet;
78};
79
81{
82 // Static helper functions
83public:
84 static bool IsShowChanges(const RedlineFlags eM)
86
87 static bool IsHideChanges(const RedlineFlags eM)
89
90 static bool IsShowOriginal(const RedlineFlags eM)
92
93 static bool IsRedlineOn(const RedlineFlags eM)
95
96public:
97
103 virtual RedlineFlags GetRedlineFlags() const = 0;
104
110 virtual void SetRedlineFlags_intern(/*[in]*/RedlineFlags eMode) = 0;
111
117 virtual void SetRedlineFlags(/*[in]*/RedlineFlags eMode) = 0;
118
124 virtual bool IsRedlineOn() const = 0;
125
126 virtual bool IsIgnoreRedline() const = 0;
127
128 virtual const SwRedlineTable& GetRedlineTable() const = 0;
130 virtual const SwExtraRedlineTable& GetExtraRedlineTable() const = 0;
132
133 virtual bool IsInRedlines(const SwNode& rNode) const = 0;
134
135 enum class AppendResult { IGNORED, MERGED, APPENDED };
151 virtual AppendResult AppendRedline(/*[in]*/SwRangeRedline* pNewRedl, /*[in]*/bool bCallDelete) = 0;
152
153 virtual bool AppendTableRowRedline(/*[in]*/SwTableRowRedline* pPtr) = 0;
154 virtual bool AppendTableCellRedline(/*[in]*/SwTableCellRedline* pPtr) = 0;
155
156 virtual bool SplitRedline(/*[in]*/const SwPaM& rPam) = 0;
157
158 virtual bool DeleteRedline(
159 /*[in]*/const SwPaM& rPam,
160 /*[in]*/bool bSaveInUndo,
161 /*[in]*/RedlineType nDelType) = 0;
162
163 virtual bool DeleteRedline(
164 /*[in]*/const SwStartNode& rSection,
165 /*[in]*/bool bSaveInUndo,
166 /*[in]*/RedlineType nDelType) = 0;
167
169 /*[in]*/const SwNode& rNode,
170 /*[in]*/RedlineType nType) const = 0;
171
172 virtual bool HasRedline(
173 /*[in]*/const SwPaM& rPam,
174 /*[in]*/RedlineType nType,
175 /*[in]*/bool bStartOrEndInRange) const = 0;
176
177 virtual void CompressRedlines(size_t nStartIndex = 0) = 0;
178
180 /*[in]*/const SwPosition& rPos,
181 /*[in]*/SwRedlineTable::size_type* pFndPos) const = 0;
182
183 virtual bool IsRedlineMove() const = 0;
184
185 virtual void SetRedlineMove(/*[in]*/bool bFlag) = 0;
186
187 virtual bool AcceptRedline(/*[in]*/SwRedlineTable::size_type nPos, /*[in]*/bool bCallDelete) = 0;
188
189 virtual bool AcceptRedline(/*[in]*/const SwPaM& rPam, /*[in]*/bool bCallDelete) = 0;
190
191 virtual void AcceptRedlineParagraphFormatting(/*[in]*/const SwPaM& rPam ) = 0;
192
193 virtual bool RejectRedline(/*[in]*/SwRedlineTable::size_type nPos, /*[in]*/bool bCallDelete) = 0;
194
195 virtual bool RejectRedline(/*[in]*/const SwPaM& rPam, /*[in]*/bool bCallDelete) = 0;
196
197 virtual const SwRangeRedline* SelNextRedline(/*[in]*/SwPaM& rPam) const = 0;
198
199 virtual const SwRangeRedline* SelPrevRedline(/*[in]*/SwPaM& rPam) const = 0;
200
201 virtual void AcceptAllRedline(/*[in]*/bool bAcceptReject) = 0;
202
203 // Representation has changed, invalidate all Redlines.
204 virtual void UpdateRedlineAttr() = 0;
205
206 // Create a new Author if required.
207 virtual std::size_t GetRedlineAuthor() = 0;
208
209 // For Readers etc.: register new Author in table.
210 virtual std::size_t InsertRedlineAuthor(const OUString& rAuthor) = 0;
211
212 // Place a comment at Redline at given position.
213 virtual bool SetRedlineComment(
214 /*[in]*/const SwPaM& rPam,
215 /*[in]*/const OUString& rComment) = 0;
216
217 virtual const css::uno::Sequence <sal_Int8>& GetRedlinePassword() const = 0;
218
219 virtual void SetRedlinePassword(
220 /*[in]*/const css::uno::Sequence <sal_Int8>& rNewPassword) = 0;
221
222protected:
224};
225
226#endif
227
228/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
@ ShowDelete
show all deletes
@ On
RedlineFlags on.
@ ShowInsert
show all inserts
@ Ignore
ignore Redlines
OUString SwRedlineTypeToOUString(RedlineType eType)
virtual bool IsIgnoreRedline() const =0
virtual bool IsRedlineOn() const =0
Query if redlining is on.
virtual const SwRangeRedline * SelNextRedline(SwPaM &rPam) const =0
virtual void AcceptAllRedline(bool bAcceptReject)=0
virtual bool HasRedline(const SwPaM &rPam, RedlineType nType, bool bStartOrEndInRange) const =0
virtual const SwExtraRedlineTable & GetExtraRedlineTable() const =0
virtual bool DeleteRedline(const SwPaM &rPam, bool bSaveInUndo, RedlineType nDelType)=0
static bool IsRedlineOn(const RedlineFlags eM)
virtual bool IsRedlineMove() const =0
virtual void UpdateRedlineAttr()=0
virtual void SetRedlinePassword(const css::uno::Sequence< sal_Int8 > &rNewPassword)=0
static bool IsShowOriginal(const RedlineFlags eM)
virtual bool RejectRedline(SwRedlineTable::size_type nPos, bool bCallDelete)=0
virtual std::size_t GetRedlineAuthor()=0
virtual void SetRedlineMove(bool bFlag)=0
static bool IsShowChanges(const RedlineFlags eM)
virtual bool RejectRedline(const SwPaM &rPam, bool bCallDelete)=0
virtual bool SplitRedline(const SwPaM &rPam)=0
virtual SwRedlineTable::size_type GetRedlinePos(const SwNode &rNode, RedlineType nType) const =0
virtual void SetRedlineFlags_intern(RedlineFlags eMode)=0
Set a new redline mode.
virtual const SwRedlineTable & GetRedlineTable() const =0
virtual std::size_t InsertRedlineAuthor(const OUString &rAuthor)=0
virtual SwRedlineTable & GetRedlineTable()=0
virtual SwExtraRedlineTable & GetExtraRedlineTable()=0
virtual AppendResult AppendRedline(SwRangeRedline *pNewRedl, bool bCallDelete)=0
Append a new redline.
virtual void SetRedlineFlags(RedlineFlags eMode)=0
Set a new redline mode.
virtual const SwRangeRedline * GetRedline(const SwPosition &rPos, SwRedlineTable::size_type *pFndPos) const =0
virtual void AcceptRedlineParagraphFormatting(const SwPaM &rPam)=0
virtual bool DeleteRedline(const SwStartNode &rSection, bool bSaveInUndo, RedlineType nDelType)=0
virtual RedlineFlags GetRedlineFlags() const =0
Query the currently set redline mode.
virtual bool AcceptRedline(const SwPaM &rPam, bool bCallDelete)=0
virtual const SwRangeRedline * SelPrevRedline(SwPaM &rPam) const =0
virtual bool IsInRedlines(const SwNode &rNode) const =0
virtual void CompressRedlines(size_t nStartIndex=0)=0
virtual bool AppendTableRowRedline(SwTableRowRedline *pPtr)=0
virtual bool AcceptRedline(SwRedlineTable::size_type nPos, bool bCallDelete)=0
virtual bool SetRedlineComment(const SwPaM &rPam, const OUString &rComment)=0
virtual bool AppendTableCellRedline(SwTableCellRedline *pPtr)=0
static bool IsHideChanges(const RedlineFlags eM)
virtual const css::uno::Sequence< sal_Int8 > & GetRedlinePassword() const =0
Table that holds 'extra' redlines, such as 'table row insert/delete', 'paragraph moves' etc....
Definition: docary.hxx:282
Base class of the Writer document model elements.
Definition: node.hxx:98
PaM is Point and Mark: a selection of the document model.
Definition: pam.hxx:187
vector_type::size_type size_type
Definition: docary.hxx:222
Starts a section of nodes in the document model.
Definition: node.hxx:348
Redline that holds information about a table-cell that had some change.
Definition: redline.hxx:315
Redline that holds information about a table-row that had some change.
Definition: redline.hxx:294
RedlineType
DocumentType eType
NONE
Marks a position in the document model.
Definition: pam.hxx:37