ngwt__Note *IncidenceConverter::convertToNote(KCal::Journal *journal) { if(!journal) return 0; ngwt__Note *note = soap_new_ngwt__Note(soap(), -1); note->startDate = 0; if(!convertToCalendarItem(journal, note)) { soap_dealloc(soap(), note); return 0; } if(journal->doesFloat()) { if(journal->dtStart().isValid()) note->startDate = qDateToString(journal->dtStart().date()); } else { if(journal->dtStart().isValid()) note->startDate = qDateTimeToString(journal->dtStart(), mTimezone); } if(!note->subject) note->subject = qStringToString(QString("NO SUBJECT")); return note; }
ngwt__Task* IncidenceConverter::convertToTask( KCal::Todo* todo ) { if ( !todo ) return 0; ngwt__Task* task = soap_new_ngwt__Task( soap(), -1 ); task->startDate = 0; task->dueDate = 0; task->assignedDate = 0; task->taskPriority = 0; task->completed = 0; if ( !convertToCalendarItem( todo, task ) ) { soap_dealloc( soap(), task ); return 0; } if ( todo->dtStart().isValid() ) task->startDate = kDateTimeToString( todo->dtStart(), mTimeSpec ); if ( todo->hasDueDate() ) { task->dueDate = kDateTimeToString( todo->dtDue() ); } // FIXME: Restore custom priorities QString priority = QString::number( todo->priority() ); task->taskPriority = qStringToString( priority ); task->completed = (bool*)soap_malloc( soap(), 1 ); if ( todo->isCompleted() ) (*task->completed) = true; else (*task->completed) = false; return task; }
ngwt__Appointment *IncidenceConverter::convertToAppointment(KCal::Event *event) { kdDebug() << "IncidenceConverter::convertToAppointment()" << endl; if(!event) return 0; ngwt__Appointment *appointment = soap_new_ngwt__Appointment(soap(), -1); appointment->startDate = 0; appointment->endDate = 0; appointment->startDay = 0; appointment->endDay = 0; appointment->acceptLevel = 0; appointment->alarm = 0; appointment->allDayEvent = 0; appointment->place = 0; appointment->timezone = 0; if(!convertToCalendarItem(event, appointment)) { soap_dealloc(soap(), appointment); return 0; } if(event->doesFloat()) { bool *allDayEvent = (bool *)soap_malloc(soap(), 1); (*allDayEvent) = true; appointment->allDayEvent = allDayEvent; if(event->dtStart().isValid()) { /* kdDebug() << " convertToAppointment() raw start date: " << event->dtStart().toString() << endl;*/ QDateTime start = event->dtStart(); start.setTime(QTime(0, 0, 0)); appointment->startDate = qDateTimeToChar(start, mTimezone); //appointment->startDay = qDateToString( event->dtStart().date()/*.addDays( -1 )*/ ); /* kdDebug() << " converted start date: " << appointment->startDate << endl;*/ } else kdDebug() << " event start date not valid " << endl; if(event->hasEndDate()) { // kdDebug() << " convertToAppointment() raw end date: " << event->dtEnd().toString() << endl; QDateTime end = event->dtEnd(); end = end.addDays(1); end.setTime(QTime(0, 0, 0)); appointment->endDate = qDateTimeToChar(end, mTimezone); //appointment->endDay = qDateToString( event->dtEnd().date() ); // kdDebug() << " converted end date:" << appointment->endDate << endl; } else kdDebug() << " event end date not valid " << endl; } else { appointment->allDayEvent = 0; if(event->dtStart().isValid()) appointment->startDate = qDateTimeToChar(event->dtStart(), mTimezone); if(event->hasEndDate()) appointment->endDate = qDateTimeToChar(event->dtEnd(), mTimezone); } enum ngwt__AcceptLevel *al = (enum ngwt__AcceptLevel *)soap_malloc(soap(), sizeof(enum ngwt__AcceptLevel)); *al = Busy; appointment->acceptLevel = al; KCal::Alarm::List alarms = event->alarms(); if(!alarms.isEmpty()) { ngwt__Alarm *alarm = soap_new_ngwt__Alarm(soap(), -1); alarm->__item = alarms.first()->startOffset().asSeconds() * -1; bool *enabled = (bool *)soap_malloc(soap(), sizeof(bool)); *enabled = alarms.first()->enabled(); alarm->enabled = enabled; appointment->alarm = alarm; } else appointment->alarm = 0; if(!event->location().isEmpty()) { std::string *location = qStringToString(event->location()); appointment->place = location; } else appointment->place = 0; appointment->timezone = 0; return appointment; }