diff options
author | Kurt Zenker <kz@openoffice.org> | 2008-04-03 13:53:33 +0000 |
---|---|---|
committer | Kurt Zenker <kz@openoffice.org> | 2008-04-03 13:53:33 +0000 |
commit | b46a51b70a5f8e36065123a4c065cbf587f7b656 (patch) | |
tree | bf761cc908e2ec23e5045025dea2a251a8af16d7 /sd/source/ui/tools/SdGlobalResourceContainer.cxx | |
parent | 96d279576d885395dc91a5ee08adade3121bfc14 (diff) |
INTEGRATION: CWS presenterview (1.6.22); FILE MERGED
2008/01/23 10:53:10 af 1.6.22.1: #i18486# Added support UNO object resources.
Diffstat (limited to 'sd/source/ui/tools/SdGlobalResourceContainer.cxx')
-rw-r--r-- | sd/source/ui/tools/SdGlobalResourceContainer.cxx | 43 |
1 files changed, 41 insertions, 2 deletions
diff --git a/sd/source/ui/tools/SdGlobalResourceContainer.cxx b/sd/source/ui/tools/SdGlobalResourceContainer.cxx index 9b64297d98bb..81028ab18d28 100644 --- a/sd/source/ui/tools/SdGlobalResourceContainer.cxx +++ b/sd/source/ui/tools/SdGlobalResourceContainer.cxx @@ -4,9 +4,9 @@ * * $RCSfile: SdGlobalResourceContainer.cxx,v $ * - * $Revision: 1.6 $ + * $Revision: 1.7 $ * - * last change: $Author: rt $ $Date: 2007-04-03 16:24:21 $ + * last change: $Author: kz $ $Date: 2008-04-03 14:53:33 $ * * The Contents of this file are made available subject to * the terms of GNU Lesser General Public License Version 2.1. @@ -41,6 +41,10 @@ #include <algorithm> #include <vector> +using namespace ::com::sun::star; +using namespace ::com::sun::star::uno; + + namespace sd { @@ -62,6 +66,9 @@ private: typedef ::std::vector<boost::shared_ptr<SdGlobalResource> > SharedResourceList; SharedResourceList maSharedResources; + + typedef ::std::vector<Reference<XInterface> > XInterfaceResourceList; + XInterfaceResourceList maXInterfaceResources; }; @@ -133,6 +140,27 @@ void SdGlobalResourceContainer::AddResource ( +void SdGlobalResourceContainer::AddResource (const Reference<XInterface>& rxResource) +{ + ::osl::MutexGuard aGuard (mpImpl->maMutex); + + Implementation::XInterfaceResourceList::iterator iResource; + iResource = ::std::find ( + mpImpl->maXInterfaceResources.begin(), + mpImpl->maXInterfaceResources.end(), + rxResource); + if (iResource == mpImpl->maXInterfaceResources.end()) + mpImpl->maXInterfaceResources.push_back(rxResource); + else + { + DBG_ASSERT (false, + "SdGlobalResourceContainer:AddResource(): Resource added twice."); + } +} + + + + ::std::auto_ptr<SdGlobalResource> SdGlobalResourceContainer::ReleaseResource ( SdGlobalResource* pResource) { @@ -198,6 +226,17 @@ SdGlobalResourceContainer::~SdGlobalResourceContainer (void) } } + Implementation::XInterfaceResourceList::reverse_iterator iXInterfaceResource; + for (iXInterfaceResource = mpImpl->maXInterfaceResources.rbegin(); + iXInterfaceResource != mpImpl->maXInterfaceResources.rend(); + ++iXInterfaceResource) + { + Reference<lang::XComponent> xComponent (*iXInterfaceResource, UNO_QUERY); + *iXInterfaceResource = NULL; + if (xComponent.is()) + xComponent->dispose(); + } + DBG_ASSERT(Implementation::mpInstance == this, "~SdGlobalResourceContainer(): more than one instance of singleton"); Implementation::mpInstance = NULL; |