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