File indexing completed on 2024-05-12 16:16:03

0001 /*
0002    SPDX-FileCopyrightText: 2019-2023 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "languagetoolupdatecombobox.h"
0008 #include "languagetoolcombobox.h"
0009 #include "languagetoolgetlistoflanguagejob.h"
0010 #include "languagetoollistoflanguagesparser.h"
0011 #include "languagetoolmanager.h"
0012 #include "textgrammarcheck_debug.h"
0013 
0014 #include <KLocalizedString>
0015 #include <KMessageBox>
0016 #include <QJsonArray>
0017 #include <QJsonDocument>
0018 using namespace TextGrammarCheck;
0019 LanguageToolUpdateComboBox::LanguageToolUpdateComboBox(QObject *parent)
0020     : QObject(parent)
0021 {
0022 }
0023 
0024 LanguageToolUpdateComboBox::~LanguageToolUpdateComboBox() = default;
0025 
0026 void LanguageToolUpdateComboBox::checkListOfLanguagesFromSpecificPath(const QString &url)
0027 {
0028     auto job = new LanguageToolGetListOfLanguageJob(this);
0029     job->setUrl(url);
0030     job->setNetworkAccessManager(LanguageToolManager::self()->networkAccessManager());
0031     connect(job, &LanguageToolGetListOfLanguageJob::finished, this, &LanguageToolUpdateComboBox::slotGetLanguagesFinished);
0032     connect(job, &LanguageToolGetListOfLanguageJob::error, this, &LanguageToolUpdateComboBox::slotGetLanguagesError);
0033     job->start();
0034 }
0035 
0036 void LanguageToolUpdateComboBox::firstRefreshListOfLanguages()
0037 {
0038     if (!mBListWasLoaded) {
0039         checkListOfLanguagesFromSpecificPath(LanguageToolManager::self()->languageToolLanguagesPath());
0040     } else {
0041         mLanguageToolCombobox->setLanguage(LanguageToolManager::self()->language());
0042     }
0043 }
0044 
0045 void LanguageToolUpdateComboBox::refreshListOfLanguages()
0046 {
0047     if (LanguageToolManager::self()->allowToGetListOfLanguages()) {
0048         checkListOfLanguagesFromSpecificPath(LanguageToolManager::self()->languageToolLanguagesPath());
0049     }
0050 }
0051 
0052 QWidget *LanguageToolUpdateComboBox::parentWidget() const
0053 {
0054     return mParentWidget;
0055 }
0056 
0057 void LanguageToolUpdateComboBox::setParentWidget(QWidget *parentWidget)
0058 {
0059     mParentWidget = parentWidget;
0060 }
0061 
0062 LanguageToolComboBox *LanguageToolUpdateComboBox::languageToolCombobox() const
0063 {
0064     return mLanguageToolCombobox;
0065 }
0066 
0067 void LanguageToolUpdateComboBox::setLanguageToolCombobox(LanguageToolComboBox *languageToolCombobox)
0068 {
0069     mLanguageToolCombobox = languageToolCombobox;
0070 }
0071 
0072 void LanguageToolUpdateComboBox::slotGetLanguagesError(const QString &error)
0073 {
0074     qCWarning(TEXTGRAMMARCHECK_LOG) << "Error during loading languages from server : " << error;
0075     KMessageBox::error(parentWidget(), i18n("An error occurred attempting to load the list of available languages:\n%1", error), i18n("List of Languages"));
0076 }
0077 
0078 void LanguageToolUpdateComboBox::slotGetLanguagesFinished(const QString &result)
0079 {
0080     const QJsonDocument doc = QJsonDocument::fromJson(result.toUtf8());
0081     const QJsonArray fields = doc.array();
0082     LanguageToolListOfLanguagesParser parser;
0083     mLanguageToolCombobox->fillComboBox(parser.parseResult(fields));
0084     mLanguageToolCombobox->setLanguage(LanguageToolManager::self()->language());
0085     mBListWasLoaded = true;
0086 }
0087 
0088 #include "moc_languagetoolupdatecombobox.cpp"