low battery: update the popup to use common functions 38/17138/1
authorTaeyoung Kim <ty317.kim@samsung.com>
Tue, 4 Mar 2014 08:13:19 +0000 (17:13 +0900)
committerTaeyoung Kim <ty317.kim@samsung.com>
Tue, 4 Mar 2014 08:14:41 +0000 (17:14 +0900)
- common functions reduce the line of source codes and these functions will be used at other popups

Signed-off-by: Taeyoung Kim <ty317.kim@samsung.com>
Change-Id: Iaa9da532641f9fc4fcb25de35bf9f9d5cb6d8786

lowbatt-popup/CMakeLists.txt
lowbatt-popup/src/CMakeLists.txt [new file with mode: 0755]
lowbatt-popup/src/lowbatt.c
packaging/system-popup.spec

index 9394f82dd12d2dc1b632bc9c2beea3a9ce406908..42503fde932cfc0e178da3371d54d49359c925f6 100755 (executable)
@@ -1,68 +1,3 @@
-
-#################### Low-battery ###############################
 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
-PROJECT(lowbatt-popup C)
-
-SET(PACKAGE ${PROJECT_NAME})
-
-SET(SRCS ${CMAKE_SOURCE_DIR}/lowbatt-popup/src/lowbatt.c
-                ${CMAKE_SOURCE_DIR}/share/src/common.c)
-
-IF("${CMAKE_BUILD_TYPE}" STREQUAL "")
-       SET(CMAKE_BUILD_TYPE "Release")
-ENDIF("${CMAKE_BUILD_TYPE}" STREQUAL "")
-MESSAGE("Build type: ${CMAKE_BUILD_TYPE}")
-
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR})
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/lowbatt-popup/src)
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/share/src)
-INCLUDE_DIRECTORIES(/usr/include/svi)
-
-INCLUDE(FindPkgConfig)
-pkg_check_modules(pkgs REQUIRED appcore-efl elementary notification deviced dlog)
-
-FOREACH(flag ${pkgs_CFLAGS})
-       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag} -g")
-ENDFOREACH(flag)
-
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
-SET(CMAKE_C_FLAGS_DEBUG "-O0 -g ")
-SET(CMAKE_C_FLAGS_RELEASE "-O2")
-
-FIND_PROGRAM(UNAME NAMES uname)
-EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH")
-IF("${ARCH}" STREQUAL "arm")
-       ADD_DEFINITIONS("-DTARGET")
-       MESSAGE("add -DTARGET")
-ENDIF("${ARCH}" STREQUAL "arm")
-
-ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
-ADD_DEFINITIONS("-DPACKAGE=\"${PACKAGE}\"")
-ADD_DEFINITIONS("-DSLP_DEBUG")
-
-SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed")
-
-ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS})
-TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS} "-lsvi")
-
-ADD_CUSTOM_TARGET(lowbatt.edj
-               COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/edcs/icons
-               ${CMAKE_SOURCE_DIR}/edcs/lowbatt.edc ${CMAKE_BINARY_DIR}/${PROJECT_NAME}/lowbatt.edj
-               DEPENDS ${CMAKE_SOURCE_DIR}/edcs/lowbatt.edc
-)
-ADD_DEPENDENCIES(${PROJECT_NAME} lowbatt.edj)
-
-INSTALL(TARGETS ${PROJECT_NAME} DESTINATION /usr/apps/org.tizen.lowbat-syspopup/bin)
-INSTALL(FILES ${CMAKE_BINARY_DIR}/${PROJECT_NAME}/lowbatt.edj DESTINATION /usr/apps/org.tizen.lowbat-syspopup/res/edje/lowbatt)
-
-# install desktop file & icon
-SET(PREFIX ${CMAKE_INSTALL_PREFIX})
-
-INSTALL(FILES ${CMAKE_SOURCE_DIR}/data/org.tizen.lowbat-syspopup.xml DESTINATION /usr/share/packages/)
-
-# instatll rule file
-INSTALL(FILES ${CMAKE_SOURCE_DIR}/org.tizen.lowbat-syspopup.rule DESTINATION /opt/etc/smack/accesses.d)
-
-###############################################################
-
 
+ADD_SUBDIRECTORY(src)
diff --git a/lowbatt-popup/src/CMakeLists.txt b/lowbatt-popup/src/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..99984e2
--- /dev/null
@@ -0,0 +1,43 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(lowbatt-popup C)
+
+SET(PACKAGE ${PROJECT_NAME})
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+
+SET(SRCS ${CMAKE_SOURCE_DIR}/lowbatt-popup/src/lowbatt.c
+                ${CMAKE_SOURCE_DIR}/share/src/common.c)
+
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR})
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/lowbatt-popup/src)
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/share/src)
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(pkgs REQUIRED
+               appcore-efl
+               elementary
+               deviced
+               dlog
+               svi
+)
+
+FOREACH(flag ${pkgs_CFLAGS})
+       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag} -g")
+ENDFOREACH(flag)
+
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
+SET(CMAKE_C_FLAGS_DEBUG "-O0 -g ")
+SET(CMAKE_C_FLAGS_RELEASE "-O2")
+
+ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
+ADD_DEFINITIONS("-DPACKAGE=\"${PACKAGE}\"")
+
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed")
+
+ADD_EXECUTABLE(${PACKAGE} ${SRCS})
+TARGET_LINK_LIBRARIES(${PACKAGE} ${pkgs_LDFLAGS} "-lsvi")
+
+INSTALL(TARGETS ${PACKAGE} DESTINATION /usr/apps/org.tizen.lowbat-syspopup/bin)
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/data/org.tizen.lowbat-syspopup.xml DESTINATION /usr/share/packages/)
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/org.tizen.lowbat-syspopup.rule DESTINATION /opt/etc/smack/accesses.d)
+
+
index e7c45d690d3af7ff59d29f0c77f4ccd48c1a892d..d8042eec1260de63d6af47fdb3b26c381bd77507 100755 (executable)
 
 #include <stdio.h>
 #include <vconf.h>
-#include <utilX.h>
-#include <notification.h>
 #include <svi.h>
 #include "common.h"
 
-#define CHECK_ACT                      0
-#define WARNING_ACT                    1
-#define POWER_OFF_ACT          2
-#define CHARGE_ERROR_ACT       3
-#define BATTERY_DISCONNECT_ACT 4
+#define DEVICED_PATH_SYSNOTI        "/Org/Tizen/System/DeviceD/SysNoti"
+#define DEVICED_INTERFACE_SYSNOTI   "org.tizen.system.deviced.SysNoti"
+#define SIGNAL_CHARGEERR_RESPONSE   "ChargeErrResponse"
+
+
+#define LOWBATT_WARNING_TITLE      "IDS_ST_BODY_LEDOT_LOW_BATTERY"
+#define LOWBATT_WARNING_CONTENT    "IDS_COM_POP_LOW_BATTERY_CHARGE_YOUR_PHONE"
+#define LOWBATT_POWEROFF_TITLE     "IDS_ST_BODY_LEDOT_LOW_BATTERY"
+#define LOWBATT_POWEROFF_CONTENT   "IDS_COM_POP_LOW_BATTERY_PHONE_WILL_SHUT_DOWN"
+#define LOWBATT_CRITICAL_TITLE     LOWBATT_WARNING_TITLE
+#define LOWBATT_CRITICAL_CONTENT   LOWBATT_WARNING_CONTENT
+#define LOWBATT_EXTREME_TITLE      LOWBATT_WARNING_TITLE
+#define LOWBATT_EXTREME_CONTENT    LOWBATT_WARNING_CONTENT
+#define CHARGE_ERR_TITLE           "IDS_ST_POP_WARNING_MSG"
+#define CHARGE_ERR_CONTENT         "IDS_COM_BODY_CHARGING_PAUSED_DUE_TO_EXTREME_TEMPERATURE"
+#define CHARGE_ERR_LOW_TITLE       "IDS_ST_POP_WARNING_MSG"
+#define CHARGE_ERR_LOW_CONTENT     "IDS_IDLE_POP_UNABLE_CHANGE_BATTERY_TEMA_LOW"
+#define CHARGE_ERR_HIGH_TITLE      "IDS_ST_POP_WARNING_MSG"
+#define CHARGE_ERR_HIGH_CONTENT    "IDS_IDLE_POP_UNABLE_CHANGE_BATTERY_TEMA_HIGH"
+#define CHARGE_ERR_OVP_TITLE       "IDS_ST_POP_WARNING_MSG"
+#define CHARGE_ERR_OVP_CONTENT     "IDS_COM_POP_CHARGING_PAUSED_VOLTAGE_TOO_HIGH"
+#define BATT_DISCONNECTED_TITLE    "IDS_COM_BODY_NO_BATTERY"
+#define BATT_DISCONNECTED_CONTENT  "IDS_COM_POP_BATTERY_DISCONNECTED_ABB"
+
+enum lowbat_options {
+       LOWBAT_WARNING,
+       LOWBAT_POWEROFF,
+       LOWBAT_CRITICAL,
+       LOWBAT_EXTREME,
+       LOWBAT_CHARGE_ERR,
+       LOWBAT_CHARGE_ERR_LOW,
+       LOWBAT_CHARGE_ERR_HIGH,
+       LOWBAT_CHARGE_ERR_OVP,
+       LOWBAT_BATT_DISCONNECT,
+};
 
-#define EDJ_PATH            PREFIX"/apps/org.tizen.lowbat-syspopup/res/edje/lowbatt"
-#define EDJ_NAME            EDJ_PATH"/lowbatt.edj"
+struct popup_type {
+       char *name;
+       int type;
+};
 
-static int option = -1;
+static const struct popup_type lowbat_type[] = {
+       { "warning"           , LOWBAT_WARNING            },
+       { "poweroff"          , LOWBAT_POWEROFF           },
+       { "critical"          , LOWBAT_CRITICAL           },
+       { "extreme"           , LOWBAT_EXTREME           },
+       { "chargeerr"         , LOWBAT_CHARGE_ERR         },
+       { "chargeerrlow"      , LOWBAT_CHARGE_ERR_LOW     },
+       { "chargeerrhigh"     , LOWBAT_CHARGE_ERR_HIGH    },
+       { "chargeerrovp"      , LOWBAT_CHARGE_ERR_OVP     },
+       { "battdisconnect"    , LOWBAT_BATT_DISCONNECT    },
+};
 
-int myterm(bundle *b, void *data)
+static void lowbatt_ok_clicked(void *data, Evas_Object *obj, void *event_info)
 {
-       return 0;
+       _I("OK clicked");
+       object_cleanup(data);
+       popup_terminate();
 }
 
-int mytimeout(bundle *b, void *data)
+static void lowbatt_shutdown_clicked(void *data, Evas_Object *obj, void *event_info)
 {
-       return 0;
+       _I("Shutdown clicked");
+       object_cleanup(data);
+       if (vconf_set_int(VCONFKEY_SYSMAN_POWER_OFF_STATUS, VCONFKEY_SYSMAN_POWER_OFF_DIRECT) != 0)
+               _E("Failed to request poweroff to deviced");
+       popup_terminate();
 }
 
-syspopup_handler handler = {
-       .def_term_fn = myterm,
-       .def_timeout_fn = mytimeout
-};
-
-/* Cleanup objects to avoid mem-leak */
-void lowbatt_cleanup(struct appdata *ad)
+static void charge_error_response(void *data, Evas_Object *obj, void *event_info)
 {
-       if (ad == NULL)
-               return;
+       _I("Charge error");
+       object_cleanup(data);
+
+       if (broadcast_dbus_signal(DEVICED_PATH_SYSNOTI,
+                               DEVICED_INTERFACE_SYSNOTI,
+                               SIGNAL_CHARGEERR_RESPONSE,
+                               NULL, NULL) < 0)
+               _E("Failed to send signal for error popup button");
 
-       if (ad->popup)
-               evas_object_del(ad->popup);
-       if (ad->layout_main)
-               evas_object_del(ad->layout_main);
+       popup_terminate();
 }
 
-void lowbatt_timeout_func(void *data, Evas_Object *obj, void *event_info)
+static int load_battery_warning_popup(struct appdata *ad)
 {
-       _D("System-popup : In Lowbatt timeout");
-       lowbatt_cleanup(data);
-
-       /* If poweroff requested */
-       if (option != POWER_OFF_ACT)
-               goto LOWBAT_EXIT;
+       if (!ad)
+               return -EINVAL;
+
+       ad->popup = load_normal_popup(ad,
+                       _(LOWBATT_WARNING_TITLE),
+                       _(LOWBATT_WARNING_CONTENT),
+                       dgettext("sys_string","IDS_COM_SK_OK"),
+                       lowbatt_ok_clicked,
+                       NULL, NULL);
+       if (!(ad->popup)) {
+               _E("FAIL: load_normal_popup()");
+               return -ENOMEM;
+       }
 
-       if (vconf_set_int(VCONFKEY_SYSMAN_POWER_OFF_STATUS, VCONFKEY_SYSMAN_POWER_OFF_DIRECT) != 0)
-               if (system("poweroff") == -1)
-                       _E("FAIL: system(\"poweroff\")");
-LOWBAT_EXIT:
-       /* Now get lost */
-       popup_terminate();
+       return 0;
 }
 
-/* Basic popup widget */
-static int lowbatt_create_and_show_basic_popup(struct appdata *ad)
+static int load_battery_poweroff_popup(struct appdata *ad)
 {
-       Evas_Object *btn1;
-
-       /* Add beat ui popup */
-       /* No need to pass main window ptr */
-       ad->popup = elm_popup_add(ad->win_main);
-       if (ad->popup == NULL) {
-               _E("System-popup : Add popup failed ");
-               return -1;
+       if (!ad)
+               return -EINVAL;
+
+       ad->popup = load_normal_popup(ad,
+                       _(LOWBATT_POWEROFF_TITLE),
+                       _(LOWBATT_POWEROFF_CONTENT),
+                       dgettext("sys_string","IDS_COM_SK_OK"),
+                       lowbatt_shutdown_clicked,
+                       NULL, NULL);
+       if (!(ad->popup)) {
+               _E("FAIL: load_normal_popup()");
+               return -ENOMEM;
        }
-       evas_object_size_hint_weight_set(ad->popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-
-       elm_object_style_set(ad->popup, "transparent");
-       elm_popup_timeout_set(ad->layout_main, 3);
-
-       /* Check launch option */
-       if (option == CHARGE_ERROR_ACT) {
-               elm_object_text_set(ad->popup, _("IDS_COM_BODY_CHARGING_PAUSED_DUE_TO_EXTREME_TEMPERATURE"));
-               elm_object_part_text_set(ad->popup, "title,text", _("IDS_ST_POP_WARNING_MSG"));
-       } else if (option == BATTERY_DISCONNECT_ACT) {
-               elm_object_text_set(ad->popup, _("IDS_COM_POP_BATTERY_DISCONNECTED_ABB"));
-               elm_object_part_text_set(ad->popup, "title,text", _("IDS_COM_BODY_NO_BATTERY"));
-       } else if (option == WARNING_ACT) {
-               elm_object_text_set(ad->popup, _("IDS_COM_POP_LOW_BATTERY_CHARGE_YOUR_PHONE"));
-               elm_object_part_text_set(ad->popup, "title,text", _("IDS_COM_POP_BATTERYLOW"));
-       } else {
-               elm_object_text_set(ad->popup, _("IDS_COM_POP_LOW_BATTERY_PHONE_WILL_SHUT_DOWN"));
-               elm_object_part_text_set(ad->popup, "title,text", _("IDS_COM_POP_BATTERYLOW"));
+
+       return 0;
+}
+
+static int load_battery_critical_popup(struct appdata *ad)
+{
+       if (!ad)
+               return -EINVAL;
+
+       ad->popup = load_normal_popup(ad,
+                       _(LOWBATT_CRITICAL_TITLE),
+                       _(LOWBATT_CRITICAL_CONTENT),
+                       dgettext("sys_string","IDS_COM_SK_OK"),
+                       lowbatt_ok_clicked,
+                       NULL, NULL);
+       if (!(ad->popup)) {
+               _E("FAIL: load_normal_popup()");
+               return -ENOMEM;
        }
 
-       btn1 = elm_button_add(ad->popup);
-       elm_object_text_set(btn1, _("IDS_COM_SK_OK"));
-       elm_object_part_content_set(ad->popup, "button1", btn1);
-       elm_object_style_set(btn1, "popup_button/default");
-       evas_object_smart_callback_add(btn1, "clicked", lowbatt_timeout_func, ad);
+       return 0;
+}
+
+static int load_battery_extreme_popup(struct appdata *ad)
+{
+       if (!ad)
+               return -EINVAL;
+
+       ad->popup = load_normal_popup(ad,
+                       _(LOWBATT_EXTREME_TITLE),
+                       _(LOWBATT_EXTREME_CONTENT),
+                       dgettext("sys_string","IDS_COM_SK_OK"),
+                       lowbatt_ok_clicked,
+                       NULL, NULL);
+       if (!(ad->popup)) {
+               _E("FAIL: load_normal_popup()");
+               return -ENOMEM;
+       }
 
+       return 0;
+}
 
-       Ecore_X_Window xwin;
-       xwin = elm_win_xwindow_get(ad->popup);
-       ecore_x_netwm_window_type_set(xwin, ECORE_X_WINDOW_TYPE_NOTIFICATION);
-       evas_object_show(ad->popup);
+static int load_charge_error_popup(struct appdata *ad)
+{
+       if (!ad)
+               return -EINVAL;
+
+       ad->popup = load_normal_popup(ad,
+                       _(CHARGE_ERR_TITLE),
+                       _(CHARGE_ERR_CONTENT),
+                       dgettext("sys_string","IDS_COM_SK_OK"),
+                       charge_error_response,
+                       NULL, NULL);
+       if (!(ad->popup)) {
+               _E("FAIL: load_normal_popup()");
+               return -ENOMEM;
+       }
 
        return 0;
 }
-static int lowbatt_svi_play(void)
+
+static int load_charge_error_low_popup(struct appdata *ad)
 {
-       int r = 0;
-       int handle = 0;
-       r = svi_init(&handle); //Initialize SVI
+       if (!ad)
+               return -EINVAL;
+
+       reset_window_priority(ad->win_main, 2);
+
+       ad->popup = load_normal_popup(ad,
+                       _(CHARGE_ERR_LOW_TITLE),
+                       _(CHARGE_ERR_LOW_CONTENT),
+                       dgettext("sys_string","IDS_COM_SK_OK"),
+                       charge_error_response,
+                       NULL, NULL);
+       if (!(ad->popup)) {
+               _E("FAIL: load_normal_popup()");
+               return -ENOMEM;
+       }
 
-       if ( r != SVI_SUCCESS ) {
-               _E("Cannot initialize SVI.");
-               return 0;
-       } else {
-               r = svi_play(handle, SVI_VIB_OPERATION_LOWBATT, SVI_SND_OPERATION_LOWBATT);
-               if (r != SVI_SUCCESS) {
-                       _E("Cannot play sound or vibration.");
-               }
-               r = svi_fini(handle); //Finalize SVI
-               if (r != SVI_SUCCESS) {
-                       _E("Cannot close SVI.");
-                       return 0;
-               }
+       return 0;
+}
+
+static int load_charge_error_high_popup(struct appdata *ad)
+{
+       if (!ad)
+               return -EINVAL;
+
+       reset_window_priority(ad->win_main, 2);
+
+       ad->popup = load_normal_popup(ad,
+                       _(CHARGE_ERR_HIGH_TITLE),
+                       _(CHARGE_ERR_HIGH_CONTENT),
+                       dgettext("sys_string","IDS_COM_SK_OK"),
+                       charge_error_response,
+                       NULL, NULL);
+       if (!(ad->popup)) {
+               _E("FAIL: load_normal_popup()");
+               return -ENOMEM;
        }
-       return 1;
+
+       return 0;
 }
-int lowbatt_start(void *data)
+
+static int load_charge_error_ovp_popup(struct appdata *ad)
 {
-       struct appdata *ad = data;
-       int ret_val = 0;
+       if (!ad)
+               return -EINVAL;
+
+       ad->popup = load_normal_popup(ad,
+                       _(CHARGE_ERR_OVP_TITLE),
+                       _(CHARGE_ERR_OVP_CONTENT),
+                       dgettext("sys_string","IDS_COM_SK_OK"),
+                       lowbatt_ok_clicked,
+                       NULL, NULL);
+       if (!(ad->popup)) {
+               _E("FAIL: load_normal_popup()");
+               return -ENOMEM;
+       }
 
-       /* Create and show popup */
-       ret_val = lowbatt_create_and_show_basic_popup(ad);
-       if (ret_val != 0)
-               return -1;
-       lowbatt_svi_play();
-       /* Change LCD brightness */
-//     ret_val = display_change_state(LCD_NORMAL);
-       if (ret_val != 0)
-               return -1;
+       return 0;
+}
+
+static int load_battery_disconnected_popup(struct appdata *ad)
+{
+       if (!ad)
+               return -EINVAL;
+
+       ad->popup = load_normal_popup(ad,
+                       _(BATT_DISCONNECTED_TITLE),
+                       _(BATT_DISCONNECTED_CONTENT),
+                       dgettext("sys_string","IDS_COM_SK_OK"),
+                       lowbatt_ok_clicked,
+                       NULL, NULL);
+       if (!(ad->popup)) {
+               _E("FAIL: load_normal_popup()");
+               return -ENOMEM;
+       }
 
        return 0;
 }
 
-/* App init */
 int app_create(void *data)
 {
        Evas_Object *win;
        struct appdata *ad = data;
        int ret;
 
-       /* create window */
+       ad->handler.def_term_fn = NULL;
+       ad->handler.def_timeout_fn = NULL;
+
        win = create_win(PACKAGE);
        if (win == NULL)
                return -1;
 
        ad->win_main = win;
 
-       elm_theme_overlay_add(NULL,EDJ_NAME);
-
        ret = appcore_set_i18n(LANG_DOMAIN, LOCALE_DIR);
        if (ret != 0)
                _E("FAIL: appcore_set_i18n()");
@@ -189,79 +303,118 @@ int app_create(void *data)
        return 0;
 }
 
-/* Terminate noti handler */
 static int app_terminate(void *data)
 {
        struct appdata *ad = data;
 
-       if (ad->layout_main)
-               evas_object_del(ad->layout_main);
-
-       if (ad->win_main)
-               evas_object_del(ad->win_main);
+       release_evas_object(&(ad->win_main));
 
        return 0;
 }
 
-/* Pause/background */
 static int app_pause(void *data)
 {
        return 0;
 }
 
-/* Resume */
 static int app_resume(void *data)
 {
        return 0;
 }
 
-/* Reset */
 static int app_reset(bundle *b, void *data)
 {
        struct appdata *ad = data;
        const char *opt;
+       int type, i, ret;
 
-       opt = bundle_get_val(b, "_SYSPOPUP_CONTENT_");
-       if (opt == NULL)
-               option = CHECK_ACT;
-       else if (!strcmp(opt,"warning"))
-               option = WARNING_ACT;
-       else if (!strcmp(opt,"poweroff"))
-               option = POWER_OFF_ACT;
-       else if (!strcmp(opt,"chargeerr"))
-               option = CHARGE_ERROR_ACT;
-       else if (!strcmp(opt,"battdisconnect"))
-               option = BATTERY_DISCONNECT_ACT;
-       else
-               option = CHECK_ACT;
+       if (!ad || !b) {
+               ret = -EINVAL;
+               goto out;
+       }
 
        if (syspopup_has_popup(b)) {
-               if (option == CHECK_ACT) {
-                       return 0;
-               }
                syspopup_reset(b);
-       } else {
-               if(option == CHECK_ACT) {
-                       popup_terminate();
-                       return 0;
+               return 0;
+       }
+
+       opt = bundle_get_val(b, "_SYSPOPUP_CONTENT_");
+       if (!opt) {
+               _E("Failed to get bundle value");
+               ret = -ENOMEM;
+               goto out;
+       }
+
+       type = -1;
+       for (i = 0 ; i < ARRAY_SIZE(lowbat_type) ; i++) {
+               if (!strncmp(opt, lowbat_type[i].name, strlen(opt))) {
+                       type = lowbat_type[i].type;
+                       break;
                }
-               syspopup_create(b, &handler, ad->win_main, ad);
-               if (option == BATTERY_DISCONNECT_ACT)
-                       syspopup_reset_timeout(b, -1);
-               evas_object_show(ad->win_main);
+       }
+       if (type < 0) {
+               _E("Failed to get popup type(%d)", type);
+               ret = -EINVAL;
+               goto out;
+       }
 
-               /* Start Main UI */
-               lowbatt_start((void *)ad);
+       ret = syspopup_create(b, &(ad->handler), ad->win_main, ad);
+       if (ret < 0) {
+               _E("Failed to create syspopup(%d)", ret);
+               goto out;
        }
 
-       return 0;
+       syspopup_reset_timeout(b, -1);
+
+       evas_object_show(ad->win_main);
+
+       switch (type) {
+       case LOWBAT_WARNING:
+               ret = load_battery_warning_popup(ad);
+               break;
+       case LOWBAT_POWEROFF:
+               ret = load_battery_poweroff_popup(ad);
+               break;
+       case LOWBAT_CRITICAL:
+               ret = load_battery_critical_popup(ad);
+               break;
+       case LOWBAT_EXTREME:
+               ret = load_battery_extreme_popup(ad);
+               break;
+       case LOWBAT_CHARGE_ERR:
+               ret = load_charge_error_popup(ad);
+               break;
+       case LOWBAT_CHARGE_ERR_LOW:
+               ret = load_charge_error_low_popup(ad);
+               break;
+       case LOWBAT_CHARGE_ERR_HIGH:
+               ret = load_charge_error_high_popup(ad);
+               break;
+       case LOWBAT_CHARGE_ERR_OVP:
+               ret = load_charge_error_ovp_popup(ad);
+               break;
+       case LOWBAT_BATT_DISCONNECT:
+               ret = load_battery_disconnected_popup(ad);
+               break;
+       default:
+               _E("Known popup type (%d)", type);
+               ret = -EINVAL;
+               break;
+       }
+       if (ret < 0)
+               goto out;
+
+out:
+       if (ret < 0)
+               popup_terminate();
+
+       return ret;
 }
 
 int main(int argc, char *argv[])
 {
        struct appdata ad;
 
-       /* App life cycle management */
        struct appcore_ops ops = {
                .create = app_create,
                .terminate = app_terminate,
index e6c2efa70c8d5d83b751948c67d5986e797c6041..db9ac7a33fff469a5d9e98f48184fd3d849d125b 100755 (executable)
@@ -166,7 +166,6 @@ cp LICENSE.Apache_v2 %{buildroot}/usr/share/license/org.tizen.usbotg-syspopup
 %manifest %{name}.manifest
 %defattr(-,root,root,-)
 /usr/apps/org.tizen.lowbat-syspopup/bin/lowbatt-popup
-/usr/apps/org.tizen.lowbat-syspopup/res/edje/lowbatt/lowbatt.edj
 /usr/share/packages/org.tizen.lowbat-syspopup.xml
 /opt/etc/smack/accesses.d/org.tizen.lowbat-syspopup.rule
 /usr/share/license/org.tizen.lowbat-syspopup