Fix build error in sticker-receiver
[platform/core/uifw/capi-ui-sticker.git] / receiver / src / main.cpp
index 06c2c4f..12cf6a2 100644 (file)
@@ -30,6 +30,7 @@
 #include "config.h"
 #include "receiver_preference.h"
 #include "sticker_info.h"
+#include "sticker_request.h"
 
 using namespace std;
 
@@ -114,7 +115,8 @@ static bool check_sync_time_condition()
         if (timediff > MAX_WAIT_TIME) {
             STLOGD("Starting manual synchronization");
             initialize_sap();
-            request_show_sync_notification();
+            if (false == request_show_sync_notification())
+                push_sticker_request(REQUEST_TYPE_SHOW_NOTIFICATION, NULL, NULL, NULL);
             result = false;
         } else {
             if (timediff > SYNC_INTERVAL)
@@ -173,15 +175,41 @@ static void process_request(app_control_h app_control, char *request)
             goto cleanup;
 
         if (mode && type) {
-            if (!is_init_sap()) {
-                initialize_sap();
-                request_all_sticker_data(mode, type);
+            if (check_battery_condition()) {
+                if (check_sync_time_condition()) {
+                    if (preference_set_int(LAST_SYNC_STATUS, LAST_SYNC_STATUS_SYNC_NEEDED) != PREFERENCE_ERROR_NONE)
+                        STLOGE("Failed to set sync status as NEEDED");
+
+                    if (!is_init_sap())
+                        initialize_sap();
+                    request_all_sticker_data(mode, type);
+                } else { // Under the sync interval time. Need to check whether last sync was succeded or not.
+                    int last_sync_status = 0;
+
+                    if (preference_get_int(LAST_SYNC_STATUS, &last_sync_status) != PREFERENCE_ERROR_NONE) {
+                        STLOGE("Failed to get sync status. Default action is exit.");
+                        goto cleanup;
+                    }
+
+                    if (last_sync_status == LAST_SYNC_STATUS_SYNC_NEEDED) {
+                        STLOGD("Last sync status is NEEDED(code: %d). Retrying to sync.", last_sync_status);
+                        if (!is_init_sap())
+                            initialize_sap();
+                        request_all_sticker_data(mode, type);
+                    } else {
+                        STLOGD("Last sync status is SUCCESS(code: %d). Don't have to retrying sync", last_sync_status);
+                    }
+                }
+            } else {
+                STLOGD("Not enough battery.");
             }
         }
     }
     else if (strcmp(request, "oobe") == 0) {
         initialize_sap();
-        request_sticker_feature();
+
+        if (false == request_sticker_feature())
+            push_sticker_request(REQUEST_TYPE_FEATURE_REQ, NULL, NULL, NULL);
     }
     else {
         STLOGW("Unknown command : %s", request);
@@ -198,6 +226,76 @@ cleanup:
         free(type);
 }
 
+static void process_auto_sync()
+{
+    if (is_init_sap()) {
+        STLOGD("continue doing current job");
+        return;
+    }
+
+    if (check_sync_time_condition()) {
+        if (check_battery_condition()) {
+            STLOGD("Starting auto synchronization");
+            if (preference_set_int(LAST_SYNC_STATUS, LAST_SYNC_STATUS_SYNC_NEEDED) != PREFERENCE_ERROR_NONE)
+                STLOGE("Failed to set sync status as NEEDED");
+            initialize_sap();
+
+            if (false == request_sticker_feature())
+                push_sticker_request(REQUEST_TYPE_FEATURE_REQ, NULL, NULL, NULL);
+
+            push_sticker_request(REQUEST_TYPE_AUTOSYNC, NULL, NULL, NULL);
+        }
+        else {
+            STLOGI("The status of battery is low");
+            if (!get_job_progress()) {
+                STLOGD("exit");
+                service_app_exit();
+            }
+        }
+    }
+    else {
+        if (!get_job_progress()) {
+            int last_sync_status = 0;
+            if (preference_get_int(LAST_SYNC_STATUS, &last_sync_status) != PREFERENCE_ERROR_NONE) {
+                STLOGE("Failed to get sync status. Default action is exit.");
+                service_app_exit();
+            }
+
+            if (last_sync_status == LAST_SYNC_STATUS_SYNC_NEEDED) {
+                STLOGD("Last sync status is NEEDED(code: %d). Retrying to sync.", last_sync_status);
+                initialize_sap();
+
+                if (false == request_sticker_feature())
+                    push_sticker_request(REQUEST_TYPE_FEATURE_REQ, NULL, NULL, NULL);
+
+                push_sticker_request(REQUEST_TYPE_AUTOSYNC, NULL, NULL, NULL);
+            } else {
+                STLOGD("Last sync status is SUCCESS(code: %d). Don't have to retrying sync", last_sync_status);
+                service_app_exit();
+            }
+        }
+    }
+}
+
+static void get_sticker_feature()
+{
+#ifdef VCONFKEY_STICKER_SUPPORTED_FEATURE
+    // Check whether oobe has been done
+    int feature_flag = 0;
+    if (vconf_get_int(VCONFKEY_STICKER_SUPPORTED_FEATURE, &feature_flag) == 0 && feature_flag == 0) {
+        STLOGD("Request to get sticker feature");
+        initialize_sap();
+
+        if (false == request_sticker_feature())
+            push_sticker_request(REQUEST_TYPE_FEATURE_REQ, NULL, NULL, NULL);
+    }
+    else {
+        if (!is_init_sap())
+            service_app_exit();
+    }
+#endif
+}
+
 static void app_control(app_control_h app_control, void *data)
 {
     /* Handle the launch request. */
@@ -213,85 +311,48 @@ static void app_control(app_control_h app_control, void *data)
 
     // operation
     int ret = app_control_get_operation(app_control, &operation);
-    if (ret == APP_CONTROL_ERROR_NONE) {
-        STLOGD("operation: %s", operation);
+    if (ret != APP_CONTROL_ERROR_NONE) {
+        STLOGW("Failed to get operation. error : %d", ret);
+        return;
+    }
 
-        if (!operation) {
-            goto cleanup;
-        }
+    STLOGD("operation: %s", operation);
 
-        if (strcmp(operation, APP_CONTROL_OPERATION_LAUNCH_ON_EVENT) == 0)
+    if (!operation) {
+        goto cleanup;
+    }
+
+    if (strcmp(operation, APP_CONTROL_OPERATION_LAUNCH_ON_EVENT) == 0)
+    {
+        ret = app_control_get_uri(app_control, &uri);
+        if (ret == APP_CONTROL_ERROR_NONE && uri)
         {
-            ret = app_control_get_uri(app_control, &uri);
-            if (ret == APP_CONTROL_ERROR_NONE && uri)
+            if (strncmp(uri, event_uri, strlen(event_uri) + 1) == 0)
             {
-                if (strncmp(uri, event_uri, strlen(event_uri) + 1) == 0)
+                ret = app_control_get_extra_data(app_control, "battery_charger_status", &event_value);
+                if (ret == APP_CONTROL_ERROR_NONE && event_value)
                 {
-                    ret = app_control_get_extra_data(app_control, "battery_charger_status", &event_value);
-                    if (ret == APP_CONTROL_ERROR_NONE && event_value)
+                    if (string(event_value) == "connected")
                     {
-                        if (string(event_value) == "connected")
-                        {
-                            STLOGI("The charger state is connected");
-                            if (!is_init_sap()) {
-                                if (check_sync_time_condition()) {
-                                    if (check_battery_condition()) {
-                                        STLOGD("Starting auto synchronization");
-                                        initialize_sap();
-                                        request_sticker_feature();
-                                        request_auto_sync();
-                                    }
-                                    else {
-                                        STLOGI("The status of battery is low");
-                                        if (!get_job_progress()) {
-                                            STLOGD("exit");
-                                            service_app_exit();
-                                        }
-                                    }
-                                }
-                                else {
-                                    if (!get_job_progress()) {
-                                        STLOGD("exit");
-                                        service_app_exit();
-                                    }
-                                }
-                            }
-                            else {
-                                STLOGD("continue doing current job");
-                            }
-                        }
-                        free(event_value);
+                        STLOGI("The charger state is connected");
+                        process_auto_sync();
                     }
+                    free(event_value);
                 }
-                free(uri);
             }
-        }
-        else if (strcmp(operation, APP_CONTROL_OPERATION_DEFAULT) == 0) {
-            res = app_control_get_extra_data(app_control, "request", &request);
-            STLOGD("get extra data result : %d, request : %s", res, request);
-            if (APP_CONTROL_ERROR_NONE == res && NULL != request) {
-                process_request(app_control, request);
-            }
-            else {
-                STLOGD("booting");
-#ifdef VCONFKEY_STICKER_SUPPORTED_FEATURE
-                // Check whether oobe has been done
-                int feature_flag = 0;
-                if (vconf_get_int(VCONFKEY_STICKER_SUPPORTED_FEATURE, &feature_flag) == 0 && feature_flag == 0) {
-                    STLOGD("Request to get sticker feature");
-                    initialize_sap();
-                    request_sticker_feature();
-                }
-                else {
-                    if (!is_init_sap())
-                        service_app_exit();
-                }
-            }
-#endif
+            free(uri);
         }
     }
-    else {
-        STLOGW("Failed to get operation. error : %d", ret);
+    else if (strcmp(operation, APP_CONTROL_OPERATION_DEFAULT) == 0) {
+        res = app_control_get_extra_data(app_control, "request", &request);
+        STLOGD("get extra data result : %d, request : %s", res, request);
+        if (APP_CONTROL_ERROR_NONE == res && NULL != request) {
+            process_request(app_control, request);
+        }
+        else {
+            STLOGD("booting");
+            get_sticker_feature();
+        }
     }
 
 cleanup: