2018-06-02 14:29:21 +00:00
|
|
|
/*
|
|
|
|
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 {
|
2018-06-09 11:51:22 +00:00
|
|
|
namespace Output {
|
|
|
|
enum class Format;
|
|
|
|
} // namespace Output
|
2018-06-02 14:29:21 +00:00
|
|
|
|
|
|
|
struct MediaSettings {
|
2018-06-22 21:32:00 +00:00
|
|
|
bool validate() const;
|
|
|
|
|
2018-06-02 14:29:21 +00:00
|
|
|
enum class Type {
|
2018-06-15 18:56:17 +00:00
|
|
|
Photo = 0x01,
|
|
|
|
Video = 0x02,
|
|
|
|
VoiceMessage = 0x04,
|
|
|
|
VideoMessage = 0x08,
|
|
|
|
Sticker = 0x10,
|
|
|
|
GIF = 0x20,
|
|
|
|
File = 0x40,
|
2018-06-22 21:32:00 +00:00
|
|
|
|
|
|
|
MediaMask = Photo | Video | VoiceMessage | VideoMessage,
|
|
|
|
AllMask = MediaMask | Sticker | GIF | File,
|
2018-06-02 14:29:21 +00:00
|
|
|
};
|
|
|
|
using Types = base::flags<Type>;
|
|
|
|
friend inline constexpr auto is_flag_type(Type) { return true; };
|
|
|
|
|
|
|
|
Types types = DefaultTypes();
|
2022-05-10 14:22:28 +00:00
|
|
|
int64 sizeLimit = 8 * 1024 * 1024;
|
2018-06-02 14:29:21 +00:00
|
|
|
|
|
|
|
static inline Types DefaultTypes() {
|
|
|
|
return Type::Photo;
|
|
|
|
}
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
struct Settings {
|
2018-06-22 21:32:00 +00:00
|
|
|
bool validate() const;
|
|
|
|
|
2018-06-02 14:29:21 +00:00
|
|
|
enum class Type {
|
2018-06-21 14:01:27 +00:00
|
|
|
PersonalInfo = 0x001,
|
|
|
|
Userpics = 0x002,
|
|
|
|
Contacts = 0x004,
|
|
|
|
Sessions = 0x008,
|
2018-06-24 00:33:47 +00:00
|
|
|
OtherData = 0x010,
|
|
|
|
PersonalChats = 0x020,
|
|
|
|
BotChats = 0x040,
|
|
|
|
PrivateGroups = 0x080,
|
|
|
|
PublicGroups = 0x100,
|
|
|
|
PrivateChannels = 0x200,
|
|
|
|
PublicChannels = 0x400,
|
2018-06-18 21:52:13 +00:00
|
|
|
|
2018-06-21 14:01:27 +00:00
|
|
|
GroupsMask = PrivateGroups | PublicGroups,
|
|
|
|
ChannelsMask = PrivateChannels | PublicChannels,
|
|
|
|
GroupsChannelsMask = GroupsMask | ChannelsMask,
|
|
|
|
NonChannelChatsMask = PersonalChats | BotChats | PrivateGroups,
|
|
|
|
AnyChatsMask = PersonalChats | BotChats | GroupsChannelsMask,
|
2018-06-22 21:32:00 +00:00
|
|
|
NonChatsMask = PersonalInfo | Userpics | Contacts | Sessions,
|
2018-06-24 00:33:47 +00:00
|
|
|
AllMask = NonChatsMask | OtherData | AnyChatsMask,
|
2018-06-02 14:29:21 +00:00
|
|
|
};
|
|
|
|
using Types = base::flags<Type>;
|
|
|
|
friend inline constexpr auto is_flag_type(Type) { return true; };
|
|
|
|
|
|
|
|
QString path;
|
2018-09-19 12:56:08 +00:00
|
|
|
bool forceSubPath = false;
|
2018-06-09 11:51:22 +00:00
|
|
|
Output::Format format = Output::Format();
|
2018-06-02 14:29:21 +00:00
|
|
|
|
|
|
|
Types types = DefaultTypes();
|
2018-06-13 13:12:36 +00:00
|
|
|
Types fullChats = DefaultFullChats();
|
2018-06-15 18:56:17 +00:00
|
|
|
MediaSettings media;
|
2018-06-02 14:29:21 +00:00
|
|
|
|
2018-07-23 13:11:56 +00:00
|
|
|
MTPInputPeer singlePeer = MTP_inputPeerEmpty();
|
2018-10-06 11:06:07 +00:00
|
|
|
TimeId singlePeerFrom = 0;
|
|
|
|
TimeId singlePeerTill = 0;
|
2018-07-23 13:11:56 +00:00
|
|
|
|
2018-06-22 23:18:43 +00:00
|
|
|
TimeId availableAt = 0;
|
|
|
|
|
2018-07-23 13:11:56 +00:00
|
|
|
bool onlySinglePeer() const {
|
|
|
|
return singlePeer.type() != mtpc_inputPeerEmpty;
|
|
|
|
}
|
|
|
|
|
2018-06-02 14:29:21 +00:00
|
|
|
static inline Types DefaultTypes() {
|
|
|
|
return Type::PersonalInfo
|
2018-06-09 11:51:22 +00:00
|
|
|
| Type::Userpics
|
2018-06-02 14:29:21 +00:00
|
|
|
| Type::Contacts
|
2018-06-14 18:34:53 +00:00
|
|
|
| Type::PersonalChats
|
|
|
|
| Type::PrivateGroups;
|
2018-06-02 14:29:21 +00:00
|
|
|
}
|
|
|
|
|
2018-06-13 13:12:36 +00:00
|
|
|
static inline Types DefaultFullChats() {
|
2018-06-17 12:47:47 +00:00
|
|
|
return Type::PersonalChats
|
|
|
|
| Type::BotChats;
|
2018-06-13 13:12:36 +00:00
|
|
|
}
|
|
|
|
|
2018-06-02 14:29:21 +00:00
|
|
|
};
|
|
|
|
|
2018-06-24 02:06:11 +00:00
|
|
|
struct Environment {
|
|
|
|
QString internalLinksDomain;
|
|
|
|
QByteArray aboutTelegram;
|
|
|
|
QByteArray aboutContacts;
|
|
|
|
QByteArray aboutFrequent;
|
|
|
|
QByteArray aboutSessions;
|
|
|
|
QByteArray aboutWebSessions;
|
|
|
|
QByteArray aboutChats;
|
|
|
|
QByteArray aboutLeftChats;
|
|
|
|
};
|
|
|
|
|
2018-06-02 14:29:21 +00:00
|
|
|
} // namespace Export
|