Files
core/ASCOfficePPTXFile/PPTXFormat/Logic/Hyperlink.cpp
Sergey.Konovalov c0b675c886 Bug 26079 - Теряются ссылки в автофигурах при переоткрытии документа.
git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@59062 954022d7-b5bf-4e40-9824-e11837661b57
2016-05-20 23:25:53 +03:00

52 lines
1.4 KiB
C++

//#include "stdafx.h"
#include "Hyperlink.h"
#include "./../Slide.h"
#include "./../SlideMaster.h"
#include "./../SlideLayout.h"
#include "./../Theme.h"
namespace PPTX
{
namespace Logic
{
CString Hyperlink::GetFullHyperlinkName(FileContainer* pRels)const
{
if(id.IsInit() && *id != _T(""))
{
PPTX::RId rid(*id);
CString sLink = _T("");
if (pRels != NULL)
{
smart_ptr<PPTX::HyperLink> p = pRels->hyperlink(rid);
if (p.is_init())
sLink = p->Uri().m_strFilename;
}
if(sLink.IsEmpty())
{
if(parentFileIs<Slide>())
sLink = parentFileAs<Slide>().GetFullHyperlinkNameFromRId(rid);
else if(parentFileIs<SlideLayout>())
sLink = parentFileAs<SlideLayout>().GetFullHyperlinkNameFromRId(rid);
else if(parentFileIs<SlideMaster>())
sLink = parentFileAs<SlideMaster>().GetFullHyperlinkNameFromRId(rid);
else if(parentFileIs<Theme>())
sLink = parentFileAs<Theme>().GetFullHyperlinkNameFromRId(rid);
}
sLink.Replace(TCHAR('\\'), TCHAR('/'));
sLink.Replace(_T("//"), _T("/"));
sLink.Replace(_T("http:/"), _T("http://"));
sLink.Replace(_T("https:/"), _T("https://"));
sLink.Replace(_T("ftp:/"), _T("ftp://"));
sLink.Replace(_T("file:/"), _T("file://"));
return sLink;
}
return _T("");
}
} // namespace Logic
} // namespace PPTX