88 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
This file is part of Telegram Desktop,
 | 
						|
the official desktop version of Telegram messaging app, see https://telegram.org
 | 
						|
 | 
						|
Telegram Desktop is free software: you can redistribute it and/or modify
 | 
						|
it under the terms of the GNU General Public License as published by
 | 
						|
the Free Software Foundation, either version 3 of the License, or
 | 
						|
(at your option) any later version.
 | 
						|
 | 
						|
It is distributed in the hope that it will be useful,
 | 
						|
but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 | 
						|
GNU General Public License for more details.
 | 
						|
 | 
						|
In addition, as a special exception, the copyright holders give permission
 | 
						|
to link the code of portions of this program with the OpenSSL library.
 | 
						|
 | 
						|
Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
 | 
						|
Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
 | 
						|
*/
 | 
						|
#pragma once
 | 
						|
 | 
						|
#include "data/data_photo.h"
 | 
						|
#include "data/data_document.h"
 | 
						|
 | 
						|
enum WebPageType {
 | 
						|
	WebPagePhoto,
 | 
						|
	WebPageVideo,
 | 
						|
	WebPageProfile,
 | 
						|
	WebPageArticle
 | 
						|
};
 | 
						|
 | 
						|
inline WebPageType toWebPageType(const QString &type) {
 | 
						|
	if (type == qstr("photo")) return WebPagePhoto;
 | 
						|
	if (type == qstr("video")) return WebPageVideo;
 | 
						|
	if (type == qstr("profile")) return WebPageProfile;
 | 
						|
	return WebPageArticle;
 | 
						|
}
 | 
						|
 | 
						|
struct WebPageData {
 | 
						|
	WebPageData(const WebPageId &id) : id(id) {
 | 
						|
	}
 | 
						|
	WebPageData(
 | 
						|
		const WebPageId &id,
 | 
						|
		WebPageType type,
 | 
						|
		const QString &url,
 | 
						|
		const QString &displayUrl,
 | 
						|
		const QString &siteName,
 | 
						|
		const QString &title,
 | 
						|
		const TextWithEntities &description,
 | 
						|
		DocumentData *document,
 | 
						|
		PhotoData *photo,
 | 
						|
		int32 duration,
 | 
						|
		const QString &author,
 | 
						|
		int32 pendingTill)
 | 
						|
	: id(id)
 | 
						|
	, type(type)
 | 
						|
	, url(url)
 | 
						|
	, displayUrl(displayUrl)
 | 
						|
	, siteName(siteName)
 | 
						|
	, title(title)
 | 
						|
	, description(description)
 | 
						|
	, duration(duration)
 | 
						|
	, author(author)
 | 
						|
	, photo(photo)
 | 
						|
	, document(document)
 | 
						|
	, pendingTill(pendingTill) {
 | 
						|
	}
 | 
						|
 | 
						|
	void forget() {
 | 
						|
		if (document) document->forget();
 | 
						|
		if (photo) photo->forget();
 | 
						|
	}
 | 
						|
 | 
						|
	WebPageId id = 0;
 | 
						|
	WebPageType type = WebPageArticle;
 | 
						|
	QString url;
 | 
						|
	QString displayUrl;
 | 
						|
	QString siteName;
 | 
						|
	QString title;
 | 
						|
	TextWithEntities description;
 | 
						|
	int32 duration = 0;
 | 
						|
	QString author;
 | 
						|
	PhotoData *photo = nullptr;
 | 
						|
	DocumentData *document = nullptr;
 | 
						|
	int32 pendingTill = 0;
 | 
						|
 | 
						|
};
 |