replace delegate with EventHandler 47/148147/5
authorJongkyu Koo <jk.koo@samsung.com>
Thu, 7 Sep 2017 02:41:21 +0000 (11:41 +0900)
committerJongkyu Koo <jk.koo@samsung.com>
Thu, 7 Sep 2017 23:12:32 +0000 (08:12 +0900)
Change-Id: Iae5422c1aba7f56042e50e9347448dc0676d97d4
Signed-off-by: Jongkyu Koo <jk.koo@samsung.com>
src/Tizen.Pims.Contacts/Tizen.Pims.Contacts.sln [changed mode: 0755->0644]
src/Tizen.Pims.Contacts/Tizen.Pims.Contacts/ContactsDatabase.cs

old mode 100755 (executable)
new mode 100644 (file)
index 03602e2..238d76e
@@ -1,7 +1,7 @@
 
 Microsoft Visual Studio Solution File, Format Version 12.00
 # Visual Studio 15
-VisualStudioVersion = 15.0.26430.12
+VisualStudioVersion = 15.0.26430.13
 MinimumVisualStudioVersion = 10.0.40219.1
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Pims.Contacts", "Tizen.Pims.Contacts.csproj", "{5B40ACBE-A9D5-492B-AB98-11DD8581941E}"
 EndProject
index c1a4043..4be2929 100644 (file)
@@ -33,7 +33,7 @@ namespace Tizen.Pims.Contacts
         private Object thisLock = new Object();
         private Interop.Database.ContactsDBStatusChangedCallback _contactsDBStatusChangedCallback;
         private EventHandler<DBStatusChangedEventArgs> _dbStatusChanged;
-        private Dictionary<string, EventHandler<DBChangedEventArgs>> _delegateMap = new Dictionary<string, EventHandler<DBChangedEventArgs>>();
+        private Dictionary<string, EventHandler<DBChangedEventArgs>> _eventHandlerMap = new Dictionary<string, EventHandler<DBChangedEventArgs>>();
         private Dictionary<string, Interop.Database.ContactsDBChangedCallback> _callbackMap = new Dictionary<string, Interop.Database.ContactsDBChangedCallback>();
         private Interop.Database.ContactsDBChangedCallback _dbChangedDelegate;
 
@@ -709,48 +709,56 @@ namespace Tizen.Pims.Contacts
         }
 
         /// <summary>
-        /// Registers a callback function to be invoked when a record changes.
+        /// Registers a EventHandler to be invoked when a record changes.
         /// </summary>
         /// <param name="viewUri">The view URI of records whose changes are monitored</param>
         /// <param name="DBChanged">The EventHandler to register</param>
         [SuppressMessage("Microsoft.Design", "CA1054:UriParametersShouldNotBeStrings")]
-        public void AddDBChangedDelegate(string viewUri, EventHandler<DBChangedEventArgs> DBChanged)
+        public void AddDBChangedEventHandler(string viewUri, EventHandler<DBChangedEventArgs> DBChanged)
         {
-            if (_callbackMap[viewUri] == null)
+            if (!_callbackMap.ContainsKey(viewUri))
             {
                 _callbackMap[viewUri] = (string uri, IntPtr userData) =>
                 {
                     DBChangedEventArgs args = new DBChangedEventArgs(uri);
-                    _delegateMap[uri]?.Invoke(this, args);
+                    _eventHandlerMap[uri]?.Invoke(this, args);
                 };
 
                 int error = Interop.Database.AddChangedCb(viewUri, _callbackMap[viewUri], IntPtr.Zero);
                 if ((int)ContactsError.None != error)
                 {
-                    Log.Error(Globals.LogTag, "AddDBChangedDelegate Failed with error " + error);
+                    Log.Error(Globals.LogTag, "AddDBChangedEventHandler Failed with error " + error);
                     throw ContactsErrorFactory.CheckAndCreateException(error);
                 }
             }
 
-            _delegateMap[viewUri] += DBChanged;
+            EventHandler<DBChangedEventArgs> handler = null;
+            if (!_eventHandlerMap.TryGetValue(viewUri, out handler))  
+                _eventHandlerMap.Add(viewUri, null);
+
+            _eventHandlerMap[viewUri] = handler + DBChanged;
         }
 
         /// <summary>
-        /// Deregisters a callback function.
+        /// Deregisters a EventHandler.
         /// </summary>
         /// <param name="viewUri">The view URI of records whose changes are monitored</param>
         /// <param name="DBChanged">The EventHandler to deregister</param>
         [SuppressMessage("Microsoft.Design", "CA1054:UriParametersShouldNotBeStrings")]
-        public void RemoveDBChangedDelegate(string viewUri, EventHandler<DBChangedEventArgs> DBChanged)
+        public void RemoveDBChangedEventHandler(string viewUri, EventHandler<DBChangedEventArgs> DBChanged)
         {
-            _delegateMap[viewUri] -= DBChanged;
+            EventHandler<DBChangedEventArgs> handler = null;
+            if (!_eventHandlerMap.TryGetValue(viewUri, out handler))
+                _eventHandlerMap.Add(viewUri, null);
+            else
+                _eventHandlerMap[viewUri] = handler - DBChanged;
 
-            if (_delegateMap[viewUri] == null)
+            if (_eventHandlerMap[viewUri] == null)
             {
                 int error = Interop.Database.RemoveChangedCb(viewUri, _callbackMap[viewUri], IntPtr.Zero);
                 if ((int)ContactsError.None != error)
                 {
-                    Log.Error(Globals.LogTag, "RemoveDBChangedDelegate Failed with error " + error);
+                    Log.Error(Globals.LogTag, "RemoveDBChangedEventHandler Failed with error " + error);
                     throw ContactsErrorFactory.CheckAndCreateException(error);
                 }
                 _callbackMap.Remove(viewUri);