From 295353332f535a6f4469c9cc7991d08426b5896d Mon Sep 17 00:00:00 2001 From: Gres Date: Sun, 22 Mar 2020 13:13:16 +0300 Subject: [PATCH] Move available translations getter to translator class --- src/settingseditor.cpp | 27 ++++++++++----------------- src/translate/translator.cpp | 28 ++++++++++++++++++++++++++++ src/translate/translator.h | 3 +++ 3 files changed, 41 insertions(+), 17 deletions(-) diff --git a/src/settingseditor.cpp b/src/settingseditor.cpp index 31257c5..59e2204 100644 --- a/src/settingseditor.cpp +++ b/src/settingseditor.cpp @@ -3,6 +3,7 @@ #include "manager.h" #include "runatsystemstart.h" #include "tesseract.h" +#include "translator.h" #include "ui_settingseditor.h" #include "updates.h" #include "widgetstate.h" @@ -224,17 +225,12 @@ void SettingsEditor::updateTranslators() { ui->translatorList->clear(); - const auto path = ui->translatorsPath->text(); - if (path.isEmpty()) + auto names = Translator::availableTranslators(ui->translatorsPath->text()); + if (names.isEmpty()) return; - QDir dir(path); - if (!dir.exists()) - return; - - auto files = dir.entryList({"*.js"}, QDir::Files); - std::sort(files.begin(), files.end()); - ui->translatorList->addItems(files); + std::sort(names.begin(), names.end()); + ui->translatorList->addItems(names); for (auto i = 0, end = ui->translatorList->count(); i < end; ++i) { auto item = ui->translatorList->item(i); @@ -246,15 +242,12 @@ void SettingsEditor::updateTranslators() void SettingsEditor::updateTranslationLanguages() { - LanguageIds names; - LanguageCodes languages; - - for (const auto &bundle : languages.all()) { - if (!bundle.second.iso639_1.isEmpty()) - names.append(QObject::tr(bundle.second.name)); - } - ui->translateLangCombo->clear(); + + auto names = Translator::availableLanguageNames(); + if (names.isEmpty()) + return; + std::sort(names.begin(), names.end()); ui->translateLangCombo->addItems(names); } diff --git a/src/translate/translator.cpp b/src/translate/translator.cpp index 416cda0..2c7f28a 100644 --- a/src/translate/translator.cpp +++ b/src/translate/translator.cpp @@ -1,5 +1,6 @@ #include "translator.h" #include "debug.h" +#include "languagecodes.h" #include "manager.h" #include "settings.h" #include "task.h" @@ -8,6 +9,7 @@ #include #include +#include #include #include #include @@ -274,6 +276,32 @@ void Translator::finish(const TaskPtr &task) processQueue(); } +QStringList Translator::availableTranslators(const QString &path) +{ + if (path.isEmpty()) + return {}; + + QDir dir(path); + if (!dir.exists()) + return {}; + + const auto names = dir.entryList({"*.js"}, QDir::Files); + return names; +} + +QStringList Translator::availableLanguageNames() +{ + QStringList names; + LanguageCodes languages; + + for (const auto &bundle : languages.all()) { + if (!bundle.second.iso639_1.isEmpty()) + names.append(QObject::tr(bundle.second.name)); + } + + return names; +} + void Translator::timerEvent(QTimerEvent * /*event*/) { processQueue(); diff --git a/src/translate/translator.h b/src/translate/translator.h index bb6eb82..c1fda13 100644 --- a/src/translate/translator.h +++ b/src/translate/translator.h @@ -21,6 +21,9 @@ public: void updateSettings(); void finish(const TaskPtr &task); + static QStringList availableTranslators(const QString &path); + static QStringList availableLanguageNames(); + protected: void timerEvent(QTimerEvent *event) override; void closeEvent(QCloseEvent *event) override;