File indexing completed on 2024-06-16 04:27:50

0001 /*
0002   SPDX-FileCopyrightText: 2013-2024 Laurent Montel <montel@kde.org>
0003 
0004   SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "autocorrectionwidget_gui.h"
0008 #include "autocorrectionlineedit.h"
0009 #include "autocorrectiontextedit.h"
0010 #include "autocorrectionwidget.h"
0011 #include "settings/textautocorrectionsettings.h"
0012 #include <TextAutoCorrectionCore/AutoCorrection>
0013 
0014 #include <QAction>
0015 #include <QApplication>
0016 #include <QCommandLineParser>
0017 #include <QDialogButtonBox>
0018 #include <QPointer>
0019 #include <QPushButton>
0020 #include <QToolBar>
0021 #include <QVBoxLayout>
0022 
0023 ConfigureTestDialog::ConfigureTestDialog(TextAutoCorrectionCore::AutoCorrection *autoCorrection, QWidget *parent)
0024     : QDialog(parent)
0025 {
0026     setWindowTitle(QStringLiteral("Configure Autocorrection"));
0027     auto mainLayout = new QVBoxLayout(this);
0028     auto buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this);
0029     QPushButton *okButton = buttonBox->button(QDialogButtonBox::Ok);
0030     okButton->setDefault(true);
0031     okButton->setShortcut(Qt::CTRL | Qt::Key_Return);
0032     connect(buttonBox, &QDialogButtonBox::accepted, this, &ConfigureTestDialog::accept);
0033     connect(buttonBox, &QDialogButtonBox::rejected, this, &ConfigureTestDialog::reject);
0034 
0035     buttonBox->button(QDialogButtonBox::Ok)->setDefault(true);
0036 
0037     mWidget = new TextAutoCorrectionWidgets::AutoCorrectionWidget(this);
0038     mainLayout->addWidget(mWidget);
0039     mainLayout->addWidget(buttonBox);
0040 
0041     mWidget->setAutoCorrection(autoCorrection);
0042     mWidget->loadConfig();
0043     connect(okButton, &QPushButton::clicked, this, &ConfigureTestDialog::slotSaveSettings);
0044 }
0045 
0046 ConfigureTestDialog::~ConfigureTestDialog() = default;
0047 
0048 void ConfigureTestDialog::slotSaveSettings()
0049 {
0050     mWidget->writeConfig();
0051 }
0052 
0053 AutocorrectionTestWidget::AutocorrectionTestWidget(QWidget *parent)
0054     : QWidget(parent)
0055     , mConfig(KSharedConfig::openConfig(QStringLiteral("autocorrectionguirc")))
0056 {
0057     TextAutoCorrectionCore::TextAutoCorrectionSettings::self()->setSharedConfig(mConfig);
0058     TextAutoCorrectionCore::TextAutoCorrectionSettings::self()->load();
0059 
0060     mAutoCorrection = new TextAutoCorrectionCore::AutoCorrection;
0061     auto lay = new QVBoxLayout(this);
0062     auto bar = new QToolBar;
0063     lay->addWidget(bar);
0064     bar->addAction(QStringLiteral("Configure..."), this, &AutocorrectionTestWidget::slotConfigure);
0065     auto richText = new QAction(QStringLiteral("HTML mode"), this);
0066     richText->setCheckable(true);
0067     connect(richText, &QAction::toggled, this, &AutocorrectionTestWidget::slotChangeMode);
0068     bar->addAction(richText);
0069 
0070     mSubject = new TextAutoCorrectionWidgets::AutoCorrectionLineEdit(this);
0071     mSubject->setAutocorrection(mAutoCorrection);
0072     lay->addWidget(mSubject);
0073 
0074     mEdit = new TextAutoCorrectionWidgets::AutoCorrectionTextEdit(this);
0075     mEdit->setAutocorrection(mAutoCorrection);
0076     lay->addWidget(mEdit);
0077 }
0078 
0079 AutocorrectionTestWidget::~AutocorrectionTestWidget()
0080 {
0081     mAutoCorrection->writeConfig();
0082     delete mAutoCorrection;
0083 }
0084 
0085 void AutocorrectionTestWidget::slotChangeMode(bool mode)
0086 {
0087     mEdit->setAcceptRichText(mode);
0088 }
0089 
0090 void AutocorrectionTestWidget::slotConfigure()
0091 {
0092     QPointer<ConfigureTestDialog> dlg = new ConfigureTestDialog(mAutoCorrection, this);
0093     if (dlg->exec()) {
0094         TextAutoCorrectionCore::TextAutoCorrectionSettings::self()->save();
0095     }
0096     delete dlg;
0097 }
0098 
0099 int main(int argc, char **argv)
0100 {
0101     QApplication app(argc, argv);
0102     QStandardPaths::setTestModeEnabled(true);
0103     QCommandLineParser parser;
0104     parser.addVersionOption();
0105     parser.addHelpOption();
0106     parser.process(app);
0107 
0108     auto w = new AutocorrectionTestWidget();
0109     w->resize(800, 600);
0110 
0111     w->show();
0112     const int ret = app.exec();
0113     delete w;
0114     return ret;
0115 }
0116 
0117 #include "moc_autocorrectionwidget_gui.cpp"