[TSAM-896] enable to sync contacts birthday 33/57333/8
authorJeesun Kim <iamjs.kim@samsung.com>
Tue, 19 Jan 2016 08:09:22 +0000 (17:09 +0900)
committerJeesun Kim <iamjs.kim@samsung.com>
Thu, 21 Jan 2016 01:24:31 +0000 (10:24 +0900)
Change-Id: I31a2b976281eadb68783a51fc73b7b12c4cf65ff

packaging/calendar-serviced.service
server/cal_server.c
server/cal_server_contacts.c
server/cal_server_contacts.h

index 172e4b5..42d431a 100644 (file)
@@ -1,5 +1,7 @@
 [Unit]
 Description=Calendar Service daemon
+After=contacts-service.service
+Requires=contacts-service.service
 
 [Service]
 Type=dbus
index 907e300..affafeb 100644 (file)
@@ -150,9 +150,11 @@ int main(int argc, char *argv[])
        _cal_server_create_file();
        cal_server_schema_check();
        cal_server_update();
+
        _cal_server_init();
        cal_server_alarm_init();
        cal_server_account_init();
+       cal_server_contacts_init();
 
        guint id;
        id = cal_server_dbus_init();
@@ -160,8 +162,10 @@ int main(int argc, char *argv[])
        _cal_server_main();
 
        cal_time_u_cleanup();
+       cal_server_contacts_deinit();
        cal_server_account_deinit();
        cal_server_alarm_deinit();
+
        _cal_server_deinit();
        cal_server_dbus_deinit(id);
        cal_inotify_deinit();
index eed8a59..84fb17b 100644 (file)
@@ -552,7 +552,6 @@ void cal_server_contacts_delete(int account_id)
 static gpointer _cal_server_contacts_sync_main(gpointer user_data)
 {
        int ret = CALENDAR_ERROR_NONE;
-       RETV_IF(NULL == user_data, NULL);
 
        while (1) {
                /*
@@ -591,7 +590,7 @@ static gpointer _cal_server_contacts_sync_main(gpointer user_data)
        return NULL;
 }
 
-void cal_server_contacts_sync_start(void *user_data)
+static void cal_server_contacts_sync_start(void)
 {
        CAL_FN_CALL();
 
@@ -599,10 +598,45 @@ void cal_server_contacts_sync_start(void *user_data)
                g_mutex_init(&_cal_server_contacts_sync_mutex);
                g_cond_init(&_cal_server_contacts_sync_cond);
                _cal_server_contacts_sync_thread = g_thread_new(CAL_SERVER_CONTACTS_SYNC_THREAD_NAME,
-                               _cal_server_contacts_sync_main, user_data);
+                               _cal_server_contacts_sync_main, NULL);
        }
 
        /* don't use mutex. */
        g_cond_signal(&_cal_server_contacts_sync_cond);
 }
 
+static void _changed_cb(const char* view_uri, void *user_data)
+{
+       cal_server_contacts_sync_start();
+}
+
+int cal_server_contacts_init(void)
+{
+       int ret = 0;
+
+       ret = contacts_connect();
+       if (CONTACTS_ERROR_NONE != ret) {
+               ERR("contacts_connect() Fail(%d)", ret);
+               return ret;
+       }
+
+       ret = contacts_db_add_changed_cb(_contacts_event._uri, _changed_cb, NULL);
+       if (CONTACTS_ERROR_NONE != ret)
+               WARN("contacts_db_add_changed_cb() Fail(%d)", ret);
+
+       ret = contacts_db_add_changed_cb(_contacts_name._uri, _changed_cb, NULL);
+       if (CONTACTS_ERROR_NONE != ret)
+               WARN("contacts_db_add_changed_cb() Fail(%d)", ret);
+
+       cal_server_contacts_sync_start();
+
+       return CALENDAR_ERROR_NONE;
+}
+
+void cal_server_contacts_deinit(void)
+{
+       contacts_db_remove_changed_cb(_contacts_event._uri, _changed_cb, NULL);
+       contacts_db_remove_changed_cb(_contacts_name._uri, _changed_cb, NULL);
+
+       contacts_disconnect();
+}
index 766e9dc..cfe23cb 100644 (file)
@@ -20,8 +20,8 @@
 #ifndef __CAL_SERVER_CONTACTS_H__
 #define __CAL_SERVER_CONTACTS_H__
 
-int cal_server_contacts(void);
 void cal_server_contacts_delete(int account_id);
-void cal_server_contacts_sync_start(void *user_data);
+int cal_server_contacts_init(void);
+void cal_server_contacts_deinit(void);
 
 #endif /* __CAL_SERVER_CONTACTS_H__ */