[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kdepim] libksieve/ksieveui/autocreatescripts: Allow to save report
From:       Montel Laurent <montel () kde ! org>
Date:       2013-08-07 7:37:37
Message-ID: E1V6yJN-0008Ly-Sq () scm ! kde ! org
[Download RAW message or body]

Git commit 87604e9839649b43ffef1a7d2d6b1380996424a5 by Montel Laurent.
Committed on 07/08/2013 at 07:37.
Pushed by mlaurent into branch 'master'.

Allow to save report

M  +45   -1    libksieve/ksieveui/autocreatescripts/sievescriptparsingerrordialog.cpp
M  +4    -0    libksieve/ksieveui/autocreatescripts/sievescriptparsingerrordialog.h

http://commits.kde.org/kdepim/87604e9839649b43ffef1a7d2d6b1380996424a5

diff --git a/libksieve/ksieveui/autocreatescripts/sievescriptparsingerrordialog.cpp \
b/libksieve/ksieveui/autocreatescripts/sievescriptparsingerrordialog.cpp index \
                c788576..565aff4 100644
--- a/libksieve/ksieveui/autocreatescripts/sievescriptparsingerrordialog.cpp
+++ b/libksieve/ksieveui/autocreatescripts/sievescriptparsingerrordialog.cpp
@@ -18,19 +18,28 @@
 #include "sievescriptparsingerrordialog.h"
 
 #include <KTextEdit>
+#include <KFileDialog>
 #include <KLocale>
+#include <KMessageBox>
+
+#include <QPointer>
+#include <QTextStream>
+
+#include <errno.h>
 
 SieveScriptParsingErrorDialog::SieveScriptParsingErrorDialog(QWidget *parent)
     : KDialog(parent)
 {
     setCaption( i18n( "Sieve Parsing Error" ) );
-    setButtons( Close );
+    setButtons( Close | User1 );
+    setButtonText(User1, i18n("Save As..."));
 
     mTextEdit = new KTextEdit( this );
     mTextEdit->setReadOnly( true );
     mTextEdit->setAcceptRichText(true);
     setMainWidget( mTextEdit );
     readConfig();
+    connect(this, SIGNAL(user1Clicked()), this, SLOT(slotSaveAs()));
 }
 
 SieveScriptParsingErrorDialog::~SieveScriptParsingErrorDialog()
@@ -65,6 +74,41 @@ void SieveScriptParsingErrorDialog::writeConfig()
     group.writeEntry( "Size", size() );
 }
 
+void SieveScriptParsingErrorDialog::slotSaveAs()
+{
+    KUrl url;
+    const QString filter = i18n( "all files (*)" );
+    QPointer<KFileDialog> fdlg( new KFileDialog( url, filter, this) );
+
+    fdlg->setMode( KFile::File );
+    fdlg->setOperationMode( KFileDialog::Saving );
+    fdlg->setConfirmOverwrite(true);
+    if ( fdlg->exec() == QDialog::Accepted && fdlg ) {
+        const QString fileName = fdlg->selectedFile();
+        if ( !saveToFile( fileName ) ) {
+            KMessageBox::error( this,
+                                i18n( "Could not write the file %1:\n"
+                                      "\"%2\" is the detailed error description.",
+                                      fileName,
+                                      QString::fromLocal8Bit( strerror( errno ) ) ),
+                                i18n( "Sieve Editor Error" ) );
+        }
+    }
+    delete fdlg;
+}
+
+bool SieveScriptParsingErrorDialog::saveToFile( const QString &filename )
+{
+    QFile file( filename );
+    if ( !file.open( QIODevice::WriteOnly|QIODevice::Text ) )
+        return false;
+    QTextStream out(&file);
+    out.setCodec("UTF-8");
+    out << mTextEdit->toPlainText();
+    return true;
+}
+
+
 
 #include "sievescriptparsingerrordialog.moc"
 
diff --git a/libksieve/ksieveui/autocreatescripts/sievescriptparsingerrordialog.h \
b/libksieve/ksieveui/autocreatescripts/sievescriptparsingerrordialog.h index \
                5507eab..ea944c4 100644
--- a/libksieve/ksieveui/autocreatescripts/sievescriptparsingerrordialog.h
+++ b/libksieve/ksieveui/autocreatescripts/sievescriptparsingerrordialog.h
@@ -29,11 +29,15 @@ public:
 
     void setError(const QString &script, const QString &);
 
+private Q_SLOTS:
+    void slotSaveAs();
+
 private:
     void readConfig();
     void writeConfig();
 
 private:
+    bool saveToFile( const QString &filename );
     KTextEdit *mTextEdit;
 };
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic