Terminate pop-up with Home key when launch mode is 'single' 27/229127/1
authorYunjin Lee <yunjin-.lee@samsung.com>
Mon, 30 Mar 2020 03:35:11 +0000 (12:35 +0900)
committerYunjin Lee <yunjin-.lee@samsung.com>
Mon, 30 Mar 2020 03:35:11 +0000 (12:35 +0900)
- If caller app doesn't have ui then askuser launches pop-up with
'single' mode. If launch mode is 'single' then terminate pop-up with
Home key event.

Change-Id: I76a3cce7d8037deb2a04d691927b9e0b7fbc33ae
Signed-off-by: Yunjin Lee <yunjin-.lee@samsung.com>
common/include/common_utils.h
common/src/common_utils.c
ui/src/app_main.c
ui/src/popup.c

index 8adf736..3a9d61d 100644 (file)
@@ -58,6 +58,9 @@ extern "C" {
                } \
        }
 
+#define HOME_KEY "XF86Home"
+#define BACK_KEY "XF86Back"
+
 typedef struct {
        char* privacy;
        ppm_popup_response_e response;
@@ -79,6 +82,7 @@ typedef struct _app_data_s {
 
        bool all_responded;
        char* launch_type;
+       app_control_launch_mode_e mode;
        int popup_id;
 
        GList* privacy_list;
index e62b145..e2517f3 100644 (file)
@@ -37,6 +37,7 @@ privacy_data_s* new_privacy_data()
 void init_app_data(app_data_s* ad)
 {
        ad->all_responded = false;
+       ad->mode = APP_CONTROL_LAUNCH_MODE_GROUP;
        ad->launch_type = NULL;
        ad->caller_pkgid = NULL;
        ad->popup_id = 0;
index 55d0534..2dc5183 100644 (file)
@@ -74,12 +74,6 @@ static bool app_create(void * data)
        return true;
 }
 
-//TODO: remove when implementation is done
-void print_all(const char *k, const char *v, void *data)
-{
-       LOGD("%s -> %s ", k, v);
-}
-
 static void app_control(app_control_h app_control, void *data)
 {
        LOGD("app_control()");
@@ -90,12 +84,18 @@ static void app_control(app_control_h app_control, void *data)
        char* caller_appid = NULL;
        ret = app_control_get_caller(app_control, &caller_appid);
        if (ret != APP_CONTROL_ERROR_NONE) {
-               LOGE("app_control_get_caller() failed. Can't get caller info. Terminate.");
+               LOGE("app_control_get_caller() failed. Can't get caller info. Terminate. ret = %d", ret);
                ui_app_exit();
        }
 
        LOGD("caller appid = %s", caller_appid);
 
+       ret = app_control_get_launch_mode(app_control, &(ad->mode));
+       if (ret != APP_CONTROL_ERROR_NONE) {
+               LOGE("app_control_get_launch_mode() failed. Terminate. ret = %d", ret);
+               ui_app_exit();
+       }
+
        app_info_h app_info;
        ret = app_info_create(caller_appid, &app_info);
        free(caller_appid);
@@ -123,8 +123,6 @@ static void app_control(app_control_h app_control, void *data)
                ui_app_exit();
        }
 
-       //bundle_iterate(b, print_all, NULL); //TODO: remove or comment it when implementation is done
-
        size_t popup_id_size;
        int *popup_id;
 
@@ -200,7 +198,7 @@ static void app_terminate(void *data)
                privacies[i] = strdup(pd->privacy);
                responses[i] = pd->response;
        }
-       ret = ppm_popup_send_response(ad->popup_id, (const char**)privacies, responses, i);
+       ret = ppm_popup_send_response(ad->popup_id, (const char**)privacies, responses, ad->privacy_num);
 
        for (i = 0; i < ad->privacy_num; ++i) {
                free(privacies[i]);
index 666dce6..7812e27 100644 (file)
@@ -192,10 +192,15 @@ static void __lang_changed_cb(void *data, Evas_Object *obj, void *event_info)
 
 Eina_Bool __hw_key_clicked_cb(void *data, int type, void *event_info)
 {
+       app_data_s *ad = (app_data_s*)data;
        Ecore_Event_Key *ev = (Ecore_Event_Key*)event_info;
        ALOGD("HW key clicked. type <%d> pressed key is <%s>", type, ev->key);
        if (ev->event_flags & ECORE_EVENT_FLAG_CANCEL) return ECORE_CALLBACK_PASS_ON;
-       if (!strcmp(ev->key, "XF86Back")) {
+       if (ad->mode == APP_CONTROL_LAUNCH_MODE_SINGLE && !strcmp(ev->key, HOME_KEY)) {
+               LOGD("launch mode single. home key terminate.");
+               ui_app_exit();
+       }
+       if (!strcmp(ev->key, BACK_KEY)) {
                ui_app_exit();
        }
        return EINA_TRUE;