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 .
20 #include "FormsCollection.hxx"
21 #include "services.hxx"
22 #include <comphelper/sequence.hxx>
23 #include <comphelper/processfactory.hxx>
24 #include <cppuhelper/supportsservice.hxx>
25 #include <com/sun/star/form/XForm.hpp>
28 using namespace ::com::sun::star::lang
;
29 using namespace ::com::sun::star::uno
;
30 using namespace ::com::sun::star::form
;
31 using namespace ::com::sun::star::container
;
32 using namespace ::com::sun::star::util
;
34 OUString SAL_CALL
OFormsCollection::getServiceName() throw(RuntimeException
, std::exception
)
36 return OUString("com.sun.star.form.Forms");
39 Sequence
< sal_Int8
> SAL_CALL
OFormsCollection::getImplementationId( ) throw(RuntimeException
, std::exception
)
41 return css::uno::Sequence
<sal_Int8
>();
44 Sequence
<Type
> SAL_CALL
OFormsCollection::getTypes() throw(RuntimeException
, std::exception
)
46 return concatSequences(OInterfaceContainer::getTypes(), FormsCollectionComponentBase::getTypes(), OFormsCollection_BASE::getTypes());
49 OFormsCollection::OFormsCollection(const Reference
<XComponentContext
>& _rxFactory
)
50 :FormsCollectionComponentBase( m_aMutex
)
51 ,OInterfaceContainer( _rxFactory
, m_aMutex
, cppu::UnoType
<XForm
>::get() )
52 ,OFormsCollection_BASE()
56 OFormsCollection::OFormsCollection( const OFormsCollection
& _cloneSource
)
57 :FormsCollectionComponentBase( m_aMutex
)
58 ,OInterfaceContainer( m_aMutex
, _cloneSource
)
59 ,OFormsCollection_BASE()
63 OFormsCollection::~OFormsCollection()
65 if (!FormsCollectionComponentBase::rBHelper
.bDisposed
)
72 Any SAL_CALL
OFormsCollection::queryAggregation(const Type
& _rType
) throw(RuntimeException
, std::exception
)
74 Any aReturn
= OFormsCollection_BASE::queryInterface(_rType
);
75 if (!aReturn
.hasValue())
77 aReturn
= OInterfaceContainer::queryInterface(_rType
);
79 if (!aReturn
.hasValue())
80 aReturn
= FormsCollectionComponentBase::queryAggregation(_rType
);
86 OUString SAL_CALL
OFormsCollection::getImplementationName() throw(RuntimeException
, std::exception
)
88 return OUString("com.sun.star.form.OFormsCollection");
91 sal_Bool SAL_CALL
OFormsCollection::supportsService( const OUString
& _rServiceName
) throw(RuntimeException
, std::exception
)
93 return cppu::supportsService(this, _rServiceName
);
96 StringSequence SAL_CALL
OFormsCollection::getSupportedServiceNames() throw(RuntimeException
, std::exception
)
98 StringSequence
aReturn(2);
100 aReturn
[0] = "com.sun.star.form.Forms";
101 aReturn
[1] = "com.sun.star.form.FormComponents";
107 Reference
< XCloneable
> SAL_CALL
OFormsCollection::createClone( ) throw (RuntimeException
, std::exception
)
109 OFormsCollection
* pClone
= new OFormsCollection( *this );
110 osl_atomic_increment( &pClone
->m_refCount
);
111 pClone
->clonedFrom( *this );
112 osl_atomic_decrement( &pClone
->m_refCount
);
113 return static_cast<OInterfaceContainer
*>(pClone
);
118 void OFormsCollection::disposing()
121 SAL_INFO( "forms.component", "forms::OFormsCollection::disposing" );
122 OInterfaceContainer::disposing();
124 FormsCollectionComponentBase::disposing();
130 void OFormsCollection::setParent(const InterfaceRef
& Parent
) throw( NoSupportException
, RuntimeException
, std::exception
)
132 ::osl::MutexGuard
aGuard( m_aMutex
);
136 InterfaceRef
OFormsCollection::getParent() throw( RuntimeException
, std::exception
)
141 extern "C" SAL_DLLPUBLIC_EXPORT
css::uno::XInterface
* SAL_CALL
142 com_sun_star_form_OFormsCollection_get_implementation(css::uno::XComponentContext
* context
,
143 css::uno::Sequence
<css::uno::Any
> const &)
145 return cppu::acquire(new frm::OFormsCollection(context
));
148 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */