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"