Move available translations getter to translator class

This commit is contained in:
Gres 2020-03-22 13:13:16 +03:00
parent 10f5e5e387
commit 295353332f
3 changed files with 41 additions and 17 deletions

View File

@ -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);
}

View File

@ -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 <QBoxLayout>
#include <QCloseEvent>
#include <QDir>
#include <QLabel>
#include <QLineEdit>
#include <QSplitter>
@ -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();

View File

@ -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;