diff --git a/calendar/base/src/calEvent.js b/calendar/base/src/calEvent.js index 935c603dde56..4cedc95ace06 100644 --- a/calendar/base/src/calEvent.js +++ b/calendar/base/src/calEvent.js @@ -1,5 +1,7 @@ function calEvent() { this.wrappedJSObject = this; + this.initItemBase(); + this.initEvent(); } calEvent.prototype = { @@ -10,13 +12,18 @@ calEvent.prototype = { !aIID.equals(Components.interfaces.calIItemBase) && !aIID.equals(Components.interfaces.calIEvent)) { - dump ("calEvent QI failed to " + aIID + "\n"); throw Components.results.NS_ERROR_NO_INTERFACE; } return this; }, + initEvent: function () { + this.mStartDate = createCalDateTime(); + this.mEndDate = createCalDateTime(); + this.mStampDate = createCalDateTime(); + }, + clone: function () { var m = new calEvent(); this.cloneItemBaseInto(m); diff --git a/calendar/base/src/calEvent.js.pre b/calendar/base/src/calEvent.js.pre index b3fcf20132e8..19ef83b73b7a 100644 --- a/calendar/base/src/calEvent.js.pre +++ b/calendar/base/src/calEvent.js.pre @@ -45,6 +45,8 @@ // function calEvent() { this.wrappedJSObject = this; + this.initItemBase(); + this.initEvent(); } calEvent.prototype = { @@ -55,13 +57,18 @@ calEvent.prototype = { !aIID.equals(Components.interfaces.calIItemBase) && !aIID.equals(Components.interfaces.calIEvent)) { - dump ("calEvent QI failed to " + aIID + "\n"); throw Components.results.NS_ERROR_NO_INTERFACE; } return this; }, + initEvent: function () { + this.mStartDate = createCalDateTime(); + this.mEndDate = createCalDateTime(); + this.mStampDate = createCalDateTime(); + }, + clone: function () { var m = new calEvent(); this.cloneItemBaseInto(m); diff --git a/calendar/base/src/calItemBase.js b/calendar/base/src/calItemBase.js index e1cfd4c229ca..2a0f6ed47ec1 100644 --- a/calendar/base/src/calItemBase.js +++ b/calendar/base/src/calItemBase.js @@ -30,6 +30,18 @@ calItemBase.prototype = { }, + initItemBase: function () { + this.mCreationDate = createCalDateTime(); + this.mAlarmTime = createCalDateTime(); + + + this.mRecurrenceInfo = null; + this.mAttachments = null; + this.mContacts = null; + this.mProperties = null; + }, + + cloneItemBaseInto: function (m) { m.mImmutable = false; @@ -107,3 +119,14 @@ calItemOccurrence.prototype = { next: null, previous: null }; + + + + + +function createCalDateTime() { + const kCdtClass = Components.classes["@mozilla.org/calendar/datetime;1"]; + const kCdtInterface = Components.interfaces.calIDateTime; + + return kCdtClass.createInstance(kCdtInterface); +} diff --git a/calendar/base/src/calItemBase.js.pre b/calendar/base/src/calItemBase.js.pre index 2e201ebc3fc4..453684193a84 100644 --- a/calendar/base/src/calItemBase.js.pre +++ b/calendar/base/src/calItemBase.js.pre @@ -71,6 +71,18 @@ calItemBase.prototype = { this.mImmutable = true; }, + // initialize this class's members + initItemBase: function () { + this.mCreationDate = createCalDateTime(); + this.mAlarmTime = createCalDateTime(); + + // fix me + this.mRecurrenceInfo = null; + this.mAttachments = null; + this.mContacts = null; + this.mProperties = null; + }, + // for subclasses to use; copies the ItemBase's values // into m cloneItemBaseInto: function (m) { @@ -149,3 +161,14 @@ calItemOccurrence.prototype = { next: null, previous: null }; + +// +// helper functions +// + +function createCalDateTime() { + const kCdtClass = Components.classes["@mozilla.org/calendar/datetime;1"]; + const kCdtInterface = Components.interfaces.calIDateTime; + + return kCdtClass.createInstance(kCdtInterface); +}