Fix XML documentation warnings
[platform/core/csapi/tizenfx.git] / src / Tizen.Pims.Calendar / Tizen.Pims.Calendar / CalendarReminder.cs
1 /*
2  * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16
17 using System;
18
19 namespace Tizen.Pims.Calendar
20 {
21     /// <summary>
22     /// A class for reminder for event.
23     /// </summary>
24     /// <since_tizen> 4 </since_tizen>
25     /// <remarks>
26     /// The client who wants to be alerted at specific time should register MIME("application/x-tizen.calendar.reminder") type in manifest.xml file.
27     /// </remarks>
28     public class CalendarReminder:IDisposable
29     {
30 #region IDisposable Support
31         private bool disposedValue = false;
32
33         internal CalendarReminder()
34         {
35         }
36
37         /// <summary>
38         /// Disposes of the resources (other than memory) used by the CalendarReminder.
39         /// </summary>
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)
42         {
43             if (!disposedValue)
44             {
45                 disposedValue = true;
46             }
47         }
48
49         /// <summary>
50         /// Releases all resources used by the CalendarReminder.
51         /// It should be called after having finished using of the object.
52         /// </summary>
53         public void Dispose()
54         {
55             Dispose(true);
56             GC.SuppressFinalize(this);
57         }
58 #endregion
59
60         private static readonly Interop.Reminder.ReminderAlertedCallback _reminderAlertedCallback = (string param, IntPtr userData) =>
61         {
62             ReminderAlertedEventArgs args = new ReminderAlertedEventArgs(param);
63             s_reminderAlerted?.Invoke(null, args);
64         };
65
66         private static event EventHandler<ReminderAlertedEventArgs> s_reminderAlerted;
67
68         /// <summary>
69         /// Reminder event is triggered when the alarm is alerted.
70         /// </summary>
71         /// <since_tizen> 4 </since_tizen>
72         public static event EventHandler<ReminderAlertedEventArgs> ReminderAlerted
73         {
74             add
75             {
76                 Log.Debug(Globals.LogTag, "Add Reminder");
77
78                 if (s_reminderAlerted == null)
79                 {
80                     int error = Interop.Reminder.Add(_reminderAlertedCallback, IntPtr.Zero);
81                     if (CalendarError.None != (CalendarError)error)
82                     {
83                         Log.Error(Globals.LogTag, "Add reminder Failed with error " + error);
84                     }
85                 }
86                 s_reminderAlerted += value;
87             }
88
89             remove
90             {
91                 Log.Debug(Globals.LogTag, "Remove Reminder");
92
93                 s_reminderAlerted -= value;
94                 if (s_reminderAlerted == null)
95                 {
96                     int error = Interop.Reminder.Remove(_reminderAlertedCallback, IntPtr.Zero);
97                     if (CalendarError.None != (CalendarError)error)
98                     {
99                         Log.Error(Globals.LogTag, "Remove reminder Failed with error " + error);
100                     }
101                 }
102             }
103         }
104     }
105 }