24#include <com/sun/star/lang/DisposedException.hpp>
25#include <com/sun/star/drawing/framework/XConfiguration.hpp>
26#include <com/sun/star/drawing/framework/XResourceFactory.hpp>
41 std::shared_ptr<ResourceFactoryManager> pResourceFactoryContainer,
42 std::shared_ptr<ConfigurationControllerBroadcaster> pBroadcaster)
44 mpResourceFactoryContainer(
std::move(pResourceFactoryContainer)),
45 mpBroadcaster(
std::move(pBroadcaster))
55 const Reference<XResourceId>& rxResourceId)
57 ::osl::MutexGuard aGuard (
maMutex);
58 ResourceMap::const_iterator iResource (
maResourceMap.find(rxResourceId));
60 return iResource->second;
66 const ::std::vector<Reference<XResourceId> >& rResources,
67 const Reference<XConfiguration>& rxConfiguration)
69 ::osl::MutexGuard aGuard (
maMutex);
73 for (
const Reference<XResourceId>& xResource : rResources)
78 const ::std::vector<Reference<XResourceId> >& rResources,
79 const Reference<XConfiguration>& rxConfiguration)
81 ::osl::MutexGuard aGuard (
maMutex);
88 [&] (Reference<XResourceId>
const& xResource) {
89 return DeactivateResource(xResource, rxConfiguration);
102 const Reference<XResourceId>& rxResourceId,
103 const Reference<XConfiguration>& rxConfiguration)
105 if ( ! rxResourceId.is())
107 OSL_ASSERT(rxResourceId.is());
111 SAL_INFO(
"sd.fwk", __func__ <<
": activating resource " <<
115 const OUString sResourceURL (rxResourceId->getResourceURL());
119 SAL_INFO(
"sd.fwk", __func__ <<
": no factory found for " << sResourceURL);
126 Reference<XResource> xResource;
129 xResource =
xFactory->createResource(rxResourceId);
131 catch (lang::DisposedException&)
141 SAL_INFO(
"sd.fwk", __func__ <<
": successfully created");
146 rxConfiguration->addResource(rxResourceId);
156 SAL_INFO(
"sd.fwk", __func__ <<
": resource creation failed");
174 const Reference<XResourceId>& rxResourceId,
175 const Reference<XConfiguration>& rxConfiguration)
177 if ( ! rxResourceId.is())
180#if OSL_DEBUG_LEVEL >= 1
181 bool bSuccess (
false);
197 rxConfiguration->removeResource(rxResourceId);
204 catch (
const lang::DisposedException& rException)
206 if ( ! rException.Context.is()
216#if OSL_DEBUG_LEVEL >= 1
232#if OSL_DEBUG_LEVEL >= 1
234 SAL_INFO(
"sd.fwk", __func__ <<
": successfully deactivated " <<
237 SAL_INFO(
"sd.fwk", __func__ <<
": activating resource " <<
244 const Reference<XResource>& rxResource,
245 const Reference<XResourceFactory>& rxFactory)
247 if ( ! rxResource.is())
249 OSL_ASSERT(rxResource.is());
259#if OSL_DEBUG_LEVEL >= 2
260 SAL_INFO(
"sd.fwk", __func__ <<
": ConfigurationControllerResourceManager::AddResource(): added " <<
262 " -> " << rxResource.get());
268 const Reference<XResourceId>& rxResourceId)
272 ResourceMap::iterator iResource (
maResourceMap.find(rxResourceId));
275#if OSL_DEBUG_LEVEL >= 2
276 SAL_INFO(
"sd.fwk", __func__ <<
": ConfigurationControllerResourceManager::RemoveResource(): removing " <<
278 " -> " << &iResource);
281 aDescriptor = iResource->second;
291 const Reference<XResourceId>& rxId1,
292 const Reference<XResourceId>& rxId2)
const
294 if (rxId1.is() && rxId2.is())
295 return rxId1->compareTo(rxId2)<0;
bool operator()(const css::uno::Reference< css::drawing::framework::XResourceId > &rxId1, const css::uno::Reference< css::drawing::framework::XResourceId > &rxId2) const
For every active resource both the resource itself as well as its creating factory are remembered,...
css::uno::Reference< css::drawing::framework::XResource > mxResource
css::uno::Reference< css::drawing::framework::XResourceFactory > mxResourceFactory
std::shared_ptr< ConfigurationControllerBroadcaster > mpBroadcaster
This broadcaster is used to notify the activation and deactivation of resources.
void ActivateResources(const ::std::vector< css::uno::Reference< css::drawing::framework::XResourceId > > &rResources, const css::uno::Reference< css::drawing::framework::XConfiguration > &rxConfiguration)
Activate all the resources that are specified by resource ids in rResources.
void DeactivateResources(const ::std::vector< css::uno::Reference< css::drawing::framework::XResourceId > > &rResources, const css::uno::Reference< css::drawing::framework::XConfiguration > &rxConfiguration)
Deactivate all the resources that are specified by resource ids in rResources.
void DeactivateResource(const css::uno::Reference< css::drawing::framework::XResourceId > &rxResourceId, const css::uno::Reference< css::drawing::framework::XConfiguration > &rxConfiguration)
~ConfigurationControllerResourceManager()
ResourceDescriptor GetResource(const css::uno::Reference< css::drawing::framework::XResourceId > &rxResourceId)
Return the descriptor for the specified resource.
void ActivateResource(const css::uno::Reference< css::drawing::framework::XResourceId > &rxResourceId, const css::uno::Reference< css::drawing::framework::XConfiguration > &rxConfiguration)
void AddResource(const css::uno::Reference< css::drawing::framework::XResource > &rxResource, const css::uno::Reference< css::drawing::framework::XResourceFactory > &rxFactory)
std::shared_ptr< ResourceFactoryManager > mpResourceFactoryContainer
ConfigurationControllerResourceManager(std::shared_ptr< ResourceFactoryManager > pResourceFactoryContainer, std::shared_ptr< ConfigurationControllerBroadcaster > pBroadcaster)
A new ResourceManager object is created with the resource factory container for creating resources an...
ResourceDescriptor RemoveResource(const css::uno::Reference< css::drawing::framework::XResourceId > &rxResourceId)
ResourceMap maResourceMap
static constexpr OUStringLiteral msResourceDeactivationEvent
static constexpr OUStringLiteral msResourceDeactivationEndEvent
static OUString ResourceIdToString(const css::uno::Reference< css::drawing::framework::XResourceId > &rxResourceId)
Return a string representation of the given XResourceId object.
static constexpr OUStringLiteral msResourceActivationEvent
#define DBG_UNHANDLED_EXCEPTION(...)
Reference< XSingleServiceFactory > xFactory
#define SAL_INFO(area, stream)