remove itemFilter from calICalendar's addObserver method
git-svn-id: svn://10.0.0.236/trunk@172301 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -103,7 +103,7 @@ interface calICalendar : nsISupports
|
||||
*/
|
||||
const unsigned long ITEM_FILTER_CLASS_OCCURRENCES = 1 << 5;
|
||||
|
||||
void addObserver( in calIObserver observer, in unsigned long aItemFilter );
|
||||
void addObserver( in calIObserver observer );
|
||||
void removeObserver( in calIObserver observer );
|
||||
|
||||
/**
|
||||
|
||||
@@ -172,6 +172,11 @@ interface calIItemBase : nsISupports
|
||||
void removeAttendee(in calIAttendee attendee);
|
||||
void addAttendee(in calIAttendee attendee);
|
||||
void removeAllAttendees();
|
||||
|
||||
// return a list of occurrences of this item between the given dates
|
||||
void getOccurrencesBetween (in calIDateTime aStartDate, in calIDateTime aEndDate,
|
||||
out PRUint32 aCount,
|
||||
[array,size_is(aCount),retval] out calIItemOccurrence aOccurrences);
|
||||
};
|
||||
|
||||
//
|
||||
|
||||
@@ -292,37 +292,93 @@ calDateTime::GetInTimezone(const char *aTimezone, calIDateTime **aResult)
|
||||
NS_IMETHODIMP
|
||||
calDateTime::GetStartOfWeek(calIDateTime **aResult)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
struct icaltimetype icalt;
|
||||
ToIcalTime(&icalt);
|
||||
int day_of_week = icaltime_day_of_week(icalt);
|
||||
if (day_of_week > 1)
|
||||
icaltime_adjust(&icalt, - (day_of_week - 1), 0, 0, 0);
|
||||
icalt.hour = 0;
|
||||
icalt.minute = 0;
|
||||
icalt.second = 0;
|
||||
|
||||
calDateTime *cdt = new calDateTime(&icalt);
|
||||
NS_ADDREF(*aResult = cdt);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
calDateTime::GetEndOfWeek(calIDateTime **aResult)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
struct icaltimetype icalt;
|
||||
ToIcalTime(&icalt);
|
||||
int day_of_week = icaltime_day_of_week(icalt);
|
||||
if (day_of_week < 7)
|
||||
icaltime_adjust(&icalt, 7 - day_of_week, 0, 0, 0);
|
||||
icalt.hour = 23;
|
||||
icalt.minute = 59;
|
||||
icalt.second = 59;
|
||||
|
||||
calDateTime *cdt = new calDateTime(&icalt);
|
||||
NS_ADDREF(*aResult = cdt);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
calDateTime::GetStartOfMonth(calIDateTime **aResult)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
struct icaltimetype icalt;
|
||||
ToIcalTime(&icalt);
|
||||
icalt.day = 1;
|
||||
icalt.hour = 0;
|
||||
icalt.minute = 0;
|
||||
icalt.second = 0;
|
||||
calDateTime *cdt = new calDateTime(&icalt);
|
||||
NS_ADDREF(*aResult = cdt);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
calDateTime::GetEndOfMonth(calIDateTime **aResult)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
struct icaltimetype icalt;
|
||||
ToIcalTime(&icalt);
|
||||
icalt.day = icaltime_days_in_month(icalt.month, icalt.year);
|
||||
icalt.hour = 23;
|
||||
icalt.minute = 59;
|
||||
icalt.second = 59;
|
||||
calDateTime *cdt = new calDateTime(&icalt);
|
||||
NS_ADDREF(*aResult = cdt);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
calDateTime::GetStartOfYear(calIDateTime **aResult)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
struct icaltimetype icalt;
|
||||
ToIcalTime(&icalt);
|
||||
icalt.month = 1;
|
||||
icalt.day = 1;
|
||||
icalt.hour = 0;
|
||||
icalt.minute = 0;
|
||||
icalt.second = 0;
|
||||
calDateTime *cdt = new calDateTime(&icalt);
|
||||
NS_ADDREF(*aResult = cdt);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
calDateTime::GetEndOfYear(calIDateTime **aResult)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
struct icaltimetype icalt;
|
||||
ToIcalTime(&icalt);
|
||||
icalt.month = 12;
|
||||
icalt.day = 31;
|
||||
icalt.hour = 23;
|
||||
icalt.minute = 59;
|
||||
icalt.second = 59;
|
||||
calDateTime *cdt = new calDateTime(&icalt);
|
||||
NS_ADDREF(*aResult = cdt);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
|
||||
@@ -159,6 +159,24 @@ calEvent.prototype = {
|
||||
this.importUnpromotedProperties(event, promotedProps);
|
||||
// Importing didn't really change anything
|
||||
this.mDirty = false;
|
||||
},
|
||||
|
||||
getOccurrencesBetween: function(aStartDate, aEndDate, aCount) {
|
||||
if (this.recurrenceInfo) {
|
||||
return this.recurrenceInfo.getOccurrences(aStartDate, aEndDate, 0, aCount);
|
||||
}
|
||||
|
||||
if (aStartDate.compare(this.startDate) >= 0 &&
|
||||
aEndDate.compare(this.endDate) <= 0)
|
||||
{
|
||||
var occ = Components.classes["@mozilla.org/calendar/item-occurrence;1"].createInstance(Components.interfaces.calIOccurence);
|
||||
occ.initialize(this, this.startDate, this.endDate);
|
||||
aCount.value = 1;
|
||||
return ([ occ ]);
|
||||
}
|
||||
|
||||
aCount.value = 0;
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -390,6 +390,9 @@ calItemBase.prototype = {
|
||||
|
||||
},
|
||||
|
||||
getOccurrencesBetween: function(aStartDate, aEndDate, aCount) {
|
||||
throw Components.results.NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
};
|
||||
|
||||
function calItemOccurrence () {
|
||||
|
||||
@@ -118,25 +118,22 @@ calDavCalendar.prototype = {
|
||||
get suppressAlarms() { return false; },
|
||||
set suppressAlarms(aSuppressAlarms) { throw Components.results.NS_ERROR_NOT_IMPLEMENTED; },
|
||||
|
||||
// void addObserver( in calIObserver observer, in unsigned long aItemFilter );
|
||||
// void addObserver( in calIObserver observer );
|
||||
addObserver: function (aObserver, aItemFilter) {
|
||||
for (var i = 0; i < this.mObservers.length; i++) {
|
||||
if (this.mObservers[i].observer == aObserver &&
|
||||
this.mObservers[i].filter == aItemFilter)
|
||||
{
|
||||
for each (obs in this.mObservers) {
|
||||
if (obs == aObserver)
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.mObservers.push( {observer: aObserver, filter: aItemFilter} );
|
||||
this.mObservers.push(aObserver);
|
||||
},
|
||||
|
||||
// void removeObserver( in calIObserver observer );
|
||||
removeObserver: function (aObserver) {
|
||||
var newObservers = Array();
|
||||
for (var i = 0; i < this.mObservers.length; i++) {
|
||||
if (this.mObservers[i].observer != aObserver)
|
||||
newObservers.push(this.mObservers[i]);
|
||||
for each (obs in this.mObservers) {
|
||||
if (obs != aObserver)
|
||||
newObservers.push(obs);
|
||||
}
|
||||
this.mObservers = newObservers;
|
||||
},
|
||||
@@ -617,28 +614,28 @@ calDavCalendar.prototype = {
|
||||
// Helper functions
|
||||
//
|
||||
observeBatchChange: function (aNewBatchMode) {
|
||||
for (var i = 0; i < this.mObservers.length; i++) {
|
||||
for each (obs in this.mObservers) {
|
||||
if (aNewBatchMode)
|
||||
this.mObservers[i].observer.onStartBatch ();
|
||||
obs.onStartBatch ();
|
||||
else
|
||||
this.mObservers[i].observer.onEndBatch ();
|
||||
obs.onEndBatch ();
|
||||
}
|
||||
},
|
||||
|
||||
observeAddItem: function (aItem) {
|
||||
for (var i = 0; i < this.mObservers.length; i++)
|
||||
this.mObservers[i].observer.onAddItem (aItem);
|
||||
for each (obs in this.mObservers)
|
||||
obs.onAddItem (aItem);
|
||||
},
|
||||
|
||||
observeModifyItem: function (aOldItem, aNewItem) {
|
||||
for (var i = 0; i < this.mObservers.length; i++)
|
||||
this.mObservers[i].observer.onModifyItem (aOldItem, aNewItem);
|
||||
for each (obs in this.mObservers)
|
||||
obs.onModifyItem (aOldItem, aNewItem);
|
||||
},
|
||||
|
||||
observeDeleteItem: function (aDeletedItem) {
|
||||
for (var i = 0; i < this.mObservers.length; i++)
|
||||
this.mObservers[i].observer.onDeleteItem (aDeletedItem);
|
||||
}
|
||||
for each (obs in this.mObservers)
|
||||
obs.onDeleteItem (aDeletedItem);
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -151,7 +151,7 @@ calCompositeCalendar.prototype = {
|
||||
throw Components.results.NS_ERROR_NOT_IMPLEMENTED;
|
||||
},
|
||||
|
||||
// void addObserver( in calIObserver observer, in unsigned long aItemFilter );
|
||||
// void addObserver( in calIObserver observer );
|
||||
mCompositeObservers: Array(),
|
||||
addObserver: function (aObserver, aItemFilter) {
|
||||
const calICompositeObserver = Components.interfaces.calICompositeObserver;
|
||||
@@ -165,7 +165,7 @@ calCompositeCalendar.prototype = {
|
||||
}
|
||||
|
||||
for each (cal in this.mCalendars) {
|
||||
cal.addObserver(aObserver, aItemFilter);
|
||||
cal.addObserver(aObserver);
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
@@ -81,7 +81,7 @@ calICSCalendar.prototype = {
|
||||
.getService(Components.interfaces.calIICSService);
|
||||
|
||||
this.mObserver = new calICSObserver(this);
|
||||
this.mMemoryCalendar.addObserver(this.mObserver, calICalendar.ITEM_FILTER_TYPE_ALL);
|
||||
this.mMemoryCalendar.addObserver(this.mObserver);
|
||||
},
|
||||
|
||||
name: "",
|
||||
@@ -125,7 +125,7 @@ calICSCalendar.prototype = {
|
||||
this.mMemoryCalendar = Components.classes["@mozilla.org/calendar/calendar;1?type=memory"]
|
||||
.createInstance(Components.interfaces.calICalendar);
|
||||
// And don't forget to add our observer
|
||||
this.mMemoryCalendar.addObserver(this.mObserver, calICalendar.ITEM_FILTER_TYPE_ALL);
|
||||
this.mMemoryCalendar.addObserver(this.mObserver);
|
||||
|
||||
this.mObserver.onStartBatch();
|
||||
|
||||
@@ -272,8 +272,8 @@ calICSCalendar.prototype = {
|
||||
ctxt.processQueue();
|
||||
},
|
||||
|
||||
addObserver: function (aObserver, aItemFilter) {
|
||||
this.mObserver.addObserver(aObserver, aItemFilter);
|
||||
addObserver: function (aObserver) {
|
||||
this.mObserver.addObserver(aObserver);
|
||||
},
|
||||
removeObserver: function (aObserver) {
|
||||
this.mObserver.removeObserver(aObserver);
|
||||
@@ -405,23 +405,20 @@ calICSObserver.prototype = {
|
||||
|
||||
// This observer functions as proxy for all the other observers
|
||||
// So need addObserver and removeObserver here
|
||||
addObserver: function (aObserver, aItemFilter) {
|
||||
for (var i = 0; i < this.mObservers.length; i++) {
|
||||
if (this.mObservers[i].observer == aObserver &&
|
||||
this.mObservers[i].filter == aItemFilter)
|
||||
{
|
||||
addObserver: function (aObserver) {
|
||||
for each (obs in this.mObservers) {
|
||||
if (obs == aObserver)
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
this.mObservers.push( {observer: aObserver, filter: aItemFilter} );
|
||||
this.mObservers.push(aObserver);
|
||||
},
|
||||
|
||||
removeObserver: function (aObserver) {
|
||||
var newObservers = Array();
|
||||
for (var i = 0; i < this.mObservers.length; i++) {
|
||||
if (this.mObservers[i].observer != aObserver)
|
||||
newObservers.push(this.mObservers[i]);
|
||||
for each (obs in this.mObservers) {
|
||||
if (obs != aObserver)
|
||||
newObservers.push(obs);
|
||||
}
|
||||
this.mObservers = newObservers;
|
||||
}
|
||||
|
||||
@@ -97,25 +97,22 @@ calMemoryCalendar.prototype = {
|
||||
get suppressAlarms() { return false; },
|
||||
set suppressAlarms(aSuppressAlarms) { throw Components.results.NS_ERROR_NOT_IMPLEMENTED; },
|
||||
|
||||
// void addObserver( in calIObserver observer, in unsigned long aItemFilter );
|
||||
// void addObserver( in calIObserver observer );
|
||||
addObserver: function (aObserver, aItemFilter) {
|
||||
for (var i = 0; i < this.mObservers.length; i++) {
|
||||
if (this.mObservers[i].observer == aObserver &&
|
||||
this.mObservers[i].filter == aItemFilter)
|
||||
{
|
||||
for each (obs in this.mObservers) {
|
||||
if (obs == aObserver)
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
this.mObservers.push( {observer: aObserver, filter: aItemFilter} );
|
||||
this.mObservers.push(aObserver);
|
||||
},
|
||||
|
||||
// void removeObserver( in calIObserver observer );
|
||||
removeObserver: function (aObserver) {
|
||||
var newObservers = Array();
|
||||
for (var i = 0; i < this.mObservers.length; i++) {
|
||||
if (this.mObservers[i].observer != aObserver)
|
||||
newObservers.push(this.mObservers[i]);
|
||||
for each (obs in this.mObservers) {
|
||||
if (obs != aObserver)
|
||||
newObservers.push(obs);
|
||||
}
|
||||
this.mObservers = newObservers;
|
||||
},
|
||||
@@ -417,29 +414,28 @@ calMemoryCalendar.prototype = {
|
||||
// Helper functions
|
||||
//
|
||||
observeBatchChange: function (aNewBatchMode) {
|
||||
for (var i = 0; i < this.mObservers.length; i++) {
|
||||
for each (obs in this.mObservers) {
|
||||
if (aNewBatchMode)
|
||||
this.mObservers[i].observer.onStartBatch ();
|
||||
obs.onStartBatch ();
|
||||
else
|
||||
this.mObservers[i].observer.onEndBatch ();
|
||||
obs.onEndBatch ();
|
||||
}
|
||||
},
|
||||
|
||||
observeAddItem: function (aItem) {
|
||||
for (var i = 0; i < this.mObservers.length; i++) {
|
||||
this.mObservers[i].observer.onAddItem (aItem);
|
||||
}
|
||||
for each (obs in this.mObservers)
|
||||
obs.onAddItem (aItem);
|
||||
},
|
||||
|
||||
observeModifyItem: function (aOldItem, aNewItem) {
|
||||
for (var i = 0; i < this.mObservers.length; i++)
|
||||
this.mObservers[i].observer.onModifyItem (aOldItem, aNewItem);
|
||||
for each (obs in this.mObservers)
|
||||
obs.onModifyItem (aOldItem, aNewItem);
|
||||
},
|
||||
|
||||
observeDeleteItem: function (aDeletedItem) {
|
||||
for (var i = 0; i < this.mObservers.length; i++)
|
||||
this.mObservers[i].observer.onDeleteItem (aDeletedItem);
|
||||
}
|
||||
for each (obs in this.mObservers)
|
||||
obs.onDeleteItem (aDeletedItem);
|
||||
},
|
||||
}
|
||||
|
||||
/****
|
||||
|
||||
@@ -270,25 +270,22 @@ calStorageCalendar.prototype = {
|
||||
get suppressAlarms() { return false; },
|
||||
set suppressAlarms(aSuppressAlarms) { throw Components.results.NS_ERROR_NOT_IMPLEMENTED; },
|
||||
|
||||
// void addObserver( in calIObserver observer, in unsigned long aItemFilter );
|
||||
// void addObserver( in calIObserver observer );
|
||||
addObserver: function (aObserver, aItemFilter) {
|
||||
for (var i = 0; i < this.mObservers.length; i++) {
|
||||
if (this.mObservers[i].observer == aObserver &&
|
||||
this.mObservers[i].filter == aItemFilter)
|
||||
{
|
||||
for each (obs in this.mObservers) {
|
||||
if (obs == aObserver)
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
this.mObservers.push( {observer: aObserver, filter: aItemFilter} );
|
||||
this.mObservers.push(aObserver);
|
||||
},
|
||||
|
||||
// void removeObserver( in calIObserver observer );
|
||||
removeObserver: function (aObserver) {
|
||||
var newObservers = Array();
|
||||
for (var i = 0; i < this.mObservers.length; i++) {
|
||||
if (this.mObservers[i].observer != aObserver)
|
||||
newObservers.push(this.mObservers[i]);
|
||||
for each (obs in this.mObservers) {
|
||||
if (obs != aObserver)
|
||||
newObservers.push(obs);
|
||||
}
|
||||
this.mObservers = newObservers;
|
||||
},
|
||||
@@ -563,32 +560,32 @@ calStorageCalendar.prototype = {
|
||||
// Helper functions
|
||||
//
|
||||
observeLoad: function () {
|
||||
for (var i = 0; i < this.mObservers.length; i++)
|
||||
this.mObservers[i].observer.onLoad ();
|
||||
for each (obs in this.mObservers)
|
||||
obs.onLoad ();
|
||||
},
|
||||
|
||||
observeBatchChange: function (aNewBatchMode) {
|
||||
for (var i = 0; i < this.mObservers.length; i++) {
|
||||
for each (obs in this.mObservers) {
|
||||
if (aNewBatchMode)
|
||||
this.mObservers[i].observer.onStartBatch ();
|
||||
obs.onStartBatch ();
|
||||
else
|
||||
this.mObservers[i].observer.onEndBatch ();
|
||||
obs.onEndBatch ();
|
||||
}
|
||||
},
|
||||
|
||||
observeAddItem: function (aItem) {
|
||||
for (var i = 0; i < this.mObservers.length; i++)
|
||||
this.mObservers[i].observer.onAddItem (aItem);
|
||||
for each (obs in this.mObservers)
|
||||
obs.onAddItem (aItem);
|
||||
},
|
||||
|
||||
observeModifyItem: function (aOldItem, aNewItem) {
|
||||
for (var i = 0; i < this.mObservers.length; i++)
|
||||
this.mObservers[i].observer.onModifyItem (aOldItem, aNewItem);
|
||||
for each (obs in this.mObservers)
|
||||
obs.onModifyItem (aOldItem, aNewItem);
|
||||
},
|
||||
|
||||
observeDeleteItem: function (aDeletedItem) {
|
||||
for (var i = 0; i < this.mObservers.length; i++)
|
||||
this.mObservers[i].observer.onDeleteItem (aDeletedItem);
|
||||
for each (obs in this.mObservers)
|
||||
obs.onDeleteItem (aDeletedItem);
|
||||
},
|
||||
|
||||
//
|
||||
|
||||
@@ -195,7 +195,7 @@ function prepareCalendarUnifinder( )
|
||||
// set up our calendar event observer
|
||||
|
||||
var ccalendar = getDisplayComposite();
|
||||
ccalendar.addObserver(unifinderObserver, ccalendar.ITEM_FILTER_TYPE_EVENT);
|
||||
ccalendar.addObserver(unifinderObserver);
|
||||
refreshEventTree(); //Display something upon first load. onLoad doesn't work properly for observers
|
||||
}
|
||||
|
||||
|
||||
@@ -95,7 +95,7 @@ var unifinderToDoDataSourceObserver =
|
||||
function prepareCalendarToDoUnifinder()
|
||||
{
|
||||
var ccalendar = getDisplayComposite();
|
||||
ccalendar.addObserver(unifinderToDoDataSourceObserver, ccalendar.ITEM_FILTER_TYPE_TODO);
|
||||
ccalendar.addObserver(unifinderToDoDataSourceObserver);
|
||||
toDoUnifinderRefresh();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user