30#include <com/sun/star/container/XNameAccess.hpp>
31#include <com/sun/star/container/XNameContainer.hpp>
32#include <com/sun/star/lang/XSingleServiceFactory.hpp>
33#include <osl/doublecheckedlocking.h>
34#include <osl/getglobalmutex.hxx>
41OUString GetPathToImpressConfigurationRoot()
43 return "/org.openoffice.Office.Impress/";
45OUString GetPathToSetNode()
47 return "MultiPaneGUI/ToolPanel/RecentlyUsedMasterPages";
60 ::osl::GetGlobalMutex aMutexFunctor;
61 ::osl::MutexGuard aGuard (aMutexFunctor());
67 ::std::unique_ptr<SdGlobalResource>(pInstance));
68 OSL_DOUBLE_CHECKED_LOCKING_MEMORY_BARRIER();
73 OSL_DOUBLE_CHECKED_LOCKING_MEMORY_BARRIER();
110 GetPathToImpressConfigurationRoot(),
112 Reference<container::XNameAccess> xSet (
118 static constexpr OUStringLiteral sURLMemberName(
u"URL");
119 static constexpr OUStringLiteral sNameMemberName(
u"Name");
124 const Sequence<OUString> aKeys (xSet->getElementNames());
127 for (
const auto& rKey : aKeys)
129 Reference<container::XNameAccess> xSetItem (
130 xSet->getByName(rKey), UNO_QUERY);
133 Any aURL (xSetItem->getByName(sURLMemberName));
134 Any aName (xSetItem->getByName(sNameMemberName));
144 std::make_shared<TemplatePageObjectProvider>(sURL),
145 std::make_shared<TemplatePreviewProvider>(sURL));
153 pDescriptor->mpPreviewProvider = std::make_shared<PagePreviewProvider>();
172 GetPathToImpressConfigurationRoot(),
174 Reference<container::XNameContainer> xSet (
181 const Sequence<OUString> aKeys (xSet->getElementNames());
182 for (
const auto& rKey : aKeys)
183 xSet->removeByName (rKey);
186 static constexpr OUStringLiteral sURLMemberName(
u"URL");
187 static constexpr OUStringLiteral sNameMemberName(
u"Name");
189 Reference<lang::XSingleServiceFactory> xChildFactory (
191 if ( ! xChildFactory.is())
197 OUString sKey =
"index_" + OUString::number(
nIndex);
198 Reference<container::XNameReplace> xChild(
199 xChildFactory->createInstance(), UNO_QUERY);
202 xSet->insertByName (sKey,
Any(xChild));
204 aValue <<= rDescriptor.msURL;
205 xChild->replaceByName (sURLMemberName, aValue);
207 aValue <<= rDescriptor.msName;
208 xChild->replaceByName (sNameMemberName, aValue);
266 switch (rEvent.meType)
271 mpContainer->GetTokenForStyleName(rEvent.mrMasterPageName));
286 switch (rEvent.meEventType)
310 MasterPageList::iterator aIterator (
338 bool bNotify (
false);
345 rDescriptor.maToken = aToken;
Objects of this class are sent to listeners of the MasterPageObserver singleton when the list of mast...
@ ET_MASTER_PAGE_EXISTS
Master page already exists when document is registered.
@ ET_MASTER_PAGE_ADDED
Master page has been added to a document.
@ ET_MASTER_PAGE_REMOVED
Master page has been removed from to a document.
void AddEventListener(const Link< MasterPageObserverEvent &, void > &rEventListener)
Add a listener that is informed of master pages that are newly assigned to slides or become unassigne...
static MasterPageObserver & Instance()
Return the single instance of this class.
void RemoveEventListener(const Link< MasterPageObserverEvent &, void > &rEventListener)
Remove the given listener from the list of listeners.
void AddResource(::std::unique_ptr< SdGlobalResource > pResource)
Add a resource to the container.
static SdGlobalResourceContainer & Instance()
#define LINK(Instance, Class, Member)
std::shared_ptr< T > make_shared(Args &&... args)