Libksieve

sievescriptparsingerrordialog.cpp
1 /*
2  Copyright (C) 2013-2020 Laurent Montel <[email protected]>
3 
4  This library is free software; you can redistribute it and/or
5  modify it under the terms of the GNU Library General Public
6  License as published by the Free Software Foundation; either
7  version 2 of the License, or (at your option) any later version.
8 
9  This library is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  Library General Public License for more details.
13 
14  You should have received a copy of the GNU Library General Public License
15  along with this library; see the file COPYING.LIB. If not, write to
16  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17  Boston, MA 02110-1301, USA.
18 */
19 
20 #include "sievescriptparsingerrordialog.h"
21 #include <PimCommon/PimUtil>
22 #include <KPIMTextEdit/RichTextEditorWidget>
23 
24 #include <KLocalizedString>
25 #include <KSharedConfig>
26 
27 #include <errno.h>
28 #include <KConfigGroup>
29 #include <QDialogButtonBox>
30 #include <QPushButton>
31 #include <QVBoxLayout>
32 using namespace KSieveUi;
33 SieveScriptParsingErrorDialog::SieveScriptParsingErrorDialog(QWidget *parent)
34  : QDialog(parent)
35 {
36  setWindowTitle(i18nc("@title:window", "Sieve Parsing Error"));
37  QVBoxLayout *mainLayout = new QVBoxLayout(this);
38 
39  mTextEdit = new KPIMTextEdit::RichTextEditorWidget(this);
40  mTextEdit->setReadOnly(true);
41 
42  QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Close, this);
43  QPushButton *user1Button = new QPushButton(this);
44  buttonBox->addButton(user1Button, QDialogButtonBox::ActionRole);
45  connect(buttonBox, &QDialogButtonBox::rejected, this, &SieveScriptParsingErrorDialog::reject);
46  user1Button->setText(i18n("Save As..."));
47  readConfig();
48  connect(user1Button, &QPushButton::clicked, this, &SieveScriptParsingErrorDialog::slotSaveAs);
49  mainLayout->addWidget(mTextEdit);
50  mainLayout->addWidget(buttonBox);
51 }
52 
53 SieveScriptParsingErrorDialog::~SieveScriptParsingErrorDialog()
54 {
55  writeConfig();
56 }
57 
58 void SieveScriptParsingErrorDialog::setError(QString script, QString error)
59 {
60  QString str;
61  str = QLatin1String("<b>") + i18n("Sieve script:") + QLatin1String("</b><br>");
62  str += script.replace(QLatin1Char('\n'), QStringLiteral("<br>")) + QLatin1String("<br><br>");
63  str += QLatin1String("<b>") + i18n("Errors reported:") + QLatin1String("</b><br>");
64  str += error.replace(QLatin1Char('\n'), QStringLiteral("<br>")) + QLatin1String("<br>");
65  mTextEdit->setHtml(str);
66 }
67 
68 void SieveScriptParsingErrorDialog::readConfig()
69 {
70  KConfigGroup group(KSharedConfig::openConfig(), "SieveScriptParsingErrorDialog");
71  const QSize sizeDialog = group.readEntry("Size", QSize(800, 600));
72  if (sizeDialog.isValid()) {
73  resize(sizeDialog);
74  }
75 }
76 
77 void SieveScriptParsingErrorDialog::writeConfig()
78 {
79  KConfigGroup group(KSharedConfig::openConfig(), "SieveScriptParsingErrorDialog");
80  group.writeEntry("Size", size());
81 }
82 
83 void SieveScriptParsingErrorDialog::slotSaveAs()
84 {
85  const QString filter = i18n("All Files (*)");
86  PimCommon::Util::saveTextAs(mTextEdit->toPlainText(), filter, this, QUrl(),
87  i18nc("@title:window", "Save Log To File"));
88 }
void resize(int w, int h)
bool isValid() const const
void addButton(QAbstractButton *button, QDialogButtonBox::ButtonRole role)
QSize size() const const
void addWidget(QWidget *widget, int stretch, Qt::Alignment alignment)
QString i18nc(const char *context, const char *text, const TYPE &arg...)
void clicked(bool checked)
QFuture< void > filter(Sequence &sequence, KeepFunctor filterFunction)
static KSharedConfig::Ptr openConfig(const QString &fileName=QString(), OpenFlags mode=FullConfig, QStandardPaths::StandardLocation type=QStandardPaths::GenericConfigLocation)
QString i18n(const char *text, const TYPE &arg...)
QString & replace(int position, int n, QChar after)
void readConfig()
void setWindowTitle(const QString &)
void setText(const QString &text)
QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Sun May 31 2020 22:46:48 by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.