mirror of
https://github.com/telegramdesktop/tdesktop
synced 2025-01-29 19:03:03 +00:00
Replaced fake dictionary ids with real values.
This commit is contained in:
parent
039ed17683
commit
f598bf0b42
@ -68,18 +68,6 @@ void SetGlobalLoader(base::unique_qptr<Loader> loader) {
|
||||
GlobalLoaderValues.fire(GlobalLoader.get());
|
||||
}
|
||||
|
||||
int GetDownloadSize(int id) {
|
||||
const auto sets = Spellchecker::Dictionaries();
|
||||
return ranges::find(sets, id, &Spellchecker::Dict::id)->size;
|
||||
}
|
||||
|
||||
MTP::DedicatedLoader::Location GetDownloadLocation(int id) {
|
||||
const auto username = kCloudLocationUsername.utf16();
|
||||
const auto sets = Spellchecker::Dictionaries();
|
||||
const auto i = ranges::find(sets, id, &Spellchecker::Dict::id);
|
||||
return MTP::DedicatedLoader::Location{ username, i->postId };
|
||||
}
|
||||
|
||||
inline auto DictExists(int langId) {
|
||||
return Spellchecker::DictionaryExists(langId);
|
||||
}
|
||||
@ -89,7 +77,7 @@ DictState ComputeState(int id, bool enabled) {
|
||||
if (DictExists(id)) {
|
||||
return result;
|
||||
}
|
||||
return Available{ GetDownloadSize(id) };
|
||||
return Available{ Spellchecker::GetDownloadSize(id) };
|
||||
}
|
||||
|
||||
QString StateDescription(const DictState &state) {
|
||||
@ -140,16 +128,16 @@ Dictionaries Inner::enabledRows() const {
|
||||
|
||||
auto AddButtonWithLoader(
|
||||
not_null<Ui::VerticalLayout*> content,
|
||||
const Spellchecker::Dict &set,
|
||||
const Spellchecker::Dict &dict,
|
||||
bool buttonEnabled) {
|
||||
const auto id = set.id;
|
||||
const auto id = dict.id;
|
||||
|
||||
const auto button = content->add(
|
||||
object_ptr<Ui::SlideWrap<Ui::SettingsButton>>(
|
||||
content,
|
||||
object_ptr<Ui::SettingsButton>(
|
||||
content,
|
||||
rpl::single(set.name),
|
||||
rpl::single(dict.name),
|
||||
st::dictionariesSectionButton
|
||||
)
|
||||
)
|
||||
@ -227,9 +215,9 @@ auto AddButtonWithLoader(
|
||||
SetGlobalLoader(base::make_unique_q<Loader>(
|
||||
App::main(),
|
||||
id,
|
||||
GetDownloadLocation(id),
|
||||
Spellchecker::GetDownloadLocation(id),
|
||||
Spellchecker::DictPathByLangId(id),
|
||||
GetDownloadSize(id)));
|
||||
Spellchecker::GetDownloadSize(id)));
|
||||
} else if (!toggled && state.is<Loading>()) {
|
||||
if (GlobalLoader && GlobalLoader->id() == id) {
|
||||
GlobalLoader->destroy();
|
||||
@ -243,19 +231,19 @@ auto AddButtonWithLoader(
|
||||
void Inner::setupContent(Dictionaries enabledDictionaries) {
|
||||
const auto content = Ui::CreateChild<Ui::VerticalLayout>(this);
|
||||
|
||||
const auto sets = Spellchecker::Dictionaries();
|
||||
for (const auto &set : sets) {
|
||||
for (const auto &dict : Spellchecker::Dictionaries()) {
|
||||
const auto id = dict.id;
|
||||
const auto row = AddButtonWithLoader(
|
||||
content,
|
||||
set,
|
||||
ranges::contains(enabledDictionaries, set.id));
|
||||
dict,
|
||||
ranges::contains(enabledDictionaries, id));
|
||||
row->toggledValue(
|
||||
) | rpl::start_with_next([=](auto enabled) {
|
||||
if (enabled) {
|
||||
_enabledRows.push_back(set.id);
|
||||
_enabledRows.push_back(id);
|
||||
} else {
|
||||
auto &rows = _enabledRows;
|
||||
rows.erase(ranges::remove(rows, set.id), end(rows));
|
||||
rows.erase(ranges::remove(rows, id), end(rows));
|
||||
}
|
||||
}, row->lifetime());
|
||||
}
|
||||
|
@ -30,47 +30,48 @@ inline auto LWC(QLocale::Country country) {
|
||||
}
|
||||
|
||||
const auto kDictionaries = {
|
||||
Dict{{ QLocale::Bulgarian, 12, 229'658, "\xd0\x91\xd1\x8a\xd0\xbb\xd0\xb3\xd0\xb0\xd1\x80\xd1\x81\xd0\xba\xd0\xb8" }},
|
||||
Dict{{ QLocale::Catalan, 13, 417'611, "\x43\x61\x74\x61\x6c\xc3\xa0" }},
|
||||
Dict{{ QLocale::Czech, 14, 860'286, "\xc4\x8c\x65\xc5\xa1\x74\x69\x6e\x61" }},
|
||||
Dict{{ QLocale::Welsh, 15, 177'305, "\x43\x79\x6d\x72\x61\x65\x67" }},
|
||||
Dict{{ QLocale::Danish, 16, 345'874, "\x44\x61\x6e\x73\x6b" }},
|
||||
Dict{{ QLocale::German, 17, 2'412'780, "\x44\x65\x75\x74\x73\x63\x68" }},
|
||||
Dict{{ QLocale::Greek, 18, 1'389'160, "\xce\x95\xce\xbb\xce\xbb\xce\xb7\xce\xbd\xce\xb9\xce\xba\xce\xac" }},
|
||||
Dict{{ LWC(QLocale::Australia), 19, 175'266, "English (Australia)" }},
|
||||
Dict{{ LWC(QLocale::Canada), 20, 174'295, "English (Canada)" }},
|
||||
Dict{{ LWC(QLocale::UnitedKingdom), 21, 174'433, "English (United Kingdom)" }},
|
||||
Dict{{ QLocale::English, 22, 174'516, "English" }},
|
||||
Dict{{ QLocale::Spanish, 23, 264'717, "\x45\x73\x70\x61\xc3\xb1\x6f\x6c" }},
|
||||
Dict{{ QLocale::Estonian, 24, 757'394, "\x45\x65\x73\x74\x69" }},
|
||||
Dict{{ QLocale::Persian, 25, 333'911, "\xd9\x81\xd8\xa7\xd8\xb1\xd8\xb3\xdb\x8c" }},
|
||||
Dict{{ QLocale::French, 26, 321'391, "\x46\x72\x61\x6e\xc3\xa7\x61\x69\x73" }},
|
||||
Dict{{ QLocale::Hebrew, 27, 622'550, "\xd7\xa2\xd7\x91\xd7\xa8\xd7\x99\xd7\xaa" }},
|
||||
Dict{{ QLocale::Hindi, 28, 56'105, "\xe0\xa4\xb9\xe0\xa4\xbf\xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa4\xa6\xe0\xa5\x80" }},
|
||||
Dict{{ QLocale::Croatian, 29, 668'876, "\x48\x72\x76\x61\x74\x73\x6b\x69" }},
|
||||
Dict{{ QLocale::Hungarian, 30, 660'402, "\x4d\x61\x67\x79\x61\x72" }},
|
||||
Dict{{ QLocale::Armenian, 31, 928'746, "\xd5\x80\xd5\xa1\xd5\xb5\xd5\xa5\xd6\x80\xd5\xa5\xd5\xb6" }},
|
||||
Dict{{ QLocale::Indonesian, 32, 100'134, "\x49\x6e\x64\x6f\x6e\x65\x73\x69\x61" }},
|
||||
Dict{{ QLocale::Italian, 33, 324'613, "\x49\x74\x61\x6c\x69\x61\x6e\x6f" }},
|
||||
Dict{{ QLocale::Korean, 34, 1'256'987, "\xed\x95\x9c\xea\xb5\xad\xec\x96\xb4" }},
|
||||
Dict{{ QLocale::Lithuanian, 35, 267'427, "\x4c\x69\x65\x74\x75\x76\x69\xc5\xb3" }},
|
||||
Dict{{ QLocale::Latvian, 36, 641'602, "\x4c\x61\x74\x76\x69\x65\xc5\xa1\x75" }},
|
||||
Dict{{ QLocale::Norwegian, 37, 588'650, "\x4e\x6f\x72\x73\x6b" }},
|
||||
Dict{{ QLocale::Dutch, 38, 743'406, "\x4e\x65\x64\x65\x72\x6c\x61\x6e\x64\x73" }},
|
||||
Dict{{ QLocale::Polish, 39, 1'015'747, "\x50\x6f\x6c\x73\x6b\x69" }},
|
||||
Dict{{ LWC(QLocale::Brazil), 40, 1'231'999, "\x50\x6f\x72\x74\x75\x67\x75\xc3\xaa\x73 (Brazil)" }},
|
||||
Dict{{ QLocale::Portugal, 41, 138'571, "\x50\x6f\x72\x74\x75\x67\x75\xc3\xaa\x73" }},
|
||||
Dict{{ QLocale::Romanian, 42, 455'643, "\x52\x6f\x6d\xc3\xa2\x6e\xc4\x83" }},
|
||||
Dict{{ QLocale::Russian, 43, 463'194, "\xd0\xa0\xd1\x83\xd1\x81\xd1\x81\xd0\xba\xd0\xb8\xd0\xb9" }},
|
||||
Dict{{ QLocale::Slovak, 44, 525'328, "\x53\x6c\x6f\x76\x65\x6e\xc4\x8d\x69\x6e\x61" }},
|
||||
Dict{{ QLocale::Slovenian, 45, 1'143'710, "\x53\x6c\x6f\x76\x65\x6e\xc5\xa1\xc4\x8d\x69\x6e\x61" }},
|
||||
Dict{{ QLocale::Albanian, 46, 583'412, "\x53\x68\x71\x69\x70" }},
|
||||
Dict{{ QLocale::Swedish, 47, 593'877, "\x53\x76\x65\x6e\x73\x6b\x61" }},
|
||||
Dict{{ QLocale::Tamil, 48, 323'193, "\xe0\xae\xa4\xe0\xae\xae\xe0\xae\xbf\xe0\xae\xb4\xe0\xaf\x8d" }},
|
||||
Dict{{ QLocale::Tajik, 49, 369'931, "\xd0\xa2\xd0\xbe\xd2\xb7\xd0\xb8\xd0\xba\xd3\xa3" }},
|
||||
Dict{{ QLocale::Turkish, 50, 4'301'099, "\x54\xc3\xbc\x72\x6b\xc3\xa7\x65" }},
|
||||
Dict{{ QLocale::Ukrainian, 51, 445'711, "\xd0\xa3\xd0\xba\xd1\x80\xd0\xb0\xd1\x97\xd0\xbd\xd1\x81\xd1\x8c\xd0\xba\xd0\xb0" }},
|
||||
Dict{{ QLocale::Vietnamese, 52, 12'949, "\x54\x69\xe1\xba\xbf\x6e\x67\x20\x56\x69\xe1\xbb\x87\x74" }},
|
||||
Dict{{ QLocale::English, 649, 174'516, "English" }}, // en_US
|
||||
Dict{{ QLocale::Bulgarian, 594, 229'658, "\xd0\x91\xd1\x8a\xd0\xbb\xd0\xb3\xd0\xb0\xd1\x80\xd1\x81\xd0\xba\xd0\xb8" }}, // bg_BG
|
||||
Dict{{ QLocale::Catalan, 595, 417'611, "\x43\x61\x74\x61\x6c\xc3\xa0" }}, // ca_ES
|
||||
Dict{{ QLocale::Czech, 596, 860'286, "\xc4\x8c\x65\xc5\xa1\x74\x69\x6e\x61" }}, // cs_CZ
|
||||
Dict{{ QLocale::Welsh, 597, 177'305, "\x43\x79\x6d\x72\x61\x65\x67" }}, // cy_GB
|
||||
Dict{{ QLocale::Danish, 598, 345'874, "\x44\x61\x6e\x73\x6b" }}, // da_DK
|
||||
Dict{{ QLocale::German, 599, 2'412'780, "\x44\x65\x75\x74\x73\x63\x68" }}, // de_DE
|
||||
Dict{{ QLocale::Greek, 600, 1'389'160, "\xce\x95\xce\xbb\xce\xbb\xce\xb7\xce\xbd\xce\xb9\xce\xba\xce\xac" }}, // el_GR
|
||||
Dict{{ LWC(QLocale::Australia), 601, 175'266, "English (Australia)" }}, // en_AU
|
||||
Dict{{ LWC(QLocale::Canada), 602, 174'295, "English (Canada)" }}, // en_CA
|
||||
Dict{{ LWC(QLocale::UnitedKingdom), 603, 174'433, "English (United Kingdom)" }}, // en_GB
|
||||
Dict{{ QLocale::Spanish, 604, 264'717, "\x45\x73\x70\x61\xc3\xb1\x6f\x6c" }}, // es_ES
|
||||
Dict{{ QLocale::Estonian, 605, 757'394, "\x45\x65\x73\x74\x69" }}, // et_EE
|
||||
Dict{{ QLocale::Persian, 606, 333'911, "\xd9\x81\xd8\xa7\xd8\xb1\xd8\xb3\xdb\x8c" }}, // fa_IR
|
||||
Dict{{ QLocale::French, 607, 321'391, "\x46\x72\x61\x6e\xc3\xa7\x61\x69\x73" }}, // fr_FR
|
||||
Dict{{ QLocale::Hebrew, 608, 622'550, "\xd7\xa2\xd7\x91\xd7\xa8\xd7\x99\xd7\xaa" }}, // he_IL
|
||||
Dict{{ QLocale::Hindi, 609, 56'105, "\xe0\xa4\xb9\xe0\xa4\xbf\xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa4\xa6\xe0\xa5\x80" }}, // hi_IN
|
||||
Dict{{ QLocale::Croatian, 610, 668'876, "\x48\x72\x76\x61\x74\x73\x6b\x69" }}, // hr_HR
|
||||
Dict{{ QLocale::Hungarian, 611, 660'402, "\x4d\x61\x67\x79\x61\x72" }}, // hu_HU
|
||||
Dict{{ QLocale::Armenian, 612, 928'746, "\xd5\x80\xd5\xa1\xd5\xb5\xd5\xa5\xd6\x80\xd5\xa5\xd5\xb6" }}, // hy_AM
|
||||
Dict{{ QLocale::Indonesian, 613, 100'134, "\x49\x6e\x64\x6f\x6e\x65\x73\x69\x61" }}, // id_ID
|
||||
Dict{{ QLocale::Italian, 614, 324'613, "\x49\x74\x61\x6c\x69\x61\x6e\x6f" }}, // it_IT
|
||||
Dict{{ QLocale::Korean, 615, 1'256'987, "\xed\x95\x9c\xea\xb5\xad\xec\x96\xb4" }}, // ko_KR
|
||||
Dict{{ QLocale::Lithuanian, 616, 267'427, "\x4c\x69\x65\x74\x75\x76\x69\xc5\xb3" }}, // lt_LT
|
||||
Dict{{ QLocale::Latvian, 617, 641'602, "\x4c\x61\x74\x76\x69\x65\xc5\xa1\x75" }}, // lv_LV
|
||||
Dict{{ QLocale::Norwegian, 618, 588'650, "\x4e\x6f\x72\x73\x6b" }}, // nb_NO
|
||||
Dict{{ QLocale::Dutch, 619, 743'406, "\x4e\x65\x64\x65\x72\x6c\x61\x6e\x64\x73" }}, // nl_NL
|
||||
Dict{{ QLocale::Polish, 620, 1'015'747, "\x50\x6f\x6c\x73\x6b\x69" }}, // pl_PL
|
||||
Dict{{ QLocale::Portuguese, 621, 1'231'999, "\x50\x6f\x72\x74\x75\x67\x75\xc3\xaa\x73 (Brazil)" }}, // pt_BR
|
||||
Dict{{ LWC(QLocale::Portugal), 622, 138'571, "\x50\x6f\x72\x74\x75\x67\x75\xc3\xaa\x73" }}, // pt_PT
|
||||
Dict{{ QLocale::Romanian, 623, 455'643, "\x52\x6f\x6d\xc3\xa2\x6e\xc4\x83" }}, // ro_RO
|
||||
Dict{{ QLocale::Russian, 624, 463'194, "\xd0\xa0\xd1\x83\xd1\x81\xd1\x81\xd0\xba\xd0\xb8\xd0\xb9" }}, // ru_RU
|
||||
Dict{{ QLocale::Slovak, 625, 525'328, "\x53\x6c\x6f\x76\x65\x6e\xc4\x8d\x69\x6e\x61" }}, // sk_SK
|
||||
Dict{{ QLocale::Slovenian, 626, 1'143'710, "\x53\x6c\x6f\x76\x65\x6e\xc5\xa1\xc4\x8d\x69\x6e\x61" }}, // sl_SI
|
||||
Dict{{ QLocale::Albanian, 627, 583'412, "\x53\x68\x71\x69\x70" }}, // sq_AL
|
||||
Dict{{ QLocale::Swedish, 628, 593'877, "\x53\x76\x65\x6e\x73\x6b\x61" }}, // sv_SE
|
||||
Dict{{ QLocale::Tamil, 629, 323'193, "\xe0\xae\xa4\xe0\xae\xae\xe0\xae\xbf\xe0\xae\xb4\xe0\xaf\x8d" }}, // ta_IN
|
||||
Dict{{ QLocale::Tajik, 630, 369'931, "\xd0\xa2\xd0\xbe\xd2\xb7\xd0\xb8\xd0\xba\xd3\xa3" }}, // tg_TG
|
||||
Dict{{ QLocale::Turkish, 631, 4'301'099, "\x54\xc3\xbc\x72\x6b\xc3\xa7\x65" }}, // tr_TR
|
||||
Dict{{ QLocale::Ukrainian, 632, 445'711, "\xd0\xa3\xd0\xba\xd1\x80\xd0\xb0\xd1\x97\xd0\xbd\xd1\x81\xd1\x8c\xd0\xba\xd0\xb0" }}, // uk_UA
|
||||
Dict{{ QLocale::Vietnamese, 633, 12'949, "\x54\x69\xe1\xba\xbf\x6e\x67\x20\x56\x69\xe1\xbb\x87\x74" }}, // vi_VN
|
||||
// The Tajik code is 'tg_TG' in Chromium, but QT has only 'tg_TJ'.
|
||||
};
|
||||
|
||||
void EnsurePath() {
|
||||
@ -79,18 +80,28 @@ void EnsurePath() {
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
std::initializer_list<const Dict> Dictionaries() {
|
||||
return kDictionaries;
|
||||
}
|
||||
|
||||
bool IsGoodPartName(const QString &name) {
|
||||
return ranges::find_if(kDictExtensions, [&](const auto &ext) {
|
||||
return name.endsWith(ext);
|
||||
}) != end(kDictExtensions);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
std::vector<Dict> Dictionaries() {
|
||||
return kDictionaries | ranges::to_vector;
|
||||
}
|
||||
|
||||
int GetDownloadSize(int id) {
|
||||
return ranges::find(kDictionaries, id, &Spellchecker::Dict::id)->size;
|
||||
}
|
||||
|
||||
MTP::DedicatedLoader::Location GetDownloadLocation(int id) {
|
||||
const auto username = kCloudLocationUsername.utf16();
|
||||
const auto i = ranges::find(kDictionaries, id, &Spellchecker::Dict::id);
|
||||
return MTP::DedicatedLoader::Location{ username, i->postId };
|
||||
}
|
||||
|
||||
QString DictPathByLangId(int langId) {
|
||||
EnsurePath();
|
||||
return qsl("%1/%2")
|
||||
|
@ -16,14 +16,16 @@ namespace Spellchecker {
|
||||
struct Dict : public Storage::CloudBlob::Blob {
|
||||
};
|
||||
|
||||
int GetDownloadSize(int id);
|
||||
MTP::DedicatedLoader::Location GetDownloadLocation(int id);
|
||||
|
||||
[[nodiscard]] QString DictionariesPath();
|
||||
[[nodiscard]] QString DictPathByLangId(int langId);
|
||||
[[nodiscard]] bool IsGoodPartName(const QString &name);
|
||||
bool UnpackDictionary(const QString &path, int langId);
|
||||
[[nodiscard]] bool DictionaryExists(int langId);
|
||||
|
||||
bool WriteDefaultDictionary();
|
||||
std::initializer_list<const Dict> Dictionaries();
|
||||
std::vector<Dict> Dictionaries();
|
||||
|
||||
} // namespace Spellchecker
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user