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
#include <qdir.h>
00026
#include <qfile.h>
00027
#include <qregexp.h>
00028
00029
#include <kstandarddirs.h>
00030
#include <kdebug.h>
00031
00032
#include <libkcal/event.h>
00033
#include <libkcal/icalformat.h>
00034
00035
#include "komailclient.h"
00036
00037
#include "mailscheduler.h"
00038
00039
00040
using namespace KCal;
00041
00042 MailScheduler::MailScheduler(Calendar *calendar)
00043 : IMIPScheduler(calendar)
00044 {
00045 }
00046
00047 MailScheduler::~MailScheduler()
00048 {
00049 }
00050
00051
bool MailScheduler::publish (IncidenceBase *incidence,
const QString &recipients)
00052 {
00053
QString messageText = mFormat->createScheduleMessage(incidence,
00054 Scheduler::Publish);
00055 KOMailClient mailer;
00056
00057
return mailer.mailTo(incidence,recipients,messageText);
00058 }
00059
00060
bool MailScheduler::performTransaction(IncidenceBase *incidence,Method method,
const QString &recipients)
00061 {
00062
QString messageText = mFormat->createScheduleMessage(incidence,method);
00063
00064 KOMailClient mailer;
00065
00066
if (method==Request || method==Cancel || method==Add || method==Declinecounter) {
00067
return mailer.mailTo(incidence,recipients,messageText);
00068 }
00069
else {
00070
return mailer.mailTo(incidence,recipients,messageText);
00071 }
00072 }
00073
00074
bool MailScheduler::performTransaction(IncidenceBase *incidence,Method method)
00075 {
00076
QString messageText = mFormat->createScheduleMessage(incidence,method);
00077
00078 KOMailClient mailer;
00079
00080
if (method==Request || method==Cancel || method==Add || method==Declinecounter) {
00081
return mailer.mailAttendees(incidence,messageText);
00082 }
00083
else {
00084
return mailer.mailOrganizer(incidence,messageText);
00085 }
00086 }
00087
00088
QPtrList<ScheduleMessage> MailScheduler::retrieveTransactions()
00089 {
00090
QString incomingDirName = locateLocal(
"data",
"korganizer/income");
00091 kdDebug(5850) <<
"MailScheduler::retrieveTransactions: dir: " << incomingDirName
00092 << endl;
00093
00094
QPtrList<ScheduleMessage> messageList;
00095
00096
QDir incomingDir(incomingDirName);
00097
QStringList incoming = incomingDir.entryList(QDir::Files);
00098 QStringList::ConstIterator it;
00099
for(it = incoming.begin(); it != incoming.end(); ++it) {
00100 kdDebug(5850) <<
"-- File: " << (*it) << endl;
00101
00102
QFile f(incomingDirName +
"/" + (*it));
00103
bool inserted =
false;
00104
QMap<IncidenceBase*, QString>::Iterator iter;
00105
for ( iter = mEventMap.begin(); iter != mEventMap.end(); ++iter ) {
00106
if (iter.data() == incomingDirName +
"/" + (*it)) inserted =
true;
00107 }
00108
if (!inserted) {
00109
if (!f.open(IO_ReadOnly)) {
00110 kdDebug(5850) <<
"MailScheduler::retrieveTransactions(): Can't open file'"
00111 << (*it) <<
"'" << endl;
00112 }
else {
00113
QTextStream t(&f);
00114 t.setEncoding( QTextStream::Latin1 );
00115
QString messageString = t.read();
00116 messageString.replace(
QRegExp(
"\n[ \t]"),
"");
00117 messageString = QString::fromUtf8( messageString.latin1() );
00118 ScheduleMessage *message = mFormat->parseScheduleMessage( mCalendar,
00119 messageString );
00120
if (message) {
00121 kdDebug(5850) <<
"MailScheduler::retrieveTransactions: got message '"
00122 << (*it) <<
"'" << endl;
00123 messageList.append(message);
00124 mEventMap[message->event()]=incomingDirName +
"/" + (*it);
00125 }
else {
00126
QString errorMessage;
00127
if (mFormat->exception()) {
00128 errorMessage = mFormat->exception()->message();
00129 }
00130 kdDebug(5850) <<
"MailScheduler::retrieveTransactions() Error parsing "
00131
"message: " << errorMessage << endl;
00132 }
00133 f.close();
00134 }
00135 }
00136 }
00137
return messageList;
00138 }
00139
00140
bool MailScheduler::deleteTransaction(IncidenceBase *incidence)
00141 {
00142
QFile f( mEventMap[incidence] );
00143 mEventMap.remove(incidence);
00144
if ( !f.exists() )
return false;
00145
else
00146
return f.remove();
00147 }
00148
00149
QString MailScheduler::freeBusyDir()
00150 {
00151
return locateLocal(
"data",
"korganizer/freebusy");
00152 }