116 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			116 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
| This file is part of Telegram Desktop,
 | |
| the official desktop application for the Telegram messaging service.
 | |
| 
 | |
| For license and copyright information please follow this link:
 | |
| https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
 | |
| */
 | |
| #pragma once
 | |
| 
 | |
| #include "base/flags.h"
 | |
| #include "base/flat_map.h"
 | |
| 
 | |
| namespace Export {
 | |
| namespace Output {
 | |
| enum class Format;
 | |
| } // namespace Output
 | |
| 
 | |
| struct MediaSettings {
 | |
| 	bool validate() const;
 | |
| 
 | |
| 	enum class Type {
 | |
| 		Photo        = 0x01,
 | |
| 		Video        = 0x02,
 | |
| 		VoiceMessage = 0x04,
 | |
| 		VideoMessage = 0x08,
 | |
| 		Sticker      = 0x10,
 | |
| 		GIF          = 0x20,
 | |
| 		File         = 0x40,
 | |
| 
 | |
| 		MediaMask    = Photo | Video | VoiceMessage | VideoMessage,
 | |
| 		AllMask      = MediaMask | Sticker | GIF | File,
 | |
| 	};
 | |
| 	using Types = base::flags<Type>;
 | |
| 	friend inline constexpr auto is_flag_type(Type) { return true; };
 | |
| 
 | |
| 	Types types = DefaultTypes();
 | |
| 	int64 sizeLimit = 8 * 1024 * 1024;
 | |
| 
 | |
| 	static inline Types DefaultTypes() {
 | |
| 		return Type::Photo;
 | |
| 	}
 | |
| 
 | |
| };
 | |
| 
 | |
| struct Settings {
 | |
| 	bool validate() const;
 | |
| 
 | |
| 	enum class Type {
 | |
| 		PersonalInfo        = 0x001,
 | |
| 		Userpics            = 0x002,
 | |
| 		Contacts            = 0x004,
 | |
| 		Sessions            = 0x008,
 | |
| 		OtherData           = 0x010,
 | |
| 		PersonalChats       = 0x020,
 | |
| 		BotChats            = 0x040,
 | |
| 		PrivateGroups       = 0x080,
 | |
| 		PublicGroups        = 0x100,
 | |
| 		PrivateChannels     = 0x200,
 | |
| 		PublicChannels      = 0x400,
 | |
| 
 | |
| 		GroupsMask          = PrivateGroups | PublicGroups,
 | |
| 		ChannelsMask        = PrivateChannels | PublicChannels,
 | |
| 		GroupsChannelsMask  = GroupsMask | ChannelsMask,
 | |
| 		NonChannelChatsMask = PersonalChats | BotChats | PrivateGroups,
 | |
| 		AnyChatsMask        = PersonalChats | BotChats | GroupsChannelsMask,
 | |
| 		NonChatsMask        = PersonalInfo | Userpics | Contacts | Sessions,
 | |
| 		AllMask             = NonChatsMask | OtherData | AnyChatsMask,
 | |
| 	};
 | |
| 	using Types = base::flags<Type>;
 | |
| 	friend inline constexpr auto is_flag_type(Type) { return true; };
 | |
| 
 | |
| 	QString path;
 | |
| 	bool forceSubPath = false;
 | |
| 	Output::Format format = Output::Format();
 | |
| 
 | |
| 	Types types = DefaultTypes();
 | |
| 	Types fullChats = DefaultFullChats();
 | |
| 	MediaSettings media;
 | |
| 
 | |
| 	MTPInputPeer singlePeer = MTP_inputPeerEmpty();
 | |
| 	TimeId singlePeerFrom = 0;
 | |
| 	TimeId singlePeerTill = 0;
 | |
| 
 | |
| 	TimeId availableAt = 0;
 | |
| 
 | |
| 	bool onlySinglePeer() const {
 | |
| 		return singlePeer.type() != mtpc_inputPeerEmpty;
 | |
| 	}
 | |
| 
 | |
| 	static inline Types DefaultTypes() {
 | |
| 		return Type::PersonalInfo
 | |
| 			| Type::Userpics
 | |
| 			| Type::Contacts
 | |
| 			| Type::PersonalChats
 | |
| 			| Type::PrivateGroups;
 | |
| 	}
 | |
| 
 | |
| 	static inline Types DefaultFullChats() {
 | |
| 		return Type::PersonalChats
 | |
| 			| Type::BotChats;
 | |
| 	}
 | |
| 
 | |
| };
 | |
| 
 | |
| struct Environment {
 | |
| 	QString internalLinksDomain;
 | |
| 	QByteArray aboutTelegram;
 | |
| 	QByteArray aboutContacts;
 | |
| 	QByteArray aboutFrequent;
 | |
| 	QByteArray aboutSessions;
 | |
| 	QByteArray aboutWebSessions;
 | |
| 	QByteArray aboutChats;
 | |
| 	QByteArray aboutLeftChats;
 | |
| };
 | |
| 
 | |
| } // namespace Export
 | 
