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"