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

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 "languagetoolconfigwidget.h"
0008 #include "languagetoolcombobox.h"
0009 #include "languagetoolmanager.h"
0010 #include "languagetoolupdatecombobox.h"
0011 // #include "textgrammarcheck_debug.h"
0012 #include <KLocalizedString>
0013 
0014 #include <QCheckBox>
0015 #include <QLabel>
0016 #include <QLineEdit>
0017 #include <QToolButton>
0018 #include <QVBoxLayout>
0019 using namespace TextGrammarCheck;
0020 LanguageToolConfigWidget::LanguageToolConfigWidget(QWidget *parent)
0021     : QWidget(parent)
0022     , mUseLocalInstance(new QCheckBox(i18n("Use Local Instance"), this))
0023     , mInstancePath(new QLineEdit(this))
0024     , mInstancePathLabel(new QLabel(i18n("Instance Path:"), this))
0025     , mLanguageToolCombobox(new LanguageToolComboBox(this))
0026     , mLanguageToolUpdateCombobox(new LanguageToolUpdateComboBox(this))
0027 {
0028     auto mainLayout = new QVBoxLayout(this);
0029     mainLayout->setObjectName(QStringLiteral("mainlayout"));
0030     mainLayout->setContentsMargins({});
0031 
0032     mUseLocalInstance->setObjectName(QStringLiteral("uselocalinstance"));
0033     mainLayout->addWidget(mUseLocalInstance);
0034 
0035     auto instanceLayout = new QHBoxLayout;
0036     instanceLayout->setObjectName(QStringLiteral("instancelayout"));
0037     instanceLayout->setContentsMargins({});
0038     mInstancePathLabel->setObjectName(QStringLiteral("instancepath"));
0039     mInstancePathLabel->setEnabled(false);
0040     instanceLayout->addWidget(mInstancePathLabel);
0041 
0042     mInstancePath->setObjectName(QStringLiteral("instancepath"));
0043     mInstancePath->setEnabled(false);
0044     mInstancePath->setClearButtonEnabled(true);
0045     instanceLayout->addWidget(mInstancePath);
0046     mainLayout->addLayout(instanceLayout);
0047 
0048     connect(mUseLocalInstance, &QCheckBox::clicked, this, &LanguageToolConfigWidget::updateWidgets);
0049 
0050     auto languageLayout = new QHBoxLayout;
0051     languageLayout->setObjectName(QStringLiteral("languagelayout"));
0052     auto languageLabel = new QLabel(i18n("Language:"), this);
0053     languageLabel->setObjectName(QStringLiteral("languageLabel"));
0054     languageLayout->addWidget(languageLabel);
0055 
0056     mLanguageToolCombobox->setObjectName(QStringLiteral("languagecombobox"));
0057     languageLayout->addWidget(mLanguageToolCombobox);
0058     mLanguageToolUpdateCombobox->setLanguageToolCombobox(mLanguageToolCombobox);
0059     mLanguageToolUpdateCombobox->setParentWidget(this);
0060 
0061     auto refreshButton = new QToolButton(this);
0062     refreshButton->setObjectName(QStringLiteral("refreshbutton"));
0063     refreshButton->setIcon(QIcon::fromTheme(QStringLiteral("view-refresh")));
0064     refreshButton->setToolTip(i18n("Refresh"));
0065     languageLayout->addWidget(refreshButton);
0066     connect(refreshButton, &QToolButton::clicked, this, [this]() {
0067         if (LanguageToolManager::self()->allowToGetListOfLanguages()) {
0068             mLanguageToolUpdateCombobox->checkListOfLanguagesFromSpecificPath(LanguageToolManager::convertToLanguagePath(mInstancePath->text()));
0069         }
0070     });
0071 
0072     mainLayout->addLayout(languageLayout);
0073 
0074     mainLayout->addStretch(1);
0075     mLanguageToolUpdateCombobox->refreshListOfLanguages();
0076     loadSettings();
0077     updateWidgets(mUseLocalInstance->isChecked());
0078     connect(this, &LanguageToolConfigWidget::resetValue, this, &LanguageToolConfigWidget::slotResetValue);
0079 }
0080 
0081 LanguageToolConfigWidget::~LanguageToolConfigWidget()
0082 {
0083     saveSettings();
0084 }
0085 
0086 void LanguageToolConfigWidget::slotResetValue()
0087 {
0088     mUseLocalInstance->setChecked(false);
0089     mInstancePath->setText(QStringLiteral("https://api.languagetoolplus.com/v2"));
0090     updateWidgets(false);
0091 }
0092 
0093 void LanguageToolConfigWidget::updateWidgets(bool enabled)
0094 {
0095     mInstancePathLabel->setEnabled(enabled);
0096     mInstancePath->setEnabled(enabled);
0097 }
0098 
0099 void LanguageToolConfigWidget::loadSettings()
0100 {
0101     mUseLocalInstance->setChecked(LanguageToolManager::self()->useLocalInstance());
0102     mInstancePath->setText(LanguageToolManager::self()->languageToolPath());
0103     mLanguageToolCombobox->setLanguage(LanguageToolManager::self()->language());
0104 }
0105 
0106 void LanguageToolConfigWidget::saveSettings()
0107 {
0108     LanguageToolManager::self()->setUseLocalInstance(mUseLocalInstance->isChecked());
0109     LanguageToolManager::self()->setLanguageToolPath(mInstancePath->text());
0110     LanguageToolManager::self()->setLanguage(mLanguageToolCombobox->language());
0111     LanguageToolManager::self()->saveSettings();
0112 }
0113 
0114 #include "moc_languagetoolconfigwidget.cpp"