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"