[Bug 261052] redirect a mail doesn't open a address dialog but an composer
Tobias Koenig
tokoe at kde.org
Thu Dec 23 12:17:31 GMT 2010
https://bugs.kde.org/show_bug.cgi?id=261052
Tobias Koenig <tokoe at kde.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |FIXED
--- Comment #1 from Tobias Koenig <tokoe kde org> 2010-12-23 13:17:30 ---
commit 7f0dbc5f5c8981be9c5110ba2b1fff8c624e6507
branch master
Author: Tobias Koenig <tokoe at kde.org>
Date: Thu Dec 23 13:20:00 2010 +0100
Implement proper 'Redirect' functionality
kmail-mobile uses the redirect dialog from mailcommon/ now and
doesn't open the message composer instead when redirecting a mail.
BUG: 261052
diff --git a/mobile/mail/mainview.cpp b/mobile/mail/mainview.cpp
index 0a1fb42..b6c1881 100644
--- a/mobile/mail/mainview.cpp
+++ b/mobile/mail/mainview.cpp
@@ -37,9 +37,11 @@
#include "mailactionmanager.h"
#include "mailcommon/collectiongeneralpage.h"
#include "mailcommon/mailkernel.h"
+#include "mailcommon/redirectdialog.h"
#include "mailcommon/sendmdnhandler.h"
#include "mailthreadgroupercomparator.h"
#include "messagecomposer/messagehelper.h"
+#include "messagecomposer/messagecomposersettings.h"
#include "messagecore/messagehelpers.h"
#include "messagelistproxy.h"
#include "messagelistsettingscontroller.h"
@@ -90,6 +92,7 @@
#include <kselectionproxymodel.h>
#include <kstandarddirs.h>
#include <mailcommon/expirypropertiesdialog.h>
+#include <mailcommon/filteraction.h>
#include <mailcommon/filtermanager.h>
#include <mailcommon/foldercollection.h>
#include <mailcommon/mailutil.h>
@@ -775,27 +778,55 @@ void MainView::forwardFetchResult( KJob* job )
MessageComposer::MessageFactory factory(
item.payload<KMime::Message::Ptr>(), item.id() );
factory.setIdentityManager( MobileKernel::self()->identityManager() );
- ComposerView *composer = new ComposerView;
const ForwardMode mode = fetchJob->property( "forwardMode"
).value<ForwardMode>();
- switch ( mode ) {
- case InLine:
- composer->setMessage( factory.createForward() );
- break;
- case AsAttachment: {
- QPair< KMime::Message::Ptr, QList< KMime::Content* > > forwardMessage =
factory.createAttachedForward( QList< KMime::Message::Ptr >() <<
item.payload<KMime::Message::Ptr>());
- //the invokeMethods are there to be sure setMessage and addAttachment is
called after composer->delayedInit
- QMetaObject::invokeMethod( composer, "setMessage", Qt::QueuedConnection,
Q_ARG( KMime::Message::Ptr, forwardMessage.first ) );
- foreach ( KMime::Content* attach, forwardMessage.second )
- QMetaObject::invokeMethod( composer, "addAttachment",
Qt::QueuedConnection, Q_ARG( KMime::Content*, attach ) );
- break;
+ if ( mode == Redirect ) {
+ const MailCommon::RedirectDialog::SendMode sendMode =
MessageComposer::MessageComposerSettings::self()->sendImmediate()
+ ?
MailCommon::RedirectDialog::SendNow
+ :
MailCommon::RedirectDialog::SendLater;
+
+ MailCommon::RedirectDialog dlg( sendMode, this );
+ if ( !dlg.exec() )
+ return;
+
+ if (
!MailTransport::TransportManager::self()->showTransportCreationDialog( this,
MailTransport::TransportManager::IfNoTransportExists ) )
+ return;
+
+ factory.setFolderIdentity( MailCommon::Util::folderIdentity( item ) );
+ const KMime::Message::Ptr redirectMessage = factory.createRedirect(
dlg.to() );
+ if ( !redirectMessage )
+ return;
+
+ MessageStatus status;
+ status.setStatusFromFlags( item.flags() );
+ if ( !status.isRead() )
+ MailCommon::FilterAction::sendMDN( item, KMime::MDN::Dispatched );
+
+ const MessageSender::SendMethod method = (dlg.sendMode() ==
MailCommon::RedirectDialog::SendNow)
+ ? MessageSender::SendImmediate
+ : MessageSender::SendLater;
+
+ MobileKernel::self()->msgSender()->send( redirectMessage, method );
+
+ } else {
+ ComposerView *composer = new ComposerView;
+ switch ( mode ) {
+ case InLine:
+ composer->setMessage( factory.createForward() );
+ break;
+ case AsAttachment: {
+ QPair< KMime::Message::Ptr, QList< KMime::Content* > > forwardMessage
= factory.createAttachedForward( QList< KMime::Message::Ptr >() <<
item.payload<KMime::Message::Ptr>());
+ //the invokeMethods are there to be sure setMessage and addAttachment
is called after composer->delayedInit
+ QMetaObject::invokeMethod( composer, "setMessage",
Qt::QueuedConnection, Q_ARG( KMime::Message::Ptr, forwardMessage.first ) );
+ foreach ( KMime::Content* attach, forwardMessage.second )
+ QMetaObject::invokeMethod( composer, "addAttachment",
Qt::QueuedConnection, Q_ARG( KMime::Content*, attach ) );
+ break;
+ }
}
- case Redirect:
- composer->setMessage( factory.createRedirect( "" ) );
- break;
+
+ composer->show();
+ composer->setIdentity( currentFolderIdentity() );
}
- composer->show();
- composer->setIdentity( currentFolderIdentity() );
}
void MainView::markImportant( bool checked )
--
Configure bugmail: https://bugs.kde.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
More information about the Kdepim-bugs
mailing list