Skip to content

Commit

Permalink
Divide structs into several data/ modules.
Browse files Browse the repository at this point in the history
  • Loading branch information
john-preston committed Nov 16, 2017
1 parent f2a5862 commit ffc20e4
Show file tree
Hide file tree
Showing 68 changed files with 4,985 additions and 4,065 deletions.
10 changes: 5 additions & 5 deletions Telegram/SourceFiles/apiwrap.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
#include "apiwrap.h"

#include "data/data_drafts.h"
#include "data/data_photo.h"
#include "data/data_web_page.h"
#include "observer_peer.h"
#include "lang/lang_keys.h"
#include "application.h"
Expand Down Expand Up @@ -330,7 +332,7 @@ void ApiWrap::gotChatFull(PeerData *peer, const MTPmessages_ChatFull &result, mt
auto canViewMembers = channel->canViewMembers();
auto canEditStickers = channel->canEditStickers();

channel->flagsFull = f.vflags.v;
channel->setFullFlags(f.vflags.v);
auto newPhotoId = 0;
if (auto photo = App::feedPhoto(f.vchat_photo)) {
newPhotoId = photo->id;
Expand All @@ -341,10 +343,7 @@ void ApiWrap::gotChatFull(PeerData *peer, const MTPmessages_ChatFull &result, mt
Notify::peerUpdatedDelayed(channel, UpdateFlag::PhotoChanged);
}
if (f.has_migrated_from_chat_id()) {
if (!channel->mgInfo) {
channel->flags |= MTPDchannel::Flag::f_megagroup;
channel->flagsUpdated();
}
channel->addFlags(MTPDchannel::Flag::f_megagroup);
auto cfrom = App::chat(peerFromChat(f.vmigrated_from_chat_id));
bool updatedTo = (cfrom->migrateToPtr != channel), updatedFrom = (channel->mgInfo->migrateFromPtr != cfrom);
if (updatedTo) {
Expand Down Expand Up @@ -441,6 +440,7 @@ void ApiWrap::gotChatFull(PeerData *peer, const MTPmessages_ChatFull &result, mt

void ApiWrap::gotUserFull(UserData *user, const MTPUserFull &result, mtpRequestId req) {
auto &d = result.c_userFull();

App::feedUsers(MTP_vector<MTPUser>(1, d.vuser));
if (d.has_profile_photo()) {
App::feedPhoto(d.vprofile_photo);
Expand Down
68 changes: 34 additions & 34 deletions Telegram/SourceFiles/app.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -394,8 +394,7 @@ namespace {
data->inputUser = MTP_inputUser(d.vid, MTP_long(0));
data->setName(lang(lng_deleted), QString(), QString(), QString());
data->setPhoto(MTP_userProfilePhotoEmpty());
data->setIsInaccessible();
data->flags = 0;
data->setFlags(MTPDuser_ClientFlag::f_inaccessible | 0);
data->setBotInfoVersion(-1);
status = &emptyStatus;
data->contact = -1;
Expand All @@ -411,14 +410,18 @@ namespace {
data = App::user(peer);
auto canShareThisContact = data->canShareThisContactFast();
wasContact = data->isContact();
if (!minimal) {
data->flags = d.vflags.v;
if (minimal) {
auto mask = 0
| MTPDuser_ClientFlag::f_inaccessible;
data->setFlags((data->flags() & ~mask) | (d.vflags.v & mask));
} else {
data->setFlags(d.vflags.v);
if (d.is_self()) {
data->input = MTP_inputPeerSelf();
data->inputUser = MTP_inputUserSelf();
} else if (!d.has_access_hash()) {
data->input = MTP_inputPeerUser(d.vid, MTP_long(data->isInaccessible() ? 0 : data->access));
data->inputUser = MTP_inputUser(d.vid, MTP_long(data->isInaccessible() ? 0 : data->access));
data->input = MTP_inputPeerUser(d.vid, MTP_long(data->accessHash()));
data->inputUser = MTP_inputUser(d.vid, MTP_long(data->accessHash()));
} else {
data->input = MTP_inputPeerUser(d.vid, d.vaccess_hash);
data->inputUser = MTP_inputUser(d.vid, d.vaccess_hash);
Expand All @@ -436,7 +439,6 @@ namespace {
}
data->setName(lang(lng_deleted), QString(), QString(), QString());
data->setPhoto(MTP_userProfilePhotoEmpty());
data->setIsInaccessible();
status = &emptyStatus;
} else {
// apply first_name and last_name from minimal user only if we don't have
Expand Down Expand Up @@ -475,7 +477,9 @@ namespace {
} else {
data->setPhoto(MTP_userProfilePhotoEmpty());
}
if (d.has_access_hash()) data->access = d.vaccess_hash.v;
if (d.has_access_hash()) {
data->setAccessHash(d.vaccess_hash.v);
}
status = d.has_status() ? &d.vstatus : &emptyStatus;
}
if (!minimal) {
Expand Down Expand Up @@ -579,12 +583,9 @@ namespace {
cdata->date = d.vdate.v;

if (d.has_migrated_to() && d.vmigrated_to.type() == mtpc_inputChannel) {
const auto &c(d.vmigrated_to.c_inputChannel());
ChannelData *channel = App::channel(peerFromChannel(c.vchannel_id));
if (!channel->mgInfo) {
channel->flags |= MTPDchannel::Flag::f_megagroup;
channel->flagsUpdated();
}
auto &c = d.vmigrated_to.c_inputChannel();
auto channel = App::channel(peerFromChannel(c.vchannel_id));
channel->addFlags(MTPDchannel::Flag::f_megagroup);
if (!channel->access) {
channel->input = MTP_inputPeerChannel(c.vchannel_id, c.vaccess_hash);
channel->inputChannel = d.vmigrated_to;
Expand Down Expand Up @@ -615,13 +616,12 @@ namespace {
}
}

if (!(cdata->flags & MTPDchat::Flag::f_admins_enabled) && (d.vflags.v & MTPDchat::Flag::f_admins_enabled)) {
if (!(cdata->flags() & MTPDchat::Flag::f_admins_enabled) && (d.vflags.v & MTPDchat::Flag::f_admins_enabled)) {
cdata->invalidateParticipants();
}
cdata->flags = d.vflags.v;
cdata->setFlags(d.vflags.v);

cdata->count = d.vparticipants_count.v;
cdata->setIsForbidden(false);
if (canEdit != cdata->canEdit()) {
update.flags |= UpdateFlag::ChatCanEdit;
}
Expand All @@ -639,8 +639,7 @@ namespace {
cdata->date = 0;
cdata->count = -1;
cdata->invalidateParticipants();
cdata->flags = 0;
cdata->setIsForbidden(true);
cdata->setFlags(MTPDchat_ClientFlag::f_forbidden | 0);
if (canEdit != cdata->canEdit()) {
update.flags |= UpdateFlag::ChatCanEdit;
}
Expand All @@ -667,8 +666,13 @@ namespace {
auto canAddMembers = cdata->canAddMembers();

if (minimal) {
auto mask = MTPDchannel::Flag::f_broadcast | MTPDchannel::Flag::f_verified | MTPDchannel::Flag::f_megagroup | MTPDchannel::Flag::f_democracy;
cdata->flags = (cdata->flags & ~mask) | (d.vflags.v & mask);
auto mask = 0
| MTPDchannel::Flag::f_broadcast
| MTPDchannel::Flag::f_verified
| MTPDchannel::Flag::f_megagroup
| MTPDchannel::Flag::f_democracy
| MTPDchannel_ClientFlag::f_forbidden;
cdata->setFlags((cdata->flags() & ~mask) | (d.vflags.v & mask));
} else {
if (d.has_admin_rights()) {
cdata->setAdminRights(d.vadmin_rights);
Expand All @@ -691,14 +695,12 @@ namespace {
} else {
cdata->setRestrictionReason(QString());
}
cdata->flags = d.vflags.v;
cdata->setFlags(d.vflags.v);
}
cdata->flagsUpdated();

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

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

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

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

if (cdata->hasAdminRights()) {
cdata->setAdminRights(MTP_channelAdminRights(MTP_flags(0)));
Expand All @@ -738,7 +739,6 @@ namespace {
cdata->setPhoto(MTP_chatPhotoEmpty());
cdata->date = 0;
cdata->setMembersCount(0);
cdata->setIsForbidden(true);

if (wasInChannel != cdata->amIn()) update.flags |= UpdateFlag::ChannelAmIn;
if (canViewAdmins != cdata->canViewAdmins()
Expand Down Expand Up @@ -795,7 +795,7 @@ namespace {
int32 pversion = chat->participants.isEmpty() ? 1 : (chat->participants.begin().value() + 1);
chat->invitedByMe.clear();
chat->admins.clear();
chat->flags &= ~MTPDchat::Flag::f_admin;
chat->removeFlags(MTPDchat::Flag::f_admin);
for (auto i = v.cbegin(), e = v.cend(); i != e; ++i) {
int32 uid = 0, inviter = 0;
switch (i->type()) {
Expand Down Expand Up @@ -826,7 +826,7 @@ namespace {
if (i->type() == mtpc_chatParticipantAdmin) {
chat->admins.insert(user);
if (user->isSelf()) {
chat->flags |= MTPDchat::Flag::f_admin;
chat->addFlags(MTPDchat::Flag::f_admin);
}
}
} else {
Expand Down Expand Up @@ -927,7 +927,7 @@ namespace {
chat->invitedByMe.remove(user);
chat->admins.remove(user);
if (user->isSelf()) {
chat->flags &= ~MTPDchat::Flag::f_admin;
chat->removeFlags(MTPDchat::Flag::f_admin);
}

History *h = App::historyLoaded(chat->id);
Expand Down Expand Up @@ -967,9 +967,9 @@ namespace {
auto badVersion = (chat->version + 1 < d.vversion.v);
chat->version = d.vversion.v;
if (mtpIsTrue(d.venabled)) {
chat->flags |= MTPDchat::Flag::f_admins_enabled;
chat->addFlags(MTPDchat::Flag::f_admins_enabled);
} else {
chat->flags &= ~MTPDchat::Flag::f_admins_enabled;
chat->removeFlags(MTPDchat::Flag::f_admins_enabled);
}
if (badVersion || mtpIsTrue(d.venabled)) {
chat->invalidateParticipants();
Expand Down Expand Up @@ -999,7 +999,7 @@ namespace {
if (user) {
if (mtpIsTrue(d.vis_admin)) {
if (user->isSelf()) {
chat->flags |= MTPDchat::Flag::f_admin;
chat->addFlags(MTPDchat::Flag::f_admin);
}
if (chat->noParticipantInfo()) {
Auth().api().requestFullPeer(chat);
Expand All @@ -1008,7 +1008,7 @@ namespace {
}
} else {
if (user->isSelf()) {
chat->flags &= ~MTPDchat::Flag::f_admin;
chat->removeFlags(MTPDchat::Flag::f_admin);
}
chat->admins.remove(user);
}
Expand Down
36 changes: 15 additions & 21 deletions Telegram/SourceFiles/base/flags.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,6 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org

#include <type_traits>

#if defined _MSC_VER && _MSC_VER < 1910
#define FLAGS_CONSTEXPR
#else // MSVS2015
#define FLAGS_CONSTEXPR constexpr
#endif // MSVS2015

namespace base {

template <typename EnumType>
Expand Down Expand Up @@ -69,9 +63,11 @@ class flags {
constexpr flags() = default;
constexpr flags(details::flags_zero_helper) noexcept {
}
constexpr flags(Enum value) noexcept : _value(static_cast<Type>(value)) {
constexpr flags(Enum value) noexcept
: _value(static_cast<Type>(value)) {
}
explicit constexpr flags(Type value) noexcept : _value(value) {
static constexpr flags from_raw(Type value) noexcept {
return flags(static_cast<Enum>(value));
}

constexpr auto value() const noexcept {
Expand All @@ -81,40 +77,40 @@ class flags {
return value();
}

FLAGS_CONSTEXPR auto &operator|=(flags b) noexcept {
constexpr auto &operator|=(flags b) noexcept {
_value |= b.value();
return *this;
}
FLAGS_CONSTEXPR auto &operator&=(flags b) noexcept {
constexpr auto &operator&=(flags b) noexcept {
_value &= b.value();
return *this;
}
FLAGS_CONSTEXPR auto &operator^=(flags b) noexcept {
constexpr auto &operator^=(flags b) noexcept {
_value ^= b.value();
return *this;
}

FLAGS_CONSTEXPR auto operator~() const noexcept {
return flags(~value());
constexpr auto operator~() const noexcept {
return from_raw(~value());
}

FLAGS_CONSTEXPR auto operator|(flags b) const noexcept {
constexpr auto operator|(flags b) const noexcept {
return (flags(*this) |= b);
}
FLAGS_CONSTEXPR auto operator&(flags b) const noexcept {
constexpr auto operator&(flags b) const noexcept {
return (flags(*this) &= b);
}
FLAGS_CONSTEXPR auto operator^(flags b) const noexcept {
constexpr auto operator^(flags b) const noexcept {
return (flags(*this) ^= b);
}

FLAGS_CONSTEXPR auto operator|(Enum b) const noexcept {
constexpr auto operator|(Enum b) const noexcept {
return (flags(*this) |= b);
}
FLAGS_CONSTEXPR auto operator&(Enum b) const noexcept {
constexpr auto operator&(Enum b) const noexcept {
return (flags(*this) &= b);
}
FLAGS_CONSTEXPR auto operator^(Enum b) const noexcept {
constexpr auto operator^(Enum b) const noexcept {
return (flags(*this) ^= b);
}

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

} // namespace base

#undef FLAGS_CONSTEXPR

template <typename Enum,
typename = std::enable_if_t<std::is_enum<Enum>::value>,
typename = std::enable_if_t<is_flag_type(Enum{})>>
Expand Down
2 changes: 2 additions & 0 deletions Telegram/SourceFiles/boxes/connection_box.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
*/
#include "boxes/connection_box.h"

#include "data/data_photo.h"
#include "data/data_document.h"
#include "boxes/confirm_box.h"
#include "lang/lang_keys.h"
#include "storage/localstorage.h"
Expand Down
1 change: 1 addition & 0 deletions Telegram/SourceFiles/boxes/sticker_set_box.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
*/
#include "boxes/sticker_set_box.h"

#include "data/data_document.h"
#include "lang/lang_keys.h"
#include "mainwidget.h"
#include "mainwindow.h"
Expand Down
1 change: 1 addition & 0 deletions Telegram/SourceFiles/boxes/stickers_box.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
*/
#include "stickers_box.h"

#include "data/data_document.h"
#include "lang/lang_keys.h"
#include "mainwidget.h"
#include "chat_helpers/stickers.h"
Expand Down
1 change: 1 addition & 0 deletions Telegram/SourceFiles/calls/calls_panel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
*/
#include "calls/calls_panel.h"

#include "data/data_photo.h"
#include "calls/calls_emoji_fingerprint.h"
#include "styles/style_calls.h"
#include "styles/style_history.h"
Expand Down
1 change: 1 addition & 0 deletions Telegram/SourceFiles/chat_helpers/field_autocomplete.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
*/
#include "chat_helpers/field_autocomplete.h"

#include "data/data_document.h"
#include "mainwindow.h"
#include "apiwrap.h"
#include "storage/localstorage.h"
Expand Down
2 changes: 2 additions & 0 deletions Telegram/SourceFiles/chat_helpers/gifs_list_widget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
*/
#include "chat_helpers/gifs_list_widget.h"

#include "data/data_photo.h"
#include "data/data_document.h"
#include "styles/style_chat_helpers.h"
#include "ui/widgets/buttons.h"
#include "ui/widgets/input_fields.h"
Expand Down
1 change: 1 addition & 0 deletions Telegram/SourceFiles/chat_helpers/stickers.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
*/
#include "stickers.h"

#include "data/data_document.h"
#include "boxes/stickers_box.h"
#include "boxes/confirm_box.h"
#include "lang/lang_keys.h"
Expand Down
1 change: 1 addition & 0 deletions Telegram/SourceFiles/chat_helpers/stickers_list_widget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
*/
#include "chat_helpers/stickers_list_widget.h"

#include "data/data_document.h"
#include "styles/style_chat_helpers.h"
#include "ui/widgets/buttons.h"
#include "ui/effects/ripple_animation.h"
Expand Down
Loading

0 comments on commit ffc20e4

Please sign in to comment.