LibreOffice Module sw (master)  1
docftn.cxx
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 #include <ftnidx.hxx>
21 #include <rootfrm.hxx>
22 #include <txtftn.hxx>
23 #include <fmtftn.hxx>
24 #include <pam.hxx>
25 #include <pagedesc.hxx>
26 #include <charfmt.hxx>
27 #include <UndoAttribute.hxx>
28 #include <hints.hxx>
29 #include <rolbck.hxx>
30 #include <doc.hxx>
32 #include <IDocumentUndoRedo.hxx>
33 #include <IDocumentState.hxx>
36 #include <ndtxt.hxx>
37 #include <poolfmt.hxx>
38 #include <ftninfo.hxx>
39 
41 {
43  m_pPageDesc = rInfo.m_pPageDesc;
51 
52  m_aFormat = rInfo.m_aFormat;
54  m_bEndNote = rInfo.m_bEndNote;
55  m_sPrefix = rInfo.m_sPrefix;
56  m_sSuffix = rInfo.m_sSuffix;
57  return *this;
58 }
59 
60 bool SwEndNoteInfo::operator==( const SwEndNoteInfo& rInfo ) const
61 {
62  return
64  m_pPageDesc == rInfo.m_pPageDesc &&
65  m_pCharFormat == rInfo.m_pCharFormat &&
69  m_bEndNote == rInfo.m_bEndNote &&
70  m_sPrefix == rInfo.m_sPrefix &&
71  m_sSuffix == rInfo.m_sSuffix;
72 }
73 
75  SwClient(nullptr),
76  m_aDepends(*this),
77  m_pTextFormatColl(rInfo.m_pTextFormatColl),
78  m_pPageDesc(rInfo.m_pPageDesc),
79  m_pCharFormat(rInfo.m_pCharFormat),
80  m_pAnchorFormat(rInfo.m_pAnchorFormat),
81  m_sPrefix( rInfo.m_sPrefix ),
82  m_sSuffix( rInfo.m_sSuffix ),
83  m_bEndNote( true ),
84  m_aFormat( rInfo.m_aFormat ),
85  m_nFootnoteOffset( rInfo.m_nFootnoteOffset )
86 {
91 }
92 
94  SwClient(nullptr),
95  m_aDepends(*this),
96  m_pTextFormatColl(nullptr),
97  m_pPageDesc(nullptr),
98  m_pCharFormat(nullptr),
99  m_pAnchorFormat(nullptr),
100  m_bEndNote( true ),
101  m_nFootnoteOffset( 0 )
102 {
104 }
105 
107 {
108  if(!m_pPageDesc)
109  {
110  m_pPageDesc = rDoc.getIDocumentStylePoolAccess().GetPageDescFromPool( static_cast<sal_uInt16>(
113  }
114  return m_pPageDesc;
115 }
116 
118 {
119  return m_pPageDesc != nullptr;
120 }
121 
123 {
124  return m_pPageDesc == pDesc;
125 }
126 
128 {
130  m_pPageDesc = pDesc;
132 }
133 
135 {
137  m_pTextFormatColl = &rFormat;
139 }
140 
142 {
143  auto pCharFormatFromDoc = rDoc.getIDocumentStylePoolAccess().GetCharFormatFromPool( static_cast<sal_uInt16>(
145  if (m_pCharFormat != pCharFormatFromDoc)
146  {
148  m_aDepends.StartListening(pCharFormatFromDoc);
149  m_pCharFormat = pCharFormatFromDoc;
150  }
151  return m_pCharFormat;
152 }
153 
154 namespace
155 {
156  void lcl_ResetPoolIdForDocAndSync(const sal_uInt16 nId, SwCharFormat* pFormat, const SwEndNoteInfo& rInfo)
157  {
158  auto pDoc = pFormat->GetDoc();
159  if(!pDoc)
160  return;
161  for(auto pDocFormat : *pDoc->GetCharFormats())
162  {
163  if(pDocFormat == pFormat)
164  pDocFormat->SetPoolFormatId(nId);
165  else if(pDocFormat->GetPoolFormatId() == nId)
166  pDocFormat->SetPoolFormatId(0);
167  }
168  rInfo.GetCharFormat(*pDoc);
169  rInfo.GetAnchorCharFormat(*pDoc);
170  }
171 }
172 
174 {
175  lcl_ResetPoolIdForDocAndSync(
176  static_cast<sal_uInt16>(m_bEndNote
179  pFormat,
180  *this);
181 }
182 
184 {
185  auto pAnchorFormatFromDoc = rDoc.getIDocumentStylePoolAccess().GetCharFormatFromPool( static_cast<sal_uInt16>(
187  if(m_pAnchorFormat != pAnchorFormatFromDoc)
188  {
190  m_aDepends.StartListening(pAnchorFormatFromDoc);
191  m_pAnchorFormat = pAnchorFormatFromDoc;
192  }
193  return m_pAnchorFormat;
194 }
195 
197 {
198  lcl_ResetPoolIdForDocAndSync(
199  static_cast<sal_uInt16>(m_bEndNote
202  pFormat,
203  *this);
204 }
205 
207 {
208  return bAnchor
210  : m_pCharFormat;
211 }
212 
213 void SwEndNoteInfo::SwClientNotify( const SwModify& rModify, const SfxHint& rHint)
214 {
215  if (auto pLegacyHint = dynamic_cast<const sw::LegacyModifyHint*>(&rHint))
216  {
217  const sal_uInt16 nWhich = pLegacyHint->m_pOld ? pLegacyHint->m_pOld->Which() : pLegacyHint->m_pNew ? pLegacyHint->m_pNew->Which() : 0 ;
218  if (RES_ATTRSET_CHG == nWhich || RES_FMT_CHG == nWhich)
219  {
220  auto pFormat = GetCurrentCharFormat(m_pCharFormat == nullptr);
221  if (!pFormat || !m_aDepends.IsListeningTo(pFormat) || pFormat->IsFormatInDTOR())
222  return;
223  SwDoc* pDoc = pFormat->GetDoc();
224  SwFootnoteIdxs& rFootnoteIdxs = pDoc->GetFootnoteIdxs();
225  for( size_t nPos = 0; nPos < rFootnoteIdxs.size(); ++nPos )
226  {
227  SwTextFootnote *pTextFootnote = rFootnoteIdxs[ nPos ];
228  const SwFormatFootnote &rFootnote = pTextFootnote->GetFootnote();
229  if ( rFootnote.IsEndNote() == m_bEndNote )
230  {
231  pTextFootnote->SetNumber(rFootnote.GetNumber(), rFootnote.GetNumberRLHidden(), rFootnote.GetNumStr());
232  }
233  }
234  }
235  else
236  CheckRegistration( pLegacyHint->m_pOld );
237  }
238  else if (auto pModifyChangedHint = dynamic_cast<const sw::ModifyChangedHint*>(&rHint))
239  {
240  auto pNew = const_cast<SwModify*>(pModifyChangedHint->m_pNew);
241  if(m_pAnchorFormat == &rModify)
242  m_pAnchorFormat = static_cast<SwCharFormat*>(pNew);
243  else if(m_pCharFormat == &rModify)
244  m_pCharFormat = static_cast<SwCharFormat*>(pNew);
245  else if(m_pPageDesc == &rModify)
246  m_pPageDesc = static_cast<SwPageDesc*>(pNew);
247  else if(m_pTextFormatColl == &rModify)
248  m_pTextFormatColl = static_cast<SwTextFormatColl*>(pNew);
249  }
250 }
251 
253 {
255  m_aQuoVadis = rInfo.m_aQuoVadis;
256  m_aErgoSum = rInfo.m_aErgoSum;
257  m_ePos = rInfo.m_ePos;
258  m_eNum = rInfo.m_eNum;
259  return *this;
260 }
261 
262 bool SwFootnoteInfo::operator==( const SwFootnoteInfo& rInfo ) const
263 {
264  return m_ePos == rInfo.m_ePos &&
265  m_eNum == rInfo.m_eNum &&
266  SwEndNoteInfo::operator==(rInfo) &&
267  m_aQuoVadis == rInfo.m_aQuoVadis &&
268  m_aErgoSum == rInfo.m_aErgoSum;
269 }
270 
272  SwEndNoteInfo( rInfo ),
273  m_aQuoVadis( rInfo.m_aQuoVadis ),
274  m_aErgoSum( rInfo.m_aErgoSum ),
275  m_ePos( rInfo.m_ePos ),
276  m_eNum( rInfo.m_eNum )
277 {
278  m_bEndNote = false;
279 }
280 
282  SwEndNoteInfo(),
283  m_ePos( FTNPOS_PAGE ),
284  m_eNum( FTNNUM_DOC )
285 {
287  m_bEndNote = false;
288 }
289 
291 {
293  if( GetFootnoteInfo() == rInfo )
294  return;
295 
296  const SwFootnoteInfo &rOld = GetFootnoteInfo();
297 
298  if (GetIDocumentUndoRedo().DoesUndo())
299  {
300  GetIDocumentUndoRedo().AppendUndo( std::make_unique<SwUndoFootNoteInfo>(rOld, this) );
301  }
302 
303  bool bFootnotePos = rInfo.m_ePos != rOld.m_ePos;
304  bool bFootnoteDesc = rOld.m_ePos == FTNPOS_CHAPTER &&
305  rInfo.GetPageDesc( *this ) != rOld.GetPageDesc( *this );
306  bool bExtra = rInfo.m_aQuoVadis != rOld.m_aQuoVadis ||
307  rInfo.m_aErgoSum != rOld.m_aErgoSum ||
309  rInfo.GetPrefix() != rOld.GetPrefix() ||
310  rInfo.GetSuffix() != rOld.GetSuffix();
311  SwCharFormat *pOldChrFormat = rOld.GetCharFormat( *this ),
312  *pNewChrFormat = rInfo.GetCharFormat( *this );
313  bool bFootnoteChrFormats = pOldChrFormat != pNewChrFormat;
314 
315  *mpFootnoteInfo = rInfo;
316 
317  if (pTmpRoot)
318  {
320  if ( bFootnotePos )
321  for( auto aLayout : aAllLayouts )
322  aLayout->AllRemoveFootnotes();
323  else
324  {
325  for( auto aLayout : aAllLayouts )
326  aLayout->UpdateFootnoteNums();
327  if ( bFootnoteDesc )
328  for( auto aLayout : aAllLayouts )
329  aLayout->CheckFootnotePageDescs(false);
330  if ( bExtra )
331  {
332  // For messages regarding ErgoSum etc. we save the extra code and use the
333  // available methods.
334  SwFootnoteIdxs& rFootnoteIdxs = GetFootnoteIdxs();
335  for( size_t nPos = 0; nPos < rFootnoteIdxs.size(); ++nPos )
336  {
337  SwTextFootnote *pTextFootnote = rFootnoteIdxs[ nPos ];
338  const SwFormatFootnote &rFootnote = pTextFootnote->GetFootnote();
339  if ( !rFootnote.IsEndNote() )
340  pTextFootnote->SetNumber(rFootnote.GetNumber(), rFootnote.GetNumberRLHidden(), rFootnote.GetNumStr());
341  }
342  }
343  }
344  }
345  if( FTNNUM_PAGE != rInfo.m_eNum )
347  else if( bFootnoteChrFormats )
348  {
349  SwFormatChg aOld( pOldChrFormat );
350  SwFormatChg aNew( pNewChrFormat );
351  mpFootnoteInfo->ModifyNotification( &aOld, &aNew );
352  }
353 
354  // #i81002# no update during loading
355  if ( !IsInReading() )
356  {
358  }
360 
361 }
362 
364 {
366  if( GetEndNoteInfo() == rInfo )
367  return;
368 
369  if(GetIDocumentUndoRedo().DoesUndo())
370  {
372  std::make_unique<SwUndoEndNoteInfo>( GetEndNoteInfo(), this ) );
373  }
374 
375  bool bNumChg = rInfo.m_nFootnoteOffset != GetEndNoteInfo().m_nFootnoteOffset;
376  // this seems to be an optimization: UpdateAllFootnote() is only called
377  // if the offset changes; if the offset is the same,
378  // but type/prefix/suffix changes, just set new numbers.
379  bool const bExtra = !bNumChg &&
380  ( (rInfo.m_aFormat.GetNumberingType() !=
382  || (rInfo.GetPrefix() != GetEndNoteInfo().GetPrefix())
383  || (rInfo.GetSuffix() != GetEndNoteInfo().GetSuffix())
384  );
385  bool bFootnoteDesc = rInfo.GetPageDesc( *this ) !=
386  GetEndNoteInfo().GetPageDesc( *this );
387  SwCharFormat *pOldChrFormat = GetEndNoteInfo().GetCharFormat( *this ),
388  *pNewChrFormat = rInfo.GetCharFormat( *this );
389  bool bFootnoteChrFormats = pOldChrFormat != pNewChrFormat;
390 
391  *mpEndNoteInfo = rInfo;
392 
393  if ( pTmpRoot )
394  {
395  if ( bFootnoteDesc )
396  {
397  for( auto aLayout : GetAllLayouts() )
398  aLayout->CheckFootnotePageDescs(true);
399  }
400  if ( bExtra )
401  {
402  // For messages regarding ErgoSum etc. we save the extra code and use the
403  // available methods.
404  SwFootnoteIdxs& rFootnoteIdxs = GetFootnoteIdxs();
405  for( size_t nPos = 0; nPos < rFootnoteIdxs.size(); ++nPos )
406  {
407  SwTextFootnote *pTextFootnote = rFootnoteIdxs[ nPos ];
408  const SwFormatFootnote &rFootnote = pTextFootnote->GetFootnote();
409  if ( rFootnote.IsEndNote() )
410  pTextFootnote->SetNumber(rFootnote.GetNumber(), rFootnote.GetNumberRLHidden(), rFootnote.GetNumStr());
411  }
412  }
413  }
414  if( bNumChg )
416  else if( bFootnoteChrFormats )
417  {
418  SwFormatChg aOld( pOldChrFormat );
419  SwFormatChg aNew( pNewChrFormat );
420  mpEndNoteInfo->ModifyNotification( &aOld, &aNew );
421  }
422 
423  // #i81002# no update during loading
424  if ( !IsInReading() )
425  {
427  }
429 
430 }
431 
432 bool SwDoc::SetCurFootnote( const SwPaM& rPam, const OUString& rNumStr,
433  bool bIsEndNote)
434 {
435  SwFootnoteIdxs& rFootnoteArr = GetFootnoteIdxs();
437 
438  const SwPosition* pStt = rPam.Start(), *pEnd = rPam.End();
439  const sal_uLong nSttNd = pStt->nNode.GetIndex();
440  const sal_Int32 nSttCnt = pStt->nContent.GetIndex();
441  const sal_uLong nEndNd = pEnd->nNode.GetIndex();
442  const sal_Int32 nEndCnt = pEnd->nContent.GetIndex();
443 
444  size_t nPos = 0;
445  rFootnoteArr.SeekEntry( pStt->nNode, &nPos );
446 
447  std::unique_ptr<SwUndoChangeFootNote> pUndo;
448  if (GetIDocumentUndoRedo().DoesUndo())
449  {
450  GetIDocumentUndoRedo().ClearRedo(); // AppendUndo far below, so leave it
451  pUndo.reset(new SwUndoChangeFootNote( rPam, rNumStr, bIsEndNote ));
452  }
453 
454  bool bChg = false;
455  bool bTypeChgd = false;
456  const size_t nPosSave = nPos;
457  while( nPos < rFootnoteArr.size() )
458  {
459  SwTextFootnote* pTextFootnote = rFootnoteArr[ nPos++ ];
460  sal_uLong nIdx = SwTextFootnote_GetIndex(pTextFootnote);
461  if( nIdx >= nEndNd &&
462  ( nIdx != nEndNd || nEndCnt < pTextFootnote->GetStart() ) )
463  continue;
464  if( nIdx > nSttNd || ( nIdx == nSttNd &&
465  nSttCnt <= pTextFootnote->GetStart() ) )
466  {
467  const SwFormatFootnote& rFootnote = pTextFootnote->GetFootnote();
468  if( rFootnote.GetNumStr() != rNumStr ||
469  rFootnote.IsEndNote() != bIsEndNote )
470  {
471  bChg = true;
472  if ( pUndo )
473  {
474  pUndo->GetHistory().Add( *pTextFootnote );
475  }
476 
477  pTextFootnote->SetNumber(rFootnote.GetNumber(), rFootnote.GetNumberRLHidden(), rNumStr);
478  if( rFootnote.IsEndNote() != bIsEndNote )
479  {
480  const_cast<SwFormatFootnote&>(rFootnote).SetEndNote( bIsEndNote );
481  bTypeChgd = true;
482  pTextFootnote->CheckCondColl();
483  //#i11339# dispose UNO wrapper when a footnote is changed to an endnote or vice versa
484  const_cast<SwFormatFootnote&>(rFootnote).InvalidateFootnote();
485  }
486  }
487  }
488  }
489 
490  nPos = nPosSave; // There are more in the front!
491  while( nPos )
492  {
493  SwTextFootnote* pTextFootnote = rFootnoteArr[ --nPos ];
494  sal_uLong nIdx = SwTextFootnote_GetIndex(pTextFootnote);
495  if( nIdx <= nSttNd &&
496  ( nIdx != nSttNd || nSttCnt > pTextFootnote->GetStart() ) )
497  continue;
498  if( nIdx < nEndNd || ( nIdx == nEndNd &&
499  nEndCnt >= pTextFootnote->GetStart() ) )
500  {
501  const SwFormatFootnote& rFootnote = pTextFootnote->GetFootnote();
502  if( rFootnote.GetNumStr() != rNumStr ||
503  rFootnote.IsEndNote() != bIsEndNote )
504  {
505  bChg = true;
506  if ( pUndo )
507  {
508  pUndo->GetHistory().Add( *pTextFootnote );
509  }
510 
511  pTextFootnote->SetNumber(rFootnote.GetNumber(), rFootnote.GetNumberRLHidden(), rNumStr);
512  if( rFootnote.IsEndNote() != bIsEndNote )
513  {
514  const_cast<SwFormatFootnote&>(rFootnote).SetEndNote( bIsEndNote );
515  bTypeChgd = true;
516  pTextFootnote->CheckCondColl();
517  }
518  }
519  }
520  }
521 
522  // Who needs to be triggered?
523  if( bChg )
524  {
525  if( pUndo )
526  {
527  GetIDocumentUndoRedo().AppendUndo(std::move(pUndo));
528  }
529 
530  if ( bTypeChgd )
531  rFootnoteArr.UpdateAllFootnote();
532  if( FTNNUM_PAGE != GetFootnoteInfo().m_eNum )
533  {
534  if ( !bTypeChgd )
535  rFootnoteArr.UpdateAllFootnote();
536  }
537  else if( pTmpRoot )
538  {
539  for( auto aLayout : GetAllLayouts() )
540  aLayout->UpdateFootnoteNums();
541  }
543  }
544  return bChg;
545 }
546 
547 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
virtual SwCharFormat * GetCharFormatFromPool(sal_uInt16 nId)=0
SvxNumType GetNumberingType() const
SwPageDesc * m_pPageDesc
Definition: ftninfo.hxx:36
SwCharFormat * GetAnchorCharFormat(SwDoc &rDoc) const
Definition: docftn.cxx:183
void Add(SwClient *pDepend)
Definition: calbck.cxx:217
Represents the style of a paragraph.
Definition: fmtcol.hxx:55
Marks a position in the document model.
Definition: pam.hxx:35
Footnote at end of document.
Definition: poolfmt.hxx:177
void SetFootnoteInfo(const SwFootnoteInfo &rInfo)
Definition: docftn.cxx:290
SwCharFormat * GetCurrentCharFormat(const bool bAnchor) const
Definition: docftn.cxx:206
SwFootnoteInfo & operator=(const SwFootnoteInfo &)
Definition: docftn.cxx:252
virtual const SwRootFrame * GetCurrentLayout() const =0
const OUString & GetSuffix() const
Definition: ftninfo.hxx:71
SwNodeIndex nNode
Definition: pam.hxx:37
sal_uInt16 char char * pDesc
virtual void SetModified()=0
Must be called manually at changes of format.
sal_uIntPtr sal_uLong
OUString m_sPrefix
Definition: ftninfo.hxx:39
void CheckCondColl()
Definition: atrftn.cxx:569
SwEndNoteInfo & operator=(const SwEndNoteInfo &)
Definition: docftn.cxx:40
Definition: doc.hxx:184
SwTextFormatColl * m_pTextFormatColl
Definition: ftninfo.hxx:35
OUString m_sSuffix
Definition: ftninfo.hxx:40
bool IsEndNote() const
Definition: fmtftn.hxx:74
IDocumentUndoRedo & GetIDocumentUndoRedo()
Definition: doc.cxx:144
The root element of a Writer document layout.
Definition: rootfrm.hxx:80
IDocumentFieldsAccess const & getIDocumentFieldsAccess() const
Definition: doc.cxx:357
bool m_bEndNote
Definition: ftninfo.hxx:42
void SetCharFormat(SwCharFormat *)
Definition: docftn.cxx:173
SwIndex nContent
Definition: pam.hxx:38
IDocumentStylePoolAccess const & getIDocumentStylePoolAccess() const
Definition: doc.cxx:426
SwCharFormat * m_pAnchorFormat
Definition: ftninfo.hxx:38
sal_uLong GetIndex() const
Definition: ndindex.hxx:152
SVX_NUM_ARABIC
sal_Int32 GetStart() const
Definition: txatbase.hxx:82
constexpr TypedWhichId< SwAttrSetChg > RES_ATTRSET_CHG(161)
constexpr TypedWhichId< SwFormatChg > RES_FMT_CHG(160)
SVX_NUM_ROMAN_LOWER
void EndListening(SwModify *pDepend)
Definition: calbck.cxx:351
const OUString & GetNumStr() const
Definition: fmtftn.hxx:71
o3tl::sorted_vector< SwRootFrame * > GetAllLayouts()
Definition: doclay.cxx:1668
void SetAnchorCharFormat(SwCharFormat *)
Definition: docftn.cxx:196
size_type size() const
bool KnowsPageDesc() const
Definition: docftn.cxx:117
virtual SwPageDesc * GetPageDescFromPool(sal_uInt16 nId, bool bRegardLanguage=true)=0
Return required automatic page style.
void SetFootnoteTextColl(SwTextFormatColl &rColl)
Definition: docftn.cxx:134
void SetNumber(sal_uInt16 nNumber, sal_uInt16 nNumberRLHidden, const OUString &sNumStr)
Definition: atrftn.cxx:357
bool IsFormatInDTOR() const
Definition: format.hxx:171
bool SetCurFootnote(const SwPaM &rPam, const OUString &rNumStr, bool bIsEndNote)
change footnotes in range
Definition: docftn.cxx:432
PaM is Point and Mark: a selection of the document model.
Definition: pam.hxx:136
SwFootnoteNum m_eNum
Definition: ftninfo.hxx:97
virtual void UpdateRefFields()=0
virtual void AppendUndo(std::unique_ptr< SwUndo > pUndo)=0
Add new Undo action.
SwTextFootnote * SeekEntry(const SwNodeIndex &rIdx, size_t *pPos=nullptr) const
Definition: ftnidx.cxx:409
virtual void ClearRedo()=0
Delete all Redo actions.
std::unique_ptr< sw::ModifyChangedHint > CheckRegistration(const SfxPoolItem *pOldValue)
Definition: calbck.cxx:78
Footnote anchor.
Definition: poolfmt.hxx:127
bool operator==(const SwFootnoteInfo &rInf) const
Definition: docftn.cxx:262
std::unique_ptr< SwEndNoteInfo > mpEndNoteInfo
Definition: doc.hxx:252
bool IsListeningTo(const SwModify *const pDepend) const
Definition: calbck.cxx:342
sal_uInt16 m_nFootnoteOffset
Definition: ftninfo.hxx:47
SwCharFormat * m_pCharFormat
Definition: ftninfo.hxx:37
sal_uInt16 GetNumberRLHidden() const
Definition: fmtftn.hxx:73
bool DependsOn(const SwPageDesc *) const
Definition: docftn.cxx:122
IDocumentState const & getIDocumentState() const
Definition: doc.cxx:394
SvxNumberType m_aFormat
Definition: ftninfo.hxx:46
Endnote anchor.
Definition: poolfmt.hxx:128
#define SwTextFootnote_GetIndex(pFIdx)
Definition: ftnidx.hxx:34
const SwDoc * GetDoc() const
The document is set in SwAttrPool now, therefore you always can access it.
Definition: format.hxx:119
const SwFormatFootnote & GetFootnote() const
Definition: txatbase.hxx:200
bool IsInReading() const
Definition: doc.hxx:951
IDocumentLayoutAccess const & getIDocumentLayoutAccess() const
Definition: doc.cxx:405
const SwPosition * Start() const
Definition: pam.hxx:212
Endnote page.
Definition: poolfmt.hxx:178
const OUString & GetPrefix() const
Definition: ftninfo.hxx:70
void StartListening(SwModify *pDepend)
Definition: calbck.cxx:335
void SetEndNoteInfo(const SwEndNoteInfo &rInfo)
Definition: docftn.cxx:363
virtual void SwClientNotify(const SwModify &, const SfxHint &) override
Definition: docftn.cxx:213
SwCharFormat * GetCharFormat(SwDoc &rDoc) const
Definition: docftn.cxx:141
SwPageDesc * GetPageDesc(SwDoc &rDoc) const
Definition: docftn.cxx:106
void ChgPageDesc(SwPageDesc *pDesc)
Definition: docftn.cxx:127
sal_Int32 GetIndex() const
Definition: index.hxx:91
const SwPosition * End() const
Definition: pam.hxx:217
OUString m_aQuoVadis
Definition: ftninfo.hxx:94
SwFootnoteIdxs & GetFootnoteIdxs()
Definition: doc.hxx:628
SwFootnotePos m_ePos
Definition: ftninfo.hxx:96
void SetNumberingType(SvxNumType nSet)
void UpdateAllFootnote()
Definition: ftnidx.cxx:267
std::unique_ptr< SwFootnoteInfo > mpFootnoteInfo
Definition: doc.hxx:251
sal_uInt16 GetNumber() const
Definition: fmtftn.hxx:72
const SwFootnoteInfo & GetFootnoteInfo() const
Definition: doc.hxx:624
const SwEndNoteInfo & GetEndNoteInfo() const
Definition: doc.hxx:626
OUString m_aErgoSum
Definition: ftninfo.hxx:95
sal_uInt16 nPos
sw::WriterMultiListener m_aDepends
Definition: ftninfo.hxx:34
bool operator==(const SwEndNoteInfo &rInf) const
Definition: docftn.cxx:60