callback.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #include "callback.h"
00034 #include "kmkernel.h"
00035 #include "kmmessage.h"
00036 #include <libkdepim/email.h>
00037 #include <libkpimidentities/identity.h>
00038 #include <libkpimidentities/identitymanager.h>
00039 #include "kmmainwin.h"
00040 #include "kmcomposewin.h"
00041
00042 #include <mimelib/enum.h>
00043
00044 #include <kinputdialog.h>
00045 #include <klocale.h>
00046 #include <kdebug.h>
00047
00048 using namespace KMail;
00049
00050
00051 Callback::Callback( KMMessage* msg ) : mMsg( msg ), mReceiverSet( false )
00052 {
00053 }
00054
00055 bool Callback::mailICal( const QString& to, const QString iCal,
00056 const QString& subject ) const
00057 {
00058 kdDebug(5006) << "Mailing message:\n" << iCal << endl;
00059
00060 KMMessage *msg = new KMMessage;
00061 msg->initHeader();
00062 msg->setHeaderField( "Content-Type",
00063 "text/calendar; method=reply; charset=\"utf-8\"" );
00064 msg->setSubject( subject );
00065 msg->setTo( to );
00066 msg->setBody( iCal.utf8() );
00067 msg->setFrom( receiver() );
00068
00069
00070 msg->link( mMsg, KMMsgStatusDeleted );
00071
00072
00073
00074 KConfigGroup options( KMKernel::config(), "Groupware" );
00075 if( !options.readBoolEntry( "LegacyMangleFromToHeaders", true ) ) {
00076
00077 const KPIM::Identity& identity =
00078 kmkernel->identityManager()->identityForAddress( receiver() );
00079 if( identity != KPIM::Identity::null )
00080
00081 msg->setFrom( identity.fullEmailAddr() );
00082 msg->setHeaderField("X-KMail-Identity", QString::number( identity.uoid() ));
00083
00084 msg->setBcc( "" );
00085 }
00086
00087 KMComposeWin *cWin = new KMComposeWin();
00088 cWin->setMsg( msg, false );
00089
00090 cWin->slotWordWrapToggled( false );
00091 cWin->setSigningAndEncryptionDisabled( true );
00092
00093 if ( options.readBoolEntry( "AutomaticSending", true ) ) {
00094 cWin->setAutoDeleteWindow( true );
00095 cWin->slotSendNow();
00096 } else {
00097 cWin->show();
00098 }
00099
00100 return true;
00101 }
00102
00103 QString Callback::receiver() const
00104 {
00105 if ( mReceiverSet )
00106
00107 return mReceiver;
00108
00109 mReceiverSet = true;
00110
00111 QStringList addrs = KPIM::splitEmailAddrList( mMsg->to() );
00112 if( addrs.count() < 2 )
00113
00114 mReceiver = mMsg->to();
00115 else {
00116 int found = 0;
00117 for( QStringList::Iterator it = addrs.begin(); it != addrs.end(); ++it ) {
00118 if( kmkernel->identityManager()->identityForAddress( *it ) !=
00119 KPIM::Identity::null ) {
00120
00121 ++found;
00122 mReceiver = *it;
00123 }
00124 }
00125
00126 if( found != 1 ) {
00127 bool ok;
00128 mReceiver =
00129 KInputDialog::getItem( i18n( "Select Address" ),
00130 i18n( "<qt>None of your identities match the "
00131 "receiver of this message,<br>please "
00132 "choose which of the following addresses "
00133 "is yours:" ),
00134 addrs, 0, FALSE, &ok, kmkernel->mainWin() );
00135 if( !ok )
00136 mReceiver = QString::null;
00137 }
00138 }
00139
00140 return mReceiver;
00141 }
00142
This file is part of the documentation for kmail Library Version 3.3.2.