File indexing completed on 2024-06-16 04:28:00
0001 /* 0002 SPDX-FileCopyrightText: 2019-2024 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"