Exemple #1
0
QDateTime GWConverter::charToQDateTime( const char *str,
                                        const QString &timezone )
{
  if ( !str ) return QDateTime();
  QDateTime utc = charToQDateTime( str );
  return KPimPrefs::utcToLocalTime( utc, timezone );
}
bool IncidenceConverter::convertFromCalendarItem(ngwt__CalendarItem *item,
        KCal::Incidence *incidence)
{
    incidence->setCustomProperty("GWRESOURCE", "UID",
                                 stringToQString(item->id));

    if(item->subject && !item->subject->empty())
        incidence->setSummary(stringToQString(item->subject));

    kdDebug() << "SUMMARY: " << incidence->summary() << endl;

    if(item->created)
    {
        kdDebug() << "item created at " << item->created << endl;
        incidence->setCreated(charToQDateTime(item->created, mTimezone));
    }
    if(item->modified != 0)
    {
        kdDebug() << "item modified at " << item->created << endl;
        incidence->setLastModified(charToQDateTime(item->modified, mTimezone));
    }

    getItemDescription(item, incidence);
    getAttendees(item, incidence);

    if(item->recurrenceKey)
        incidence->setCustomProperty("GWRESOURCE", "RECURRENCEKEY", QString::number(*item->recurrenceKey));

    /*
      // This must just be a very early cut at recurrence
      if ( item->rdate && item->rdate->date ) {
        std::vector<xsd__date>* dateList = item->rdate->date;

        std::vector<xsd__date>::const_iterator it;
        for ( it = dateList->begin(); it != dateList->end(); ++it ) {
          QDate date = QDate::fromString( s2q( *it ), Qt::ISODate );
          if ( date.isValid() )
        }
      }
    */
    /*
        bool*                                isRecurring                    0;
        std::string*                         iCalId                         0;
    */

    return true;
}
KCal::Event *IncidenceConverter::convertFromAppointment(ngwt__Appointment *appointment)
{
    kdDebug() << "IncidenceConverter::convertFromAppointment()" << endl;
    if(!appointment)
        return 0;

    KCal::Event *event = new KCal::Event();

    if(!convertFromCalendarItem(appointment, event))
    {
        delete event;
        return 0;
    }

    if(appointment->allDayEvent && (*appointment->allDayEvent))
    {
        event->setFloats(true);

        if(appointment->startDay != 0)
            event->setDtStart(stringToQDate(appointment->startDay).addDays(1));

        if(appointment->endDay != 0)
            event->setDtEnd(stringToQDate(appointment->endDay));

        kdDebug() << " all day event." << endl;
    }
    else
    {
        event->setFloats(false);

        if(appointment->startDate != 0)
        {
            event->setDtStart(charToQDateTime(appointment->startDate, mTimezone));
        }

        if(appointment->endDate != 0)
            event->setDtEnd(charToQDateTime(appointment->endDate, mTimezone));
    }

    kdDebug() << "start date: " << event->dtStart() << endl;
    kdDebug() << "end date: " << event->dtEnd() << endl;

    if(appointment->alarm)
    {
        KCal::Alarm *alarm = event->newAlarm();
        alarm->setStartOffset(appointment->alarm->__item * -1);
        alarm->setEnabled(appointment->alarm->enabled);
    }

    if(appointment->place)
        event->setLocation(stringToQString(appointment->place));

    if(appointment->acceptLevel)
    {
        if(*appointment->acceptLevel == Tentative)
            event->setTransparency(KCal::Event::Transparent);
        else
            event->setTransparency(KCal::Event::Opaque);
    }

    return event;
}