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_UNOFIELDCOLL_HXX
21 #define INCLUDED_SW_INC_UNOFIELDCOLL_HXX
22 
23 #include <memory>
24 
25 #include <com/sun/star/util/XRefreshable.hpp>
26 
27 #include "unocoll.hxx"
28 
29 class SwFieldType;
30 
31 typedef ::cppu::WeakImplHelper
32 <   css::container::XNameAccess
33 ,   css::lang::XServiceInfo
34 > SwXTextFieldMasters_Base;
35 
36 class SwXTextFieldMasters final
37     : public SwXTextFieldMasters_Base
38     , public SwUnoCollection
39 {
40     virtual ~SwXTextFieldMasters() override;
41 
42 public:
43     SwXTextFieldMasters(SwDoc* pDoc);
44 
45     static bool getInstanceName(const SwFieldType& rFieldType, OUString& rName);
46 
47     // XServiceInfo
48     virtual OUString SAL_CALL getImplementationName() override;
49     virtual sal_Bool SAL_CALL supportsService(
50             const OUString& rServiceName) override;
51     virtual css::uno::Sequence< OUString > SAL_CALL
52         getSupportedServiceNames() override;
53 
54     // XElementAccess
55     virtual css::uno::Type SAL_CALL getElementType() override;
56     virtual sal_Bool SAL_CALL hasElements() override;
57 
58     // XNameAccess
59     virtual css::uno::Any SAL_CALL getByName(
60             const OUString& rName) override;
61     virtual css::uno::Sequence< OUString > SAL_CALL
62         getElementNames() override;
63     virtual sal_Bool SAL_CALL hasByName(const OUString& rName) override;
64 
65 };
66 
67 typedef ::cppu::WeakImplHelper
68 <   css::container::XEnumerationAccess
69 ,   css::lang::XServiceInfo
70 ,   css::util::XRefreshable
71 > SwXTextFieldTypes_Base;
72 
73 class SwXTextFieldTypes final
74     : public SwXTextFieldTypes_Base
75     , public SwUnoCollection
76 {
77 private:
78     class Impl;
79     std::unique_ptr<Impl> m_pImpl; // currently does not need UnoImplPtr
80 
81     virtual ~SwXTextFieldTypes() override;
82 
83 public:
84     SwXTextFieldTypes(SwDoc* pDoc);
85 
86     // SwUnoCollection
87     virtual void    Invalidate() override;
88 
89     // XServiceInfo
90     virtual OUString SAL_CALL getImplementationName() override;
91     virtual sal_Bool SAL_CALL supportsService(
92             const OUString& rServiceName) override;
93     virtual css::uno::Sequence< OUString > SAL_CALL
94         getSupportedServiceNames() override;
95 
96     // XElementAccess
97     virtual css::uno::Type SAL_CALL getElementType() override;
98     virtual sal_Bool SAL_CALL hasElements() override;
99 
100     // XEnumerationAccess
101     virtual css::uno::Reference<
102             css::container::XEnumeration >  SAL_CALL
103         createEnumeration() override;
104 
105     // XRefreshable
106     virtual void SAL_CALL refresh() override;
107     virtual void SAL_CALL addRefreshListener(
108             const css::uno::Reference<
109                 css::util::XRefreshListener>& xListener) override;
110     virtual void SAL_CALL removeRefreshListener(
111             const css::uno::Reference<
112                 css::util::XRefreshListener>& xListener) override;
113 
114 };
115 
116 #endif
117 
118 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
119