2 * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the License);
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an AS IS BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 namespace Tizen.Pims.Calendar
22 /// A class for reminder for event.
24 /// <since_tizen> 4 </since_tizen>
26 /// The client who wants to be alerted at specific time should register MIME("application/x-tizen.calendar.reminder") type in manifest.xml file.
28 public class CalendarReminder:IDisposable
30 #region IDisposable Support
31 private bool disposedValue = false;
33 internal CalendarReminder()
38 /// Disposes of the resources (other than memory) used by the CalendarReminder.
40 /// <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
41 protected virtual void Dispose(bool disposing)
50 /// Releases all resources used by the CalendarReminder.
51 /// It should be called after having finished using of the object.
56 GC.SuppressFinalize(this);
60 private static readonly Interop.Reminder.ReminderAlertedCallback _reminderAlertedCallback = (string param, IntPtr userData) =>
62 ReminderAlertedEventArgs args = new ReminderAlertedEventArgs(param);
63 s_reminderAlerted?.Invoke(null, args);
66 private static event EventHandler<ReminderAlertedEventArgs> s_reminderAlerted;
69 /// Reminder event is triggered when the alarm is alerted.
71 /// <since_tizen> 4 </since_tizen>
72 public static event EventHandler<ReminderAlertedEventArgs> ReminderAlerted
76 Log.Debug(Globals.LogTag, "Add Reminder");
78 if (s_reminderAlerted == null)
80 int error = Interop.Reminder.Add(_reminderAlertedCallback, IntPtr.Zero);
81 if (CalendarError.None != (CalendarError)error)
83 Log.Error(Globals.LogTag, "Add reminder Failed with error " + error);
86 s_reminderAlerted += value;
91 Log.Debug(Globals.LogTag, "Remove Reminder");
93 s_reminderAlerted -= value;
94 if (s_reminderAlerted == null)
96 /// _reminderAlertedCallback is removed by .Net Core
97 int error = Interop.Reminder.Remove(_reminderAlertedCallback, IntPtr.Zero);
98 if (CalendarError.None != (CalendarError)error)
100 Log.Error(Globals.LogTag, "Remove reminder Failed with error " + error);