1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
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/.
9 * This file incorporates work covered by the following license notice:
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 .
19 #ifndef INCLUDED_SW_INC_UNOCOLL_HXX
20 #define INCLUDED_SW_INC_UNOCOLL_HXX
22 #include "flyenum.hxx"
23 #include <com/sun/star/lang/XServiceInfo.hpp>
24 #include <com/sun/star/container/XEnumerationAccess.hpp>
25 #include <com/sun/star/container/XNameAccess.hpp>
26 #include <com/sun/star/container/XIndexAccess.hpp>
27 #include <cppuhelper/implbase.hxx>
32 namespace com::sun::star::text
38 class SwFormatFootnote
;
39 class SwSectionFormat
;
40 struct SvEventDescription
;
42 const SvEventDescription
* sw_GetSupportedMacroItems();
50 SwUnoCollection(SwDoc
* p
) :
52 m_bObjectValid(true){}
54 virtual ~SwUnoCollection() {}
56 virtual void Invalidate();
57 bool IsValid() const {return m_bObjectValid
;}
59 SwDoc
* GetDoc() const {return m_pDoc
;}
62 /** entries in this enum are mapped in an array in unocoll.cxx */
63 enum class SwServiceType
{
79 ContentIndexMark
= 15,
84 FieldTypeDateTime
= 20,
88 FieldTypeFileName
= 24,
89 FieldTypePageNum
= 25,
91 FieldTypeChapter
= 27,
93 FieldTypeGetReference
= 29,
94 FieldTypeConditionedText
= 30,
95 FieldTypeAnnotation
= 31,
99 FieldTypeHiddenPara
= 35,
100 FieldTypeDocInfo
= 36,
101 FieldTypeTemplateName
= 37,
102 FieldTypeUserExt
= 38,
103 FieldTypeRefPageSet
= 39,
104 FieldTypeRefPageGet
= 40,
105 FieldTypeJumpEdit
= 41,
106 FieldTypeScript
= 42,
107 FieldTypeDatabaseNextSet
= 43,
108 FieldTypeDatabaseNumSet
= 44,
109 FieldTypeDatabaseSetNum
= 45,
110 FieldTypeDatabase
= 46,
111 FieldTypeDatabaseName
= 47,
112 FieldTypeTableFormula
= 48,
113 FieldTypePageCount
= 49,
114 FieldTypeParagraphCount
= 50,
115 FieldTypeWordCount
= 51,
116 FieldTypeCharacterCount
= 52,
117 FieldTypeTableCount
= 53,
118 FieldTypeGraphicObjectCount
= 54,
119 FieldTypeEmbeddedObjectCount
= 55,
120 FieldTypeDocInfoChangeAuthor
= 56,
121 FieldTypeDocInfoChangeDateTime
= 57,
122 FieldTypeDocInfoEditTime
= 58,
123 FieldTypeDocInfoDescription
= 59,
124 FieldTypeDocInfoCreateAuthor
= 60,
125 FieldTypeDocInfoCreateDateTime
= 61,
126 FieldTypeDummy1
= 63,
127 FieldTypeDummy2
= 64,
128 FieldTypeDummy3
= 65,
129 FieldTypeDocInfoCustom
= 66,
130 FieldTypeDocInfoPrintAuthor
= 67,
131 FieldTypeDocInfoPrintDateTime
= 68,
132 FieldTypeDocInfoKeywords
= 69,
133 FieldTypeDocInfoSubject
= 70,
134 FieldTypeDocInfoTitle
= 71,
135 FieldTypeDocInfoRevision
= 72,
136 FieldTypeBibliography
= 73,
137 FieldTypeCombinedCharacters
= 74,
138 FieldTypeDropdown
= 75,
139 FieldTypeMetafield
= 76,
140 FieldTypeDummy4
= 77,
141 FieldTypeDummy5
= 78,
142 FieldTypeDummy6
= 79,
143 FieldTypeDummy7
= 80,
144 FieldMasterUser
= 81,
146 FieldMasterSetExp
= 83,
147 FieldMasterDatabase
= 84,
148 FieldMasterBibliography
= 85,
149 FieldMasterDummy2
= 86,
150 FieldMasterDummy3
= 87,
151 FieldMasterDummy4
= 88,
152 FieldMasterDummy5
= 89,
153 IndexIllustrations
= 90,
156 IndexBibliography
= 93,
158 FieldTypeInputUser
= 95,
159 FieldTypeHiddenText
= 96,
160 StyleConditionalParagraph
= 97,
163 IndexHeaderSection
= 100,
168 TypeTextGraphic
= 105,
169 Chart2DataProvider
= 106,
171 TypeFormFieldMark
= 108,
173 VbaObjectProvider
= 110,
174 VbaCodeNameProvider
= 111,
175 VbaProjectNameProvider
= 112,
183 // case-corrected versions of service-names (see #i67811)
185 #define CSS_TEXT_TEXTFIELD_DATE_TIME "com.sun.star.text.textfield.DateTime"
186 #define CSS_TEXT_TEXTFIELD_USER "com.sun.star.text.textfield.User"
187 #define CSS_TEXT_TEXTFIELD_SET_EXPRESSION "com.sun.star.text.textfield.SetExpression"
188 #define CSS_TEXT_TEXTFIELD_GET_EXPRESSION "com.sun.star.text.textfield.GetExpression"
189 #define CSS_TEXT_TEXTFIELD_FILE_NAME "com.sun.star.text.textfield.FileName"
190 #define CSS_TEXT_TEXTFIELD_PAGE_NUMBER "com.sun.star.text.textfield.PageNumber"
191 #define CSS_TEXT_TEXTFIELD_AUTHOR "com.sun.star.text.textfield.Author"
192 #define CSS_TEXT_TEXTFIELD_CHAPTER "com.sun.star.text.textfield.Chapter"
193 #define CSS_TEXT_TEXTFIELD_GET_REFERENCE "com.sun.star.text.textfield.GetReference"
194 #define CSS_TEXT_TEXTFIELD_CONDITIONAL_TEXT "com.sun.star.text.textfield.ConditionalText"
195 #define CSS_TEXT_TEXTFIELD_ANNOTATION "com.sun.star.text.textfield.Annotation"
196 #define CSS_TEXT_TEXTFIELD_INPUT "com.sun.star.text.textfield.Input"
197 #define CSS_TEXT_TEXTFIELD_MACRO "com.sun.star.text.textfield.Macro"
198 #define CSS_TEXT_TEXTFIELD_DDE "com.sun.star.text.textfield.DDE"
199 #define CSS_TEXT_TEXTFIELD_HIDDEN_PARAGRAPH "com.sun.star.text.textfield.HiddenParagraph"
200 #define CSS_TEXT_TEXTFIELD_TEMPLATE_NAME "com.sun.star.text.textfield.TemplateName"
201 #define CSS_TEXT_TEXTFIELD_EXTENDED_USER "com.sun.star.text.textfield.ExtendedUser"
202 #define CSS_TEXT_TEXTFIELD_REFERENCE_PAGE_SET "com.sun.star.text.textfield.ReferencePageSet"
203 #define CSS_TEXT_TEXTFIELD_REFERENCE_PAGE_GET "com.sun.star.text.textfield.ReferencePageGet"
204 #define CSS_TEXT_TEXTFIELD_JUMP_EDIT "com.sun.star.text.textfield.JumpEdit"
205 #define CSS_TEXT_TEXTFIELD_SCRIPT "com.sun.star.text.textfield.Script"
206 #define CSS_TEXT_TEXTFIELD_DATABASE_NEXT_SET "com.sun.star.text.textfield.DatabaseNextSet"
207 #define CSS_TEXT_TEXTFIELD_DATABASE_NUMBER_OF_SET "com.sun.star.text.textfield.DatabaseNumberOfSet"
208 #define CSS_TEXT_TEXTFIELD_DATABASE_SET_NUMBER "com.sun.star.text.textfield.DatabaseSetNumber"
209 #define CSS_TEXT_TEXTFIELD_DATABASE "com.sun.star.text.textfield.Database"
210 #define CSS_TEXT_TEXTFIELD_DATABASE_NAME "com.sun.star.text.textfield.DatabaseName"
211 #define CSS_TEXT_TEXTFIELD_TABLE_FORMULA "com.sun.star.text.textfield.TableFormula"
212 #define CSS_TEXT_TEXTFIELD_PAGE_COUNT "com.sun.star.text.textfield.PageCount"
213 #define CSS_TEXT_TEXTFIELD_PARAGRAPH_COUNT "com.sun.star.text.textfield.ParagraphCount"
214 #define CSS_TEXT_TEXTFIELD_WORD_COUNT "com.sun.star.text.textfield.WordCount"
215 #define CSS_TEXT_TEXTFIELD_CHARACTER_COUNT "com.sun.star.text.textfield.CharacterCount"
216 #define CSS_TEXT_TEXTFIELD_TABLE_COUNT "com.sun.star.text.textfield.TableCount"
217 #define CSS_TEXT_TEXTFIELD_GRAPHIC_OBJECT_COUNT "com.sun.star.text.textfield.GraphicObjectCount"
218 #define CSS_TEXT_TEXTFIELD_EMBEDDED_OBJECT_COUNT "com.sun.star.text.textfield.EmbeddedObjectCount"
219 #define CSS_TEXT_TEXTFIELD_DOCINFO_CHANGE_AUTHOR "com.sun.star.text.textfield.docinfo.ChangeAuthor"
220 #define CSS_TEXT_TEXTFIELD_DOCINFO_CHANGE_DATE_TIME "com.sun.star.text.textfield.docinfo.ChangeDateTime"
221 #define CSS_TEXT_TEXTFIELD_DOCINFO_EDIT_TIME "com.sun.star.text.textfield.docinfo.EditTime"
222 #define CSS_TEXT_TEXTFIELD_DOCINFO_DESCRIPTION "com.sun.star.text.textfield.docinfo.Description"
223 #define CSS_TEXT_TEXTFIELD_DOCINFO_CREATE_AUTHOR "com.sun.star.text.textfield.docinfo.CreateAuthor"
224 #define CSS_TEXT_TEXTFIELD_DOCINFO_CREATE_DATE_TIME "com.sun.star.text.textfield.docinfo.CreateDateTime"
225 #define CSS_TEXT_TEXTFIELD_DOCINFO_PRINT_AUTHOR "com.sun.star.text.textfield.docinfo.PrintAuthor"
226 #define CSS_TEXT_TEXTFIELD_DOCINFO_PRINT_DATE_TIME "com.sun.star.text.textfield.docinfo.PrintDateTime"
227 #define CSS_TEXT_TEXTFIELD_DOCINFO_KEY_WORDS "com.sun.star.text.textfield.docinfo.KeyWords"
228 #define CSS_TEXT_TEXTFIELD_DOCINFO_SUBJECT "com.sun.star.text.textfield.docinfo.Subject"
229 #define CSS_TEXT_TEXTFIELD_DOCINFO_TITLE "com.sun.star.text.textfield.docinfo.Title"
230 #define CSS_TEXT_TEXTFIELD_DOCINFO_REVISION "com.sun.star.text.textfield.docinfo.Revision"
231 #define CSS_TEXT_TEXTFIELD_DOCINFO_CUSTOM "com.sun.star.text.textfield.docinfo.Custom"
232 #define CSS_TEXT_TEXTFIELD_BIBLIOGRAPHY "com.sun.star.text.textfield.Bibliography"
233 #define CSS_TEXT_TEXTFIELD_COMBINED_CHARACTERS "com.sun.star.text.textfield.CombinedCharacters"
234 #define CSS_TEXT_TEXTFIELD_DROP_DOWN "com.sun.star.text.textfield.DropDown"
235 #define CSS_TEXT_TEXTFIELD_INPUT_USER "com.sun.star.text.textfield.InputUser"
236 #define CSS_TEXT_TEXTFIELD_HIDDEN_TEXT "com.sun.star.text.textfield.HiddenText"
237 #define CSS_TEXT_FIELDMASTER_USER "com.sun.star.text.fieldmaster.User"
238 #define CSS_TEXT_FIELDMASTER_DDE "com.sun.star.text.fieldmaster.DDE"
239 #define CSS_TEXT_FIELDMASTER_SET_EXPRESSION "com.sun.star.text.fieldmaster.SetExpression"
240 #define CSS_TEXT_FIELDMASTER_DATABASE "com.sun.star.text.fieldmaster.Database"
241 #define CSS_TEXT_FIELDMASTER_BIBLIOGRAPHY "com.sun.star.text.fieldmaster.Bibliography"
243 class SwXServiceProvider
246 static OUString
GetProviderName(SwServiceType nObjectType
);
247 static SwServiceType
GetProviderType(const OUString
& rServiceName
);
248 static css::uno::Reference
< css::uno::XInterface
> MakeInstance(SwServiceType nObjectType
, SwDoc
& rDoc
);
249 static css::uno::Sequence
<OUString
> GetAllServiceNames();
256 css::container::XNameAccess
,
257 css::container::XIndexAccess
,
258 css::lang::XServiceInfo
260 SwCollectionBaseClass
;
261 class SW_DLLPUBLIC SwXTextTables final
: public SwCollectionBaseClass
,
262 public SwUnoCollection
264 virtual ~SwXTextTables() override
;
266 SwXTextTables(SwDoc
* pDoc
);
269 virtual sal_Int32 SAL_CALL
getCount( ) override
;
270 virtual css::uno::Any SAL_CALL
getByIndex(sal_Int32 nIndex
) override
;
273 virtual css::uno::Any SAL_CALL
getByName(const OUString
& Name
) override
;
274 virtual css::uno::Sequence
< OUString
> SAL_CALL
getElementNames() override
;
275 virtual sal_Bool SAL_CALL
hasByName(const OUString
& Name
) override
;
278 virtual css::uno::Type SAL_CALL
getElementType( ) override
;
279 virtual sal_Bool SAL_CALL
hasElements( ) override
;
282 virtual OUString SAL_CALL
getImplementationName() override
;
283 virtual sal_Bool SAL_CALL
supportsService(const OUString
& ServiceName
) override
;
284 virtual css::uno::Sequence
< OUString
> SAL_CALL
getSupportedServiceNames() override
;
286 static css::uno::Reference
<css::text::XTextTable
> GetObject(SwFrameFormat
& rFormat
);
292 css::container::XEnumerationAccess
,
293 css::container::XNameAccess
,
294 css::container::XIndexAccess
,
295 css::lang::XServiceInfo
296 > SwXFramesBaseClass
;
298 class SwXFrames
: public SwXFramesBaseClass
,
299 public SwUnoCollection
301 const FlyCntType m_eType
;
303 virtual ~SwXFrames() override
;
305 SwXFrames(SwDoc
* pDoc
, FlyCntType eSet
);
308 virtual css::uno::Reference
< css::container::XEnumeration
> SAL_CALL
createEnumeration() override
;
311 virtual sal_Int32 SAL_CALL
getCount() override
;
312 virtual css::uno::Any SAL_CALL
getByIndex(sal_Int32 nIndex
) override
;
315 virtual css::uno::Any SAL_CALL
getByName(const OUString
& Name
) override
;
316 virtual css::uno::Sequence
< OUString
> SAL_CALL
getElementNames() override
;
317 virtual sal_Bool SAL_CALL
hasByName(const OUString
& Name
) override
;
320 virtual css::uno::Type SAL_CALL
getElementType( ) override
;
321 virtual sal_Bool SAL_CALL
hasElements( ) override
;
324 virtual OUString SAL_CALL
getImplementationName() override
;
325 virtual sal_Bool SAL_CALL
supportsService(const OUString
& ServiceName
) override
;
326 virtual css::uno::Sequence
< OUString
> SAL_CALL
getSupportedServiceNames() override
;
329 class SwXTextFrames final
: public SwXFrames
331 virtual ~SwXTextFrames() override
;
333 SwXTextFrames(SwDoc
* pDoc
);
336 virtual OUString SAL_CALL
getImplementationName() override
;
337 virtual sal_Bool SAL_CALL
supportsService(const OUString
& ServiceName
) override
;
338 virtual css::uno::Sequence
< OUString
> SAL_CALL
getSupportedServiceNames() override
;
342 class SwXTextGraphicObjects final
: public SwXFrames
344 virtual ~SwXTextGraphicObjects() override
;
346 SwXTextGraphicObjects(SwDoc
* pDoc
);
349 virtual OUString SAL_CALL
getImplementationName() override
;
350 virtual sal_Bool SAL_CALL
supportsService(const OUString
& ServiceName
) override
;
351 virtual css::uno::Sequence
< OUString
> SAL_CALL
getSupportedServiceNames() override
;
355 class SwXTextEmbeddedObjects final
: public SwXFrames
357 virtual ~SwXTextEmbeddedObjects() override
;
359 SwXTextEmbeddedObjects(SwDoc
* pDoc
);
362 virtual OUString SAL_CALL
getImplementationName() override
;
363 virtual sal_Bool SAL_CALL
supportsService(const OUString
& ServiceName
) override
;
364 virtual css::uno::Sequence
< OUString
> SAL_CALL
getSupportedServiceNames() override
;
368 class SwXTextSections final
: public SwCollectionBaseClass
,
369 public SwUnoCollection
371 virtual ~SwXTextSections() override
;
373 SwXTextSections(SwDoc
* pDoc
);
376 virtual sal_Int32 SAL_CALL
getCount() override
;
377 virtual css::uno::Any SAL_CALL
getByIndex(sal_Int32 nIndex
) override
;
380 virtual css::uno::Any SAL_CALL
getByName(const OUString
& Name
) override
;
381 virtual css::uno::Sequence
< OUString
> SAL_CALL
getElementNames() override
;
382 virtual sal_Bool SAL_CALL
hasByName(const OUString
& Name
) override
;
385 virtual css::uno::Type SAL_CALL
getElementType( ) override
;
386 virtual sal_Bool SAL_CALL
hasElements( ) override
;
389 virtual OUString SAL_CALL
getImplementationName() override
;
390 virtual sal_Bool SAL_CALL
supportsService(const OUString
& ServiceName
) override
;
391 virtual css::uno::Sequence
< OUString
> SAL_CALL
getSupportedServiceNames() override
;
393 static css::uno::Reference
< css::text::XTextSection
> GetObject( SwSectionFormat
& rFormat
);
396 class SwXBookmarks final
: public SwCollectionBaseClass
,
397 public SwUnoCollection
399 virtual ~SwXBookmarks() override
;
401 SwXBookmarks(SwDoc
* pDoc
);
404 virtual sal_Int32 SAL_CALL
getCount() override
;
405 virtual css::uno::Any SAL_CALL
getByIndex(sal_Int32 nIndex
) override
;
408 virtual css::uno::Any SAL_CALL
getByName(const OUString
& Name
) override
;
409 virtual css::uno::Sequence
< OUString
> SAL_CALL
getElementNames() override
;
410 virtual sal_Bool SAL_CALL
hasByName(const OUString
& Name
) override
;
413 virtual css::uno::Type SAL_CALL
getElementType( ) override
;
414 virtual sal_Bool SAL_CALL
hasElements( ) override
;
417 virtual OUString SAL_CALL
getImplementationName() override
;
418 virtual sal_Bool SAL_CALL
supportsService(const OUString
& ServiceName
) override
;
419 virtual css::uno::Sequence
< OUString
> SAL_CALL
getSupportedServiceNames() override
;
423 class SwXNumberingRulesCollection final
: public cppu::WeakImplHelper
425 css::container::XIndexAccess
427 public SwUnoCollection
429 virtual ~SwXNumberingRulesCollection() override
;
432 SwXNumberingRulesCollection( SwDoc
* pDoc
);
435 virtual sal_Int32 SAL_CALL
getCount() override
;
436 virtual css::uno::Any SAL_CALL
getByIndex(sal_Int32 nIndex
) override
;
439 virtual css::uno::Type SAL_CALL
getElementType( ) override
;
440 virtual sal_Bool SAL_CALL
hasElements( ) override
;
446 css::container::XIndexAccess
,
447 css::lang::XServiceInfo
449 SwSimpleIndexAccessBaseClass
;
451 class SwXFootnotes final
: public SwSimpleIndexAccessBaseClass
,
452 public SwUnoCollection
454 const bool m_bEndnote
;
456 virtual ~SwXFootnotes() override
;
458 SwXFootnotes(bool bEnd
, SwDoc
* pDoc
);
461 virtual sal_Int32 SAL_CALL
getCount() override
;
462 virtual css::uno::Any SAL_CALL
getByIndex(sal_Int32 nIndex
) override
;
465 virtual css::uno::Type SAL_CALL
getElementType( ) override
;
466 virtual sal_Bool SAL_CALL
hasElements( ) override
;
469 virtual OUString SAL_CALL
getImplementationName() override
;
470 virtual sal_Bool SAL_CALL
supportsService(const OUString
& ServiceName
) override
;
471 virtual css::uno::Sequence
< OUString
> SAL_CALL
getSupportedServiceNames() override
;
473 static css::uno::Reference
< css::text::XFootnote
> GetObject( SwDoc
& rDoc
, const SwFormatFootnote
& rFormat
);
476 class SwXReferenceMarks final
: public SwCollectionBaseClass
,
477 public SwUnoCollection
479 virtual ~SwXReferenceMarks() override
;
481 SwXReferenceMarks(SwDoc
* pDoc
);
484 virtual sal_Int32 SAL_CALL
getCount() override
;
485 virtual css::uno::Any SAL_CALL
getByIndex(sal_Int32 nIndex
) override
;
488 virtual css::uno::Any SAL_CALL
getByName(const OUString
& Name
) override
;
489 virtual css::uno::Sequence
< OUString
> SAL_CALL
getElementNames() override
;
490 virtual sal_Bool SAL_CALL
hasByName(const OUString
& Name
) override
;
493 virtual css::uno::Type SAL_CALL
getElementType( ) override
;
494 virtual sal_Bool SAL_CALL
hasElements( ) override
;
497 virtual OUString SAL_CALL
getImplementationName() override
;
498 virtual sal_Bool SAL_CALL
supportsService(const OUString
& ServiceName
) override
;
499 virtual css::uno::Sequence
< OUString
> SAL_CALL
getSupportedServiceNames() override
;
505 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */