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.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/korganizer/outgoingdialog.cpp b/korganizer/outgoingdialog.cpp
index 0fc90c4..7253c8e 100644
--- a/korganizer/outgoingdialog.cpp
+++ b/korganizer/outgoingdialog.cpp
@@ -1,173 +1,173 @@
/*
This file is part of KOrganizer.
Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#include <kdebug.h>
#include <qfile.h>
#include <qdir.h>
#include <qtextstream.h>
#include <kglobal.h>
#include <klocale.h>
#include <ktempfile.h>
#include <kstandarddirs.h>
#include <libkcal/event.h>
#include <libkcal/freebusy.h>
//#include <libkcal/imipscheduler.h>
#include <libkcal/dummyscheduler.h>
#include <libkcal/icalformat.h>
#include <libkcal/calendar.h>
#ifndef KORG_NOMAIL
#include "mailscheduler.h"
#endif
#include "koprefs.h"
#include "outgoingdialog.h"
#include "koeventviewerdialog.h"
#include "docprefs.h"
ScheduleItemOut::ScheduleItemOut(QListView *parent,IncidenceBase *ev,
Scheduler::Method method,
const QString &recipients)
: QListViewItem(parent)
{
mIncidence = ev;
mMethod = method;
mRecipients = recipients;
// kdDebug() << "ScheduleItemOut: setting the summary" << endl;
//Set the summary
- if(ev->type() != "FreeBusy") {
+ if(ev->typeID() != freebusyID ) {
Incidence *incidence = static_cast<Incidence *>(ev);
setText(0,incidence->summary());
} else {
setText(0,i18n("Free Busy Object"));
}
// kdDebug() << "ScheduleItemOut: checking if the object is an event" << endl;
//If the object is an event
- if(ev->type()=="Event") {
+ if(ev->typeID()== eventID ) {
Event *event = static_cast<Event *>(ev);
setText(1,event->dtStartDateStr());
if (event->doesFloat()) { //If the event floats set the start and end times to no time
setText(2,i18n("no time"));
setText(4,i18n("no time"));
} else { //If it does not float
setText(2,event->dtStartTimeStr());
if (event->hasDuration()) {
setText(4,event->dtEndTimeStr());
} else {
setText(4,i18n("no time"));
}
}
if (event->hasEndDate()) {
setText(3,event->dtEndDateStr());
}
else {
setText(3,i18n("no time"));
}
}
//If the object is an Todo
- if(ev->type()=="Todo") {
+ if(ev->typeID() == todoID ) {
Todo *event = static_cast<Todo *>(ev);
if (event->hasStartDate()) {
setText(1,event->dtStartDateStr());
if (!event->doesFloat()) {
setText(2,event->dtStartTimeStr());
}
}
if (event->hasDueDate()) {
setText(3,event->dtDueDateStr());
if (!event->doesFloat()) {
setText(4,event->dtDueTimeStr());
}
}
}
// kdDebug() << "ScheduleItemOut: checking if the object is a FreeBusy object" << endl;
//If the object is a freebusy object
- if(ev->type() == "FreeBusy") {
+ if(ev->typeID() == freebusyID ) {
FreeBusy *freebusy = static_cast<FreeBusy *>(ev);
setText(1,freebusy->dtStartDateStr());
setText(2,freebusy->dtStartTimeStr());
//Must try and get this to the users local settings
setText(3,KGlobal::locale()->formatDate( freebusy->dtEnd().date() ) );
setText(4,KGlobal::locale()->formatTime( freebusy->dtEnd().time() ) );
}
// kdDebug() << "ScheduleItemOut: Setting the method" << endl;
//Set the Method
setText(5,Scheduler::translatedMethodName(mMethod));
}
OutgoingDialog::OutgoingDialog(Calendar *calendar,QWidget* parent,
const char* name,bool modal,
WFlags fl)
: OutgoingDialog_base(parent,name,modal,fl)
{
mCalendar = calendar;
mFormat = new ICalFormat;
if (KOPrefs::instance()->mIMIPScheduler == KOPrefs::IMIPDummy ) {
mScheduler = new DummyScheduler(mCalendar);
} else {
#ifndef KORG_NOMAIL
mScheduler = new MailScheduler(mCalendar);
#else
mScheduler = new DummyScheduler(mCalendar);
#endif
}
mMessageListView->setColumnAlignment(1,AlignHCenter);
mMessageListView->setColumnAlignment(2,AlignHCenter);
mMessageListView->setColumnAlignment(3,AlignHCenter);
mMessageListView->setColumnAlignment(4,AlignHCenter);
QObject::connect(mMessageListView,SIGNAL(doubleClicked(QListViewItem *)),
this,SLOT(showEvent(QListViewItem *)));
mDocPrefs = new DocPrefs("groupschedule");
loadMessages();
}
OutgoingDialog::~OutgoingDialog()
{
delete mDocPrefs;
delete mFormat;
}
bool OutgoingDialog::addMessage(IncidenceBase *incidence,Scheduler::Method method)
{
kdDebug() << "Outgoing::addMessage" << "Method:" << method << endl;
if (method == Scheduler::Publish) return false;
if( mDocPrefs ) {
if (method != Scheduler::Cancel) {
mDocPrefs->writeEntry( incidence->uid()+"-scheduled", true );
} else {
if (!mDocPrefs->readBoolEntry(incidence->uid()+"-scheduled") )
return true;
}
}
if (KOPrefs::instance()->mIMIPSend == KOPrefs::IMIPOutbox) {
new ScheduleItemOut(mMessageListView,incidence,method);
saveMessage(incidence,method);
@@ -180,132 +180,132 @@ bool OutgoingDialog::addMessage(IncidenceBase *incidence,Scheduler::Method metho
}
bool OutgoingDialog::addMessage(IncidenceBase *incidence,Scheduler::Method method,
const QString &recipients)
{
//if (method != Scheduler::Publish) return false;
if( mDocPrefs ) {
if (method != Scheduler::Cancel) {
mDocPrefs->writeEntry( incidence->uid()+"-scheduled", true );
} else {
if (!mDocPrefs->readBoolEntry(incidence->uid()+"-scheduled") )
return true;
}
}
if (KOPrefs::instance()->mIMIPSend == KOPrefs::IMIPOutbox) {
new ScheduleItemOut(mMessageListView,incidence,method,recipients);
saveMessage(incidence,method,recipients);
emit numMessagesChanged(mMessageListView->childCount());
}
else {
mScheduler->performTransaction(incidence,method,recipients);
}
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" ) {
+ if ( item->event()->typeID() == eventID ) {
event = static_cast<Event *>(item->event());
}
- if ( item->event()->type()=="Todo" ) {
+ if ( item->event()->typeID() == todoID ) {
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