MCPcopy Create free account
hub / github.com/TDesktop-x64/tdesktop / PrepareLists

Function PrepareLists

Telegram/SourceFiles/boxes/language_box.cpp:258–299  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

256};
257
258std::pair<Languages, Languages> PrepareLists() {
259 const auto projId = [](const Language &language) {
260 return language.id;
261 };
262 const auto current = Lang::LanguageIdOrDefault(Lang::Id());
263 auto official = Lang::CurrentCloudManager().languageList();
264 auto recent = Local::readRecentLanguages();
265 ranges::stable_partition(recent, [&](const Language &language) {
266 return (language.id == current);
267 });
268 if (recent.empty() || recent.front().id != current) {
269 if (ranges::find(official, current, projId) == end(official)) {
270 const auto generate = [&] {
271 const auto name = (current == "#custom")
272 ? "Custom lang pack"
273 : Lang::GetInstance().name();
274 return Language{
275 current,
276 QString(),
277 QString(),
278 name,
279 Lang::GetInstance().nativeName()
280 };
281 };
282 recent.insert(begin(recent), generate());
283 }
284 }
285 auto i = begin(official), e = end(official);
286 const auto remover = [&](const Language &language) {
287 auto k = ranges::find(i, e, language.id, projId);
288 if (k == e) {
289 return false;
290 }
291 for (; k != i; --k) {
292 std::swap(*k, *(k - 1));
293 }
294 ++i;
295 return true;
296 };
297 recent.erase(ranges::remove_if(recent, remover), end(recent));
298 return { std::move(recent), std::move(official) };
299}
300
301Rows::Rows(
302 QWidget *parent,

Callers 1

prepareMethod · 0.85

Calls 10

LanguageIdOrDefaultFunction · 0.85
IdFunction · 0.85
readRecentLanguagesFunction · 0.85
frontMethod · 0.80
nativeNameMethod · 0.80
QStringClass · 0.50
emptyMethod · 0.45
nameMethod · 0.45
insertMethod · 0.45
eraseMethod · 0.45

Tested by

no test coverage detected