mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-13 13:25:37 +00:00
first stab at making import work. bug 285019, r=pavlov
This commit is contained in:
parent
7e752b0ccd
commit
dedd00cfb3
@ -79,9 +79,6 @@ const extensionCsv = ".csv";
|
||||
const filterRdf = gCalendarBundle.getString("filterRdf");
|
||||
const extensionRdf = ".rdf";
|
||||
|
||||
if( opener && "gICalLib" in opener && opener.gICalLib )
|
||||
gICalLib = opener.gICalLib;
|
||||
|
||||
// convert to and from Unicode for file i/o
|
||||
function convertFromUnicode( aCharset, aSrc )
|
||||
{
|
||||
@ -134,7 +131,7 @@ function loadEventsFromFile()
|
||||
var flags = ( promptService.BUTTON_TITLE_IS_STRING * promptService.BUTTON_POS_0 ) +
|
||||
( promptService.BUTTON_TITLE_IS_STRING * promptService.BUTTON_POS_1 ) +
|
||||
( promptService.BUTTON_TITLE_IS_STRING * promptService.BUTTON_POS_2 );
|
||||
var intoCalName = getSelectedCalendarNameOrDefault();
|
||||
var intoCalName = getDefaultCalendar();
|
||||
var importAllStr = gCalendarBundle.getString( "importAll" );
|
||||
var promptStr = gCalendarBundle.getString( "promptForEach" );
|
||||
var discardAllStr = gCalendarBundle.getString( "discardAll" );
|
||||
@ -158,8 +155,7 @@ function loadEventsFromFile()
|
||||
// fall thru to process ics data
|
||||
case 0 : // ics
|
||||
case 3 : // vcs
|
||||
parseIcalEvents(tmpCalendar, aDataStream);
|
||||
parseIcalToDos(tmpCalendar, aDataStream);
|
||||
parseIcal(tmpCalendar, aDataStream);
|
||||
break;
|
||||
case 2: // csv
|
||||
parseOutlookCSVEvents(tmpCalendar, aDataStream);
|
||||
@ -276,14 +272,13 @@ function createUniqueID()
|
||||
* silent: If silent, adds them all to selected (or default) calendar.
|
||||
* else shows new event dialog on each event, using selected (or default)
|
||||
* calendar as the initial calendar in dialog.
|
||||
* calendarPath (optional): if present, overrides selected calendar.
|
||||
* Value is calendarPath from another item in calendar list.
|
||||
* calendar (optional): if present, overrides selected calendar.
|
||||
* Value is a calICalendar object.
|
||||
*/
|
||||
function addEventsToCalendar( calendarEventArray, silent, calendarPath )
|
||||
function addEventsToCalendar(calendarEventArray, silent, calendar)
|
||||
{
|
||||
if( ! calendarPath ) // null, "", or false
|
||||
{
|
||||
calendarPath = getSelectedCalendarPathOrDefault();
|
||||
if (!calendar) {
|
||||
calendarPath = getDefaultCalendar();
|
||||
}
|
||||
|
||||
gICalLib.batchMode = true;
|
||||
@ -399,31 +394,6 @@ function getSelectedCalendarPathOrDefault()
|
||||
}
|
||||
|
||||
|
||||
/** Return the calendarPath of the calendar selected in list-calendars-listbox,
|
||||
or the default calendarPath if none selected. **/
|
||||
function getSelectedCalendarNameOrDefault()
|
||||
{
|
||||
var calendarName = null;
|
||||
//see if there's a server selected in the calendar window first
|
||||
//get the selected calendar
|
||||
if( document.getElementById( "list-calendars-listbox" ) )
|
||||
{
|
||||
var selectedCalendarItem = document.getElementById( "list-calendars-listbox" ).selectedItem;
|
||||
if( selectedCalendarItem )
|
||||
{
|
||||
var listCell = selectedCalendarItem.firstChild;
|
||||
if ( listCell )
|
||||
calendarName = listCell.getAttribute( "label" );
|
||||
}
|
||||
}
|
||||
if( ! calendarName ) // null, "", or false
|
||||
{
|
||||
calendarName = gCalendarWindow.calendarManager.getDefaultCalendarName();
|
||||
}
|
||||
return calendarName;
|
||||
}
|
||||
|
||||
|
||||
/** oeDateTime is an oeDateTime object, not a javascript date **/
|
||||
function convertZuluToLocalOEDateTime( oeDateTime )
|
||||
{
|
||||
@ -893,46 +863,36 @@ function parseOutlookTextField(args, textIndexName, eventFields)
|
||||
return textString; // null or empty
|
||||
}
|
||||
|
||||
/**** parseIcalEvents
|
||||
/**** parseIcal
|
||||
*
|
||||
* Takes a text block of iCalendar events and tries to split that into individual events.
|
||||
* Takes a text block of iCalendar events and tries to split that into
|
||||
* individual items
|
||||
* Parses those events and adds them to a calendar.
|
||||
*/
|
||||
|
||||
function parseIcalEvents(calendar, icalStr)
|
||||
{
|
||||
for (var i=0, j=0; (i = icalStr.indexOf("BEGIN:VEVENT", j)) != -1; ) {
|
||||
// try to find the begin and end of an event. ParseIcalString does not support VCALENDAR
|
||||
j = icalStr.indexOf("END:VEVENT", i + "BEGIN:VEVENT".length);
|
||||
j = (j == -1? icalStr.length : j + "END:VEVENT".length);
|
||||
|
||||
var eventData = icalStr.substring(i, j);
|
||||
var calendarEvent = createEvent();
|
||||
calendarEvent.icalString = eventData;
|
||||
|
||||
calendar.addItem(calendarEvent, null);
|
||||
}
|
||||
}
|
||||
|
||||
/**** parseIcalToDos
|
||||
*
|
||||
* Takes a text block of iCalendar todos and tries to split that into individual todos.
|
||||
* Parses those toDos and returns an array of calendarToDos.
|
||||
*/
|
||||
|
||||
function parseIcalToDos(calendar, icalStr)
|
||||
function parseIcal(calendar, icalStr)
|
||||
{
|
||||
for(var i=0, j=0; (i = icalStr.indexOf("BEGIN:VTODO", j)) != -1; ) {
|
||||
// try to find the begin and end of an toDo. ParseIcalString does not support VCALENDAR
|
||||
j = icalStr.indexOf("END:VTODO", i + "BEGIN:VTODO".length);
|
||||
j = (j == -1? icalStr.length : j + "END:VTODO".length);
|
||||
|
||||
var eventData = icalStr.substring(i, j);
|
||||
var calendarToDo = createToDo();
|
||||
calendarToDo.icalString = eventData;
|
||||
|
||||
calendar.addItem(calendarToDo, null);
|
||||
}
|
||||
icssrv = Components.classes["@mozilla.org/calendar/ics-service;1"]
|
||||
.getService(Components.interfaces.calIICSService);
|
||||
var calComp = icssrv.parseICS(icalStr);
|
||||
var subComp = calComp.getFirstSubcomponent("ANY");
|
||||
while (subComp) {
|
||||
switch (subComp.componentType) {
|
||||
case "VEVENT":
|
||||
var event = createEvent();
|
||||
event.icalComponent = subComp;
|
||||
calendar.addItem(event, null);
|
||||
break;
|
||||
case "VTODO":
|
||||
var todo = createToDo();
|
||||
todo.icalComponent = subComp;
|
||||
calendar.addItem(todo, null);
|
||||
break;
|
||||
default:
|
||||
// Nothing. ignore this thing
|
||||
}
|
||||
subComp = calComp.getNextSubcomponent("ANY");
|
||||
}
|
||||
}
|
||||
|
||||
/**** transformXCSData: transform into ics data
|
||||
@ -1986,31 +1946,5 @@ function getXmlDocument ( eventList )
|
||||
}
|
||||
|
||||
function startImport() {
|
||||
/*
|
||||
var ImportExportErrorHandler = {
|
||||
errorreport : "",
|
||||
onLoad : function() {},
|
||||
onStartBatch : function() {},
|
||||
onEndBatch : function() {},
|
||||
onAddItem : function( calendarEvent ) {},
|
||||
onModifyItem : function( calendarEvent, originalEvent ) {},
|
||||
onDeleteItem : function( calendarEvent, nextEvent ) {},
|
||||
onAlarm : function( calendarEvent ) {},
|
||||
onError : function( severity, errorid, errorstring )
|
||||
{
|
||||
this.errorreport=this.errorreport+gCalendarBundle.getString( errorid )+"\n";
|
||||
},
|
||||
showErrors : function () {
|
||||
if( this.errorreport != "" )
|
||||
alert( "Errors:\n"+this.errorreport );
|
||||
}
|
||||
|
||||
}
|
||||
gICalLib.addObserver( ImportExportErrorHandler );
|
||||
ImportExportErrorHandler.showErrors();
|
||||
gICalLib.removeObserver( ImportExportErrorHandler );
|
||||
*/
|
||||
|
||||
loadEventsFromFile();
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user