25 #include <strings.hrc>
39 std::unique_ptr<DataStream, o3tl::default_delete<DataStream>>
mpDataStream;
46 : mpShell(pShell), mpLinkManager(nullptr) {}
55 for (
const auto& pLinkSource : aTemp)
56 pLinkSource->Closed();
58 if (!linkManager->
GetLinks().empty())
74 mpImpl->mpDataStream.reset(p);
79 return mpImpl->mpDataStream.get();
84 return mpImpl->mpDataStream.get();
89 if (bCreate &&
mpImpl->mpShell)
91 [
this]() { return new sfx2::LinkManager(mpImpl->mpShell); } );
92 return mpImpl->mpLinkManager;
97 return mpImpl->mpLinkManager;
106 bool bAnyLeft =
false;
108 for (
const auto & rLink : rLinks)
140 for (
const auto & rLink : rLinks)
143 if (bDde && dynamic_cast<ScDdeLink*>(pBase))
145 if (bOle && dynamic_cast<SdrEmbedObjectLink*>(pBase))
147 if (bWebService && dynamic_cast<ScWebServiceLink*>(pBase))
165 for (
const auto & rLink : rLinks)
179 pWebserviceLink->
Update();
192 const OUString& aFile = pDdeLink->
GetTopic();
193 const OUString& aElem = pDdeLink->
GetItem();
194 const OUString& aType = pDdeLink->
GetAppl();
197 ScResId(SCSTR_DDEDOC_NOT_LOADED) +
206 VclMessageType::Warning, VclButtonsType::Ok,
225 for (
const auto & rLink : rLinks)
232 if ( pDdeLink->
GetAppl() == rAppl &&
248 size_t nDdeCount = 0;
250 for (
const auto & rLink : rLinks)
std::atomic< sfx2::LinkManager * > mpLinkManager
std::unique_ptr< DocumentLinkManagerImpl > mpImpl
static Type * doubleCheckedInit(std::atomic< Type * > &pointer, Function function, GuardCtor guardCtor=osl::GetGlobalMutex())
bool updateDdeOrOleOrWebServiceLinks(weld::Window *pWin)
const sfx2::LinkManager * getExistingLinkManager() const
std::unique_ptr< DataStream, o3tl::default_delete< DataStream > > mpDataStream
sfx2::LinkManager * getLinkManager(bool bCreate=true)
const SvBaseLinks & GetLinks() const
const OUString & GetItem() const
void Remove(SvBaseLink const *pLink)
OUString ScResId(const char *pId)
DocumentLinkManagerImpl(const DocumentLinkManagerImpl &)=delete
DocumentLinkManagerImpl(SfxObjectShell *pShell)
const SvLinkSources & GetServers() const
std::vector< tools::SvRef< SvBaseLink > > SvBaseLinks
const OUString & GetTopic() const
size_t getDdeLinkCount() const
bool hasDdeOrOleOrWebServiceLinks() const
const DocumentLinkManagerImpl & operator=(const DocumentLinkManagerImpl &)=delete
DataStream * getDataStream()
void setDataStream(DataStream *p)
DocumentLinkManager(SfxObjectShell *pShell)
const OUString & GetAppl() const
void updateDdeLink(std::u16string_view rAppl, std::u16string_view rTopic, std::u16string_view rItem)
static weld::MessageDialog * CreateMessageDialog(weld::Widget *pParent, VclMessageType eMessageType, VclButtonsType eButtonType, const OUString &rPrimaryMessage, bool bMobile=false)
~DocumentLinkManagerImpl()