Fix bug 869407 - Part 2 - ical.js backend - Split calIDateTime interface for js/cpp. r=mmecca
--HG-- rename : calendar/base/public/calIDateTime.idl => calendar/base/backend/icaljs/calIDateTimeJS.idl
This commit is contained in:
Родитель
ca768b125e
Коммит
cd65195f31
|
@ -0,0 +1,235 @@
|
||||||
|
/* 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/. */
|
||||||
|
|
||||||
|
#include "nsISupports.idl"
|
||||||
|
|
||||||
|
interface calIDuration;
|
||||||
|
interface calITimezone;
|
||||||
|
[ptr] native icaltimetypeptr(struct icaltimetype);
|
||||||
|
|
||||||
|
[scriptable, uuid(04139dff-a6f0-446d-9aec-2062df887ef2)]
|
||||||
|
interface calIDateTime : nsISupports
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* isMutable is true if this instance is modifiable.
|
||||||
|
* If isMutable is false, any attempts to modify
|
||||||
|
* the object will throw NS_ERROR_OBJECT_IS_IMMUTABLE.
|
||||||
|
*/
|
||||||
|
readonly attribute boolean isMutable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Make this calIDateTime instance immutable.
|
||||||
|
*/
|
||||||
|
void makeImmutable();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clone this calIDateTime instance into a new
|
||||||
|
* mutable object.
|
||||||
|
*/
|
||||||
|
calIDateTime clone();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* valid is true if this object contains a valid
|
||||||
|
* time/date.
|
||||||
|
*/
|
||||||
|
// true if this thing is set/valid
|
||||||
|
readonly attribute boolean isValid;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* nativeTime contains this instance's PRTime value relative
|
||||||
|
* to the UTC epoch, regardless of the timezone that's set
|
||||||
|
* on this instance. If nativeTime is set, the given UTC PRTime
|
||||||
|
* value is exploded into year/month/etc, forcing the timezone
|
||||||
|
* setting to UTC.
|
||||||
|
*
|
||||||
|
* @warning: When the timezone is set to 'floating', this will return
|
||||||
|
* the nativeTime as-if the timezone was UTC. Take this into account
|
||||||
|
* when comparing values.
|
||||||
|
*
|
||||||
|
* @note on objects that are pinned to a timezone and have isDate set,
|
||||||
|
* nativeTime will be 00:00:00 in the timezone of that date, not 00:00:00 in
|
||||||
|
* UTC.
|
||||||
|
*/
|
||||||
|
attribute PRTime nativeTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Full 4-digit year value (e.g. "1989", "2004")
|
||||||
|
*/
|
||||||
|
attribute short year;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Month, 0-11, 0 = January
|
||||||
|
*/
|
||||||
|
attribute short month;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Day of month, 1-[28,29,30,31]
|
||||||
|
*/
|
||||||
|
attribute short day;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hour, 0-23
|
||||||
|
*/
|
||||||
|
attribute short hour;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Minute, 0-59
|
||||||
|
*/
|
||||||
|
attribute short minute;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Second, 0-59
|
||||||
|
*/
|
||||||
|
attribute short second;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets or sets the timezone of this calIDateTime instance.
|
||||||
|
* Setting the timezone does not change the actual date/time components;
|
||||||
|
* to convert between timezones, use getInTimezone().
|
||||||
|
*
|
||||||
|
* @throws NS_ERROR_INVALID_ARG if null is passed in.
|
||||||
|
*/
|
||||||
|
attribute calITimezone timezone;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resets the datetime object.
|
||||||
|
*
|
||||||
|
* @param year full 4-digit year value (e.g. "1989", "2004")
|
||||||
|
* @param month month, 0-11, 0 = January
|
||||||
|
* @param day day of month, 1-[28,29,31]
|
||||||
|
* @param hour hour, 0-23
|
||||||
|
* @param minute minute, 0-59
|
||||||
|
* @param second decond, 0-59
|
||||||
|
* @param timezone timezone
|
||||||
|
*
|
||||||
|
* The passed datetime will be normalized, e.g. a minute value of 60 will
|
||||||
|
* increase the hour.
|
||||||
|
*
|
||||||
|
* @throws NS_ERROR_INVALID_ARG if no timezone is passed in.
|
||||||
|
*/
|
||||||
|
void resetTo(in short year,
|
||||||
|
in short month,
|
||||||
|
in short day,
|
||||||
|
in short hour,
|
||||||
|
in short minute,
|
||||||
|
in short second,
|
||||||
|
in calITimezone timezone);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The offset of the timezone this datetime is in, relative to UTC, in
|
||||||
|
* seconds. A positive number means that the timezone is ahead of UTC.
|
||||||
|
*/
|
||||||
|
readonly attribute long timezoneOffset;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* isDate indicates that this calIDateTime instance represents a date
|
||||||
|
* (a whole day), and not a specific time on that day. If isDate is set,
|
||||||
|
* accessing the hour/minute/second fields will return 0, and and setting
|
||||||
|
* them is an illegal operation.
|
||||||
|
*/
|
||||||
|
attribute boolean isDate;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* computed values
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Day of the week. 0-6, with Sunday = 0.
|
||||||
|
*/
|
||||||
|
readonly attribute short weekday;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Day of the year, 1-[365,366].
|
||||||
|
*/
|
||||||
|
readonly attribute short yearday;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Methods
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resets this instance to Jan 1, 1970 00:00:00 UTC.
|
||||||
|
*/
|
||||||
|
void reset();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return a string representation of this instance.
|
||||||
|
*/
|
||||||
|
AUTF8String toString();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return a new calIDateTime instance that's the result of
|
||||||
|
* converting this one into the given timezone. Valid values
|
||||||
|
* for aTimezone are the same as the timezone field. If
|
||||||
|
* the "floating" timezone is given, then this object
|
||||||
|
* is just cloned, and the timezone is set to floating.
|
||||||
|
*/
|
||||||
|
calIDateTime getInTimezone(in calITimezone aTimezone);
|
||||||
|
|
||||||
|
// add the given calIDateTime, treating it as a duration, to
|
||||||
|
// this item.
|
||||||
|
// XXX will change
|
||||||
|
void addDuration (in calIDuration aDuration);
|
||||||
|
|
||||||
|
// Subtract two dates and return a duration
|
||||||
|
// returns duration of this - aOtherDate
|
||||||
|
// if aOtherDate is > this the duration will be negative
|
||||||
|
calIDuration subtractDate (in calIDateTime aOtherDate);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Compare this calIDateTime instance to aOther. Returns -1, 0, 1 to
|
||||||
|
* indicate if this < aOther, this == aOther, or this > aOther,
|
||||||
|
* respectively.
|
||||||
|
*
|
||||||
|
* This comparison is timezone-aware; the given values are converted
|
||||||
|
* to a common timezone before comparing. If either this or aOther is
|
||||||
|
* floating, both objects are treated as floating for the comparison.
|
||||||
|
*
|
||||||
|
* If either this or aOther has isDate set, then only the date portion is
|
||||||
|
* compared.
|
||||||
|
*
|
||||||
|
* @exception calIErrors.INVALID_TIMEZONE bad timezone on this object
|
||||||
|
* (not the argument object)
|
||||||
|
*/
|
||||||
|
long compare (in calIDateTime aOther);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Some helper getters for calculating useful ranges
|
||||||
|
//
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns SUNDAY of the given datetime object's week.
|
||||||
|
*/
|
||||||
|
readonly attribute calIDateTime startOfWeek;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns SATURDAY of the datetime object's week.
|
||||||
|
*/
|
||||||
|
readonly attribute calIDateTime endOfWeek;
|
||||||
|
|
||||||
|
// the start/end of the current object's month
|
||||||
|
readonly attribute calIDateTime startOfMonth;
|
||||||
|
readonly attribute calIDateTime endOfMonth;
|
||||||
|
|
||||||
|
// the start/end of the current object's year
|
||||||
|
readonly attribute calIDateTime startOfYear;
|
||||||
|
readonly attribute calIDateTime endOfYear;
|
||||||
|
|
||||||
|
[noscript,notxpcom] void toIcalTime(in icaltimetypeptr itt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This object as either an iCalendar DATE or DATETIME string, as
|
||||||
|
* appropriate and sets the timezone to either UTC or floating.
|
||||||
|
*/
|
||||||
|
attribute ACString icalString;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setting jsDate via a JavaScript Date object will set
|
||||||
|
* the calIDateTime to the jsDate's time ***in UTC***.
|
||||||
|
* There's no way for us to recover TZ info from a jsDate,
|
||||||
|
* so we always pull it out as UTC, and force the calIDateTime's
|
||||||
|
* timezone to UTC.
|
||||||
|
*/
|
||||||
|
attribute jsval jsDate;
|
||||||
|
};
|
|
@ -0,0 +1,10 @@
|
||||||
|
# vim: set filetype=python:
|
||||||
|
# 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/.
|
||||||
|
|
||||||
|
XPIDL_SOURCES += [
|
||||||
|
'calIDateTimeJS.idl',
|
||||||
|
]
|
||||||
|
|
||||||
|
XPIDL_MODULE = 'caldatetime_icaljs'
|
|
@ -15,6 +15,7 @@ FORCE_STATIC_LIB = 1
|
||||||
GRE_MODULE = 1
|
GRE_MODULE = 1
|
||||||
FORCE_USE_PIC = 1 # Force use of PIC
|
FORCE_USE_PIC = 1 # Force use of PIC
|
||||||
USE_STATIC_LIBS = 1
|
USE_STATIC_LIBS = 1
|
||||||
|
NO_INTERFACES_MANIFEST = 1
|
||||||
|
|
||||||
CPPSRCS = calDateTime.cpp \
|
CPPSRCS = calDateTime.cpp \
|
||||||
calDuration.cpp \
|
calDuration.cpp \
|
||||||
|
|
|
@ -58,7 +58,7 @@ include $(topsrcdir)/config/rules.mk
|
||||||
EMBED_MANIFEST_AT =
|
EMBED_MANIFEST_AT =
|
||||||
|
|
||||||
BACKEND_MANIFESTS = libical.manifest
|
BACKEND_MANIFESTS = libical.manifest
|
||||||
DEFINES += -DSHARED_LIBRARY=$(SHARED_LIBRARY)
|
DEFINES += -DSHARED_LIBRARY=$(SHARED_LIBRARY) -DXPIDL_MODULE=$(XPIDL_MODULE)
|
||||||
|
|
||||||
libs:: $(BACKEND_MANIFESTS)
|
libs:: $(BACKEND_MANIFESTS)
|
||||||
$(EXIT_ON_ERROR) \
|
$(EXIT_ON_ERROR) \
|
||||||
|
|
|
@ -1 +1,2 @@
|
||||||
#expand binary-component __SHARED_LIBRARY__
|
#expand binary-component __SHARED_LIBRARY__
|
||||||
|
#expand interfaces __XPIDL_MODULE__.xpt
|
||||||
|
|
|
@ -3,5 +3,6 @@
|
||||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
# 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/.
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
|
||||||
|
XPIDL_MODULE = 'caldatetime_libical'
|
||||||
MODULE = 'calbasecomps'
|
MODULE = 'calbasecomps'
|
||||||
|
|
||||||
|
|
|
@ -8,3 +8,9 @@
|
||||||
DIRS = [
|
DIRS = [
|
||||||
'build'
|
'build'
|
||||||
]
|
]
|
||||||
|
|
||||||
|
XPIDL_SOURCES += [
|
||||||
|
'calIDateTime.idl',
|
||||||
|
]
|
||||||
|
|
||||||
|
XPIDL_MODULE = 'caldatetime_libical'
|
||||||
|
|
|
@ -16,7 +16,6 @@ XPIDL_SOURCES += [
|
||||||
'calICalendarView.idl',
|
'calICalendarView.idl',
|
||||||
'calICalendarViewController.idl',
|
'calICalendarViewController.idl',
|
||||||
'calIChangeLog.idl',
|
'calIChangeLog.idl',
|
||||||
'calIDateTime.idl',
|
|
||||||
'calIDateTimeFormatter.idl',
|
'calIDateTimeFormatter.idl',
|
||||||
'calIDeletedItems.idl',
|
'calIDeletedItems.idl',
|
||||||
'calIDuration.idl',
|
'calIDuration.idl',
|
||||||
|
|
Загрузка…
Ссылка в новой задаче