From 04784eab86d97a7f72808d81bb094cea2ad7ef7b Mon Sep 17 00:00:00 2001 From: Laurent Montel Date: Thu, 29 Oct 2009 13:02:01 +0000 Subject: [PATCH] Port++ svn path=/branches/work/akonadi-ports/kdepim/; revision=1042263 --- kmcommands.cpp | 49 ++++++++++++++++---------------------------- kmcommands.h | 2 -- kmmainwidget.cpp | 33 ++++++++++++++++------------- tests/CMakeLists.txt | 2 +- util.cpp | 13 ++++++++++++ util.h | 5 ++++- 6 files changed, 55 insertions(+), 49 deletions(-) diff --git a/kmcommands.cpp b/kmcommands.cpp index bc8237352..41d6398cf 100644 --- a/kmcommands.cpp +++ b/kmcommands.cpp @@ -211,19 +211,6 @@ KMCommand::~KMCommand() { } -KMime::Message *KMCommand::message( const Akonadi::Item & item ) -{ - if ( !item.hasPayload() ) { - kWarning() << "Payload is not a MessagePtr!"; - return 0; - } - KMime::Message *msg = new KMime::Message; - msg->setContent( item.payloadData() ); - msg->parse(); - - return msg; -} - KMCommand::Result KMCommand::result() const { if ( mResult == Undefined ) { @@ -529,7 +516,7 @@ KMCommand::Result KMMailtoReplyCommand::execute() if ( !item.isValid() /*TODO Port || !msg->codec() */) { //TODO Reuse codec() from libmessageviewer/nodehelper return Failed; } - KMime::Message *msg = message( item ); + KMime::Message *msg = KMail::Util::message( item ); KMime::Message *rmsg = KMail::MessageHelper::createReply( msg, KMail::ReplyNone, mSelection ); rmsg->to()->fromUnicodeString( MessageViewer::StringUtil::decodeMailtoUrl( mUrl.path() ), "utf-8" ); //TODO Check the UTF-8 @@ -560,7 +547,7 @@ KMCommand::Result KMMailtoForwardCommand::execute() if ( !item.isValid() /*|| !msg->codec() Port to KMime::message*/) { return Failed; } - KMime::Message *msg = message( item ); + KMime::Message *msg = KMail::Util::message( item ); KMime::Message *fmsg = KMail::MessageHelper::createForward( msg ); fmsg->to()->fromUnicodeString( MessageViewer::StringUtil::decodeMailtoUrl( mUrl.path() ), "utf-8" ); //TODO check the utf-8 @@ -706,7 +693,7 @@ KMCommand::Result KMEditMsgCommand::execute() !kmkernel->folderIsTemplates( item.parentCollection() ) ) ) { return Failed; } - KMime::Message *msg = message( item ); + KMime::Message *msg = KMail::Util::message( item ); #if 0 // Remember the old parent, we need it a bit further down to be able // to put the unchanged messsage back in the original folder if the nth @@ -1118,7 +1105,7 @@ KMCommand::Result KMReplyToCommand::execute() if ( !item.isValid() ) { return Failed; } - KMime::Message *msg = message( item ); + KMime::Message *msg = KMail::Util::message( item ); KMail::MessageHelper::MessageReply reply = KMail::MessageHelper::createReply2( msg, KMail::ReplySmart, mSelection ); KMail::Composer * win = KMail::makeComposer( reply.msg, replyContext( reply ), 0, mSelection ); #if 0 //Port to kmime::message @@ -1148,7 +1135,7 @@ KMCommand::Result KMNoQuoteReplyToCommand::execute() if ( !item.isValid() ) { return Failed; } - KMime::Message *msg = message( item ); + KMime::Message *msg = KMail::Util::message( item ); KMail::MessageHelper::MessageReply reply = KMail::MessageHelper::createReply2( msg, KMail::ReplySmart, "", true); KMail::Composer *win = KMail::makeComposer( reply.msg, replyContext( reply ) ); #if 0 //Port to akonadi @@ -1177,7 +1164,7 @@ KMCommand::Result KMReplyListCommand::execute() if ( !item.isValid() ) { return Failed; } - KMime::Message *msg = message( item ); + KMime::Message *msg = KMail::Util::message( item ); KMail::MessageHelper::MessageReply reply = KMail::MessageHelper::createReply2( msg, KMail::ReplyList, mSelection ); KMail::Composer * win = KMail::makeComposer( reply.msg, replyContext( reply ), 0, mSelection ); @@ -1208,7 +1195,7 @@ KMCommand::Result KMReplyToAllCommand::execute() return Failed; } - KMime::Message *msg = message( item ); + KMime::Message *msg = KMail::Util::message( item ); KMail::MessageHelper::MessageReply reply = KMail::MessageHelper::createReply2( msg, KMail::ReplyAll, mSelection ); KMail::Composer * win = KMail::makeComposer( reply.msg, replyContext( reply ), 0, mSelection ); @@ -1238,7 +1225,7 @@ KMCommand::Result KMReplyAuthorCommand::execute() if ( !item.isValid() ) { return Failed; } - KMime::Message *msg = message( item ); + KMime::Message *msg = KMail::Util::message( item ); KMail::MessageHelper::MessageReply reply = KMail::MessageHelper::createReply2( msg, KMail::ReplyAuthor, mSelection ); KMail::Composer * win = KMail::makeComposer( reply.msg, replyContext( reply ), 0, mSelection ); @@ -1395,7 +1382,7 @@ KMCommand::Result KMForwardCommand::execute() if ( !item.isValid() /*|| !item->codec() Port it*/ ) return Failed; - KMime::Message *msg = message( item ); + KMime::Message *msg = KMail::Util::message( item ); KCursorSaver busy(KBusyPtr::busy()); KMime::Message *fwdMsg = KMail::MessageHelper::createForward(msg); @@ -1441,7 +1428,7 @@ KMCommand::Result KMForwardAttachedCommand::execute() } else if (msgList.count() == 1) { Akonadi::Item item = msgList.first(); - KMime::Message *msg = message( item ); + KMime::Message *msg = KMail::Util::message( item ); KMail::MessageHelper::initFromMessage(fwdMsg, msg); fwdMsg->subject()->fromUnicodeString( KMail::MessageHelper::forwardSubject(msg),"utf-8" ); delete msg; @@ -1453,7 +1440,7 @@ KMCommand::Result KMForwardAttachedCommand::execute() // iterate through all the messages to be forwarded Akonadi::Item itemMsg; foreach ( itemMsg, msgList ) { - KMime::Message *msg = message( itemMsg ); + KMime::Message *msg = KMail::Util::message( itemMsg ); // remove headers that shouldn't be forwarded KMail::MessageHelper::removePrivateHeaderFields(msg); msg->removeHeader("BCC"); @@ -1502,7 +1489,7 @@ KMCommand::Result KMRedirectCommand::execute() if ( dlg->exec() == QDialog::Rejected || !dlg ) { return Failed; } - KMime::Message *msg = message( item ); + KMime::Message *msg = KMail::Util::message( item ); KMime::Message *newMsg = KMail::MessageHelper::createRedirect( msg, dlg->to() ); KMFilterAction::sendMDN( msg, KMime::MDN::Dispatched ); @@ -1533,7 +1520,7 @@ KMCommand::Result KMCustomReplyToCommand::execute() if ( !item.isValid() /*|| !msg->codec()*/ /*TODO port it */ ) { return Failed; } - KMime::Message *msg = message( item ); + KMime::Message *msg = KMail::Util::message( item ); KMail::MessageHelper::MessageReply reply = KMail::MessageHelper::createReply2( msg, KMail::ReplySmart, mSelection, false, true, false, mTemplate ); KMail::Composer * win = KMail::makeComposer( reply.msg, replyContext( reply ), 0, @@ -1566,7 +1553,7 @@ KMCommand::Result KMCustomReplyAllToCommand::execute() if ( !item.isValid() /*|| !msg->codec() Port to kmime*/ ) { return Failed; } - KMime::Message *msg = message( item ); + KMime::Message *msg = KMail::Util::message( item ); KMail::MessageHelper::MessageReply reply = KMail::MessageHelper::createReply2( msg, KMail::ReplyAll, mSelection, false, true, false, mTemplate ); KMail::Composer * win = KMail::makeComposer( reply.msg, replyContext( reply ), 0, @@ -1649,7 +1636,7 @@ KMCommand::Result KMCustomForwardCommand::execute() if ( !item.isValid() /*|| !msg->codec() Port to akonadi*/ ) { return Failed; } - KMime::Message *msg = message( item ); + KMime::Message *msg = KMail::Util::message( item ); KCursorSaver busy( KBusyPtr::busy() ); KMime::Message *fwdMsg = KMail::MessageHelper::createForward( msg, mTemplate ); @@ -2014,7 +2001,7 @@ KMCommand::Result KMMailingListFilterCommand::execute() if ( !item.isValid() ) { return Failed; } - KMime::Message *msg = message( item ); + KMime::Message *msg = KMail::Util::message( item ); if ( !MailingList::name( msg, name, value ).isEmpty() ) { kmkernel->filterMgr()->createFilter( name, value ); delete msg; @@ -2818,7 +2805,7 @@ KMCommand::Result KMResendMessageCommand::execute() if ( !item.isValid() /*|| !msg->codec()*/ ) { return Failed; } - KMime::Message *msg = message( item ); + KMime::Message *msg = KMail::Util::message( item ); #if 0 newMsg->setCharset( msg->codec()->name() ); #endif @@ -3282,7 +3269,7 @@ KMCommand::Result CreateTodoCommand::execute() if ( !item.isValid() /*|| !msg->codec()*/ ) { return Failed; } - KMime::Message *msg = message( item ); + KMime::Message *msg = KMail::Util::message( item ); KMail::KorgHelper::ensureRunning(); QString txt = i18n("From: %1\nTo: %2\nSubject: %3", msg->from()->asUnicodeString(), diff --git a/kmcommands.h b/kmcommands.h index 79d02fd7c..dfa15db3d 100644 --- a/kmcommands.h +++ b/kmcommands.h @@ -91,8 +91,6 @@ protected: // Returns the parent widget QWidget *parentWidget() const; - KMime::Message *message(const Akonadi::Item & ); - bool deletesItself() const { return mDeletesItself; } /** Specify whether the subclass takes care of the deletion of the object. By default the base class will delete the object. diff --git a/kmmainwidget.cpp b/kmmainwidget.cpp index e3d0e219b..58082be66 100644 --- a/kmmainwidget.cpp +++ b/kmmainwidget.cpp @@ -133,6 +133,8 @@ using KMail::TemplateParser; #include "actionscheduler.h" #include "accountwizard.h" #include "expirypropertiesdialog.h" +#include +#include "util.h" #if !defined(NDEBUG) #include "sievedebugdialog.h" @@ -1362,24 +1364,29 @@ void KMMainWidget::slotShowNewFromTemplate() if ( !mTemplateFolder.isValid() ) { mTemplateFolder = kmkernel->templatesCollectionFolder(); } - if ( !mTemplateFolder.isValid() ) return; + if ( !mTemplateFolder.isValid() ) + return; mTemplateMenu->menu()->clear(); -#if 0 - for ( int idx = 0; idxcount(); ++idx ) { - KMime::Message *mb = mTemplateFolder->getMsgBase( idx ); + Akonadi::ItemFetchJob *job = new Akonadi::ItemFetchJob( mTemplateFolder ); + Akonadi::Item::List items; + if ( job->exec() ) { + items = job->items(); + } + for ( int idx = 0; idx < items.count(); ++idx ) { + KMime::Message *msg = KMail::Util::message( items.at( idx ) ); - QString subj = mb->subject()->asUnicodeString(); + QString subj = msg->subject()->asUnicodeString(); if ( subj.isEmpty() ) subj = i18n("No Subject"); QAction *templateAction = mTemplateMenu->menu()->addAction( KStringHandler::rsqueeze( subj.replace( '&', "&&" ) ) ); - templateAction->setData( idx ); + QVariant var; + var.setValue( items.at( idx ) ); + templateAction->setData( var ); } -#else - kDebug() << "AKONADI PORT: Disabled code in " << Q_FUNC_INFO; -#endif + // If there are no templates available, add a menu entry which informs // the user about this. if ( mTemplateMenu->menu()->actions().isEmpty() ) { @@ -1395,11 +1402,8 @@ void KMMainWidget::slotNewFromTemplate( QAction *action ) { if ( !mTemplateFolder.isValid() ) return; -#if 0 - newFromTemplate( mTemplateFolder->getMsg( action->data().toInt() ) ); -#else - kDebug() << "AKONADI PORT: Disabled code in " << Q_FUNC_INFO; -#endif + Akonadi::Item item = action->data().value(); + newFromTemplate( item ); } @@ -1641,6 +1645,7 @@ void KMMainWidget::slotMarkAllAsRead() if (!mCurrentFolder) return; mCurrentFolder->markUnreadAsRead(); + updateMessageActions(); } //----------------------------------------------------------------------------- diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index db215a7ab..75fa0247f 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,5 +1,5 @@ set( EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR} ) - +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${KDE4_ENABLE_EXCEPTIONS}") include_directories( ${CMAKE_SOURCE_DIR}/mimelib ${CMAKE_SOURCE_DIR}/kmail diff --git a/util.cpp b/util.cpp index eda5c4790..a00faf717 100644 --- a/util.cpp +++ b/util.cpp @@ -189,3 +189,16 @@ bool KMail::Util::RecursionPreventer::isRecursive() const return mCounter > 1; } + +KMime::Message *KMail::Util::message( const Akonadi::Item & item ) +{ + if ( !item.hasPayload() ) { + kWarning() << "Payload is not a MessagePtr!"; + return 0; + } + KMime::Message *msg = new KMime::Message; + msg->setContent( item.payloadData() ); + msg->parse(); + + return msg; +} diff --git a/util.h b/util.h index a6c04087f..1c6340956 100644 --- a/util.h +++ b/util.h @@ -45,7 +45,8 @@ #include #include #include - +#include +#include class DwString; class KUrl; @@ -114,6 +115,8 @@ namespace Util { */ bool validateAddresses( QWidget *parent, const QString &addresses ); + KMime::Message *message( const Akonadi::Item & item ); + /** * A LaterDeleter is intended to be used with the RAII ( Resource