File indexing completed on 2024-06-23 04:40:33

0001 /*
0002    SPDX-FileCopyrightText: 2022-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "translatorconfigurecombowidget.h"
0008 #include "translator/misc/translatorutil.h"
0009 #include "translator/translatorengineloader.h"
0010 #include <KConfigGroup>
0011 #include <KSharedConfig>
0012 #include <QComboBox>
0013 #include <QHBoxLayout>
0014 #include <QToolButton>
0015 
0016 using namespace TextTranslator;
0017 TranslatorConfigureComboWidget::TranslatorConfigureComboWidget(QWidget *parent)
0018     : QWidget{parent}
0019     , mEngineComboBox(new QComboBox(this))
0020     , mConfigureEngine(new QToolButton(this))
0021 {
0022     auto mainLayout = new QHBoxLayout(this);
0023     mainLayout->setObjectName(QStringLiteral("mainLayout"));
0024     mainLayout->setContentsMargins(QMargins{});
0025 
0026     mEngineComboBox->setObjectName(QStringLiteral("mEngineComboBox"));
0027     mainLayout->addWidget(mEngineComboBox);
0028 
0029     mConfigureEngine->setObjectName(QStringLiteral("mConfigureEngine"));
0030     mainLayout->addWidget(mConfigureEngine);
0031     mConfigureEngine->setEnabled(false); // Disable by default
0032     mConfigureEngine->setIcon(QIcon::fromTheme(QStringLiteral("settings-configure")));
0033     connect(mConfigureEngine, &QToolButton::clicked, this, &TranslatorConfigureComboWidget::slotConfigureEngine);
0034     connect(mEngineComboBox, &QComboBox::currentIndexChanged, this, &TranslatorConfigureComboWidget::slotEngineChanged);
0035 
0036     fillEngine();
0037 }
0038 
0039 TranslatorConfigureComboWidget::~TranslatorConfigureComboWidget() = default;
0040 
0041 void TranslatorConfigureComboWidget::slotConfigureEngine()
0042 {
0043     const QString engine = mEngineComboBox->currentData().toString();
0044     if (TextTranslator::TranslatorEngineLoader::self()->hasConfigurationDialog(engine)) {
0045         if (TextTranslator::TranslatorEngineLoader::self()->showConfigureDialog(engine, this)) {
0046             Q_EMIT configureChanged(engine);
0047         }
0048     }
0049 }
0050 
0051 void TranslatorConfigureComboWidget::fillEngine()
0052 {
0053     const QMap<QString, QString> map = TextTranslator::TranslatorEngineLoader::self()->translatorEngineInfos();
0054     QMapIterator<QString, QString> iMap(map);
0055     while (iMap.hasNext()) {
0056         iMap.next();
0057         mEngineComboBox->addItem(iMap.value(), iMap.key());
0058     }
0059 }
0060 
0061 void TranslatorConfigureComboWidget::slotEngineChanged(int index)
0062 {
0063     const QString engine = mEngineComboBox->itemData(index).toString();
0064     mConfigureEngine->setEnabled(TextTranslator::TranslatorEngineLoader::self()->hasConfigurationDialog(engine));
0065     Q_EMIT engineChanged(engine);
0066 }
0067 
0068 void TranslatorConfigureComboWidget::load()
0069 {
0070     KConfigGroup groupTranslate(KSharedConfig::openConfig(), TranslatorUtil::groupTranslateName());
0071     const QString engine = groupTranslate.readEntry(TranslatorUtil::engineTranslateName(), TranslatorUtil::defaultEngineName()); // Google by default
0072     const int index = mEngineComboBox->findData(engine);
0073     if (index != -1) {
0074         mEngineComboBox->setCurrentIndex(index);
0075     }
0076 }
0077 
0078 void TranslatorConfigureComboWidget::save()
0079 {
0080     const QString engine = mEngineComboBox->currentData().toString();
0081     KConfigGroup groupTranslate(KSharedConfig::openConfig(), TranslatorUtil::groupTranslateName());
0082     groupTranslate.writeEntry(TranslatorUtil::engineTranslateName(), engine);
0083 }
0084 
0085 #include "moc_translatorconfigurecombowidget.cpp"