search/mag_sel search/close
ListCollection.h
1 // Copyright 2001-2021 Aspose Pty Ltd. All Rights Reserved.
3 //
4 // This file is part of Aspose.Words. The source code in this file
5 // is only intended as a supplement to the documentation, and is provided
6 // "as is", without warranty of any kind, either expressed or implied.
9 #pragma once
10 
11 #include <system/string.h>
12 #include <system/collections/list.h>
13 #include <system/collections/ienumerable.h>
14 #include <cstdint>
15 
16 #include <Aspose.Words.Cpp/Lists/ListTemplate.h>
17 #include <Aspose.Words.Cpp/aspose_words_api_defs.h>
18 
19 namespace System { namespace Collections { namespace Generic { template <typename> class IEnumerator; } } }
20 namespace Aspose { namespace Words { namespace Lists { class List; } } }
21 namespace Aspose { namespace Words { namespace Lists { class ListNumberingRestarter; } } }
22 namespace Aspose { namespace Words { namespace ApsBuilder { namespace Dml { namespace Text { class DmlTextShapeToShapeConvertor; } } } } }
23 namespace Aspose { namespace Words { namespace Layout { class ParagraphPrConverter; } } }
24 namespace Aspose { namespace Words { namespace Comparing { class FormattingComparer; } } }
25 namespace Aspose { namespace Words { namespace Validation { class DuplicateStyleRemover; } } }
26 namespace Aspose { namespace Words { namespace Validation { class StyleIstdNormalizer; } } }
27 namespace Aspose { namespace Words { namespace RW { namespace Dml { namespace Writer { class DmlShapeValidator; } } } } }
28 namespace Aspose { namespace Words { class DocumentInserter; } }
29 namespace Aspose { namespace Words { namespace Fields { class HiddenParagraphTocEntry; } } }
30 namespace Aspose { namespace Words { namespace Formatting { namespace Intern { class InternManager; } } } }
31 namespace Aspose { namespace Words { namespace RW { namespace Markdown { namespace Reader { class MarkdownReaderContext; } } } } }
32 namespace Aspose { namespace Words { namespace RW { namespace Markdown { namespace Writer { class MarkdownParagraphWriter; } } } } }
33 namespace Aspose { namespace Words { namespace Validation { class DocumentCleaner; } } }
34 namespace Aspose { namespace Words { namespace RW { namespace Doc { namespace Reader { namespace Word60 { class Word60ListHelper; } } } } } }
35 namespace Aspose { namespace Words { namespace RW { namespace Doc { namespace Reader { class ListReader; } } } } }
36 namespace Aspose { namespace Words { namespace RW { namespace Doc { namespace Writer { class ListWriter; } } } } }
37 namespace Aspose { namespace Words { class DocumentBase; } }
38 namespace Aspose { namespace Words { namespace Validation { class ListValidator; } } }
39 namespace Aspose { namespace Words { class Style; } }
40 namespace Aspose { namespace Words { namespace Validation { class DocumentPostLoader; } } }
41 namespace Aspose { namespace Words { namespace Validation { class RunPrCollectorBase; } } }
42 namespace Aspose { namespace Words { namespace Validation { class ShapeIdGenerator; } } }
43 namespace Aspose { namespace Words { namespace RW { namespace Doc { namespace Dofr { class DofrFiler; } } } } }
44 namespace Aspose { namespace Words { namespace Fields { class FieldNumListLabelUpdater; } } }
45 namespace Aspose { namespace Words { class NodeImporter; } }
46 namespace Aspose { namespace Words { namespace Lists { class ListFactory; } } }
47 namespace Aspose { namespace Words { namespace Lists { class ListLevel; } } }
48 namespace Aspose { namespace Words { namespace MailMerging { class MailMerge; } } }
49 namespace Aspose { namespace Words { class StyleCollection; } }
50 namespace Aspose { namespace Words { namespace Lists { class ListFormat; } } }
51 namespace Aspose { namespace Words { class Paragraph; } }
52 namespace Aspose { namespace Words { namespace RW { namespace Docx { namespace Reader { class DocxDocumentReaderBase; } } } } }
53 namespace Aspose { namespace Words { namespace RW { namespace Nrx { namespace Reader { class NrxDocumentReaderBase; } } } } }
54 namespace Aspose { namespace Words { namespace RW { namespace Odt { namespace Reader { class OdtListStyleReader; } } } } }
55 namespace Aspose { namespace Words { namespace RW { namespace Txt { namespace Reader { class TxtReader; } } } } }
56 namespace Aspose { namespace Words { namespace RW { namespace Odt { namespace Reader { class OdtParagraphReader; } } } } }
57 namespace Aspose { namespace Words { namespace RW { namespace Docx { namespace Reader { class DocxNumberingReader; } } } } }
58 namespace Aspose { namespace Words { namespace RW { namespace Docx { namespace Writer { class DocxNumberingWriter; } } } } }
59 namespace Aspose { namespace Words { namespace RW { namespace Doc { namespace Reader { class ModelBuilder; } } } } }
60 namespace Aspose { namespace Words { namespace RW { namespace Doc { namespace Reader { class Parser; } } } } }
61 namespace Aspose { namespace Words { namespace RW { namespace Doc { namespace Writer { class DocWriter; } } } } }
62 namespace Aspose { namespace Words { namespace RW { namespace Html { namespace Reader { class HtmlListReader; } } } } }
63 namespace Aspose { namespace Words { namespace RW { namespace Rtf { namespace Reader { class RtfPictureBulletHandler; } } } } }
64 namespace Aspose { namespace Words { namespace RW { namespace Rtf { namespace Reader { class RtfGroupState; } } } } }
65 namespace Aspose { namespace Words { namespace RW { namespace Rtf { namespace Reader { class RtfLegacyListHandler; } } } } }
66 namespace Aspose { namespace Words { namespace RW { namespace Rtf { namespace Reader { class RtfListOverrideTableHandler; } } } } }
67 namespace Aspose { namespace Words { namespace RW { namespace Rtf { namespace Reader { class RtfListTableHandler; } } } } }
68 namespace Aspose { namespace Words { namespace RW { namespace Rtf { namespace Reader { class RtfParaPrReader; } } } } }
69 namespace Aspose { namespace Words { namespace RW { namespace Rtf { namespace Reader { class RtfReader; } } } } }
70 namespace Aspose { namespace Words { namespace RW { namespace Rtf { namespace Reader { class RtfReaderContext; } } } } }
71 namespace Aspose { namespace Words { namespace RW { namespace Rtf { namespace Writer { class RtfListTableWriter; } } } } }
72 namespace Aspose { namespace Words { namespace RW { namespace Wml { namespace Reader { class WmlListsReader; } } } } }
73 namespace Aspose { namespace Words { namespace RW { namespace Wml { namespace Reader { class WmlReader; } } } } }
74 namespace Aspose { namespace Words { namespace RW { namespace Wml { namespace Writer { class WmlWriter; } } } } }
75 namespace Aspose { namespace Collections { class IntToIntDictionary; } }
76 namespace Aspose { namespace Words { namespace Lists { class ListDef; } } }
77 namespace Aspose { namespace Words { namespace Drawing { class Shape; } } }
78 namespace Aspose { namespace Words { namespace Lists { enum class ListType; } } }
79 namespace Aspose { namespace Words { class INodeCloningListener; } }
80 namespace Aspose { namespace Words { class ImportContext; } }
81 namespace Aspose { namespace Words { class ParaPr; } }
82 namespace Aspose { namespace Words { enum class RevisionsView; } }
83 
84 namespace Aspose {
85 
86 namespace Words {
87 
88 namespace Lists {
89 
248 class ASPOSE_WORDS_SHARED_CLASS ListCollection : public System::Collections::Generic::IEnumerable<System::SharedPtr<Aspose::Words::Lists::List>>
249 {
250  typedef ListCollection ThisType;
252 
253  typedef ::System::BaseTypesInfo<BaseType> ThisTypeBaseTypesInfo;
254  ASPOSE_WORDS_SHARED_RTTI_INFO_DECL();
255 
256  friend class Aspose::Words::Lists::ListNumberingRestarter;
257  friend class Aspose::Words::ApsBuilder::Dml::Text::DmlTextShapeToShapeConvertor;
258  friend class Aspose::Words::Layout::ParagraphPrConverter;
259  friend class Aspose::Words::Comparing::FormattingComparer;
260  friend class Aspose::Words::Validation::DuplicateStyleRemover;
261  friend class Aspose::Words::Validation::StyleIstdNormalizer;
262  friend class Aspose::Words::RW::Dml::Writer::DmlShapeValidator;
263  friend class Aspose::Words::DocumentInserter;
264  friend class Aspose::Words::Fields::HiddenParagraphTocEntry;
265  friend class Aspose::Words::Formatting::Intern::InternManager;
266  friend class Aspose::Words::RW::Markdown::Reader::MarkdownReaderContext;
267  friend class Aspose::Words::RW::Markdown::Writer::MarkdownParagraphWriter;
268  friend class Aspose::Words::Validation::DocumentCleaner;
269  friend class Aspose::Words::RW::Doc::Reader::Word60::Word60ListHelper;
270  friend class Aspose::Words::RW::Doc::Reader::ListReader;
271  friend class Aspose::Words::RW::Doc::Writer::ListWriter;
272  friend class Aspose::Words::DocumentBase;
273  friend class Aspose::Words::Validation::ListValidator;
274  friend class Aspose::Words::Style;
275  friend class Aspose::Words::Validation::DocumentPostLoader;
276  friend class Aspose::Words::Validation::RunPrCollectorBase;
277  friend class Aspose::Words::Validation::ShapeIdGenerator;
278  friend class Aspose::Words::RW::Doc::Dofr::DofrFiler;
279  friend class Aspose::Words::Fields::FieldNumListLabelUpdater;
280  friend class Aspose::Words::NodeImporter;
281  friend class Aspose::Words::Lists::List;
282  friend class Aspose::Words::Lists::ListFactory;
283  friend class Aspose::Words::Lists::ListLevel;
285  friend class Aspose::Words::StyleCollection;
287  friend class Aspose::Words::Paragraph;
288  friend class Aspose::Words::RW::Docx::Reader::DocxDocumentReaderBase;
289  friend class Aspose::Words::RW::Nrx::Reader::NrxDocumentReaderBase;
290  friend class Aspose::Words::RW::Odt::Reader::OdtListStyleReader;
291  friend class Aspose::Words::RW::Txt::Reader::TxtReader;
292  friend class Aspose::Words::RW::Odt::Reader::OdtParagraphReader;
293  friend class Aspose::Words::RW::Docx::Reader::DocxNumberingReader;
294  friend class Aspose::Words::RW::Docx::Writer::DocxNumberingWriter;
295  friend class Aspose::Words::RW::Doc::Reader::ModelBuilder;
296  friend class Aspose::Words::RW::Doc::Reader::Parser;
297  friend class Aspose::Words::RW::Doc::Writer::DocWriter;
298  friend class Aspose::Words::RW::Html::Reader::HtmlListReader;
299  friend class Aspose::Words::RW::Rtf::Reader::RtfPictureBulletHandler;
300  friend class Aspose::Words::RW::Rtf::Reader::RtfGroupState;
301  friend class Aspose::Words::RW::Rtf::Reader::RtfLegacyListHandler;
302  friend class Aspose::Words::RW::Rtf::Reader::RtfListOverrideTableHandler;
303  friend class Aspose::Words::RW::Rtf::Reader::RtfListTableHandler;
304  friend class Aspose::Words::RW::Rtf::Reader::RtfParaPrReader;
305  friend class Aspose::Words::RW::Rtf::Reader::RtfReader;
306  friend class Aspose::Words::RW::Rtf::Reader::RtfReaderContext;
307  friend class Aspose::Words::RW::Rtf::Writer::RtfListTableWriter;
308  friend class Aspose::Words::RW::Wml::Reader::WmlListsReader;
309  friend class Aspose::Words::RW::Wml::Reader::WmlReader;
310  friend class Aspose::Words::RW::Wml::Writer::WmlWriter;
311 
312 public:
313 
315 
317 
319 
320 public:
321 
343  ASPOSE_WORDS_SHARED_API int32_t get_Count();
344 
367 
405 
528 
596 
682 
712  ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::Lists::List> GetListByListId(int32_t listId);
713 
760  ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::Lists::List> idx_get(int32_t index);
761 
762  ASPOSE_WORDS_SHARED_API iterator begin() noexcept;
763 
764  ASPOSE_WORDS_SHARED_API iterator end() noexcept;
765 
766  ASPOSE_WORDS_SHARED_API const_iterator begin() const noexcept;
767 
768  ASPOSE_WORDS_SHARED_API const_iterator end() const noexcept;
769 
770  ASPOSE_WORDS_SHARED_API const_iterator cbegin() const noexcept;
771 
772  ASPOSE_WORDS_SHARED_API const_iterator cend() const noexcept;
773 
774 protected:
775 
776  int32_t get_ListDefCount();
777  int32_t get_PictureBulletCount();
778  System::SharedPtr<System::Object> get_NumIdMacAtCleanup() const;
779  void set_NumIdMacAtCleanup(System::SharedPtr<System::Object> value);
780  System::SharedPtr<Aspose::Collections::IntToIntDictionary> get_ListIdTranslationTable() const;
781  System::SharedPtr<System::Collections::Generic::List<System::SharedPtr<Aspose::Words::Lists::ListDef>>> get_ListDefs() const;
782 
783  ListCollection(System::SharedPtr<Aspose::Words::DocumentBase> document);
784 
785  MEMBER_FUNCTION_MAKE_OBJECT_DECLARATION(ListCollection, CODEPORTING_ARGS(System::SharedPtr<Aspose::Words::DocumentBase> document));
786  System::SharedPtr<Aspose::Words::Lists::List> AddCopy(System::SharedPtr<Aspose::Words::Lists::List> srcList, bool isImport);
787  System::SharedPtr<Aspose::Words::Lists::List> FetchListByListId(int32_t listId);
788  System::SharedPtr<Aspose::Words::Lists::List> FetchListByListIdResolveStyleReference(int32_t listId);
789  System::SharedPtr<Aspose::Words::Lists::List> AddEmpty(Aspose::Words::Lists::ListType listType);
790  void AddList(System::SharedPtr<Aspose::Words::Lists::List> list);
791  void AddListDef(System::SharedPtr<Aspose::Words::Lists::ListDef> listDef);
792  System::SharedPtr<Aspose::Words::Lists::ListDef> GetListDefByIndex(int32_t index);
793  System::SharedPtr<Aspose::Words::Lists::ListDef> GetListDefByListDefId(int32_t listDefId);
794  System::SharedPtr<Aspose::Words::Lists::ListDef> FetchListDefByListDefId(int32_t listDefId);
795  int32_t GetIndexOfListDefByListDefId(int32_t listDefId);
796  System::SharedPtr<Aspose::Words::Lists::ListCollection> Clone(System::SharedPtr<Aspose::Words::DocumentBase> dstDocument, System::SharedPtr<Aspose::Words::INodeCloningListener> nodeCloningListener);
797  int32_t ImportList(System::SharedPtr<Aspose::Words::ImportContext> context, int32_t srcListId);
798  int32_t CopyList(int32_t srcListId, System::SharedPtr<Aspose::Words::ImportContext> context);
799  int32_t MakeUniquieListDefId();
800  int32_t GetNextAvailableListDefId();
801  int32_t GetNextAvailableListId();
802 
803  System::SharedPtr<Aspose::Words::Lists::List> idx_get(System::String listDefName);
804 
805  void SortByListId();
806  int32_t AddPictureBullet(System::SharedPtr<Aspose::Words::Drawing::Shape> shape);
807  System::SharedPtr<Aspose::Words::Drawing::Shape> GetPictureBullet(int32_t index);
808  void SetPictureBullet(int32_t index, System::SharedPtr<Aspose::Words::Drawing::Shape> value);
809  void ExpandDirectList(System::SharedPtr<Aspose::Words::ParaPr> srcParaPr, System::SharedPtr<Aspose::Words::ParaPr> dstParaPr);
810  System::SharedPtr<Aspose::Words::Lists::ListLevel> GetDirectListLevel(System::SharedPtr<Aspose::Words::ParaPr> paraPr);
811  System::SharedPtr<Aspose::Words::Lists::ListLevel> GetDirectListLevel(System::SharedPtr<Aspose::Words::ParaPr> paraPr, Aspose::Words::RevisionsView revisionsView);
812  void RemoveCore(int32_t listId);
813  int32_t GetTranslatedListId(int32_t listId);
814  void RemoveTranslation();
815  void ClearListStyleReferencesLevels();
816  void FixUpListsWithCircularReferences();
817 
818  virtual ASPOSE_WORDS_SHARED_API ~ListCollection();
819 
820 private:
821 
822  System::WeakPtr<Aspose::Words::DocumentBase> mDocument;
823  System::SharedPtr<System::Collections::Generic::List<System::SharedPtr<Aspose::Words::Lists::List>>> mLists;
824  System::SharedPtr<System::Collections::Generic::List<System::SharedPtr<Aspose::Words::Lists::ListDef>>> mListDefs;
825  System::SharedPtr<System::Collections::Generic::List<System::SharedPtr<Aspose::Words::Drawing::Shape>>> mPictureBullets;
826  System::SharedPtr<Aspose::Collections::IntToIntDictionary> mListIdTranslationTable;
827  int32_t mMaxUsedListId;
828  int32_t mMaxUsedListDefId;
829  System::SharedPtr<System::Object> mNumIdMacAtCleanup;
830 
831  System::SharedPtr<Aspose::Words::Lists::ListDef> AddEmptyListDef(Aspose::Words::Lists::ListType listType, int32_t listDefId);
832  int32_t ImportList(System::SharedPtr<Aspose::Words::ImportContext> context, int32_t srcListId, bool isImportListStyle);
833  bool ImportListCore(System::SharedPtr<Aspose::Words::ImportContext> context, System::SharedPtr<Aspose::Words::Lists::List> srcList);
834  static void ImportLinkedParagraphStyle(System::SharedPtr<Aspose::Words::ImportContext> context, System::SharedPtr<Aspose::Words::Lists::ListLevel> srcLevel, System::SharedPtr<Aspose::Words::Lists::ListLevel> dstLevel);
835  static void CopyLinkedParagraphStyle(System::SharedPtr<Aspose::Words::ImportContext> context, System::SharedPtr<Aspose::Words::Lists::ListLevel> srcLevel, System::SharedPtr<Aspose::Words::Lists::ListLevel> dstLevel);
836  static void ImportPictureBullet(System::SharedPtr<Aspose::Words::ImportContext> context, System::SharedPtr<Aspose::Words::Lists::ListLevel> srcLevel, System::SharedPtr<Aspose::Words::Lists::ListLevel> dstLevel);
837  System::SharedPtr<Aspose::Words::Lists::List> FindListWithEqualDefIdAndOverrides(System::SharedPtr<Aspose::Words::Lists::List> refList);
838  static void RemoveListDefFromCircularReference(System::SharedPtr<Aspose::Words::Lists::ListDef> listDef, System::SharedPtr<System::Collections::Generic::List<System::SharedPtr<Aspose::Words::Style>>> circularStyles);
839  static System::SharedPtr<System::Collections::Generic::List<System::SharedPtr<Aspose::Words::Lists::ListDef>>> GetListDefsWithCircularReferences(System::SharedPtr<System::Collections::Generic::List<System::SharedPtr<Aspose::Words::Lists::ListDef>>> listDefs, System::SharedPtr<Aspose::Words::Lists::ListDef> listDef);
840  static void ClearFirstListTabStop(System::SharedPtr<Aspose::Words::ParaPr> paraPr);
841 
842 };
843 
844 }
845 }
846 }