summaryrefslogtreecommitdiffabout
path: root/korganizer/outgoingdialog.cpp
Side-by-side diff
Diffstat (limited to 'korganizer/outgoingdialog.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/outgoingdialog.cpp1
1 files changed, 0 insertions, 1 deletions
diff --git a/korganizer/outgoingdialog.cpp b/korganizer/outgoingdialog.cpp
index 4eb64f3..0fc90c4 100644
--- a/korganizer/outgoingdialog.cpp
+++ b/korganizer/outgoingdialog.cpp
@@ -202,193 +202,192 @@ bool OutgoingDialog::addMessage(IncidenceBase *incidence,Scheduler::Method metho
return true;
}
void OutgoingDialog::send()
{
kdDebug() << "OutgoingDialog::send" << endl;
ScheduleItemOut *item = (ScheduleItemOut *)(mMessageListView->firstChild());
while(item) {
bool success;
if (item->method() == Scheduler::Publish) {
success = mScheduler->publish(item->event(),item->recipients());
} else {
success = mScheduler->performTransaction(item->event(),item->method());
}
ScheduleItemOut *oldItem = item;
item = (ScheduleItemOut *)(item->nextSibling());
if (success) {
deleteMessage(oldItem->event());
delete (oldItem->event());
delete oldItem;
}
}
emit numMessagesChanged(mMessageListView->childCount());
}
void OutgoingDialog::deleteItem()
{
ScheduleItemOut *item = (ScheduleItemOut *)(mMessageListView->selectedItem());
if(!item)
return;
deleteMessage(item->event());
delete(item->event());
mMessageListView->takeItem(item);
emit numMessagesChanged(mMessageListView->childCount());
}
void OutgoingDialog::showEvent(QListViewItem *qitem)
{
ScheduleItemOut *item = (ScheduleItemOut *)qitem;
Event *event = 0;
Todo *todo = 0;
if ( item->event()->type()=="Event" ) {
event = static_cast<Event *>(item->event());
}
if ( item->event()->type()=="Todo" ) {
todo = static_cast<Todo *>(item->event());
}
QString sendText;
if (event || todo) {
KOEventViewerDialog *eventViewer = new KOEventViewerDialog(this);
if (event) eventViewer->setEvent(event);
if (todo) eventViewer->setTodo(todo);
sendText = "<hr><h4>"+i18n("Event will be sent to:")+"</h4>";
switch (item->method()) {
case Scheduler::Publish: {
sendText += item->recipients();
break; }
case Scheduler::Request: {
sendText += i18n("All attendees");
break; }
case Scheduler::Refresh: {
sendText += i18n("All attendees");
break; }
case Scheduler::Cancel: {
sendText += i18n("All attendees");
break; }
case Scheduler::Add: {
sendText += i18n("All attendees");
break; }
case Scheduler::Reply: {
sendText += i18n("The organizer %1").arg(item->event()->organizer());
break; }
case Scheduler::Counter: {
sendText += i18n("The organizer %1").arg(item->event()->organizer());
break; }
case Scheduler::Declinecounter: {
sendText += i18n("All attendees");
break; }
case Scheduler::NoMethod: {
sendText += "";
break; }
default:
sendText = "";
}
eventViewer->addText(sendText);
eventViewer->show();
}
}
bool OutgoingDialog::saveMessage(IncidenceBase *incidence,Scheduler::Method method,
const QString &recipients)
{
KTempFile ktfile(locateLocal("data","korganizer/outgoing/"),"ics");
QString messageText = mFormat->createScheduleMessage(incidence,method);
QTextStream *qts = ktfile.textStream();
*qts << messageText;
*qts << "METHOD-BEGIN:" << endl << method << endl << ":METHOD-END" << endl;
*qts << "RECIPIENTS-BEGIN:" << endl << recipients << endl << ":RECIPIENTS-END" << endl;
mMessageMap[incidence]=ktfile.name();
return true;
}
bool OutgoingDialog::deleteMessage(IncidenceBase *incidence)
{
QFile f( mMessageMap[incidence] );
mMessageMap.remove(incidence);
if ( !f.exists() ) return false;
else
return f.remove();
}
void OutgoingDialog::loadMessages()
{
Scheduler::Method method;
QString recipients;
QString outgoingDirName = locateLocal("data","korganizer/outgoing");
QDir outgoingDir(outgoingDirName);
QStringList outgoing = outgoingDir.entryList(QDir::Files);
QStringList::ConstIterator it;
for(it = outgoing.begin(); it != outgoing.end(); ++it) {
kdDebug() << "-- File: " << (*it) << endl;
QFile f(outgoingDirName + "/" + (*it));
bool inserted = false;
QMap<IncidenceBase*, QString>::Iterator iter;
for ( iter = mMessageMap.begin(); iter != mMessageMap.end(); ++iter ) {
if (iter.data() == outgoingDirName + "/" + (*it)) inserted = true;
}
if (!inserted) {
if (!f.open(IO_ReadOnly)) {
kdDebug() << "OutgoingDialog::loadMessage(): Can't open file'"
<< (*it) << "'" << endl;
} else {
QTextStream t(&f);
QString messageString = t.read();
ScheduleMessage *message = mFormat->parseScheduleMessage(mCalendar,
messageString);
int begin_pos = messageString.find("METHOD-BEGIN:");
begin_pos = messageString.find('\n',begin_pos)+1;
QString meth = messageString.mid(begin_pos,1);
switch (meth.toInt()) {
case 0:method=Scheduler::Publish; break;
case 1:method=Scheduler::Request; break;
case 2:method=Scheduler::Refresh; break;
case 3:method=Scheduler::Cancel; break;
case 4:method=Scheduler::Add; break;
case 5:method=Scheduler::Reply; break;
case 6:method=Scheduler::Counter; break;
case 7:method=Scheduler::Declinecounter; break;
default :method=Scheduler::NoMethod; break;
}
begin_pos = messageString.find("RECIPIENTS-BEGIN:");
begin_pos = messageString.find('\n',begin_pos)+1;
int end_pos = messageString.find(":RECIPIENTS-END",begin_pos)-1;
recipients = messageString.mid(begin_pos, end_pos-begin_pos);
kdDebug() << "Outgoing::loadMessage(): Recipients: " << recipients << endl;
if (message) {
bool inserted = false;
QMap<IncidenceBase*, QString>::Iterator iter;
for ( iter = mMessageMap.begin(); iter != mMessageMap.end(); ++iter ) {
if (iter.data() == outgoingDirName + "/" + (*it)) inserted = true;
}
if (!inserted) {
kdDebug() << "OutgoingDialog::loadMessage(): got message '"
<< (*it) << "'" << endl;
IncidenceBase *inc = message->event();
new ScheduleItemOut(mMessageListView,inc,method,recipients);
mMessageMap[message->event()]=outgoingDirName + "/" + (*it);
}
} else {
QString errorMessage;
if (mFormat->exception()) {
errorMessage = mFormat->exception()->message();
}
kdDebug() << "OutgoingDialog::loadMessage(): Error parsing "
"message: " << errorMessage << endl;
}
f.close();
}
}
}
emit numMessagesChanged(mMessageListView->childCount());
}
void OutgoingDialog::setDocumentId( const QString &id )
{
mDocPrefs->setDoc( id );
}
-#include "outgoingdialog.moc"