summaryrefslogtreecommitdiff
path: root/sd/source/ui/tools/SdGlobalResourceContainer.cxx
diff options
context:
space:
mode:
authorKurt Zenker <kz@openoffice.org>2008-04-03 13:53:33 +0000
committerKurt Zenker <kz@openoffice.org>2008-04-03 13:53:33 +0000
commitb46a51b70a5f8e36065123a4c065cbf587f7b656 (patch)
treebf761cc908e2ec23e5045025dea2a251a8af16d7 /sd/source/ui/tools/SdGlobalResourceContainer.cxx
parent96d279576d885395dc91a5ee08adade3121bfc14 (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.cxx43
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;