Ejemplo n.º 1
0
void InfoWidget::refreshChannelLink() {
	TextWithEntities channelLinkText;
	TextWithEntities channelLinkTextShort;
	if (auto channel = peer()->asChannel()) {
		if (!channel->username.isEmpty()) {
			channelLinkText.text = CreateInternalLinkHttps(channel->username);
			channelLinkText.entities.push_back(EntityInText(EntityInTextUrl, 0, channelLinkText.text.size()));
			channelLinkTextShort.text = CreateInternalLink(channel->username);
			channelLinkTextShort.entities.push_back(EntityInText(EntityInTextCustomUrl, 0, channelLinkTextShort.text.size(), CreateInternalLinkHttps(channel->username)));
		}
	}
	setLabeledText(nullptr, lang(lng_profile_link), &_channelLink, channelLinkText, QString());
	setLabeledText(&_channelLinkLabel, lang(lng_profile_link), &_channelLinkShort, channelLinkTextShort, QString());
	if (_channelLinkShort) {
		_channelLinkShort->setExpandLinksMode(ExpandLinksUrlOnly);
	}
}
Ejemplo n.º 2
0
std::shared_ptr<std::vector<std::shared_ptr<MuPDFDocLink>>> MuPDFDoc::GetLinks()
{
	PageCache *pageCache = &m_pages[m_currentPage];
	std::shared_ptr<std::vector<std::shared_ptr<MuPDFDocLink>>> links(new std::vector<std::shared_ptr<MuPDFDocLink>>());
	fz_matrix ctm = CalcConvertMatrix();
	fz_link* list = fz_load_links(m_document, pageCache->page);
	for(fz_link* link = list; link; link = link->next)
	{
		fz_rect rect = fz_transform_rect(ctm, link->rect);
		std::shared_ptr<MuPDFDocLink> docLink;
		switch (link->dest.kind)
		{
		case FZ_LINK_GOTO:
		{
			docLink = CreateInternalLink(link, rect);
			break;
		}

		case FZ_LINK_GOTOR:
		{
			docLink = CreateRemoteLink(link, rect);
			break;
		}

		case FZ_LINK_URI:
		{
			docLink = CreateURILink(link, rect);
			break;
		}

		default:
			continue;
		}
		links->push_back(docLink);
	}
	fz_drop_link(m_context, list);
	return links;
}