tdesktop/Telegram/SourceFiles/export/export_settings.h

123 lines
2.8 KiB
C
Raw Normal View History

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 {
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 {
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,
2023-06-16 17:23:40 +00:00
Stories = 0x800,
2018-06-18 21:52:13 +00:00
GroupsMask = PrivateGroups | PublicGroups,
ChannelsMask = PrivateChannels | PublicChannels,
GroupsChannelsMask = GroupsMask | ChannelsMask,
NonChannelChatsMask = PersonalChats | BotChats | PrivateGroups,
AnyChatsMask = PersonalChats | BotChats | GroupsChannelsMask,
2023-06-16 17:23:40 +00:00
NonChatsMask = (PersonalInfo
| Userpics
| Contacts
| Stories
| 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;
bool forceSubPath = false;
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
| Type::Userpics
2018-06-02 14:29:21 +00:00
| Type::Contacts
2023-06-16 17:23:40 +00:00
| Type::Stories
| Type::PersonalChats
| Type::PrivateGroups;
2018-06-02 14:29:21 +00:00
}
2018-06-13 13:12:36 +00:00
static inline Types DefaultFullChats() {
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