Skip to content

Commit ffc20e4

Browse files
committed
Divide structs into several data/ modules.
1 parent f2a5862 commit ffc20e4

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+4985
-4065
lines changed

Telegram/SourceFiles/apiwrap.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
2121
#include "apiwrap.h"
2222

2323
#include "data/data_drafts.h"
24+
#include "data/data_photo.h"
25+
#include "data/data_web_page.h"
2426
#include "observer_peer.h"
2527
#include "lang/lang_keys.h"
2628
#include "application.h"
@@ -330,7 +332,7 @@ void ApiWrap::gotChatFull(PeerData *peer, const MTPmessages_ChatFull &result, mt
330332
auto canViewMembers = channel->canViewMembers();
331333
auto canEditStickers = channel->canEditStickers();
332334

333-
channel->flagsFull = f.vflags.v;
335+
channel->setFullFlags(f.vflags.v);
334336
auto newPhotoId = 0;
335337
if (auto photo = App::feedPhoto(f.vchat_photo)) {
336338
newPhotoId = photo->id;
@@ -341,10 +343,7 @@ void ApiWrap::gotChatFull(PeerData *peer, const MTPmessages_ChatFull &result, mt
341343
Notify::peerUpdatedDelayed(channel, UpdateFlag::PhotoChanged);
342344
}
343345
if (f.has_migrated_from_chat_id()) {
344-
if (!channel->mgInfo) {
345-
channel->flags |= MTPDchannel::Flag::f_megagroup;
346-
channel->flagsUpdated();
347-
}
346+
channel->addFlags(MTPDchannel::Flag::f_megagroup);
348347
auto cfrom = App::chat(peerFromChat(f.vmigrated_from_chat_id));
349348
bool updatedTo = (cfrom->migrateToPtr != channel), updatedFrom = (channel->mgInfo->migrateFromPtr != cfrom);
350349
if (updatedTo) {
@@ -441,6 +440,7 @@ void ApiWrap::gotChatFull(PeerData *peer, const MTPmessages_ChatFull &result, mt
441440

442441
void ApiWrap::gotUserFull(UserData *user, const MTPUserFull &result, mtpRequestId req) {
443442
auto &d = result.c_userFull();
443+
444444
App::feedUsers(MTP_vector<MTPUser>(1, d.vuser));
445445
if (d.has_profile_photo()) {
446446
App::feedPhoto(d.vprofile_photo);

Telegram/SourceFiles/app.cpp

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -394,8 +394,7 @@ namespace {
394394
data->inputUser = MTP_inputUser(d.vid, MTP_long(0));
395395
data->setName(lang(lng_deleted), QString(), QString(), QString());
396396
data->setPhoto(MTP_userProfilePhotoEmpty());
397-
data->setIsInaccessible();
398-
data->flags = 0;
397+
data->setFlags(MTPDuser_ClientFlag::f_inaccessible | 0);
399398
data->setBotInfoVersion(-1);
400399
status = &emptyStatus;
401400
data->contact = -1;
@@ -411,14 +410,18 @@ namespace {
411410
data = App::user(peer);
412411
auto canShareThisContact = data->canShareThisContactFast();
413412
wasContact = data->isContact();
414-
if (!minimal) {
415-
data->flags = d.vflags.v;
413+
if (minimal) {
414+
auto mask = 0
415+
| MTPDuser_ClientFlag::f_inaccessible;
416+
data->setFlags((data->flags() & ~mask) | (d.vflags.v & mask));
417+
} else {
418+
data->setFlags(d.vflags.v);
416419
if (d.is_self()) {
417420
data->input = MTP_inputPeerSelf();
418421
data->inputUser = MTP_inputUserSelf();
419422
} else if (!d.has_access_hash()) {
420-
data->input = MTP_inputPeerUser(d.vid, MTP_long(data->isInaccessible() ? 0 : data->access));
421-
data->inputUser = MTP_inputUser(d.vid, MTP_long(data->isInaccessible() ? 0 : data->access));
423+
data->input = MTP_inputPeerUser(d.vid, MTP_long(data->accessHash()));
424+
data->inputUser = MTP_inputUser(d.vid, MTP_long(data->accessHash()));
422425
} else {
423426
data->input = MTP_inputPeerUser(d.vid, d.vaccess_hash);
424427
data->inputUser = MTP_inputUser(d.vid, d.vaccess_hash);
@@ -436,7 +439,6 @@ namespace {
436439
}
437440
data->setName(lang(lng_deleted), QString(), QString(), QString());
438441
data->setPhoto(MTP_userProfilePhotoEmpty());
439-
data->setIsInaccessible();
440442
status = &emptyStatus;
441443
} else {
442444
// apply first_name and last_name from minimal user only if we don't have
@@ -475,7 +477,9 @@ namespace {
475477
} else {
476478
data->setPhoto(MTP_userProfilePhotoEmpty());
477479
}
478-
if (d.has_access_hash()) data->access = d.vaccess_hash.v;
480+
if (d.has_access_hash()) {
481+
data->setAccessHash(d.vaccess_hash.v);
482+
}
479483
status = d.has_status() ? &d.vstatus : &emptyStatus;
480484
}
481485
if (!minimal) {
@@ -579,12 +583,9 @@ namespace {
579583
cdata->date = d.vdate.v;
580584

581585
if (d.has_migrated_to() && d.vmigrated_to.type() == mtpc_inputChannel) {
582-
const auto &c(d.vmigrated_to.c_inputChannel());
583-
ChannelData *channel = App::channel(peerFromChannel(c.vchannel_id));
584-
if (!channel->mgInfo) {
585-
channel->flags |= MTPDchannel::Flag::f_megagroup;
586-
channel->flagsUpdated();
587-
}
586+
auto &c = d.vmigrated_to.c_inputChannel();
587+
auto channel = App::channel(peerFromChannel(c.vchannel_id));
588+
channel->addFlags(MTPDchannel::Flag::f_megagroup);
588589
if (!channel->access) {
589590
channel->input = MTP_inputPeerChannel(c.vchannel_id, c.vaccess_hash);
590591
channel->inputChannel = d.vmigrated_to;
@@ -615,13 +616,12 @@ namespace {
615616
}
616617
}
617618

618-
if (!(cdata->flags & MTPDchat::Flag::f_admins_enabled) && (d.vflags.v & MTPDchat::Flag::f_admins_enabled)) {
619+
if (!(cdata->flags() & MTPDchat::Flag::f_admins_enabled) && (d.vflags.v & MTPDchat::Flag::f_admins_enabled)) {
619620
cdata->invalidateParticipants();
620621
}
621-
cdata->flags = d.vflags.v;
622+
cdata->setFlags(d.vflags.v);
622623

623624
cdata->count = d.vparticipants_count.v;
624-
cdata->setIsForbidden(false);
625625
if (canEdit != cdata->canEdit()) {
626626
update.flags |= UpdateFlag::ChatCanEdit;
627627
}
@@ -639,8 +639,7 @@ namespace {
639639
cdata->date = 0;
640640
cdata->count = -1;
641641
cdata->invalidateParticipants();
642-
cdata->flags = 0;
643-
cdata->setIsForbidden(true);
642+
cdata->setFlags(MTPDchat_ClientFlag::f_forbidden | 0);
644643
if (canEdit != cdata->canEdit()) {
645644
update.flags |= UpdateFlag::ChatCanEdit;
646645
}
@@ -667,8 +666,13 @@ namespace {
667666
auto canAddMembers = cdata->canAddMembers();
668667

669668
if (minimal) {
670-
auto mask = MTPDchannel::Flag::f_broadcast | MTPDchannel::Flag::f_verified | MTPDchannel::Flag::f_megagroup | MTPDchannel::Flag::f_democracy;
671-
cdata->flags = (cdata->flags & ~mask) | (d.vflags.v & mask);
669+
auto mask = 0
670+
| MTPDchannel::Flag::f_broadcast
671+
| MTPDchannel::Flag::f_verified
672+
| MTPDchannel::Flag::f_megagroup
673+
| MTPDchannel::Flag::f_democracy
674+
| MTPDchannel_ClientFlag::f_forbidden;
675+
cdata->setFlags((cdata->flags() & ~mask) | (d.vflags.v & mask));
672676
} else {
673677
if (d.has_admin_rights()) {
674678
cdata->setAdminRights(d.vadmin_rights);
@@ -691,14 +695,12 @@ namespace {
691695
} else {
692696
cdata->setRestrictionReason(QString());
693697
}
694-
cdata->flags = d.vflags.v;
698+
cdata->setFlags(d.vflags.v);
695699
}
696-
cdata->flagsUpdated();
697700

698701
QString uname = d.has_username() ? TextUtilities::SingleLine(qs(d.vusername)) : QString();
699702
cdata->setName(qs(d.vtitle), uname);
700703

701-
cdata->setIsForbidden(false);
702704
cdata->setPhoto(d.vphoto);
703705

704706
if (wasInChannel != cdata->amIn()) update.flags |= UpdateFlag::ChannelAmIn;
@@ -722,8 +724,7 @@ namespace {
722724
cdata->inputChannel = MTP_inputChannel(d.vid, d.vaccess_hash);
723725

724726
auto mask = mtpCastFlags(MTPDchannelForbidden::Flag::f_broadcast | MTPDchannelForbidden::Flag::f_megagroup);
725-
cdata->flags = (cdata->flags & ~mask) | (mtpCastFlags(d.vflags) & mask);
726-
cdata->flagsUpdated();
727+
cdata->setFlags((cdata->flags() & ~mask) | (mtpCastFlags(d.vflags) & mask) | MTPDchannel_ClientFlag::f_forbidden);
727728

728729
if (cdata->hasAdminRights()) {
729730
cdata->setAdminRights(MTP_channelAdminRights(MTP_flags(0)));
@@ -738,7 +739,6 @@ namespace {
738739
cdata->setPhoto(MTP_chatPhotoEmpty());
739740
cdata->date = 0;
740741
cdata->setMembersCount(0);
741-
cdata->setIsForbidden(true);
742742

743743
if (wasInChannel != cdata->amIn()) update.flags |= UpdateFlag::ChannelAmIn;
744744
if (canViewAdmins != cdata->canViewAdmins()
@@ -795,7 +795,7 @@ namespace {
795795
int32 pversion = chat->participants.isEmpty() ? 1 : (chat->participants.begin().value() + 1);
796796
chat->invitedByMe.clear();
797797
chat->admins.clear();
798-
chat->flags &= ~MTPDchat::Flag::f_admin;
798+
chat->removeFlags(MTPDchat::Flag::f_admin);
799799
for (auto i = v.cbegin(), e = v.cend(); i != e; ++i) {
800800
int32 uid = 0, inviter = 0;
801801
switch (i->type()) {
@@ -826,7 +826,7 @@ namespace {
826826
if (i->type() == mtpc_chatParticipantAdmin) {
827827
chat->admins.insert(user);
828828
if (user->isSelf()) {
829-
chat->flags |= MTPDchat::Flag::f_admin;
829+
chat->addFlags(MTPDchat::Flag::f_admin);
830830
}
831831
}
832832
} else {
@@ -927,7 +927,7 @@ namespace {
927927
chat->invitedByMe.remove(user);
928928
chat->admins.remove(user);
929929
if (user->isSelf()) {
930-
chat->flags &= ~MTPDchat::Flag::f_admin;
930+
chat->removeFlags(MTPDchat::Flag::f_admin);
931931
}
932932

933933
History *h = App::historyLoaded(chat->id);
@@ -967,9 +967,9 @@ namespace {
967967
auto badVersion = (chat->version + 1 < d.vversion.v);
968968
chat->version = d.vversion.v;
969969
if (mtpIsTrue(d.venabled)) {
970-
chat->flags |= MTPDchat::Flag::f_admins_enabled;
970+
chat->addFlags(MTPDchat::Flag::f_admins_enabled);
971971
} else {
972-
chat->flags &= ~MTPDchat::Flag::f_admins_enabled;
972+
chat->removeFlags(MTPDchat::Flag::f_admins_enabled);
973973
}
974974
if (badVersion || mtpIsTrue(d.venabled)) {
975975
chat->invalidateParticipants();
@@ -999,7 +999,7 @@ namespace {
999999
if (user) {
10001000
if (mtpIsTrue(d.vis_admin)) {
10011001
if (user->isSelf()) {
1002-
chat->flags |= MTPDchat::Flag::f_admin;
1002+
chat->addFlags(MTPDchat::Flag::f_admin);
10031003
}
10041004
if (chat->noParticipantInfo()) {
10051005
Auth().api().requestFullPeer(chat);
@@ -1008,7 +1008,7 @@ namespace {
10081008
}
10091009
} else {
10101010
if (user->isSelf()) {
1011-
chat->flags &= ~MTPDchat::Flag::f_admin;
1011+
chat->removeFlags(MTPDchat::Flag::f_admin);
10121012
}
10131013
chat->admins.remove(user);
10141014
}

Telegram/SourceFiles/base/flags.h

Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,6 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
2222

2323
#include <type_traits>
2424

25-
#if defined _MSC_VER && _MSC_VER < 1910
26-
#define FLAGS_CONSTEXPR
27-
#else // MSVS2015
28-
#define FLAGS_CONSTEXPR constexpr
29-
#endif // MSVS2015
30-
3125
namespace base {
3226

3327
template <typename EnumType>
@@ -69,9 +63,11 @@ class flags {
6963
constexpr flags() = default;
7064
constexpr flags(details::flags_zero_helper) noexcept {
7165
}
72-
constexpr flags(Enum value) noexcept : _value(static_cast<Type>(value)) {
66+
constexpr flags(Enum value) noexcept
67+
: _value(static_cast<Type>(value)) {
7368
}
74-
explicit constexpr flags(Type value) noexcept : _value(value) {
69+
static constexpr flags from_raw(Type value) noexcept {
70+
return flags(static_cast<Enum>(value));
7571
}
7672

7773
constexpr auto value() const noexcept {
@@ -81,40 +77,40 @@ class flags {
8177
return value();
8278
}
8379

84-
FLAGS_CONSTEXPR auto &operator|=(flags b) noexcept {
80+
constexpr auto &operator|=(flags b) noexcept {
8581
_value |= b.value();
8682
return *this;
8783
}
88-
FLAGS_CONSTEXPR auto &operator&=(flags b) noexcept {
84+
constexpr auto &operator&=(flags b) noexcept {
8985
_value &= b.value();
9086
return *this;
9187
}
92-
FLAGS_CONSTEXPR auto &operator^=(flags b) noexcept {
88+
constexpr auto &operator^=(flags b) noexcept {
9389
_value ^= b.value();
9490
return *this;
9591
}
9692

97-
FLAGS_CONSTEXPR auto operator~() const noexcept {
98-
return flags(~value());
93+
constexpr auto operator~() const noexcept {
94+
return from_raw(~value());
9995
}
10096

101-
FLAGS_CONSTEXPR auto operator|(flags b) const noexcept {
97+
constexpr auto operator|(flags b) const noexcept {
10298
return (flags(*this) |= b);
10399
}
104-
FLAGS_CONSTEXPR auto operator&(flags b) const noexcept {
100+
constexpr auto operator&(flags b) const noexcept {
105101
return (flags(*this) &= b);
106102
}
107-
FLAGS_CONSTEXPR auto operator^(flags b) const noexcept {
103+
constexpr auto operator^(flags b) const noexcept {
108104
return (flags(*this) ^= b);
109105
}
110106

111-
FLAGS_CONSTEXPR auto operator|(Enum b) const noexcept {
107+
constexpr auto operator|(Enum b) const noexcept {
112108
return (flags(*this) |= b);
113109
}
114-
FLAGS_CONSTEXPR auto operator&(Enum b) const noexcept {
110+
constexpr auto operator&(Enum b) const noexcept {
115111
return (flags(*this) &= b);
116112
}
117-
FLAGS_CONSTEXPR auto operator^(Enum b) const noexcept {
113+
constexpr auto operator^(Enum b) const noexcept {
118114
return (flags(*this) ^= b);
119115
}
120116

@@ -296,8 +292,6 @@ inline constexpr auto operator>=(ExtendedEnum a, flags<extended_flags_t<Extended
296292

297293
} // namespace base
298294

299-
#undef FLAGS_CONSTEXPR
300-
301295
template <typename Enum,
302296
typename = std::enable_if_t<std::is_enum<Enum>::value>,
303297
typename = std::enable_if_t<is_flag_type(Enum{})>>

Telegram/SourceFiles/boxes/connection_box.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
2020
*/
2121
#include "boxes/connection_box.h"
2222

23+
#include "data/data_photo.h"
24+
#include "data/data_document.h"
2325
#include "boxes/confirm_box.h"
2426
#include "lang/lang_keys.h"
2527
#include "storage/localstorage.h"

Telegram/SourceFiles/boxes/sticker_set_box.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
2020
*/
2121
#include "boxes/sticker_set_box.h"
2222

23+
#include "data/data_document.h"
2324
#include "lang/lang_keys.h"
2425
#include "mainwidget.h"
2526
#include "mainwindow.h"

Telegram/SourceFiles/boxes/stickers_box.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
2020
*/
2121
#include "stickers_box.h"
2222

23+
#include "data/data_document.h"
2324
#include "lang/lang_keys.h"
2425
#include "mainwidget.h"
2526
#include "chat_helpers/stickers.h"

Telegram/SourceFiles/calls/calls_panel.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
2020
*/
2121
#include "calls/calls_panel.h"
2222

23+
#include "data/data_photo.h"
2324
#include "calls/calls_emoji_fingerprint.h"
2425
#include "styles/style_calls.h"
2526
#include "styles/style_history.h"

Telegram/SourceFiles/chat_helpers/field_autocomplete.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
2020
*/
2121
#include "chat_helpers/field_autocomplete.h"
2222

23+
#include "data/data_document.h"
2324
#include "mainwindow.h"
2425
#include "apiwrap.h"
2526
#include "storage/localstorage.h"

Telegram/SourceFiles/chat_helpers/gifs_list_widget.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
2020
*/
2121
#include "chat_helpers/gifs_list_widget.h"
2222

23+
#include "data/data_photo.h"
24+
#include "data/data_document.h"
2325
#include "styles/style_chat_helpers.h"
2426
#include "ui/widgets/buttons.h"
2527
#include "ui/widgets/input_fields.h"

Telegram/SourceFiles/chat_helpers/stickers.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
2020
*/
2121
#include "stickers.h"
2222

23+
#include "data/data_document.h"
2324
#include "boxes/stickers_box.h"
2425
#include "boxes/confirm_box.h"
2526
#include "lang/lang_keys.h"

0 commit comments

Comments
 (0)