Hello.
I am trying to understand how the calendar api works:
http://maemo.org/api_refs/5.0/beta/calendar-backend/
I have several ical calendar exported from zimbra that i wish to import
in a calendar on the n900.
I manage to make something that seems to work (see attachement), but i
realise i have a problem with at least one entry.
In the zimbra ical output, the event starts the 17 of december at 10am
GMY and ends at 11 am GMT.
DTSTART;TZID="(GMT) Greenwich Mean Time - Dublin / Edinburgh / Lisbon / Lond
on":20091217T100000
DTEND;TZID="(GMT) Greenwich Mean Time - Dublin / Edinburgh / Lisbon / London
":20091217T110000
I am based in France (GMT+1). If i look in this event once imported in
the calendar, it is schedule for the 17 december, from 10am to 11 am instead of
11am to 12am.
The events that were set on GMT+1 (as the following, wich is supposed to
take place an hour before the previous one) are correctly set once
imported.
DTSTART;TZID="(GMT+01.00) Amsterdam / Berlin / Bern / Rome / Stockholm /
Vienna":20091217T100000
DTEND;TZID="(GMT+01.00) Amsterdam / Berlin / Bern / Rome / Stockholm /
Vienna":20091217T110000
Am i doing something wrong (like forgetting some option about timezone
settings), or is this a bug i should open on bugzilla.maemo.org ?
Aside from this, has anybody idea what is the difference between
CMulticalendar::importIcsFileData
and
CMulticalendar::importIcsFileDataProgressive
?
#include <CMulticalendar.h>
#include <CalendarErrors.h>
#include <iostream>
#include <vector>
int get_target_cal_id(CMulticalendar *multical, std::string calname){
CCalendar *curcal;
std::vector <CCalendar *> calvec = multical->getListCalFromMc ();
int out=0;
for ( size_t j = 0, size = calvec.size(); j < size; ++j ) {
curcal=calvec[j];
if (curcal->getCalendarName () == calname){
out=curcal->getCalendarId ();
}
}
multical->releaseListCalendars(calvec);
return out;
}
int create_cal(CMulticalendar *multical,std::string calname){
cout <<"Creating calendar "<<calname<<"\n";
CCalendar *newcal;
int perror;
newcal=multical->addCalendar(
calname,
COLOUR_RED,
0,
1,
(CalendarType) 0,
"whot",
"whot",
perror
);
if(newcal==NULL) {
cout << "Problem creating a new calendar: "<<perror<<"\n";
exit(0);
}
return newcal->getCalendarId();
}
int import_ical(CMulticalendar *multical,std::string filename,int cal_id) {
cout <<"importing "<<filename<<" to cal "<<cal_id<<"\n";
std::string eventid;
int iDuplicateCountTask;
int iDuplicateCountEvent;
int iDuplicateCountJournal;
int perror;
multical->importIcsFileData( filename,
cal_id,
eventid,
iDuplicateCountTask,
iDuplicateCountEvent,
iDuplicateCountJournal,
perror
);
cout<<"perror="<<perror<<"\n";
cout<<"dup task="<<iDuplicateCountTask<<"\n";
cout<<"dup evnt="<<iDuplicateCountEvent<<"\n";
cout<<"dup journal="<<iDuplicateCountJournal<<"\n";
return 0;
}
int main(int argc, char *argv[])
{
int target_id;
CCalendar * target_cal;
int perror;
CMulticalendar *multical = CMulticalendar::MCInstance ();
std::string target_name="tam calendar";
std::string ical_pamadio="/home/user/dev/calendar/pamadio.ical";
std::string ical_tam="/home/user/dev/calendar/gss.ical";
std::string ical_gss="/home/user/dev/calendar/tam.ical";
target_id=get_target_cal_id(multical,target_name);
if(target_id==0) {
cout <<"No initial calendar: "<<target_name<<"\n";
} else {
if (not multical->deleteCalendar(target_id,perror)) {
cout<< "Problem deleting calendar error code="<< perror << "\n";
exit(1);
}
cout << "Deleting existing calendar "<<target_name<<"\n";
}
target_id=create_cal(multical,target_name);
cout <<"target_id="<<target_id<<"\n";
import_ical(multical,ical_pamadio,target_id);
import_ical(multical,ical_tam,target_id);
import_ical(multical,ical_gss,target_id);
target_cal=multical->getCalendarById(target_id,perror);
if(perror!=CALENDAR_OPERATION_SUCCESSFUL){
cout <<"Error getting calendar by id. error="<<perror<<" id="<<target_id<<"\n";
exit(1);
}
free(target_cal);
}
_______________________________________________
maemo-developers mailing list
[email protected]
https://lists.maemo.org/mailman/listinfo/maemo-developers