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)