From 5b69ffea36ea63532628a8a570649e25dcb5a676 Mon Sep 17 00:00:00 2001 From: Montel Laurent Date: Sat, 10 Jan 2015 16:03:09 +0100 Subject: [PATCH 1/2] Fix variable name --- folderarchive/folderarchiveagentjob.cpp | 6 +++--- folderarchive/folderarchiveagentjob.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/folderarchive/folderarchiveagentjob.cpp b/folderarchive/folderarchiveagentjob.cpp index 732339618..f3a75cb7a 100644 --- a/folderarchive/folderarchiveagentjob.cpp +++ b/folderarchive/folderarchiveagentjob.cpp @@ -31,7 +31,7 @@ FolderArchiveAgentJob::FolderArchiveAgentJob(FolderArchiveManager *manager, FolderArchiveAccountInfo *info, const QList &lstItem, QObject *parent) : QObject(parent), - mLstItem(lstItem), + mListItem(lstItem), mManager(manager), mInfo(info) { @@ -47,7 +47,7 @@ void FolderArchiveAgentJob::start() sendError(i18n("Archive folder not defined. Please verify settings for account", mInfo->instanceName() )); return; } - if (mLstItem.isEmpty()) { + if (mListItem.isEmpty()) { sendError(i18n("No messages selected.")); return; } @@ -97,7 +97,7 @@ void FolderArchiveAgentJob::slotCollectionIdFound(const Akonadi::Collection &col void FolderArchiveAgentJob::sloMoveMailsToCollection(const Akonadi::Collection &col) { - KMMoveCommand *command = new KMMoveCommand( col, mLstItem, -1 ); + KMMoveCommand *command = new KMMoveCommand( col, mListItem, -1 ); connect( command, SIGNAL(moveDone(KMMoveCommand*)), this, SLOT(slotMoveMessages(KMMoveCommand*))); command->start(); } diff --git a/folderarchive/folderarchiveagentjob.h b/folderarchive/folderarchiveagentjob.h index 852a320f4..af5408d7a 100644 --- a/folderarchive/folderarchiveagentjob.h +++ b/folderarchive/folderarchiveagentjob.h @@ -41,7 +41,7 @@ private Q_SLOTS: void slotMoveMessages(KMMoveCommand *); private: void sendError(const QString &error); - QList mLstItem; + QList mListItem; FolderArchiveManager *mManager; FolderArchiveAccountInfo *mInfo; }; From 89c6c84a97a8ec169080d4766e4eb435e987ff2f Mon Sep 17 00:00:00 2001 From: Montel Laurent Date: Sat, 10 Jan 2015 16:26:44 +0100 Subject: [PATCH 2/2] Move in own class --- CMakeLists.txt | 1 + editor/kmcomposewin.cpp | 35 ++++------------ job/saveasfilejob.cpp | 92 +++++++++++++++++++++++++++++++++++++++++ job/saveasfilejob.h | 47 +++++++++++++++++++++ 4 files changed, 147 insertions(+), 28 deletions(-) create mode 100644 job/saveasfilejob.cpp create mode 100644 job/saveasfilejob.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 139aabd83..bc6f28ded 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -160,6 +160,7 @@ if (KDEPIM_BUILD_DESKTOP) job/manageserversidesubscriptionjob.cpp job/manageserversidesubscriptionjob.cpp job/removecollectionjob.cpp + job/saveasfilejob.cpp ) set(kmailprivate_widgets_LIB_SRCS diff --git a/editor/kmcomposewin.cpp b/editor/kmcomposewin.cpp index 5353e5917..7d2b0971f 100644 --- a/editor/kmcomposewin.cpp +++ b/editor/kmcomposewin.cpp @@ -57,7 +57,7 @@ #include "warningwidgets/externaleditorwarning.h" #include "cryptostateindicatorwidget.h" #include "validatesendmailshortcut.h" - +#include "job/saveasfilejob.h" #include "editor/kmstorageservice.h" #include "followupreminder/followupreminderselectdatedialog.h" #include "followupreminder/followupremindercreatejob.h" @@ -3440,33 +3440,12 @@ void KMComposeWin::charSelected(const QChar& c) void KMComposeWin::slotSaveAsFile() { - QPointer dlg = new KFileDialog(KUrl(),QString(),this); - dlg->setOperationMode(KFileDialog::Saving); - dlg->setConfirmOverwrite(true); - if(mComposerBase->editor()->textMode() == KMeditor::Rich ) { - dlg->setFilter( QString::fromLatin1("text/html text/plain application/vnd.oasis.opendocument.text") ); - } else { - dlg->setFilter( QString::fromLatin1("text/plain") ); - } - - if(dlg->exec()) { - QTextDocumentWriter writer; - const QString filename = dlg->selectedUrl().path(); - writer.setFileName(dlg->selectedUrl().path()); - if (dlg->currentFilter() == QString::fromLatin1("text/plain") || filename.endsWith(QLatin1String(".txt"))) { - writer.setFormat("plaintext"); - } else if (dlg->currentFilter() == QString::fromLatin1("text/html")|| filename.endsWith(QLatin1String(".html"))) { - writer.setFormat("HTML"); - } else if (dlg->currentFilter() == QString::fromLatin1("application/vnd.oasis.opendocument.text") || filename.endsWith(QLatin1String(".odf"))) { - writer.setFormat("ODF"); - } else { - writer.setFormat("plaintext"); - } - if (!writer.write(mComposerBase->editor()->document())) { - qDebug()<<" Error during writing"; - } - } - delete dlg; + SaveAsFileJob *job = new SaveAsFileJob(this); + job->setParentWidget(this); + job->setHtmlMode(mComposerBase->editor()->textMode() == KMeditor::Rich); + job->setEditor(mComposerBase->editor()); + job->start(); + //not necessary to delete it. It done in SaveAsFileJob } void KMComposeWin::slotCreateAddressBookContact() diff --git a/job/saveasfilejob.cpp b/job/saveasfilejob.cpp new file mode 100644 index 000000000..2b4980eac --- /dev/null +++ b/job/saveasfilejob.cpp @@ -0,0 +1,92 @@ +/* + Copyright (c) 2015 Montel Laurent + + This library is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published by + the Free Software Foundation; either version 2 of the License, or (at your + option) any later version. + + This library is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public + License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. + +*/ + +#include "saveasfilejob.h" +#include +#include +#include +#include +#include +#include + +SaveAsFileJob::SaveAsFileJob(QObject *parent) + : QObject(parent), + mHtmlMode(false), + mEditor(0), + mParentWidget(0) +{ + +} + +SaveAsFileJob::~SaveAsFileJob() +{ + +} + +void SaveAsFileJob::start() +{ + QPointer dlg = new KFileDialog(KUrl(),QString(),mParentWidget); + dlg->setOperationMode(KFileDialog::Saving); + dlg->setConfirmOverwrite(true); + if( mHtmlMode ) { + dlg->setFilter( QString::fromLatin1("text/html text/plain application/vnd.oasis.opendocument.text") ); + } else { + dlg->setFilter( QString::fromLatin1("text/plain") ); + } + + if(dlg->exec()) { + QTextDocumentWriter writer; + const QString filename = dlg->selectedUrl().path(); + writer.setFileName(dlg->selectedUrl().path()); + if (dlg->currentFilter() == QString::fromLatin1("text/plain") || filename.endsWith(QLatin1String(".txt"))) { + writer.setFormat("plaintext"); + } else if (dlg->currentFilter() == QString::fromLatin1("text/html")|| filename.endsWith(QLatin1String(".html"))) { + writer.setFormat("HTML"); + } else if (dlg->currentFilter() == QString::fromLatin1("application/vnd.oasis.opendocument.text") || filename.endsWith(QLatin1String(".odf"))) { + writer.setFormat("ODF"); + } else { + writer.setFormat("plaintext"); + } + if (!writer.write(mEditor->document())) { + qDebug()<<" Error during writing"; + } + } + delete dlg; + deleteLater(); +} + +void SaveAsFileJob::setHtmlMode(bool htmlMode) +{ + mHtmlMode = htmlMode; +} + +void SaveAsFileJob::setEditor(MessageComposer::KMeditor *editor) +{ + mEditor = editor; +} + +void SaveAsFileJob::setParentWidget(QWidget *parentWidget) +{ + mParentWidget = parentWidget; +} + + + + diff --git a/job/saveasfilejob.h b/job/saveasfilejob.h new file mode 100644 index 000000000..af1b6c8d5 --- /dev/null +++ b/job/saveasfilejob.h @@ -0,0 +1,47 @@ +/* + Copyright (c) 2015 Montel Laurent + + This library is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published by + the Free Software Foundation; either version 2 of the License, or (at your + option) any later version. + + This library is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public + License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. + +*/ +#ifndef SAVEASFILEJOB_H +#define SAVEASFILEJOB_H + +#include +namespace MessageComposer { +class KMeditor; +} +class SaveAsFileJob : public QObject +{ + Q_OBJECT +public: + explicit SaveAsFileJob(QObject *parent = 0); + ~SaveAsFileJob(); + void start(); + + void setHtmlMode(bool htmlMode); + + void setEditor(MessageComposer::KMeditor *editor); + + void setParentWidget(QWidget *parentWidget); + +private: + bool mHtmlMode; + MessageComposer::KMeditor *mEditor; + QWidget *mParentWidget; +}; + +#endif // SAVEASFILEJOB_H