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 KMComposeWin *cWin =
new KMComposeWin(msg);
00070
00071 cWin->slotWordWrapToggled(
false );
00072
00073
00074
00075 KConfigGroup options( KMKernel::config(),
"Groupware" );
00076
if( !options.readBoolEntry(
"LegacyMangleFromToHeaders",
true ) ) {
00077
00078
const KPIM::Identity& identity =
00079 kmkernel->identityManager()->identityForAddress(
receiver() );
00080
if( identity != KPIM::Identity::null )
00081
00082 msg->setFrom( identity.fullEmailAddr() );
00083 }
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097 cWin->show();
00098
00099
return true;
00100 }
00101
00102 QString Callback::receiver()
const
00103
{
00104
if ( mReceiverSet )
00105
00106
return mReceiver;
00107
00108 mReceiverSet =
true;
00109
00110
QStringList addrs = KPIM::splitEmailAddrList( mMsg->to() );
00111
if( addrs.count() < 2 )
00112
00113 mReceiver = mMsg->to();
00114
else {
00115
int found = 0;
00116
for( QStringList::Iterator it = addrs.begin(); it != addrs.end(); ++it ) {
00117
if( kmkernel->identityManager()->identityForAddress( *it ) !=
00118 KPIM::Identity::null ) {
00119
00120 ++found;
00121 mReceiver = *it;
00122 }
00123 }
00124
00125
if( found != 1 ) {
00126
bool ok;
00127 mReceiver =
00128 KInputDialog::getItem( i18n(
"Select Address" ),
00129 i18n(
"<qt>None of your identities match the "
00130
"receiver of this message,<br>please "
00131
"choose which of the following addresses "
00132
"is yours:" ),
00133 addrs, 0, FALSE, &ok, kmkernel->mainWin() );
00134
if( !ok )
00135 mReceiver = QString::null;
00136 }
00137 }
00138
00139
return mReceiver;
00140 }