7#include "translatorconfigurelistswidget.h"
8#include "translator/misc/translatorutil.h"
9#include "translator/translatorengineloader.h"
10#include "translatorconfigurecombowidget.h"
11#include "translatorconfigurelanguagelistwidget.h"
12#include "translatorconfigurelistswidget.h"
13#include <KConfigGroup>
14#include <KLocalizedString>
15#include <KSharedConfig>
18using namespace TextTranslator;
19class Q_DECL_HIDDEN TextTranslator::TranslatorConfigureListsWidget::TranslatorConfigureListsWidgetPrivate
22 TranslatorConfigureListsWidgetPrivate(TranslatorConfigureListsWidget *parent)
23 : mEngineConfigureComboWidget(new TranslatorConfigureComboWidget(parent))
24 , mFromLanguageWidget(new TranslatorConfigureLanguageListWidget(
i18n(
"From:"), parent))
25 , mToLanguageWidget(new TranslatorConfigureLanguageListWidget(
i18n(
"To:"), parent))
28 bool mLanguageListLoaded =
false;
29 TranslatorConfigureComboWidget *
const mEngineConfigureComboWidget;
30 TextTranslator::TranslatorConfigureLanguageListWidget *
const mFromLanguageWidget;
31 TextTranslator::TranslatorConfigureLanguageListWidget *
const mToLanguageWidget;
34TranslatorConfigureListsWidget::TranslatorConfigureListsWidget(
QWidget *parent)
36 , d(new TranslatorConfigureListsWidgetPrivate(this))
39 mainLayout->setObjectName(QStringLiteral(
"mainLayout"));
40 d->mEngineConfigureComboWidget->setObjectName(QStringLiteral(
"mEngineConfigureComboWidget"));
41 connect(d->mEngineConfigureComboWidget,
42 &TranslatorConfigureComboWidget::configureChanged,
44 &TranslatorConfigureListsWidget::slotEngineSettingsChanged);
48 hboxLayout->setContentsMargins({});
49 mainLayout->addLayout(hboxLayout);
52 label->setObjectName(QStringLiteral(
"label"));
54 hboxLayout->addWidget(label);
55 hboxLayout->addWidget(d->mEngineConfigureComboWidget);
56 hboxLayout->addStretch(0);
59 hLanguageListboxLayout->
setObjectName(QStringLiteral(
"hLanguageListboxLayout"));
60 hLanguageListboxLayout->setContentsMargins({});
61 mainLayout->addLayout(hLanguageListboxLayout);
63 d->mFromLanguageWidget->setObjectName(QStringLiteral(
"mFromLanguageWidget"));
64 d->mToLanguageWidget->setObjectName(QStringLiteral(
"mToLanguageWidget"));
65 hLanguageListboxLayout->addWidget(d->mFromLanguageWidget);
66 hLanguageListboxLayout->addWidget(d->mToLanguageWidget);
68 connect(d->mEngineConfigureComboWidget, &TranslatorConfigureComboWidget::engineChanged,
this, &TranslatorConfigureListsWidget::slotEngineChanged);
71TranslatorConfigureListsWidget::~TranslatorConfigureListsWidget() =
default;
73void TranslatorConfigureListsWidget::save()
76 groupTranslate.writeEntry(QStringLiteral(
"From"), d->mFromLanguageWidget->selectedLanguages());
77 groupTranslate.writeEntry(QStringLiteral(
"To"), d->mToLanguageWidget->selectedLanguages());
78 d->mEngineConfigureComboWidget->save();
81void TranslatorConfigureListsWidget::load()
83 d->mEngineConfigureComboWidget->load();
86void TranslatorConfigureListsWidget::slotEngineSettingsChanged(
const QString &engineName)
88 slotEngineChanged(engineName);
91void TranslatorConfigureListsWidget::loadLanguagesList()
94 const auto fromLanguages = groupTranslate.readEntry(QStringLiteral(
"From"), QStringList());
95 const auto toLanguages = groupTranslate.readEntry(QStringLiteral(
"To"), QStringList());
96 d->mFromLanguageWidget->setSelectedLanguages(fromLanguages);
97 d->mToLanguageWidget->setSelectedLanguages(toLanguages);
100void TranslatorConfigureListsWidget::fillFromToLanguages(
const QMap<TextTranslator::TranslatorUtil::Language, QString> &listFromLanguage,
101 const QMap<TextTranslator::TranslatorUtil::Language, QString> &listToLanguage)
103 QMapIterator<TranslatorUtil::Language, QString> i(listFromLanguage);
104 TranslatorUtil translatorUtil;
105 while (i.hasNext()) {
107 const QString languageCode = TranslatorUtil::languageCode(i.key());
108 d->mFromLanguageWidget->addItem(i.value(), languageCode);
111 QMapIterator<TranslatorUtil::Language, QString> toLangIt(listToLanguage);
112 while (toLangIt.hasNext()) {
114 const QString languageCode = TranslatorUtil::languageCode(toLangIt.key());
115 d->mToLanguageWidget->addItem(toLangIt.value(), languageCode);
119void TranslatorConfigureListsWidget::fillLanguages(
const QMap<TextTranslator::TranslatorUtil::Language, QString> &listLanguage)
121 QMapIterator<TranslatorUtil::Language, QString> i(listLanguage);
122 TranslatorUtil translatorUtil;
123 while (i.hasNext()) {
125 const QString languageCode = TranslatorUtil::languageCode(i.key());
126 d->mFromLanguageWidget->addItem(i.value(), languageCode);
127 if ((i.key() != TranslatorUtil::automatic)) {
128 d->mToLanguageWidget->addItem(i.value(), languageCode);
133void TranslatorConfigureListsWidget::slotEngineChanged(
const QString &engine)
135 const QMap<TextTranslator::TranslatorUtil::Language, QString> listFromLanguage =
136 TextTranslator::TranslatorEngineLoader::self()->supportedFromLanguages(engine);
137 const QMap<TextTranslator::TranslatorUtil::Language, QString> listToLanguage = TextTranslator::TranslatorEngineLoader::self()->supportedToLanguages(engine);
139 if (!d->mLanguageListLoaded) {
140 fillLanguages(listFromLanguage);
142 d->mLanguageListLoaded =
true;
144 const QStringList fromLanguages = d->mFromLanguageWidget->selectedLanguages();
145 const QStringList toLanguages = d->mToLanguageWidget->selectedLanguages();
147 d->mFromLanguageWidget->clear();
148 d->mToLanguageWidget->clear();
149 if (listFromLanguage != listToLanguage) {
150 fillFromToLanguages(listFromLanguage, listToLanguage);
152 fillLanguages(listFromLanguage);
156 d->mFromLanguageWidget->setSelectedLanguages(fromLanguages);
157 d->mToLanguageWidget->setSelectedLanguages(toLanguages);
161#include "moc_translatorconfigurelistswidget.cpp"
static KSharedConfig::Ptr openConfig(const QString &fileName=QString(), OpenFlags mode=FullConfig, QStandardPaths::StandardLocation type=QStandardPaths::GenericConfigLocation)
QString i18nc(const char *context, const char *text, const TYPE &arg...)
QString i18n(const char *text, const TYPE &arg...)
QString label(StandardShortcut id)
void setObjectName(QAnyStringView name)
QFuture< ArgsType< Signal > > connect(Sender *sender, Signal signal)