KTextAddons

bergamotengineclient.cpp
1/*
2 SPDX-FileCopyrightText: 2023-2024 Laurent Montel <montel.org>
3
4 SPDX-License-Identifier: GPL-2.0-or-later
5*/
6
7#include "bergamotengineclient.h"
8#include "begamotenginedialog.h"
9#include "bergamotengineplugin.h"
10#include "bergamotengineutils.h"
11#include "translator/misc/translatorutil.h"
12#include <KConfigGroup>
13#include <KLocalizedString>
14#include <KSharedConfig>
15#include <QPointer>
16
17BergamotEngineClient::BergamotEngineClient(QObject *parent)
18 : TextTranslator::TranslatorEngineClient{parent}
19{
20 updateInstalledLanguage();
21}
22
23BergamotEngineClient::~BergamotEngineClient() = default;
24
25QString BergamotEngineClient::name() const
26{
27 return QStringLiteral("bergamot");
28}
29
30QString BergamotEngineClient::translatedName() const
31{
32 return i18n("Bergamot");
33}
34
35TextTranslator::TranslatorEnginePlugin *BergamotEngineClient::createTranslator()
36{
37 auto enginePlugin = new BergamotEnginePlugin();
38 connect(this, &BergamotEngineClient::configureChanged, enginePlugin, &BergamotEnginePlugin::slotConfigureChanged);
39 return enginePlugin;
40}
41
42QMap<TextTranslator::TranslatorUtil::Language, QString> BergamotEngineClient::supportedFromLanguages()
43{
44 return mFromLanguages;
45}
46
47QMap<TextTranslator::TranslatorUtil::Language, QString> BergamotEngineClient::supportedToLanguages()
48{
49 return mToLanguages;
50}
51
52bool BergamotEngineClient::hasConfigurationDialog() const
53{
54 return true;
55}
56
57bool BergamotEngineClient::showConfigureDialog(QWidget *parentWidget)
58{
59 bool settingsChanged = false;
60 KConfigGroup myGroup(KSharedConfig::openConfig(), BergamotEngineUtils::groupName());
61 QPointer<BegamotEngineDialog> dlg = new BegamotEngineDialog(parentWidget);
62 BergamotEngineUtils::SettingsInfo info;
63 info.loadSettingsInfo();
64 dlg->setSettingsInfo(info);
65 if (dlg->exec()) {
66 info = dlg->settingsInfo();
67 info.saveSettingsInfo();
68 updateInstalledLanguage();
69 Q_EMIT configureChanged();
70 settingsChanged = true;
71 }
72 delete dlg;
73 return settingsChanged;
74}
75
76void BergamotEngineClient::updateInstalledLanguage()
77{
78 mLanguageInstalled = BergamotEngineUtils::languageLocallyStored();
79 updateFromLanguageList();
80 updateToLanguageList();
81}
82
83void BergamotEngineClient::updateFromLanguageList()
84{
85 mFromLanguages.clear();
86 for (const auto &lang : std::as_const(mLanguageInstalled)) {
87 const TextTranslator::TranslatorUtil::Language langUtil = TextTranslator::TranslatorUtil::stringToLanguage(lang.from);
88 mFromLanguages.insert(langUtil, TextTranslator::TranslatorUtil::translatedLanguage(langUtil));
89 // qDebug() << " SSSSSSSSSSSSSSSSSS " << langUtil << " mFromLanguages " << mFromLanguages;
90 }
91}
92
93void BergamotEngineClient::updateToLanguageList()
94{
95 mToLanguages.clear();
96 for (const auto &lang : std::as_const(mLanguageInstalled)) {
97 // qDebug() << " lang.to " << lang.to << " mLanguageCode " << mLanguageCode;
98 if (lang.to == mLanguageCode || mLanguageCode.isEmpty()) {
99 const TextTranslator::TranslatorUtil::Language langUtil = TextTranslator::TranslatorUtil::stringToLanguage(lang.to);
100 // qDebug() << " lang.to " << lang.to;
101 mToLanguages.insert(langUtil, TextTranslator::TranslatorUtil::translatedLanguage(langUtil));
102 }
103 }
104}
105
106bool BergamotEngineClient::hasInvertSupport() const
107{
108 return false;
109}
110
111void BergamotEngineClient::generateToListFromCurrentToLanguage(const QString &languageCode)
112{
113 mLanguageCode = languageCode;
114 updateToLanguageList();
115}
116
117TextTranslator::TranslatorEngineClient::EngineType BergamotEngineClient::engineType() const
118{
119 return TextTranslator::TranslatorEngineClient::Locale;
120}
121
122bool BergamotEngineClient::isSupported(TextTranslator::TranslatorUtil::Language lang) const
123{
124 Q_UNUSED(lang);
125 return true;
126}
127
128void BergamotEngineClient::updateListLanguages()
129{
130 updateInstalledLanguage();
131}
132
133#include "moc_bergamotengineclient.cpp"
static KSharedConfig::Ptr openConfig(const QString &fileName=QString(), OpenFlags mode=FullConfig, QStandardPaths::StandardLocation type=QStandardPaths::GenericConfigLocation)
QString i18n(const char *text, const TYPE &arg...)
void clear()
iterator insert(const Key &key, const T &value)
Q_EMITQ_EMIT
QMetaObject::Connection connect(const QObject *sender, PointerToMemberFunction signal, Functor functor)
bool isEmpty() const const
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Fri Jul 26 2024 11:51:28 by doxygen 1.11.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.