Modify animation in Iot profile for resolution 1280x720
[apps/native/boot-animation.git] / src / animation.c
old mode 100644 (file)
new mode 100755 (executable)
index f633a0e..17ce775
  *
  */
 
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/wait.h>
-#include <sys/time.h>
-#include <unistd.h>
-#include <dirent.h>
-
 #include <vconf.h>
 #include <efl_util.h>
 
 #include "animation.h"
 #include "app_log.h"
 
-#define OVER_COUNT 19
-
 static struct animation {
        Evas_Object *win;
        Evas_Object *layout;
-       Evas_Object *txt;
        Evas_Object *display_block;
-       Evas_Coord w;
-       Evas_Coord h;
-       int state;
-       int t;
+       Evas_Coord win_w;
+       Evas_Coord win_h;
+       int animation_type;
 } s_animation = {
        .win = NULL,
        .layout = NULL,
-       .txt = NULL,
        .display_block = NULL,
-       .w = 0,
-       .h = 0,
-       .state = 0,
-       .t = 0,
+       .win_w = 0,
+       .win_h = 0,
+       .animation_type = 0,
 };
 
-static void win_del(void *data, Evas_Object * obj, void *event_info)
+static void __win_del_cb(void *data, Evas_Object * obj, void *event_info)
 {
        __D("Window delete event received");
        elm_exit();
 }
 
+static Evas_Object *__create_window(void)
+{
+       __D("Create Window");
+
+       Evas_Object *win;
+
+       win = elm_win_add(NULL, "BOOT_ANIMATION", ELM_WIN_NOTIFICATION);
+       if (!win) {
+               __E("Failed to create a new window");
+               return NULL;
+       }
+       elm_win_aux_hint_add(win, "wm.comp.win.always.selective.mode", "1");
+       elm_win_role_set(win, "alert");
+       efl_util_set_notification_window_level(win, EFL_UTIL_NOTIFICATION_LEVEL_HIGH);
+       evas_object_smart_callback_add(win, "delete-request", __win_del_cb, NULL);
+
+       elm_win_screen_size_get(win, NULL, NULL, &s_animation.win_w, &s_animation.win_h);
+       elm_win_borderless_set(win, EINA_TRUE);
+       elm_win_indicator_mode_set(win, ELM_WIN_INDICATOR_HIDE);
+       evas_object_move(win, 0, 0);
+       evas_object_show(win);
+
+       return win;
+}
+
 static void __block_display(void)
 {
        Evas_Object *display_block = NULL;
@@ -92,9 +99,9 @@ static Eina_Bool __end_cb(void *data)
                __block_display();
        } else {
                __D("EXIT on BOOTING");
-               if (vconf_set_int(VCONFKEY_BOOT_ANIMATION_FINISHED, 1) != 0) {
+               if (vconf_set_int(VCONFKEY_BOOT_ANIMATION_FINISHED, 1) != 0)
                        __E("Failed to set finished set");
-               }
+
                boot_exit();
        }
        return ECORE_CALLBACK_CANCEL;
@@ -102,11 +109,11 @@ static Eina_Bool __end_cb(void *data)
 
 static void __animation_finished_cb(void *d, Evas_Object * obj, const char *e, const char *s)
 {
-       if (s_animation.state == TYPE_OFF) {
+       if (s_animation.animation_type == TYPE_OFF) {
                __D("TYPE OFF");
-               if (vconf_set_int(VCONFKEY_BOOT_ANIMATION_FINISHED, 1) != 0) {
+               if (vconf_set_int(VCONFKEY_BOOT_ANIMATION_FINISHED, 1) != 0)
                        __E("Failed to set finished set");
-               }
+
                ecore_timer_add(1, __end_cb, (void *)TYPE_OFF);
        } else {
                __D("TYPE_ON");
@@ -114,74 +121,65 @@ static void __animation_finished_cb(void *d, Evas_Object * obj, const char *e, c
        }
 }
 
-static void __fini_layout(void)
+static Evas_Object * __create_layout(Evas_Object *win, const char *file_name)
 {
-       if (s_animation.display_block) {
-               evas_object_del(s_animation.display_block);
-               s_animation.display_block = NULL;
+       Evas_Object *layout = elm_layout_add(win);
+       if (!layout) {
+               __E("Failed to create layout");
+               return NULL;
        }
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_win_resize_object_add(s_animation.win, layout);
+       elm_layout_signal_callback_add(layout, "end", "animation", __animation_finished_cb, NULL);
 
-       if (s_animation.layout) {
-               evas_object_del(s_animation.layout);
-               s_animation.layout = NULL;
+       if (!elm_layout_file_set(layout, file_name, GRP_ANIM)) {
+               __E("Failed to layout file set");
+               return NULL;
        }
 
-       if (s_animation.txt) {
-               evas_object_del(s_animation.txt);
-               s_animation.txt = NULL;
-       }
+       evas_object_show(layout);
+
+       return layout;
 }
 
-Evas_Object *create_window(void)
+static void __destroy_layout(void)
 {
-       __D("Create Window");
-
-       Evas_Object *win;
-
-       win = elm_win_add(NULL, "BOOT_ANIMATION", ELM_WIN_NOTIFICATION);
-       if (!win) {
-               __E("Failed to create a new window");
-               return NULL;
+       if (s_animation.display_block) {
+               evas_object_del(s_animation.display_block);
+               s_animation.display_block = NULL;
        }
-       elm_win_aux_hint_add(win, "wm.comp.win.always.selective.mode", "1");
-       elm_win_role_set(win, "alert");
-       efl_util_set_notification_window_level(win, EFL_UTIL_NOTIFICATION_LEVEL_HIGH);
-       evas_object_smart_callback_add(win, "delete-request", win_del, NULL);
-
-       elm_win_screen_size_get(win, NULL, NULL, &s_animation.w, &s_animation.h);
-       elm_win_borderless_set(win, EINA_TRUE);
-       elm_win_indicator_mode_set(win, ELM_WIN_INDICATOR_HIDE);
-       evas_object_move(win, 0, 0);
-       evas_object_show(win);
 
-       return win;
+       if (s_animation.layout) {
+               evas_object_del(s_animation.layout);
+               s_animation.layout = NULL;
+       }
 }
 
-char *get_layout_file_name(int state, int w, int h)
+static char * __get_layout_file_name(int animation_type, int w, int h)
 {
        char file_name[1024];
        int ret = 0;
 
-       if (state == TYPE_OFF) {
+       if (animation_type == TYPE_OFF)
                snprintf(file_name, sizeof(file_name), FILE_PATH"%dx%d_PowerOff.edj", w, h);
-       } else {
+       else
                snprintf(file_name, sizeof(file_name), FILE_PATH"%dx%d_PowerOn.edj", w, h);
-       }
+
        __D("File name for Animation is: %s", file_name);
 
        ret = access(file_name, 0);
-       if (ret == 0) {
-       } else {
+       if (ret != 0) {
                __E("There's no Image same with [%s], So set Default[720x1280] image", file_name);
-               if (state == TYPE_OFF) {
+               __D("There's no Image same with [%s], So set Default[720x1280] image", file_name);
+               if (animation_type == TYPE_OFF)
                        snprintf(file_name, sizeof(file_name), "%s", DEFAULT_OFF);
-               } else {
+               else
                        snprintf(file_name, sizeof(file_name), "%s", DEFAULT_ON);
-               }
 
                ret = access(file_name, 0);
                if (ret) {
                        __E("There's no Image file[%s] on target", file_name);
+                       __D("There's no Image file[%s] on target", file_name);
                        return NULL;
                }
        }
@@ -189,65 +187,43 @@ char *get_layout_file_name(int state, int w, int h)
        return strdup(file_name);
 }
 
-Eina_Bool is_layout_file_exist(const char *file_name)
+static Eina_Bool __is_layout_file_exist(const char *file_name)
 {
        int ret = 0;
 
        ret = access(file_name, 0);
-       if (ret == 0) {
+       if (ret == 0)
                return EINA_TRUE;
-       } else {
+       else
                return EINA_FALSE;
-       }
-}
-
-Evas_Object *create_layout(Evas_Object *win, const char *file_name)
-{
-       Evas_Object *layout = elm_layout_add(win);
-       if (!layout) {
-               __E("Failed to create layout");
-               return NULL;
-       }
-       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-       elm_win_resize_object_add(s_animation.win, layout);
-       elm_layout_signal_callback_add(layout, "end", "animation", __animation_finished_cb, NULL);
-
-       if (!elm_layout_file_set(layout, file_name, GRP_ANIM)) {
-               __E("Failed to layout file set");
-               return NULL;
-       }
-
-       evas_object_show(layout);
-
-       return layout;
 }
 
-int init_animation(int state)
+int animation_init(int animation_type)
 {
        __D("Init animation");
 
-       s_animation.state = state;
+       s_animation.animation_type = animation_type;
 
-       s_animation.win = create_window();
+       s_animation.win = __create_window();
        if (!s_animation.win) {
                __E("Failed to create a new window");
                return EXIT_FAILURE;
        }
 
        char *layout_file_name = NULL;
-       layout_file_name = get_layout_file_name(state, s_animation.w, s_animation.h);
+       layout_file_name = __get_layout_file_name(animation_type, s_animation.win_w, s_animation.win_h);
        if (!layout_file_name) {
                __E("Failed to get layout file name");
                return EXIT_FAILURE;
        }
 
-       if (!is_layout_file_exist(layout_file_name)) {
+       if (!__is_layout_file_exist(layout_file_name)) {
                __E("This file is not exist");
                free(layout_file_name);
                return EXIT_FAILURE;
        }
 
-       s_animation.layout = create_layout(s_animation.win, layout_file_name);
+       s_animation.layout = __create_layout(s_animation.win, layout_file_name);
        if (!s_animation.layout) {
                __E("Failed to create layout");
                free(layout_file_name);
@@ -260,9 +236,10 @@ int init_animation(int state)
        return EXIT_SUCCESS;
 }
 
-int fini_animation(void)
+int animation_fini(void)
 {
-       __fini_layout();
+       __destroy_layout();
+
        evas_object_del(s_animation.win);
        fflush(stdout);
        close(1);
@@ -285,5 +262,24 @@ Evas_Object *__t__get_display_block(void)
 {
        return s_animation.display_block;
 }
-#endif
 
+Evas_Object * __t__animation_create_layout(Evas_Object *win, const char *file_name)
+{
+       return __create_layout(win, file_name);
+}
+
+Evas_Object *__t__animation_create_window(void)
+{
+       return __create_window();
+}
+
+char * __t__get_layout_file_name(int animation_type, int w, int h)
+{
+       return __get_layout_file_name(animation_type, w, h);
+}
+
+Eina_Bool __t__is_layout_file_exist(const char *file_name)
+{
+       return __is_layout_file_exist(file_name);
+}
+#endif