Get rid of deprecated ranges::view usage

This commit is contained in:
Ilya Fedin 2021-03-13 16:12:08 +04:00 committed by John Preston
parent c4dcf064d5
commit c0c10689a1
75 changed files with 270 additions and 270 deletions

View File

@ -107,7 +107,7 @@ void Authorizations::reload() {
result.match([&](const MTPDaccount_authorizations &auths) {
_list = (
auths.vauthorizations().v
) | ranges::view::transform([](const MTPAuthorization &d) {
) | ranges::views::transform([](const MTPAuthorization &d) {
return ParseEntry(d.c_authorization());
}) | ranges::to<List>;
_listChanges.fire({});

View File

@ -906,7 +906,7 @@ void ApiWrap::updateDialogsOffset(
auto lastDate = TimeId(0);
auto lastPeer = PeerId(0);
auto lastMsgId = MsgId(0);
for (const auto &dialog : ranges::view::reverse(dialogs)) {
for (const auto &dialog : ranges::views::reverse(dialogs)) {
dialog.match([&](const auto &dialog) {
const auto peer = peerFromMTP(dialog.vpeer());
const auto messageId = dialog.vtop_message().v;
@ -919,7 +919,7 @@ void ApiWrap::updateDialogsOffset(
if (!lastMsgId) {
lastMsgId = messageId;
}
for (const auto &message : ranges::view::reverse(messages)) {
for (const auto &message : ranges::views::reverse(messages)) {
if (IdFromMessage(message) == messageId
&& PeerFromMessage(message) == peer) {
if (const auto date = DateFromMessage(message)) {

View File

@ -158,15 +158,15 @@ void AutoDownloadBox::setupContent() {
};
addButton(tr::lng_connection_save(), [=] {
auto &&values = ranges::view::concat(
auto &&values = ranges::views::concat(
*downloadValues,
*autoPlayValues);
auto allowMore = values | ranges::view::filter([&](Pair pair) {
auto allowMore = values | ranges::views::filter([&](Pair pair) {
const auto [type, enabled] = pair;
const auto value = enabled ? limitByType(type) : 0;
const auto old = settings->bytesLimit(_source, type);
return (old < value);
}) | ranges::view::transform([](Pair pair) {
}) | ranges::views::transform([](Pair pair) {
return pair.first;
});
const auto less = ranges::any_of(*autoPlayValues, [&](Pair pair) {

View File

@ -248,9 +248,9 @@ void BackgroundBox::Inner::updatePapers() {
_over = _overDown = Selection();
_papers = _session->data().wallpapers(
) | ranges::view::filter([](const Data::WallPaper &paper) {
) | ranges::views::filter([](const Data::WallPaper &paper) {
return !paper.isPattern() || paper.backgroundColor().has_value();
}) | ranges::view::transform([](const Data::WallPaper &paper) {
}) | ranges::views::transform([](const Data::WallPaper &paper) {
return Paper{ paper };
}) | ranges::to_vector;
sortPapers();
@ -268,7 +268,7 @@ void BackgroundBox::Inner::resizeToContentAndPreload() {
+ st::backgroundPadding));
const auto preload = kBackgroundsInRow * 3;
for (const auto &paper : _papers | ranges::view::take(preload)) {
for (const auto &paper : _papers | ranges::views::take(preload)) {
if (!paper.data.localThumbnail() && !paper.dataMedia) {
if (const auto document = paper.data.document()) {
paper.dataMedia = document->createMediaView();

View File

@ -762,11 +762,11 @@ auto DeleteMessagesBox::revokeText(not_null<PeerData*> peer) const
return result;
}
const auto items = ranges::view::all(
const auto items = ranges::views::all(
_ids
) | ranges::view::transform([&](FullMsgId id) {
) | ranges::views::transform([&](FullMsgId id) {
return peer->owner().message(id);
}) | ranges::view::filter([](HistoryItem *item) {
}) | ranges::views::filter([](HistoryItem *item) {
return (item != nullptr);
}) | ranges::to_vector;
@ -783,7 +783,7 @@ auto DeleteMessagesBox::revokeText(not_null<PeerData*> peer) const
return !item->canDeleteForEveryone(now);
};
const auto canRevokeAll = ranges::none_of(items, cannotRevoke);
auto outgoing = items | ranges::view::filter(&HistoryItem::out);
auto outgoing = items | ranges::views::filter(&HistoryItem::out);
const auto canRevokeOutgoingCount = canRevokeAll
? -1
: ranges::count_if(outgoing, canRevoke);

View File

@ -1051,9 +1051,9 @@ void ProxyBox::addLabel(
ProxiesBoxController::ProxiesBoxController(not_null<Main::Account*> account)
: _account(account)
, _saveTimer([] { Local::writeSettings(); }) {
_list = ranges::view::all(
_list = ranges::views::all(
Global::ProxiesList()
) | ranges::view::transform([&](const ProxyData &proxy) {
) | ranges::views::transform([&](const ProxyData &proxy) {
return Item{ ++_idCounter, proxy };
}) | ranges::to_vector;

View File

@ -536,8 +536,8 @@ std::vector<PollAnswer> Options::toPollAnswers() const {
};
ranges::copy(
_list
| ranges::view::filter(&Option::isGood)
| ranges::view::transform(makeAnswer),
| ranges::views::filter(&Option::isGood)
| ranges::views::transform(makeAnswer),
ranges::back_inserter(result));
return result;
}
@ -593,7 +593,7 @@ void Options::removeEmptyTail() {
_list,
&Option::hasFocus);
const auto end = _list.end();
const auto reversed = ranges::view::reverse(_list);
const auto reversed = ranges::views::reverse(_list);
const auto emptyItem = ranges::find_if(
reversed,
ranges::not_fn(&Option::isEmpty)).base();

View File

@ -333,9 +333,9 @@ void EditExceptions(
box->addButton(tr::lng_settings_save(), crl::guard(context, [=] {
const auto peers = box->collectSelectedRows();
const auto rules = data->current();
auto &&histories = ranges::view::all(
auto &&histories = ranges::views::all(
peers
) | ranges::view::transform([=](not_null<PeerData*> peer) {
) | ranges::views::transform([=](not_null<PeerData*> peer) {
return window->session().data().history(peer);
});
auto changed = base::flat_set<not_null<History*>>{

View File

@ -424,11 +424,11 @@ void Rows::remove(not_null<Row*> row) {
void Rows::restore(not_null<Row*> row) {
row->removed = false;
Local::saveRecentLanguages(ranges::view::all(
Local::saveRecentLanguages(ranges::views::all(
_rows
) | ranges::view::filter([](const Row &row) {
) | ranges::views::filter([](const Row &row) {
return !row.removed;
}) | ranges::view::transform([](const Row &row) {
}) | ranges::views::transform([](const Row &row) {
return row.data;
}) | ranges::to_vector);
}

View File

@ -219,9 +219,9 @@ bool AddParticipantsBoxController::inviteSelectedUsers(
Expects(_peer != nullptr);
const auto rows = box->collectSelectedRows();
const auto users = ranges::view::all(
const auto users = ranges::views::all(
rows
) | ranges::view::transform([](not_null<PeerData*> peer) {
) | ranges::views::transform([](not_null<PeerData*> peer) {
Expects(peer->isUser());
Expects(!peer->isSelf());

View File

@ -1196,7 +1196,7 @@ void ParticipantsBoxController::rebuildChatAdmins(
return;
}
auto list = ranges::view::all(chat->admins) | ranges::to_vector;
auto list = ranges::views::all(chat->admins) | ranges::to_vector;
if (const auto creator = chat->owner().userLoaded(chat->creator)) {
list.emplace_back(creator);
}

View File

@ -920,7 +920,7 @@ void SendFilesBox::updateControlsGeometry() {
_groupFiles.data(),
_sendImagesAsPhotos.data(),
};
for (const auto pointer : ranges::view::reverse(pointers)) {
for (const auto pointer : ranges::views::reverse(pointers)) {
if (pointer && !pointer->isHidden()) {
pointer->moveToLeft(
st::boxPhotoPadding.left(),

View File

@ -30,8 +30,8 @@ void SingleChoiceBox(
layout->add(object_ptr<Ui::FixedHeightWidget>(
layout,
st::boxOptionListPadding.top() + st::autolockButton.margin.top()));
auto &&ints = ranges::view::ints(0, ranges::unreachable);
for (const auto &[i, text] : ranges::view::zip(ints, args.options)) {
auto &&ints = ranges::views::ints(0, ranges::unreachable);
for (const auto &[i, text] : ranges::views::zip(ints, args.options)) {
layout->add(
object_ptr<Ui::Radiobutton>(
layout,

View File

@ -632,9 +632,9 @@ bool Call::handleSignalingData(
if (data.vphone_call_id().v != _id || !_instance) {
return false;
}
auto prepared = ranges::view::all(
auto prepared = ranges::views::all(
data.vdata().v
) | ranges::view::transform([](char byte) {
) | ranges::views::transform([](char byte) {
return static_cast<uint8_t>(byte);
}) | ranges::to_vector;
_instance->receiveSignalingData(std::move(prepared));

View File

@ -51,9 +51,9 @@ using namespace Webrtc;
encryptionKey.value.size()),
.outgoing = encryptionKey.isOutgoing,
.primary = ConvertEndpoint(endpoints.front()),
.alternatives = endpoints | ranges::view::drop(
.alternatives = endpoints | ranges::views::drop(
1
) | ranges::view::transform(ConvertEndpoint) | ranges::to_vector,
) | ranges::views::transform(ConvertEndpoint) | ranges::to_vector,
.maxLayer = config.maxApiLayer,
.allowP2P = config.enableP2P,
.sendSignalingData = std::move(sendSignalingData),

View File

@ -1437,7 +1437,7 @@ std::variant<int, not_null<UserData*>> GroupCall::inviteUsers(
const auto owner = &_peer->owner();
const auto &invited = owner->invitedToCallUsers(_id);
const auto &participants = real->participants();
auto &&toInvite = users | ranges::view::filter([&](
auto &&toInvite = users | ranges::views::filter([&](
not_null<UserData*> user) {
return !invited.contains(user) && !ranges::contains(
participants,

View File

@ -837,15 +837,15 @@ void GroupPanel::addMembers() {
box->addButton(tr::lng_group_call_invite_button(), [=] {
const auto rows = box->collectSelectedRows();
const auto users = ranges::view::all(
const auto users = ranges::views::all(
rows
) | ranges::view::transform([](not_null<PeerData*> peer) {
) | ranges::views::transform([](not_null<PeerData*> peer) {
return not_null<UserData*>(peer->asUser());
}) | ranges::to_vector;
const auto nonMembers = ranges::view::all(
const auto nonMembers = ranges::views::all(
users
) | ranges::view::filter([&](not_null<UserData*> user) {
) | ranges::views::filter([&](not_null<UserData*> user) {
return !controller->hasRowFor(user);
}) | ranges::to_vector;

View File

@ -179,16 +179,16 @@ void AppendFoundEmoji(
const auto alreadyBegin = begin(result);
const auto alreadyEnd = alreadyBegin + result.size();
auto &&add = ranges::view::all(
auto &&add = ranges::views::all(
list
) | ranges::view::filter([&](const LangPackEmoji &entry) {
) | ranges::views::filter([&](const LangPackEmoji &entry) {
const auto i = ranges::find(
alreadyBegin,
alreadyEnd,
entry.emoji,
&Result::emoji);
return (i == alreadyEnd);
}) | ranges::view::transform([&](const LangPackEmoji &entry) {
}) | ranges::views::transform([&](const LangPackEmoji &entry) {
return Result{ entry.emoji, label, entry.text };
});
result.insert(end(result), add.begin(), add.end());
@ -216,15 +216,15 @@ void AppendLegacySuggestions(
const auto alreadyBegin = begin(result);
const auto alreadyEnd = alreadyBegin + result.size();
auto &&add = ranges::view::all(
auto &&add = ranges::views::all(
suggestions
) | ranges::view::transform([](const Suggestion &suggestion) {
) | ranges::views::transform([](const Suggestion &suggestion) {
return Result{
Find(QStringFromUTF16(suggestion.emoji())),
QStringFromUTF16(suggestion.label()),
QStringFromUTF16(suggestion.replacement())
};
}) | ranges::view::filter([&](const Result &entry) {
}) | ranges::views::filter([&](const Result &entry) {
const auto i = entry.emoji
? ranges::find(
alreadyBegin,
@ -250,15 +250,15 @@ void ApplyDifference(
return;
}
auto &list = data.emoji[word];
auto &&emoji = ranges::view::all(
auto &&emoji = ranges::views::all(
keyword.vemoticons().v
) | ranges::view::transform([](const MTPstring &string) {
) | ranges::views::transform([](const MTPstring &string) {
const auto text = qs(string);
const auto emoji = MustAddPostfix(text)
? (text + QChar(Ui::Emoji::kPostfix))
: text;
return LangPackEmoji{ FindExact(emoji), text };
}) | ranges::view::filter([&](const LangPackEmoji &entry) {
}) | ranges::views::filter([&](const LangPackEmoji &entry) {
if (!entry.emoji) {
LOG(("API Warning: emoji %1 is not supported, word: %2."
).arg(
@ -291,9 +291,9 @@ void ApplyDifference(
if (data.emoji.empty()) {
data.maxKeyLength = 0;
} else {
auto &&lengths = ranges::view::all(
auto &&lengths = ranges::views::all(
data.emoji
) | ranges::view::transform([](auto &&pair) {
) | ranges::views::transform([](auto &&pair) {
return pair.first.size();
});
data.maxKeyLength = *ranges::max_element(lengths);
@ -480,7 +480,7 @@ std::vector<Result> EmojiKeywords::LangPack::query(
auto &&chosen = ranges::make_subrange(
from,
end(_data.emoji)
) | ranges::view::take_while([&](const auto &pair) {
) | ranges::views::take_while([&](const auto &pair) {
const auto &key = pair.first;
return exact ? (key == normalized) : key.startsWith(normalized);
});
@ -619,9 +619,9 @@ std::vector<Result> EmojiKeywords::query(
const auto alreadyBegin = begin(result);
const auto alreadyEnd = alreadyBegin + result.size();
auto &&add = ranges::view::all(
auto &&add = ranges::views::all(
list
) | ranges::view::filter([&](Result entry) {
) | ranges::views::filter([&](Result entry) {
// In each item->query() result the list has no duplicates.
// So we need to check only for duplicates between queries.
const auto i = ranges::find(
@ -643,7 +643,7 @@ int EmojiKeywords::maxQueryLength() const {
if (_data.empty()) {
return 0;
}
auto &&lengths = _data | ranges::view::transform([](const auto &pair) {
auto &&lengths = _data | ranges::views::transform([](const auto &pair) {
return pair.second->maxQueryLength();
});
return *ranges::max_element(lengths);
@ -663,9 +663,9 @@ void EmojiKeywords::refreshRemoteList() {
_langsRequestId = _api->request(MTPmessages_GetEmojiKeywordsLanguages(
MTP_vector<MTPstring>(languages)
)).done([=](const MTPVector<MTPEmojiLanguage> &result) {
setRemoteList(ranges::view::all(
setRemoteList(ranges::views::all(
result.v
) | ranges::view::transform([](const MTPEmojiLanguage &language) {
) | ranges::views::transform([](const MTPEmojiLanguage &language) {
return language.match([&](const MTPDemojiLanguage &language) {
return qs(language.vlang_code());
});

View File

@ -246,7 +246,7 @@ void Row::paintPreview(Painter &p) const {
const auto y = st::manageEmojiPreviewPadding.top();
const auto width = st::manageEmojiPreviewWidth;
const auto height = st::manageEmojiPreviewWidth;
auto &&preview = ranges::view::zip(_preview, ranges::view::ints(0, int(_preview.size())));
auto &&preview = ranges::views::zip(_preview, ranges::views::ints(0, int(_preview.size())));
for (const auto &[pixmap, index] : preview) {
const auto row = (index / 2);
const auto column = (index % 2);
@ -454,7 +454,7 @@ void Row::setupPreview(const Set &set) {
const auto size = st::manageEmojiPreview * cIntRetinaFactor();
const auto original = QImage(set.previewPath);
const auto full = original.height();
auto &&preview = ranges::view::zip(_preview, ranges::view::ints(0, int(_preview.size())));
auto &&preview = ranges::views::zip(_preview, ranges::views::ints(0, int(_preview.size())));
for (auto &&[pixmap, index] : preview) {
pixmap = App::pixmapFromImageInPlace(original.copy(
{ full * index, 0, full, full }

View File

@ -109,9 +109,9 @@ auto SuggestionsWidget::getRowsByQuery() const -> std::vector<Row> {
return {};
}
using Entry = ChatHelpers::EmojiKeywords::Result;
auto result = ranges::view::all(
auto result = ranges::views::all(
list
) | ranges::view::transform([](const Entry &result) {
) | ranges::views::transform([](const Entry &result) {
return Row(result.emoji, result.replacement);
}) | ranges::to_vector;

View File

@ -308,9 +308,9 @@ FieldAutocomplete::StickerRows FieldAutocomplete::getStickerSuggestions() {
_emoji,
_stickersSeed
);
auto result = ranges::view::all(
auto result = ranges::views::all(
list
) | ranges::view::transform([](not_null<DocumentData*> sticker) {
) | ranges::views::transform([](not_null<DocumentData*> sticker) {
return StickerSuggestion{
sticker,
sticker->createMediaView()

View File

@ -178,7 +178,7 @@ void DownloadDictionaryInBackground(
}
void AddExceptions() {
const auto exceptions = ranges::view::all(
const auto exceptions = ranges::views::all(
kExceptions
) | ranges::views::transform([](const auto &word) {
return word.utf16();
@ -326,7 +326,7 @@ rpl::producer<QString> ButtonManageDictsState(
return QString();
}
const auto dicts = Core::App().settings().dictionariesEnabled();
const auto filtered = ranges::view::all(
const auto filtered = ranges::views::all(
dicts
) | ranges::views::filter(
DictionaryExists

View File

@ -201,9 +201,9 @@ private:
auto StickersListWidget::PrepareStickers(
const QVector<DocumentData*> &pack)
-> std::vector<Sticker> {
return ranges::view::all(
return ranges::views::all(
pack
) | ranges::view::transform([](DocumentData *document) {
) | ranges::views::transform([](DocumentData *document) {
return Sticker{ document };
}) | ranges::to_vector;
}

View File

@ -372,9 +372,9 @@ void Manager::fillDefaults() {
set(qsl("ctrl+4"), Command::ChatPinned4);
set(qsl("ctrl+5"), Command::ChatPinned5);
auto &&folders = ranges::view::zip(
auto &&folders = ranges::views::zip(
kShowFolder,
ranges::view::ints(1, ranges::unreachable));
ranges::views::ints(1, ranges::unreachable));
for (const auto [command, index] : folders) {
set(qsl("%1+%2").arg(ctrl).arg(index), command);

View File

@ -24,7 +24,7 @@ constexpr auto kVersion = char(2);
template <typename Enum>
auto enums_view(int from, int till) {
using namespace ranges::view;
using namespace ranges::views;
return ints(from, till) | transform([](int index) {
return static_cast<Enum>(index);
});

View File

@ -902,7 +902,7 @@ void ApplyMegagroupAdmins(
auto adding = base::flat_map<UserId, QString>();
auto admins = ranges::make_subrange(
list.begin(), list.end()
) | ranges::view::transform([](const MTPChannelParticipant &p) {
) | ranges::views::transform([](const MTPChannelParticipant &p) {
const auto userId = p.match([](const auto &data) {
return data.vuser_id().v;
});

View File

@ -58,7 +58,7 @@ ChatFilter ChatFilter::FromTL(
| (data.is_exclude_muted() ? Flag::NoMuted : Flag(0))
| (data.is_exclude_read() ? Flag::NoRead : Flag(0))
| (data.is_exclude_archived() ? Flag::NoArchived : Flag(0));
auto &&to_histories = ranges::view::transform([&](
auto &&to_histories = ranges::views::transform([&](
const MTPInputPeer &data) {
const auto peer = data.match([&](const MTPDinputPeerUser &data) {
const auto user = owner->user(data.vuser_id().v);
@ -76,21 +76,21 @@ ChatFilter ChatFilter::FromTL(
return (PeerData*)nullptr;
});
return peer ? owner->history(peer).get() : nullptr;
}) | ranges::view::filter([](History *history) {
}) | ranges::views::filter([](History *history) {
return history != nullptr;
}) | ranges::view::transform([](History *history) {
}) | ranges::views::transform([](History *history) {
return not_null<History*>(history);
});
auto &&always = ranges::view::concat(
auto &&always = ranges::views::concat(
data.vinclude_peers().v
) | to_histories;
auto pinned = ranges::view::all(
auto pinned = ranges::views::all(
data.vpinned_peers().v
) | to_histories | ranges::to_vector;
auto &&never = ranges::view::all(
auto &&never = ranges::views::all(
data.vexclude_peers().v
) | to_histories;
auto &&all = ranges::view::concat(always, pinned);
auto &&all = ranges::views::concat(always, pinned);
auto list = base::flat_set<not_null<History*>>{
all.begin(),
all.end()
@ -411,9 +411,9 @@ bool ChatFilters::applyOrder(const QVector<MTPint> &order) {
} else if (_list.empty()) {
return true;
}
auto indices = ranges::view::all(
auto indices = ranges::views::all(
_list
) | ranges::view::transform(
) | ranges::views::transform(
&ChatFilter::id
) | ranges::to_vector;
auto b = indices.begin(), e = indices.end();
@ -582,9 +582,9 @@ void ChatFilters::requestSuggested() {
_suggestedRequestId = 0;
_suggestedLastReceived = crl::now();
_suggested = ranges::view::all(
_suggested = ranges::views::all(
data.v
) | ranges::view::transform([&](const MTPDialogFilterSuggested &f) {
) | ranges::views::transform([&](const MTPDialogFilterSuggested &f) {
return f.match([&](const MTPDdialogFilterSuggested &data) {
return SuggestedFilter{
Data::ChatFilter::FromTL(data.vfilter(), _owner),

View File

@ -1649,7 +1649,7 @@ void DocumentData::collectLocalData(not_null<DocumentData*> local) {
namespace Data {
QString FileExtension(const QString &filepath) {
const auto reversed = ranges::view::reverse(filepath);
const auto reversed = ranges::views::reverse(filepath);
const auto last = ranges::find_first_of(reversed, ".\\/");
if (last == reversed.end() || *last != '.') {
return QString();

View File

@ -156,9 +156,9 @@ bool Folder::applyChatListMessage(HistoryItem *item) {
}
void Folder::computeChatListMessage() {
auto &&items = ranges::view::all(
auto &&items = ranges::views::all(
*_chatsList.indexed()
) | ranges::view::filter([](not_null<Dialogs::Row*> row) {
) | ranges::views::filter([](not_null<Dialogs::Row*> row) {
return row->entry()->chatListMessage() != nullptr;
});
const auto chatListDate = [](not_null<Dialogs::Row*> row) {
@ -187,13 +187,13 @@ void Folder::reorderLastHistories() {
};
_lastHistories.erase(_lastHistories.begin(), _lastHistories.end());
_lastHistories.reserve(kShowChatNamesCount + 1);
auto &&histories = ranges::view::all(
auto &&histories = ranges::views::all(
*_chatsList.indexed()
) | ranges::view::transform([](not_null<Dialogs::Row*> row) {
) | ranges::views::transform([](not_null<Dialogs::Row*> row) {
return row->history();
}) | ranges::view::filter([](History *history) {
}) | ranges::views::filter([](History *history) {
return (history != nullptr);
}) | ranges::view::transform([](History *history) {
}) | ranges::views::transform([](History *history) {
return not_null<History*>(history);
});
for (const auto history : histories) {

View File

@ -305,11 +305,11 @@ void Histories::sendDialogRequests() {
if (_dialogRequestsPending.empty()) {
return;
}
const auto histories = ranges::view::all(
const auto histories = ranges::views::all(
_dialogRequestsPending
) | ranges::view::transform([](const auto &pair) {
) | ranges::views::transform([](const auto &pair) {
return pair.first;
}) | ranges::view::filter([&](not_null<History*> history) {
}) | ranges::views::filter([&](not_null<History*> history) {
const auto state = lookup(history);
if (!state) {
return true;

View File

@ -1271,9 +1271,9 @@ TextForMimeData MediaPoll::clipboardText() const {
+ _poll->question
+ qstr(" ]")
+ ranges::accumulate(
ranges::view::all(
ranges::views::all(
_poll->answers
) | ranges::view::transform([](const PollAnswer &answer) {
) | ranges::views::transform([](const PollAnswer &answer) {
return "\n- " + answer.text;
}),
QString());

View File

@ -422,9 +422,9 @@ QString PeerData::computeUnavailableReason() const {
const auto skip = config.get<std::vector<QString>>(
"ignore_restriction_reasons",
std::vector<QString>());
auto &&filtered = ranges::view::all(
auto &&filtered = ranges::views::all(
list
) | ranges::view::filter([&](const Data::UnavailableReason &reason) {
) | ranges::views::filter([&](const Data::UnavailableReason &reason) {
return !ranges::contains(skip, reason.reason);
});
const auto first = filtered.begin();

View File

@ -77,16 +77,16 @@ bool PollData::applyChanges(const MTPDpoll &poll) {
| (poll.is_quiz() ? Flag::Quiz : Flag(0));
const auto newCloseDate = poll.vclose_date().value_or_empty();
const auto newClosePeriod = poll.vclose_period().value_or_empty();
auto newAnswers = ranges::view::all(
auto newAnswers = ranges::views::all(
poll.vanswers().v
) | ranges::view::transform([](const MTPPollAnswer &data) {
) | ranges::views::transform([](const MTPPollAnswer &data) {
return data.match([](const MTPDpollAnswer &answer) {
auto result = PollAnswer();
result.option = answer.voption().v;
result.text = qs(answer.vtext());
return result;
});
}) | ranges::view::take(
}) | ranges::views::take(
kMaxOptions
) | ranges::to_vector;
@ -141,14 +141,14 @@ bool PollData::applyResults(const MTPPollResults &results) {
&MTPint::v);
if (recentChanged) {
changed = true;
recentVoters = ranges::view::all(
recentVoters = ranges::views::all(
recent->v
) | ranges::view::transform([&](MTPint userId) {
) | ranges::views::transform([&](MTPint userId) {
const auto user = _owner->user(userId.v);
return user->isMinimalLoaded() ? user.get() : nullptr;
}) | ranges::view::filter([](UserData *user) {
}) | ranges::views::filter([](UserData *user) {
return user != nullptr;
}) | ranges::view::transform([](UserData *user) {
}) | ranges::views::transform([](UserData *user) {
return not_null<UserData*>(user);
}) | ranges::to_vector;
}

View File

@ -204,7 +204,7 @@ void RepliesList::injectRootMessage(not_null<Viewer*> viewer) {
injectRootDivider(root, slice);
if (const auto group = _history->owner().groups().find(root)) {
for (const auto item : ranges::view::reverse(group->items)) {
for (const auto item : ranges::views::reverse(group->items)) {
slice->ids.push_back(item->fullId());
}
viewer->injectedForRoot = group->items.size();

View File

@ -362,9 +362,9 @@ Data::MessagesSlice ScheduledMessages::list(not_null<History*> history) {
const auto &list = i->second.items;
result.skippedAfter = result.skippedBefore = 0;
result.fullCount = int(list.size());
result.ids = ranges::view::all(
result.ids = ranges::views::all(
list
) | ranges::view::transform(
) | ranges::views::transform(
&HistoryItem::fullId
) | ranges::to_vector;
return result;
@ -534,11 +534,11 @@ int32 ScheduledMessages::countListHash(const List &list) const {
using namespace Api;
auto hash = HashInit();
auto &&serverside = ranges::view::all(
auto &&serverside = ranges::views::all(
list.items
) | ranges::view::filter([](const OwnedItem &item) {
) | ranges::views::filter([](const OwnedItem &item) {
return !item->isSending() && !item->hasFailed();
}) | ranges::view::reverse;
}) | ranges::views::reverse;
for (const auto &item : serverside) {
const auto j = list.idByItem.find(item.get());
HashUpdate(hash, j->second);

View File

@ -114,9 +114,9 @@ void CheckForSwitchInlineButton(not_null<HistoryItem*> item) {
// need to find an "-all" tag in {full}, otherwise ignore this restriction.
std::vector<UnavailableReason> ExtractUnavailableReasons(
const QVector<MTPRestrictionReason> &restrictions) {
return ranges::view::all(
return ranges::views::all(
restrictions
) | ranges::view::filter([](const MTPRestrictionReason &restriction) {
) | ranges::views::filter([](const MTPRestrictionReason &restriction) {
return restriction.match([&](const MTPDrestrictionReason &data) {
const auto platform = qs(data.vplatform());
return false
@ -127,7 +127,7 @@ std::vector<UnavailableReason> ExtractUnavailableReasons(
#endif // OS_MAC_STORE || OS_WIN_STORE
|| (platform == qstr("all"));
});
}) | ranges::view::transform([](const MTPRestrictionReason &restriction) {
}) | ranges::views::transform([](const MTPRestrictionReason &restriction) {
return restriction.match([&](const MTPDrestrictionReason &data) {
return UnavailableReason{ qs(data.vreason()), qs(data.vtext()) };
});
@ -1667,22 +1667,22 @@ rpl::producer<not_null<UserData*>> Session::megagroupParticipantAdded(
HistoryItemsList Session::idsToItems(
const MessageIdsList &ids) const {
return ranges::view::all(
return ranges::views::all(
ids
) | ranges::view::transform([&](const FullMsgId &fullId) {
) | ranges::views::transform([&](const FullMsgId &fullId) {
return message(fullId);
}) | ranges::view::filter([](HistoryItem *item) {
}) | ranges::views::filter([](HistoryItem *item) {
return item != nullptr;
}) | ranges::view::transform([](HistoryItem *item) {
}) | ranges::views::transform([](HistoryItem *item) {
return not_null<HistoryItem*>(item);
}) | ranges::to_vector;
}
MessageIdsList Session::itemsToIds(
const HistoryItemsList &items) const {
return ranges::view::all(
return ranges::views::all(
items
) | ranges::view::transform([](not_null<HistoryItem*> item) {
) | ranges::views::transform([](not_null<HistoryItem*> item) {
return item->fullId();
}) | ranges::to_vector;
}

View File

@ -787,9 +787,9 @@ void Stickers::featuredSetsReceived(
const QVector<MTPStickerSetCovered> &list,
const QVector<MTPlong> &unread,
int32 hash) {
auto &&unreadIds = ranges::view::all(
auto &&unreadIds = ranges::views::all(
unread
) | ranges::view::transform([](const MTPlong &id) {
) | ranges::views::transform([](const MTPlong &id) {
return id.v;
});
const auto unreadMap = base::flat_set<uint64>{
@ -1098,9 +1098,9 @@ std::vector<not_null<DocumentData*>> Stickers::getListByEmoji(
std::greater<>(),
&StickerWithDate::date);
return ranges::view::all(
return ranges::views::all(
result
) | ranges::view::transform([](const StickerWithDate &data) {
) | ranges::views::transform([](const StickerWithDate &data) {
return data.document;
}) | ranges::to_vector;
}

View File

@ -3108,9 +3108,9 @@ void InnerWidget::setupShortcuts() {
const auto filters = &session().data().chatsFilters().list();
if (const auto filtersCount = int(filters->size())) {
auto &&folders = ranges::view::zip(
auto &&folders = ranges::views::zip(
Shortcuts::kShowFolder,
ranges::view::ints(0, ranges::unreachable));
ranges::views::ints(0, ranges::unreachable));
for (const auto [command, index] : folders) {
const auto select = (command == Command::ShowFolderLast)
@ -3134,9 +3134,9 @@ void InnerWidget::setupShortcuts() {
Command::ChatPinned4,
Command::ChatPinned5,
};
auto &&pinned = ranges::view::zip(
auto &&pinned = ranges::views::zip(
kPinned,
ranges::view::ints(0, ranges::unreachable));
ranges::views::ints(0, ranges::unreachable));
for (const auto [command, index] : pinned) {
request->check(command) && request->handle([=, index = index] {
const auto list = (_filterId

View File

@ -32,9 +32,9 @@ QString ComposeFolderListEntryText(not_null<Data::Folder*> folder) {
const auto throwAwayLastName = (list.size() > 1)
&& (count == list.size() + 1);
auto &&peers = ranges::view::all(
auto &&peers = ranges::views::all(
list
) | ranges::view::take(
) | ranges::views::take(
list.size() - (throwAwayLastName ? 1 : 0)
);
const auto wrapName = [](not_null<History*> history) {

View File

@ -546,9 +546,9 @@ Poll ParsePoll(const MTPDmessageMediaPoll &data) {
result.id = poll.vid().v;
result.question = ParseString(poll.vquestion());
result.closed = poll.is_closed();
result.answers = ranges::view::all(
result.answers = ranges::views::all(
poll.vanswers().v
) | ranges::view::transform([](const MTPPollAnswer &answer) {
) | ranges::views::transform([](const MTPPollAnswer &answer) {
return answer.match([](const MTPDpollAnswer &answer) {
auto result = Poll::Answer();
result.text = ParseString(answer.vtext());
@ -1334,15 +1334,15 @@ ContactsList ParseContactsList(const MTPVector<MTPSavedContact> &data) {
}
std::vector<int> SortedContactsIndices(const ContactsList &data) {
const auto names = ranges::view::all(
const auto names = ranges::views::all(
data.list
) | ranges::view::transform([](const Data::ContactInfo &info) {
) | ranges::views::transform([](const Data::ContactInfo &info) {
return (QString::fromUtf8(info.firstName)
+ ' '
+ QString::fromUtf8(info.lastName)).toLower();
}) | ranges::to_vector;
auto indices = ranges::view::ints(0, int(data.list.size()))
auto indices = ranges::views::ints(0, int(data.list.size()))
| ranges::to_vector;
ranges::sort(indices, [&](int i, int j) {
return names[i] < names[j];

View File

@ -1333,9 +1333,9 @@ void ApiWrap::appendChatsSlice(
const auto goodByTypes = [&](const Data::DialogInfo &info) {
return ((types & SettingsFromDialogsType(info.type)) != 0);
};
auto filtered = ranges::view::all(
auto filtered = ranges::views::all(
from
) | ranges::view::filter([&](const Data::DialogInfo &info) {
) | ranges::views::filter([&](const Data::DialogInfo &info) {
if (goodByTypes(info)) {
return true;
} else if (info.migratedToChannelId

View File

@ -220,9 +220,9 @@ QByteArray JoinList(
QByteArray FormatText(
const std::vector<Data::TextPart> &data,
const QString &internalLinksDomain) {
return JoinList(QByteArray(), ranges::view::all(
return JoinList(QByteArray(), ranges::views::all(
data
) | ranges::view::transform([&](const Data::TextPart &part) {
) | ranges::views::transform([&](const Data::TextPart &part) {
const auto text = SerializeString(part.text);
using Type = Data::TextPart::Type;
switch (part.type) {

View File

@ -150,9 +150,9 @@ QByteArray SerializeText(
context.nesting.push_back(Context::kArray);
const auto text = ranges::view::all(
const auto text = ranges::views::all(
data
) | ranges::view::transform([&](const Data::TextPart &part) {
) | ranges::views::transform([&](const Data::TextPart &part) {
if (part.type == Type::Text) {
return SerializeString(part.text);
}
@ -615,9 +615,9 @@ QByteArray SerializeMessage(
}));
}, [&](const Poll &data) {
context.nesting.push_back(Context::kObject);
const auto answers = ranges::view::all(
const auto answers = ranges::views::all(
data.answers
) | ranges::view::transform([&](const Poll::Answer &answer) {
) | ranges::views::transform([&](const Poll::Answer &answer) {
context.nesting.push_back(Context::kArray);
auto result = SerializeObject(context, {
{ "text", SerializeString(answer.text) },

View File

@ -431,7 +431,7 @@ void InnerWidget::requestAdmins() {
const QVector<MTPChannelParticipant> &list) {
auto filtered = (
list
) | ranges::view::transform([&](const MTPChannelParticipant &p) {
) | ranges::views::transform([&](const MTPChannelParticipant &p) {
const auto userId = p.match([](const auto &data) {
return data.vuser_id().v;
});
@ -442,11 +442,11 @@ void InnerWidget::requestAdmins() {
return false;
});
return std::make_pair(userId, canEdit);
}) | ranges::view::transform([&](auto &&pair) {
}) | ranges::views::transform([&](auto &&pair) {
return std::make_pair(
session().data().userLoaded(pair.first),
pair.second);
}) | ranges::view::filter([&](auto &&pair) {
}) | ranges::views::filter([&](auto &&pair) {
return (pair.first != nullptr);
});
@ -818,7 +818,7 @@ int InnerWidget::resizeGetHeight(int newWidth) {
const auto resizeAllItems = (_itemsWidth != newWidth);
auto newHeight = 0;
for (const auto &item : ranges::view::reverse(_items)) {
for (const auto &item : ranges::views::reverse(_items)) {
item->setY(newHeight);
if (item->pendingResize() || resizeAllItems) {
newHeight += item->resizeGetHeight(newWidth);

View File

@ -1125,9 +1125,9 @@ const base::flat_set<not_null<HistoryItem*>> &History::localMessages() {
}
HistoryItem *History::latestSendingMessage() const {
auto sending = ranges::view::all(
auto sending = ranges::views::all(
_localMessages
) | ranges::view::filter([](not_null<HistoryItem*> item) {
) | ranges::views::filter([](not_null<HistoryItem*> item) {
return item->isSending();
});
const auto i = ranges::max_element(sending, ranges::less(), [](
@ -1287,7 +1287,7 @@ void History::addItemsToLists(
// lastParticipants are displayed in Profile as members list.
markupSenders = &peer->asChannel()->mgInfo->markupSenders;
}
for (const auto item : ranges::view::reverse(items)) {
for (const auto item : ranges::views::reverse(items)) {
item->addToUnreadMentions(UnreadMentionType::Existing);
if (item->from()->id) {
if (lastAuthors) { // chats
@ -1400,8 +1400,8 @@ void History::calculateFirstUnreadMessage() {
if (!unreadCount() || !trackUnreadMessages()) {
return;
}
for (const auto &block : ranges::view::reverse(blocks)) {
for (const auto &message : ranges::view::reverse(block->messages)) {
for (const auto &block : ranges::views::reverse(blocks)) {
for (const auto &message : ranges::views::reverse(block->messages)) {
const auto item = message->data();
if (!IsServerMsgId(item->id)) {
continue;
@ -1488,8 +1488,8 @@ std::optional<int> History::countStillUnreadLocal(MsgId readTillId) const {
return std::nullopt;
}
auto result = 0;
for (const auto &block : ranges::view::reverse(blocks)) {
for (const auto &message : ranges::view::reverse(block->messages)) {
for (const auto &block : ranges::views::reverse(blocks)) {
for (const auto &message : ranges::views::reverse(block->messages)) {
const auto item = message->data();
if (IsServerMsgId(item->id)) {
if (item->id <= readTillId) {
@ -2250,9 +2250,9 @@ auto History::computeChatListMessageFromLast() const
return std::nullopt;
}
const auto before = [&]() -> HistoryItem* {
for (const auto &block : ranges::view::reverse(blocks)) {
for (const auto &block : ranges::views::reverse(blocks)) {
const auto &messages = block->messages;
for (const auto &item : ranges::view::reverse(messages)) {
for (const auto &item : ranges::views::reverse(messages)) {
if (item->data() != last) {
return item->data();
}
@ -2653,8 +2653,8 @@ MsgId History::minMsgId() const {
}
MsgId History::maxMsgId() const {
for (const auto &block : ranges::view::reverse(blocks)) {
for (const auto &message : ranges::view::reverse(block->messages)) {
for (const auto &block : ranges::views::reverse(blocks)) {
for (const auto &message : ranges::views::reverse(block->messages)) {
const auto item = message->data();
if (IsServerMsgId(item->id)) {
return item->id;
@ -2679,8 +2679,8 @@ HistoryItem *History::lastEditableMessage() const {
return nullptr;
}
const auto now = base::unixtime::now();
for (const auto &block : ranges::view::reverse(blocks)) {
for (const auto &message : ranges::view::reverse(block->messages)) {
for (const auto &block : ranges::views::reverse(blocks)) {
for (const auto &message : ranges::views::reverse(block->messages)) {
const auto item = message->data();
if (item->allowsEdit(now)) {
return owner().groups().findItemToEdit(item);
@ -2922,8 +2922,8 @@ auto History::findFirstDisplayed() const -> Element* {
}
auto History::findLastNonEmpty() const -> Element* {
for (const auto &block : ranges::view::reverse(blocks)) {
for (const auto &element : ranges::view::reverse(block->messages)) {
for (const auto &block : ranges::views::reverse(blocks)) {
for (const auto &element : ranges::views::reverse(block->messages)) {
if (!element->data()->isEmpty()) {
return element.get();
}
@ -2933,8 +2933,8 @@ auto History::findLastNonEmpty() const -> Element* {
}
auto History::findLastDisplayed() const -> Element* {
for (const auto &block : ranges::view::reverse(blocks)) {
for (const auto &element : ranges::view::reverse(block->messages)) {
for (const auto &block : ranges::views::reverse(blocks)) {
for (const auto &element : ranges::views::reverse(block->messages)) {
if (!element->data()->isEmpty() && !element->isHidden()) {
return element.get();
}

View File

@ -135,11 +135,11 @@ TextForMimeData HistoryGroupText(not_null<const Data::Group*> group) {
}
}
auto caption = [&] {
auto &&nonempty = ranges::view::all(
auto &&nonempty = ranges::views::all(
group->items
) | ranges::view::filter(
) | ranges::views::filter(
hasCaption
) | ranges::view::take(2);
) | ranges::views::take(2);
auto first = nonempty.begin();
auto end = nonempty.end();
if (first == end) {

View File

@ -5143,9 +5143,9 @@ void HistoryWidget::mousePressEvent(QMouseEvent *e) {
if (readyToForward()) {
const auto items = std::move(_toForward);
session().data().cancelForwarding(_history);
auto list = ranges::view::all(
auto list = ranges::views::all(
items
) | ranges::view::transform(
) | ranges::views::transform(
&HistoryItem::fullId
) | ranges::to_vector;
Window::ShowForwardMessagesBox(controller(), std::move(list));

View File

@ -285,9 +285,9 @@ void AddPostLinkAction(
}
MessageIdsList ExtractIdsList(const SelectedItems &items) {
return ranges::view::all(
return ranges::views::all(
items
) | ranges::view::transform(
) | ranges::views::transform(
&SelectedItem::msgId
) | ranges::to_vector;
}
@ -370,13 +370,13 @@ bool AddSendNowSelectedAction(
}
const auto session = &request.navigation->session();
auto histories = ranges::view::all(
auto histories = ranges::views::all(
request.selectedItems
) | ranges::view::transform([&](const SelectedItem &item) {
) | ranges::views::transform([&](const SelectedItem &item) {
return session->data().message(item.msgId);
}) | ranges::view::filter([](HistoryItem *item) {
}) | ranges::views::filter([](HistoryItem *item) {
return item != nullptr;
}) | ranges::view::transform(
}) | ranges::views::transform(
&HistoryItem::history
);
if (histories.begin() == histories.end()) {

View File

@ -805,9 +805,9 @@ auto ListWidget::collectSelectedItems() const -> SelectedItems {
MessageIdsList ListWidget::collectSelectedIds() const {
const auto selected = collectSelectedItems();
return ranges::view::all(
return ranges::views::all(
selected
) | ranges::view::transform([](const SelectedItem &item) {
) | ranges::views::transform([](const SelectedItem &item) {
return item.msgId;
}) | ranges::to_vector;
}
@ -2735,7 +2735,7 @@ bool ListWidget::lastMessageEditRequestNotify() const {
auto proj = [&](not_null<Element*> view) {
return view->data()->allowsEdit(now);
};
const auto &list = ranges::view::reverse(_items);
const auto &list = ranges::views::reverse(_items);
const auto it = ranges::find_if(list, std::move(proj));
if (it == end(list)) {
return false;
@ -2785,7 +2785,7 @@ void ListWidget::replyNextMessage(FullMsgId fullId, bool next) {
auto proj = [&](not_null<Element*> view) {
return view->data()->fullId() == fullId;
};
const auto &list = ranges::view::reverse(_items);
const auto &list = ranges::views::reverse(_items);
const auto it = ranges::find_if(list, std::move(proj));
if (it == end(list)) {
replyFirst();

View File

@ -1706,7 +1706,7 @@ void RepliesWidget::readTill(not_null<HistoryItem*> item) {
}
void RepliesWidget::listVisibleItemsChanged(HistoryItemsList &&items) {
const auto reversed = ranges::view::reverse(items);
const auto reversed = ranges::views::reverse(items);
const auto good = ranges::find_if(reversed, [](auto item) {
return IsServerMsgId(item->id);
});

View File

@ -38,7 +38,7 @@ auto ResolveImages(
auto NonEmpty(const std::array<std::shared_ptr<EmojiImage>, Ui::Text::kIsolatedEmojiLimit> &images) {
using namespace rpl::mappers;
return images | ranges::view::filter(_1 != nullptr);
return images | ranges::views::filter(_1 != nullptr);
}
} // namespace

View File

@ -62,11 +62,11 @@ GroupedMedia::GroupedMedia(
const std::vector<std::unique_ptr<Data::Media>> &medias)
: Media(parent)
, _caption(st::minPhotoSize - st::msgPadding.left() - st::msgPadding.right()) {
const auto truncated = ranges::view::all(
const auto truncated = ranges::views::all(
medias
) | ranges::view::transform([](const std::unique_ptr<Data::Media> &v) {
) | ranges::views::transform([](const std::unique_ptr<Data::Media> &v) {
return v.get();
}) | ranges::view::take(kMaxSize);
}) | ranges::views::take(kMaxSize);
const auto result = applyGroup(truncated);
Ensures(result);
@ -77,11 +77,11 @@ GroupedMedia::GroupedMedia(
const std::vector<not_null<HistoryItem*>> &items)
: Media(parent)
, _caption(st::minPhotoSize - st::msgPadding.left() - st::msgPadding.right()) {
const auto medias = ranges::view::all(
const auto medias = ranges::views::all(
items
) | ranges::view::transform([](not_null<HistoryItem*> item) {
) | ranges::views::transform([](not_null<HistoryItem*> item) {
return item->media();
}) | ranges::view::take(kMaxSize);
}) | ranges::views::take(kMaxSize);
const auto result = applyGroup(medias);
Ensures(result);

View File

@ -105,10 +105,10 @@ void CountNicePercent(
PercentCounterItem ItemsStorage[PollData::kMaxOptions];
const auto items = gsl::make_span(ItemsStorage).subspan(0, count);
auto left = 100;
auto &&zipped = ranges::view::zip(
auto &&zipped = ranges::views::zip(
votes,
items,
ranges::view::ints(0, int(items.size())));
ranges::views::ints(0, int(items.size())));
for (auto &&[votes, item, index] : zipped) {
item.index = index;
item.percent = (votes * 100) / total;
@ -248,9 +248,9 @@ QSize Poll::countOptimalSize() {
+ st::historyPollAnswerPadding.right());
}
const auto answersHeight = ranges::accumulate(ranges::view::all(
const auto answersHeight = ranges::accumulate(ranges::views::all(
_answers
) | ranges::view::transform([](const Answer &answer) {
) | ranges::views::transform([](const Answer &answer) {
return st::historyPollAnswerPadding.top()
+ answer.text.minHeight()
+ st::historyPollAnswerPadding.bottom();
@ -307,9 +307,9 @@ int Poll::countAnswerTop(
}
tshift += _question.countHeight(innerWidth) + st::historyPollSubtitleSkip;
tshift += st::msgDateFont->height + st::historyPollAnswersSkip;
auto &&answers = ranges::view::zip(
auto &&answers = ranges::views::zip(
_answers,
ranges::view::ints(0, int(_answers.size())));
ranges::views::ints(0, int(_answers.size())));
const auto i = ranges::find(
_answers,
&answer,
@ -345,9 +345,9 @@ QSize Poll::countCurrentSize(int newWidth) {
- st::msgPadding.left()
- st::msgPadding.right();
const auto answersHeight = ranges::accumulate(ranges::view::all(
const auto answersHeight = ranges::accumulate(ranges::views::all(
_answers
) | ranges::view::transform([&](const Answer &answer) {
) | ranges::views::transform([&](const Answer &answer) {
return countAnswerHeight(answer, innerWidth);
}), 0);
@ -477,16 +477,16 @@ void Poll::solutionToggled(
}
void Poll::updateRecentVoters() {
auto &&sliced = ranges::view::all(
auto &&sliced = ranges::views::all(
_poll->recentVoters
) | ranges::view::take(kShowRecentVotersCount);
) | ranges::views::take(kShowRecentVotersCount);
const auto changed = !ranges::equal(
_recentVoters,
sliced,
ranges::equal_to(),
&RecentVoter::user);
if (changed) {
auto updated = ranges::view::all(
auto updated = ranges::views::all(
sliced
) | ranges::views::transform([](not_null<UserData*> user) {
return RecentVoter{ user };
@ -518,15 +518,15 @@ void Poll::updateAnswers() {
&Answer::option,
&PollAnswer::option);
if (!changed) {
auto &&answers = ranges::view::zip(_answers, _poll->answers);
auto &&answers = ranges::views::zip(_answers, _poll->answers);
for (auto &&[answer, original] : answers) {
answer.fillData(_poll, original);
}
return;
}
_answers = ranges::view::all(
_answers = ranges::views::all(
_poll->answers
) | ranges::view::transform([&](const PollAnswer &answer) {
) | ranges::views::transform([&](const PollAnswer &answer) {
auto result = Answer();
result.option = answer.option;
result.fillData(_poll, answer);
@ -583,9 +583,9 @@ void Poll::toggleMultiOption(const QByteArray &option) {
}
void Poll::sendMultiOptions() {
auto chosen = _answers | ranges::view::filter(
auto chosen = _answers | ranges::views::filter(
&Answer::selected
) | ranges::view::transform(
) | ranges::views::transform(
&Answer::option
) | ranges::to_vector;
if (!chosen.empty()) {
@ -697,9 +697,9 @@ void Poll::updateAnswerVotes() {
int VotesStorage[kMaxCount] = { 0 };
ranges::copy(
ranges::view::all(
ranges::views::all(
_poll->answers
) | ranges::view::transform(&PollAnswer::votes),
) | ranges::views::transform(&PollAnswer::votes),
ranges::begin(VotesStorage));
CountNicePercent(
@ -707,7 +707,7 @@ void Poll::updateAnswerVotes() {
totalVotes,
gsl::make_span(PercentsStorage).subspan(0, count));
auto &&answers = ranges::view::zip(
auto &&answers = ranges::views::zip(
_answers,
_poll->answers,
PercentsStorage);
@ -756,9 +756,9 @@ void Poll::draw(Painter &p, const QRect &r, TextSelection selection, crl::time m
resetAnswersAnimation();
}
auto &&answers = ranges::view::zip(
auto &&answers = ranges::views::zip(
_answers,
ranges::view::ints(0, int(_answers.size())));
ranges::views::ints(0, int(_answers.size())));
for (const auto &[answer, index] : answers) {
const auto animation = _answersAnimation
? &_answersAnimation->data[index]
@ -1292,7 +1292,7 @@ void Poll::startAnswersAnimation() const {
}
const auto show = showVotes();
auto &&both = ranges::view::zip(_answers, _answersAnimation->data);
auto &&both = ranges::views::zip(_answers, _answersAnimation->data);
for (auto &&[answer, data] : both) {
data.percent.start(show ? float64(answer.votesPercent) : 0.);
data.filling.start(show ? answer.filling : 0.);

View File

@ -510,11 +510,11 @@ bool TopBar::searchMode() const {
}
MessageIdsList TopBar::collectItems() const {
return ranges::view::all(
return ranges::views::all(
_selectedItems.list
) | ranges::view::transform([](auto &&item) {
) | ranges::views::transform([](auto &&item) {
return item.msgId;
}) | ranges::view::filter([&](FullMsgId msgId) {
}) | ranges::views::filter([&](FullMsgId msgId) {
return _navigation->session().data().message(msgId) != nullptr;
}) | ranges::to_vector;
}

View File

@ -724,9 +724,9 @@ auto ListWidget::collectSelectedItems() const -> SelectedItems {
MessageIdsList ListWidget::collectSelectedIds() const {
const auto selected = collectSelectedItems();
return ranges::view::all(
return ranges::views::all(
selected.list
) | ranges::view::transform([](const SelectedItem &item) {
) | ranges::views::transform([](const SelectedItem &item) {
return item.msgId;
}) | ranges::to_vector;
}

View File

@ -326,9 +326,9 @@ void Members::addMember() {
AddParticipantsBoxController::Start(_controller, chat);
} else if (const auto channel = _peer->asChannel()) {
const auto state = _listController->saveState();
const auto users = ranges::view::all(
const auto users = ranges::views::all(
state->list
) | ranges::view::transform([](not_null<PeerData*> peer) {
) | ranges::views::transform([](not_null<PeerData*> peer) {
return peer->asUser();
}) | ranges::to_vector;
AddParticipantsBoxController::Start(

View File

@ -212,7 +212,7 @@ template <int Size>
auto Reader::StackIntVector<Size>::values() const {
using namespace rpl::mappers;
return ranges::view::all(_storage) | ranges::view::take_while(_1 >= 0);
return ranges::views::all(_storage) | ranges::views::take_while(_1 >= 0);
}
struct Reader::CacheHelper {
@ -1057,9 +1057,9 @@ void Reader::pruneDoneDownloaderRequests() {
}
void Reader::sendDownloaderRequests() {
auto &&offsets = ranges::view::all(
auto &&offsets = ranges::views::all(
_offsetsForDownloader
) | ranges::view::take(kDownloaderRequestsLimit);
) | ranges::views::take(kDownloaderRequestsLimit);
for (const auto offset : offsets) {
if ((!_cacheHelper || !downloaderWaitForCachedSlice(offset))
&& _downloaderOffsetsRequested.emplace(offset).second) {

View File

@ -139,8 +139,8 @@ QImage ConvertFrame(
- storage.width();
const auto deltaFrom = (frame->linesize[0] / sizeof(uint32))
- frame->width;
for (const auto y : ranges::view::ints(0, frame->height)) {
for (const auto x : ranges::view::ints(0, frame->width)) {
for (const auto y : ranges::views::ints(0, frame->height)) {
for (const auto x : ranges::views::ints(0, frame->width)) {
// Wipe out possible alpha values.
*to++ = 0xFF000000U | *from++;
}

View File

@ -748,9 +748,9 @@ void DcOptions::FilterIfHasWithFlag(Variants &variants, Flag flag) {
for (auto &byAddress : variants.data) {
for (auto &list : byAddress) {
if (has(list)) {
list = ranges::view::all(
list = ranges::views::all(
list
) | ranges::view::filter(
) | ranges::views::filter(
is
) | ranges::to_vector;
}

View File

@ -464,9 +464,9 @@ int Value::whatNotFilled() const {
void Value::saveInEdit(not_null<Main::Session*> session) {
const auto saveList = [&](FileType type) {
filesInEdit(type) = ranges::view::all(
filesInEdit(type) = ranges::views::all(
files(type)
) | ranges::view::transform([=](const File &file) {
) | ranges::views::transform([=](const File &file) {
return EditFile(session, this, type, file, nullptr);
}) | ranges::to_vector;
};
@ -2541,7 +2541,7 @@ bool FormController::parseForm(const MTPaccount_AuthorizationForm &result) {
value.nativeNames = requested.nativeNames;
}
_form.request.push_back(row.values
| ranges::view::transform([](const RequestedValue &value) {
| ranges::views::transform([](const RequestedValue &value) {
return value.type;
}) | ranges::to_vector);
}

View File

@ -1005,11 +1005,11 @@ void PanelController::requestScopeFilesType(int index) {
[=](int documentIndex) {
editWithUpload(index, documentIndex);
},
ranges::view::all(
ranges::views::all(
_scopes[index].documents
) | ranges::view::transform([](auto value) {
) | ranges::views::transform([](auto value) {
return value->type;
}) | ranges::view::transform([](Value::Type type) {
}) | ranges::views::transform([](Value::Type type) {
switch (type) {
case Value::Type::Passport:
return tr::lng_passport_identity_passport(tr::now);
@ -1028,11 +1028,11 @@ void PanelController::requestScopeFilesType(int index) {
[=](int documentIndex) {
editWithUpload(index, documentIndex);
},
ranges::view::all(
ranges::views::all(
_scopes[index].documents
) | ranges::view::transform([](auto value) {
) | ranges::views::transform([](auto value) {
return value->type;
}) | ranges::view::transform([](Value::Type type) {
}) | ranges::views::transform([](Value::Type type) {
switch (type) {
case Value::Type::UtilityBill:
return tr::lng_passport_address_bill(tr::now);

View File

@ -637,7 +637,7 @@ bool PanelEditDocument::validate() {
error = firsttop.y();
}
auto first = QPointer<PanelDetailsRow>();
for (const auto &[i, field] : ranges::view::reverse(_details)) {
for (const auto &[i, field] : ranges::views::reverse(_details)) {
const auto &row = _scheme.rows[i];
if (row.valueClass == Scheme::ValueClass::Additional
&& !_additionalShown) {

View File

@ -632,9 +632,9 @@ TimeId CalculateOnlineTill(not_null<PeerData*> peer) {
};
const auto updatePinnedChats = [=] {
_pins = ranges::view::zip(
_pins = ranges::views::zip(
_session->data().pinnedChatsOrder(nullptr, FilterId()),
ranges::view::ints(0, ranges::unreachable)
ranges::views::ints(0, ranges::unreachable)
) | ranges::views::transform([=](const auto &pair) {
const auto index = pair.second;
auto peer = pair.first.history()->peer;

View File

@ -101,9 +101,9 @@ void Calls::setupContent() {
st::settingsButton
)->addClickHandler([=] {
const auto &devices = GetVideoInputList();
const auto options = ranges::view::concat(
ranges::view::single(tr::lng_settings_call_device_default(tr::now)),
devices | ranges::view::transform(&VideoInput::name)
const auto options = ranges::views::concat(
ranges::views::single(tr::lng_settings_call_device_default(tr::now)),
devices | ranges::views::transform(&VideoInput::name)
) | ranges::to_vector;
const auto i = ranges::find(
devices,
@ -375,9 +375,9 @@ object_ptr<Ui::GenericBox> ChooseAudioOutputBox(
const style::Radio *radioSt) {
const auto &settings = Core::App().settings();
const auto list = GetAudioOutputList(settings.callAudioBackend());
const auto options = ranges::view::concat(
ranges::view::single(tr::lng_settings_call_device_default(tr::now)),
list | ranges::view::transform(&AudioOutput::name)
const auto options = ranges::views::concat(
ranges::views::single(tr::lng_settings_call_device_default(tr::now)),
list | ranges::views::transform(&AudioOutput::name)
) | ranges::to_vector;
const auto i = ranges::find(
list,
@ -411,9 +411,9 @@ object_ptr<Ui::GenericBox> ChooseAudioInputBox(
const style::Radio *radioSt) {
const auto &settings = Core::App().settings();
const auto list = GetAudioInputList(settings.callAudioBackend());
const auto options = ranges::view::concat(
ranges::view::single(tr::lng_settings_call_device_default(tr::now)),
list | ranges::view::transform(&AudioInput::name)
const auto options = ranges::views::concat(
ranges::views::single(tr::lng_settings_call_device_default(tr::now)),
list | ranges::views::transform(&AudioInput::name)
) | ranges::to_vector;
const auto i = ranges::find(
list,

View File

@ -1039,9 +1039,9 @@ void SetupDefaultThemes(
};
auto checks = base::flat_map<Type,not_null<Check*>>();
auto buttons = ranges::view::all(
auto buttons = ranges::views::all(
kSchemesList
) | ranges::view::transform([&](const Scheme &scheme) {
) | ranges::views::transform([&](const Scheme &scheme) {
auto check = std::make_unique<Check>(
ColorsFromScheme(scheme),
false);

View File

@ -555,7 +555,7 @@ void FilterRowButton::paintEvent(QPaintEvent *e) {
tl));
}
auto previousId = mtpRequestId(0);
auto &&requests = ranges::view::concat(removeRequests, addRequests);
auto &&requests = ranges::views::concat(removeRequests, addRequests);
for (auto &request : requests) {
previousId = session->api().request(
std::move(request)

View File

@ -730,14 +730,14 @@ auto Templates::query(const QString &text) const -> std::vector<Question> {
return (a.first.second < b.first.second);
}
};
const auto good = narrowed->second | ranges::view::transform(
const auto good = narrowed->second | ranges::views::transform(
pairById
) | ranges::view::filter([](const Pair &pair) {
) | ranges::views::filter([](const Pair &pair) {
return pair.second > 0;
}) | ranges::to_vector | ranges::action::stable_sort(sorter);
return good | ranges::view::transform([&](const Pair &pair) {
return good | ranges::views::transform([&](const Pair &pair) {
return questionById(pair.first);
}) | ranges::view::take(kQueryLimit) | ranges::to_vector;
}) | ranges::views::take(kQueryLimit) | ranges::to_vector;
}
} // namespace Support

View File

@ -85,14 +85,14 @@ std::vector<int> AlbumPreview::defaultOrder(int count) const {
if (count < 0) {
count = _order.size();
}
return ranges::view::ints(0, count) | ranges::to_vector;
return ranges::views::ints(0, count) | ranges::to_vector;
}
void AlbumPreview::prepareThumbs(gsl::span<Ui::PreparedFile> items) {
_order = defaultOrder(items.size());
_itemsShownDimensions = ranges::view::all(
_itemsShownDimensions = ranges::views::all(
_order
) | ranges::view::transform([&](int index) {
) | ranges::views::transform([&](int index) {
return items[index].shownDimensions;
}) | ranges::to_vector;
@ -108,9 +108,9 @@ void AlbumPreview::prepareThumbs(gsl::span<Ui::PreparedFile> items) {
[=] { deleteThumbByIndex(thumbIndex(thumbUnderCursor())); }));
}
_thumbsHeight = countLayoutHeight(layout);
_photosHeight = ranges::accumulate(ranges::view::all(
_photosHeight = ranges::accumulate(ranges::views::all(
_thumbs
) | ranges::view::transform([](const auto &thumb) {
) | ranges::views::transform([](const auto &thumb) {
return thumb->photoHeight();
}), 0) + (count - 1) * st::sendMediaRowSkip;

View File

@ -111,7 +111,7 @@ bool PreparedList::canBeSentInSlowmodeWith(const PreparedList &other) const {
}
using Type = PreparedFile::Type;
auto &&all = ranges::view::concat(files, other.files);
auto &&all = ranges::views::concat(files, other.files);
const auto has = [&](Type type) {
return ranges::contains(all, type, &PreparedFile::type);
};

View File

@ -141,7 +141,7 @@ GroupCallUserpics::~GroupCallUserpics() = default;
void GroupCallUserpics::paint(Painter &p, int x, int y, int size) {
const auto factor = style::DevicePixelRatio();
const auto &minScale = kUserpicMinScale;
for (auto &userpic : ranges::view::reverse(_list)) {
for (auto &userpic : ranges::views::reverse(_list)) {
const auto shown = userpic.shownAnimation.value(
userpic.hiding ? 0. : 1.);
if (shown == 0.) {

View File

@ -105,17 +105,17 @@ Layouter::Layouter(
}
std::vector<float64> Layouter::CountRatios(const std::vector<QSize> &sizes) {
return ranges::view::all(
return ranges::views::all(
sizes
) | ranges::view::transform([](const QSize &size) {
) | ranges::views::transform([](const QSize &size) {
return size.width() / float64(size.height());
}) | ranges::to_vector;
}
std::string Layouter::CountProportions(const std::vector<float64> &ratios) {
return ranges::view::all(
return ranges::views::all(
ratios
) | ranges::view::transform([](float64 ratio) {
) | ranges::views::transform([](float64 ratio) {
return (ratio > 1.2) ? 'w' : (ratio < 0.8) ? 'n' : 'q';
}) | ranges::to<std::string>();
}
@ -438,9 +438,9 @@ ComplexLayouter::ComplexLayouter(
std::vector<float64> ComplexLayouter::CropRatios(
const std::vector<float64> &ratios,
float64 averageRatio) {
return ranges::view::all(
return ranges::views::all(
ratios
) | ranges::view::transform([&](float64 ratio) {
) | ranges::views::transform([&](float64 ratio) {
constexpr auto kMaxRatio = 2.75;
constexpr auto kMinRatio = 0.6667;
return (averageRatio > 1.1)

View File

@ -475,12 +475,12 @@ bool CloudList::insertTillLimit(
}) - begin(_elements);
auto positionForBad = end(_elements) - begin(_elements);
auto insertElements = ranges::view::all(
auto insertElements = ranges::views::all(
list
) | ranges::view::filter([&](const Data::CloudTheme &theme) {
) | ranges::views::filter([&](const Data::CloudTheme &theme) {
const auto i = ranges::find(_elements, theme.id, &Element::id);
return (i == end(_elements));
}) | ranges::view::take(insertCount);
}) | ranges::views::take(insertCount);
for (const auto &theme : insertElements) {
const auto good = isGood(theme);
@ -665,7 +665,7 @@ void CloudList::subscribeToDownloadFinished() {
}
_window->session().downloaderTaskFinished(
) | rpl::start_with_next([=] {
auto &&waiting = _elements | ranges::view::filter(&Element::waiting);
auto &&waiting = _elements | ranges::views::filter(&Element::waiting);
const auto still = ranges::count_if(waiting, [&](Element &element) {
if (!element.media) {
element.waiting = false;

View File

@ -371,9 +371,9 @@ void FiltersMenu::applyReorder(
Assert(i != end(_filters));
Assert(i->second == widget);
auto order = ranges::view::all(
auto order = ranges::views::all(
list
) | ranges::view::transform(
) | ranges::views::transform(
&Data::ChatFilter::id
) | ranges::to_vector;
base::reorder(order, oldPosition, newPosition);

View File

@ -1067,13 +1067,13 @@ void PeerMenuAddChannelMembers(
const QVector<MTPChannelParticipant> &list) {
auto already = (
list
) | ranges::view::transform([](const MTPChannelParticipant &p) {
) | ranges::views::transform([](const MTPChannelParticipant &p) {
return p.match([](const auto &data) {
return data.vuser_id().v;
});
}) | ranges::view::transform([&](UserId userId) {
}) | ranges::views::transform([&](UserId userId) {
return channel->owner().userLoaded(userId);
}) | ranges::view::filter([](UserData *user) {
}) | ranges::views::filter([](UserData *user) {
return (user != nullptr);
}) | ranges::to_vector;

View File

@ -189,7 +189,7 @@ void TitleWidgetQt::updateControlsPositionBySide(
const std::vector<Control> &controls,
bool right) {
auto preparedControls = right
? (ranges::view::reverse(controls) | ranges::to_vector)
? (ranges::views::reverse(controls) | ranges::to_vector)
: controls;
RemoveDuplicates(preparedControls);