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:
vladimir%pobox.com
2005-04-15 18:51:47 +00:00
parent d19960fc76
commit 4cce8d6f2f
12 changed files with 157 additions and 88 deletions

View File

@@ -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 );
/**

View File

@@ -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);
};
//

View File

@@ -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

View File

@@ -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;
}
};

View File

@@ -390,6 +390,9 @@ calItemBase.prototype = {
},
getOccurrencesBetween: function(aStartDate, aEndDate, aCount) {
throw Components.results.NS_ERROR_NOT_IMPLEMENTED;
}
};
function calItemOccurrence () {

View File

@@ -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);
},
};

View File

@@ -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);
}
},

View File

@@ -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;
}

View File

@@ -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);
},
}
/****

View File

@@ -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);
},
//

View File

@@ -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
}

View File

@@ -95,7 +95,7 @@ var unifinderToDoDataSourceObserver =
function prepareCalendarToDoUnifinder()
{
var ccalendar = getDisplayComposite();
ccalendar.addObserver(unifinderToDoDataSourceObserver, ccalendar.ITEM_FILTER_TYPE_TODO);
ccalendar.addObserver(unifinderToDoDataSourceObserver);
toDoUnifinderRefresh();
}