summaryrefslogtreecommitdiffstats
path: root/comm/calendar/base/public/calIAlarmService.idl
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 17:32:43 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 17:32:43 +0000
commit6bf0a5cb5034a7e684dcc3500e841785237ce2dd (patch)
treea68f146d7fa01f0134297619fbe7e33db084e0aa /comm/calendar/base/public/calIAlarmService.idl
parentInitial commit. (diff)
downloadthunderbird-upstream.tar.xz
thunderbird-upstream.zip
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'comm/calendar/base/public/calIAlarmService.idl')
-rw-r--r--comm/calendar/base/public/calIAlarmService.idl116
1 files changed, 116 insertions, 0 deletions
diff --git a/comm/calendar/base/public/calIAlarmService.idl b/comm/calendar/base/public/calIAlarmService.idl
new file mode 100644
index 0000000000..4af77628db
--- /dev/null
+++ b/comm/calendar/base/public/calIAlarmService.idl
@@ -0,0 +1,116 @@
+/* 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 calIItemBase;
+interface calICalendar;
+interface calIDuration;
+interface calITimezone;
+interface calIAlarm;
+interface calIOperation;
+
+[scriptable,uuid(dc96dd04-d2dd-448e-b307-8c8ff39c72af)]
+interface calIAlarmServiceObserver : nsISupports
+{
+ /**
+ * Gets called when an alarm has fired. Depending on type of alarm, an
+ * observer could bring up a dialog or play a sound.
+ */
+ void onAlarm(in calIItemBase item, in calIAlarm alarm);
+
+ /**
+ * Gets called when an notification has fired. The notification is only
+ * controlled by prefs, and is independent from the alarm/reminder.
+ */
+ void onNotification(in calIItemBase item);
+
+ /**
+ * Called if alarm(s) of a specific item are to be removed from
+ * the alarm window.
+ *
+ * @param aItem corresponding item, maybe master item of recurring
+ * series (then all alarms belonging to this item are to
+ * be removed)
+ */
+ void onRemoveAlarmsByItem(in calIItemBase item);
+
+ /**
+ * Called if all alarms of a specific calendar are to be removed.
+ */
+ void onRemoveAlarmsByCalendar(in calICalendar calendar);
+
+ /**
+ * Called when all alarms of a specific calendar are loaded.
+ */
+ void onAlarmsLoaded(in calICalendar calendar);
+};
+
+[scriptable,uuid(42cfa9ce-49d6-11e5-b88c-5b90eedc1c47)]
+interface calIAlarmService : nsISupports
+{
+ /**
+ * Upper limit for the snooze period for an alarm. To avoid performance issues, don't change this
+ * to a value larger then 1 at least until bug 861594 or a similar concept is implemented.
+ */
+ const unsigned long MAX_SNOOZE_MONTHS = 1;
+
+ /**
+ * This is the timezone that all-day events will be converted to in order to
+ * determine when their alarms should fire.
+ */
+ attribute calITimezone timezone;
+
+ /**
+ * Will return true while the alarm service is in the process of loading alarms
+ */
+ attribute boolean isLoading;
+
+ /**
+ * Cause the alarm service to start up, create a list of upcoming
+ * alarms in all registered calendars, add observers to watch for
+ * calendar registration and unregistration, and setup a timer to
+ * maintain that list and fire alarms.
+ *
+ * @note Will throw NS_ERROR_NOT_INITIALIZED if you have not previously set
+ * the timezone attribute.
+ */
+ void startup();
+
+ /**
+ * Shuts down the alarm service, canceling all timers and removing all
+ * alarms.
+ */
+ void shutdown();
+
+ /* add and remove observers that will be notified when an
+ alarm has gone off. It is up to the application to display
+ the alarm.
+ */
+ void addObserver(in calIAlarmServiceObserver observer);
+ void removeObserver(in calIAlarmServiceObserver observer);
+
+ /**
+ * Call to reschedule an alarm to be notified at a later point. The alarm will
+ * instead fire at "now + duration" This will cause an event to be scheduled
+ * even if it was not previously scheduled.
+ *
+ * @param item The item the alarm belongs to.
+ * @param alarm The alarm to snooze.
+ * @param duration The duration in minutes to snooze for.
+ * @return The operation that modifies the item to snooze the
+ * alarm.
+ */
+ calIOperation snoozeAlarm(in calIItemBase item, in calIAlarm alarm, in calIDuration duration);
+
+ /**
+ * Dismisses the given alarm for the passed occurrence.
+ *
+ * @param item The item the alarm belongs to.
+ * @param alarm The alarm to dismiss.
+ * @return The operation that modifies the item to dismiss the
+ * alarm.
+ */
+ calIOperation dismissAlarm(in calIItemBase item, in calIAlarm alarm);
+};