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"