/usr/lib/thunderbird-addons/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/calendar-js/calDateTime.js is in xul-ext-lightning 1:24.4.0+build1-0ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 | /* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
Components.utils.import("resource://calendar/modules/ical.js");
Components.utils.import("resource://calendar/modules/calUtils.jsm");
Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
const UNIX_TIME_TO_PRTIME = 1000000;
function calDateTime(innerObject) {
this.wrappedJSObject = this;
this.innerObject = innerObject || ICAL.Time.epochTime.clone();
}
const calDateTimeInterfaces = [Components.interfaces.calIDateTime];
const calDateTimeClassID = Components.ID("{36783242-ec94-4d8a-9248-d2679edd55b9}");
calDateTime.prototype = {
QueryInterface: XPCOMUtils.generateQI(calDateTimeInterfaces),
classID: calDateTimeClassID,
classInfo: XPCOMUtils.generateCI({
contractID: "@mozilla.org/calendar/datetime;1",
classDescription: "Describes a Date/Time Object",
classID: calDateTimeClassID,
interfaces: calDateTimeInterfaces
}),
isMutable: true,
makeImmutable: function() this.isMutable = false,
clone: function() new calDateTime(this.innerObject.clone()),
isValid: true,
innerObject: null,
get nativeTime() this.innerObject.toUnixTime() * UNIX_TIME_TO_PRTIME,
set nativeTime(val) this.innerObject.fromUnixTime(val / UNIX_TIME_TO_PRTIME),
get year() this.innerObject.year,
set year(val) this.innerObject.year = val,
get month() this.innerObject.month - 1,
set month(val) this.innerObject.month = val + 1,
get day() this.innerObject.day,
set day(val) this.innerObject.day = val,
get hour() this.innerObject.hour,
set hour(val) this.innerObject.hour = val,
get minute() this.innerObject.minute,
set minute(val) this.innerObject.minute = val,
get second() this.innerObject.second,
set second(val) this.innerObject.second = val,
get timezone() new calICALJSTimezone(this.innerObject.zone),
set timezone(val) unwrapSetter(ICAL.Timezone, val, function(val) {
return this.innerObject.zone = val;
}, this),
resetTo: function (yr,mo,dy,hr,mi,sc,tz) {
this.innerObject.fromData({
year: yr, month: mo + 1, day: dy,
hour: hr, minute: mi, second: sc,
});
this.timezone = tz;
},
reset: function() this.innerObject.reset(),
get timezoneOffset() this.innerObject.utcOffset(),
get isDate() this.innerObject.isDate,
set isDate(val) this.innerObject.isDate = val,
get weekday() this.innerObject.dayOfWeek() - 1,
get yearday() this.innerObject.dayOfYear(),
toString: function() this.innerObject.toString(),
getInTimezone: unwrap(ICAL.Timezone, function(val) {
return new calDateTime(this.innerObject.convertToZone(val));
}),
addDuration: unwrap(ICAL.Duration, function(val) {
this.innerObject.addDuration(val);
}),
subtractDate: unwrap(ICAL.Time, function(val) {
return new calDuration(this.innerObject.subtractDateTz(val));
}),
compare: unwrap(ICAL.Time, function(val) {
if (this.innerObject.isDate != val.isDate) {
// Lightning expects 20120101 and 20120101T010101 to be equal
tz = (this.innerObject.isDate ? val.zone : this.innerObject.zone);
return this.innerObject.compareDateOnlyTz(val, tz);
} else {
// If both are dates or date-times, then just do the normal compare
return this.innerObject.compare(val);
}
}),
get startOfWeek() new calDateTime(this.innerObject.startOfWeek()),
get endOfWeek() new calDateTime(this.innerObject.endOfWeek()),
get startOfMonth() new calDateTime(this.innerObject.startOfMonth()),
get endOfMonth() new calDateTime(this.innerObject.endOfMonth()),
get startOfYear() new calDateTime(this.innerObject.startOfYear()),
get endOfYear() new calDateTime(this.innerObject.endOfYear()),
get icalString() this.innerObject.toICALString(),
set icalString(val) {
let jcalString;
if (val.length > 10) {
jcalString = ICAL.design.value["date-time"].fromICAL(val);
} else {
jcalString = ICAL.design.value.date.fromICAL(val);
}
this.innerObject = ICAL.Time.fromString(jcalString);
},
get jsDate() this.innerObject.toJSDate(),
set jsDate(val) this.innerObject.fromJSDate(val, true)
};
|