MCPcopy Create free account
hub / github.com/FreesmTeam/FreesmLauncher / reloadLocalFiles

Method reloadLocalFiles

launcher/translations/TranslationsModel.cpp:268–344  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

266} // namespace
267
268void TranslationsModel::reloadLocalFiles()
269{
270 QMap<QString, Language> languages = { { defaultLangCode, Language(defaultLangCode) } };
271
272 readIndex(d->m_dir.absoluteFilePath("index_v2.json"), languages);
273 auto entries = d->m_dir.entryInfoList({ "mmc_*.qm", "*.po" }, QDir::Files | QDir::NoDotAndDotDot);
274 for (auto& entry : entries) {
275 auto completeSuffix = entry.completeSuffix();
276 QString langCode;
277 FileType fileType = FileType::NONE;
278 if (completeSuffix == "qm") {
279 langCode = entry.baseName().remove(0, 4);
280 fileType = FileType::QM;
281 } else if (completeSuffix == "po") {
282 langCode = entry.baseName();
283 fileType = FileType::PO;
284 } else {
285 continue;
286 }
287
288 auto langIter = languages.find(langCode);
289 if (langIter != languages.end()) {
290 auto& language = *langIter;
291 if (int(fileType) > int(language.localFileType)) {
292 language.localFileType = fileType;
293 }
294 } else {
295 if (fileType == FileType::PO) {
296 Language localFound(langCode);
297 localFound.localFileType = FileType::PO;
298 languages.insert(langCode, localFound);
299 }
300 }
301 }
302
303 // changed and removed languages
304 for (auto iter = d->m_languages.begin(); iter != d->m_languages.end();) {
305 auto& language = *iter;
306 auto row = iter - d->m_languages.begin();
307
308 auto updatedLanguageIter = languages.find(language.key);
309 if (updatedLanguageIter != languages.end()) {
310 if (language.isIdenticalTo(*updatedLanguageIter)) {
311 languages.remove(language.key);
312 } else {
313 language.apply(*updatedLanguageIter);
314 emit dataChanged(index(row), index(row));
315 languages.remove(language.key);
316 }
317 iter++;
318 } else {
319 beginRemoveRows(QModelIndex(), row, row);
320 iter = d->m_languages.erase(iter);
321 endRemoveRows();
322 }
323 }
324 // added languages
325 if (languages.isEmpty()) {

Callers

nothing calls this directly

Calls 12

readIndexFunction · 0.85
QModelIndexClass · 0.85
insertMethod · 0.80
isIdenticalToMethod · 0.80
appendMethod · 0.80
languageNameMethod · 0.80
LanguageClass · 0.70
removeMethod · 0.45
findMethod · 0.45
applyMethod · 0.45
isEmptyMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected