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

0001 /*
0002   SPDX-FileCopyrightText: 2022-2024 Laurent Montel <montel@kde.org>
0003 
0004   SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "lingvaengineclient.h"
0008 #include "lingvaenginedialog.h"
0009 #include "lingvaengineplugin.h"
0010 #include "lingvaengineutil.h"
0011 #include "translator/misc/translatorutil.h"
0012 #include <KConfigGroup>
0013 #include <KLocalizedString>
0014 #include <KSharedConfig>
0015 #include <QPointer>
0016 
0017 LingvaEngineClient::LingvaEngineClient(QObject *parent)
0018     : TextTranslator::TranslatorEngineClient{parent}
0019 {
0020 }
0021 
0022 LingvaEngineClient::~LingvaEngineClient() = default;
0023 
0024 QString LingvaEngineClient::name() const
0025 {
0026     return QStringLiteral("lingva");
0027 }
0028 
0029 QString LingvaEngineClient::translatedName() const
0030 {
0031     return i18n("Lingva");
0032 }
0033 
0034 TextTranslator::TranslatorEnginePlugin *LingvaEngineClient::createTranslator()
0035 {
0036     auto enginePlugin = new LingvaEnginePlugin();
0037     connect(this, &LingvaEngineClient::configureChanged, enginePlugin, &LingvaEnginePlugin::slotConfigureChanged);
0038     return enginePlugin;
0039 }
0040 
0041 QMap<TextTranslator::TranslatorUtil::Language, QString> LingvaEngineClient::supportedFromLanguages()
0042 {
0043     if (mFromLanguages.isEmpty()) {
0044         mFromLanguages = fillLanguages();
0045     }
0046     return mFromLanguages;
0047 }
0048 
0049 QMap<TextTranslator::TranslatorUtil::Language, QString> LingvaEngineClient::supportedToLanguages()
0050 {
0051     return supportedFromLanguages();
0052 }
0053 
0054 bool LingvaEngineClient::hasConfigurationDialog() const
0055 {
0056     return true;
0057 }
0058 
0059 bool LingvaEngineClient::showConfigureDialog(QWidget *parentWidget)
0060 {
0061     bool settingsChanged = false;
0062     QPointer<LingvaEngineDialog> dlg = new LingvaEngineDialog(parentWidget);
0063     KConfigGroup myGroup(KSharedConfig::openConfig(), LingvaEngineUtil::groupName());
0064     QString lingvaUrl = myGroup.readEntry(LingvaEngineUtil::serverUrlKey(), LingvaEngineUtil::defaultServerUrl());
0065     if (lingvaUrl.isEmpty()) {
0066         lingvaUrl = LingvaEngineUtil::defaultServerUrl();
0067     }
0068     dlg->setServerUrl(lingvaUrl);
0069     if (dlg->exec()) {
0070         const QString serverUrl = dlg->serverUrl();
0071         myGroup.writeEntry(LingvaEngineUtil::serverUrlKey(), serverUrl);
0072         myGroup.sync();
0073         Q_EMIT configureChanged();
0074         settingsChanged = true;
0075     }
0076     delete dlg;
0077     return settingsChanged;
0078 }
0079 
0080 TextTranslator::TranslatorEngineClient::EngineType LingvaEngineClient::engineType() const
0081 {
0082     return TextTranslator::TranslatorEngineClient::Network;
0083 }
0084 
0085 bool LingvaEngineClient::isSupported(TextTranslator::TranslatorUtil::Language lang) const
0086 {
0087     switch (lang) {
0088     case TextTranslator::TranslatorUtil::ka:
0089     case TextTranslator::TranslatorUtil::tl:
0090         return false;
0091     default:
0092         break;
0093     }
0094     return true;
0095 }
0096 
0097 #include "moc_lingvaengineclient.cpp"