TizenRefApp-7138 Implement App-notification detail 36/87936/4
authorOleksander Kostenko <o.kostenko@samsung.com>
Fri, 9 Sep 2016 15:39:49 +0000 (18:39 +0300)
committerOleksander Kostenko <o.kostenko@samsung.com>
Mon, 12 Sep 2016 15:05:56 +0000 (18:05 +0300)
Change-Id: If9778b717998d872ab4e6c4e0827301733d7fb42
Signed-off-by: Oleksander Kostenko <o.kostenko@samsung.com>
Build/basedef.mk
Build/build_edc.mk
Build/build_po.mk
Build/flags.mk
Build/makefile.mk
Build/platform.mk [new file with mode: 0644]
Build/tooldef.mk
project_def.prop
src/app-details.c

index 88126243b4cb2616c7bfe9a77134d948578cdce3..64fbf82b0a3fd01a14ea2e2bb05fb00f3edcee8a 100644 (file)
@@ -1,24 +1,34 @@
 # Add inputs and outputs from these tool invocations to the build variables
 
-C_DEPS +=
 
-USES_EFL = yes
-USES_USR_INC = yes
+OS_NAME := $(shell $(UNAME))
 
-SYSROOT = $(SBI_SYSROOT)
 
-USR_INCS := $(addprefix -I $(SYSROOT),$(PLATFORM_INCS_EX))
-EFL_INCS = 
+#ifeq ($(origin BUILD_CONFIG), undefined)
+BUILD_CONFIG ?= Debug
+#endif
 
-ifeq ($(strip $(PLATFORM_LIB_PATHS)),)
-RS_LIB_PATHS := "$(SYSROOT)/usr/lib"
-else
-RS_LIB_PATHS := $(addprefix -L$(SYSROOT),$(PLATFORM_LIB_PATHS))
-endif
+#ifeq ($(origin ARCH), undefined)
+ARCH ?= i386
+#endif
 
-RS_LIBRARIES := $(addprefix -l,$(RS_LIBRARIES_EX))
+#ifeq ($(origin PROJPATH), undefined)
+PROJPATH ?= .
+#endif
 
-PLATFORM_INCS = $(USR_INCS) $(EFL_INCS) \
-     -I"$(SDK_PATH)/library"
 
-OS_NAME := $(shell $(UNAME))
+#ifeq ($(origin PROJ_PATH), undefined)
+PROJ_PATH ?= $(PROJPATH)
+#endif
+
+#ifeq ($(strip $(OUTPUT_DIR)),)
+OUTPUT_DIR ?= $(PROJ_PATH)/$(BUILD_CONFIG)
+#endif
+
+#ifeq ($(strip $(BUILD_ARCH)),)
+BUILD_ARCH ?= $(ARCH)
+#endif
+
+#ifeq ($(strip $(ENVENTOR_PATH)),)
+ENVENTOR_PATH ?= $(SDK_TOOLPATH)/enventor
+#endif
index 8485bb295313bb47601ede0f82c240d880515ba1..6f85fdd962ff28a7e050e95a55f53a1739935102 100644 (file)
@@ -58,9 +58,9 @@ ifneq ($$(strip $$(_ALL_SRCS)),)
 
 _ENC_SRCS := $$(call ENCODE_4MAKE,$$(_ALL_SRCS)) 
 
-_COMPILER_FLAGS := -id "$$(_OUTPUT_DIR)" -id "$$(SDK_TOOLPATH)/enventor/share/enventor/images"
-_COMPILER_FLAGS += -sd "$$(_OUTPUT_DIR)" -sd "$$(SDK_TOOLPATH)/enventor/share/enventor/sounds"
-_COMPILER_FLAGS += -fd "$$(_OUTPUT_DIR)" -fd "$$(SDK_TOOLPATH)/enventor/share/enventor/fonts"
+_COMPILER_FLAGS := -id "$$(ENVENTOR_SHARED_RES_PATH)/images"
+_COMPILER_FLAGS += -sd "$$(ENVENTOR_SHARED_RES_PATH)/sounds"
+_COMPILER_FLAGS += -fd "$$(ENVENTOR_SHARED_RES_PATH)/fonts"
 
 ifneq ($$(strip $$(_IMAGE_DIRS)),)
 _COMPILER_FLAGS += $$(addprefix -id ,$$(_IMAGE_DIRS))
index 23eb0df0d090df9dd2cda04648bffdbaac3f38b3..d88d71aa611b6a388665a31ef44a7f57aefd1bd6 100644 (file)
@@ -37,7 +37,7 @@ endef
 
 define MO_PROC_RAW
 
-_PROJ_ROOT := $(1)
+_OUTPUT_DIR := $(1)
 _SRCS := $(2)
 _APPNAME := $(3)
 
index 556cbd1e18aa8009140175c7f0a569059dfa95ca..1f3c7f8147a92ccfb2d95b55cf1681554bdd002f 100644 (file)
@@ -1,8 +1,8 @@
 
-DEBUG_OP = -g 
+DEBUG_OP = -g3 
 CPP_DEBUG_OP = 
 
-OPTIMIZATION_OP = -O3 
+OPTIMIZATION_OP = -O0 
 CPP_OPTIMIZATION_OP = 
 
 COMPILE_FLAGS = $(DEBUG_OP) $(OPTIMIZATION_OP) -Wall -c -fmessage-length=0 -fPIC 
index 7384d248a72e6cf4305aa0dce3e4f5ec1269e55a..c95b4b40b45dd00108dab49983687ee1f2479682 100644 (file)
@@ -1,8 +1,8 @@
-# 
-# Usege : make -f <proj_root>/Build/makefile -C <proj_root> 
 #
-BUILD_SCRIPT_VERSION := 1.2.2
+# Usege : make -f <proj_root>/Build/makefile -C <proj_root>
+#
+
+BUILD_SCRIPT_VERSION := 1.2.3
 
 .PHONY : app_version app_clean build_version
 
@@ -14,18 +14,20 @@ clean : app_clean
 version : build_version
 
 
-#PROJ_ROOT := $(call BSLASH2SLASH,$(PROJPATH))
+#PROJ_ROOT := $(call BSLASH2SLASH,$(PROJ_PATH))
 PROJ_ROOT := .
 BUILD_ROOT := $(PROJ_ROOT)/Build
 
+include $(BUILD_ROOT)/basedef.mk
+
 include $(PROJ_ROOT)/project_def.prop
 -include $(PROJ_ROOT)/build_def.prop
 
 include $(BUILD_ROOT)/funcs.mk
 
--include $(BUILD_ROOT)/basedef.mk
 -include $(BUILD_ROOT)/tooldef.mk
 -include $(BUILD_ROOT)/flags.mk
+-include $(BUILD_ROOT)/platform.mk
 
 
 APPTYPE := $(type)
@@ -67,7 +69,7 @@ C_OPT := $(COMPILE_FLAGS) $(TC_COMPILER_MISC) $(RS_COMPILER_MISC) $(EXT_OP) --sy
 CPP_OPT := $(CPP_COMPILE_FLAGS) $(TC_COMPILER_MISC) $(RS_COMPILER_MISC) $(EXT_OP) --sysroot="$(SYSROOT)" -Werror-implicit-function-declaration $(M_OPT)
 C_OPT_FILE := $(PLATFORM_INCS_FILE)
 
-OBJS := # 
+OBJS := #
 
 # Global C/C++
 ifeq ($(strip $(USER_ROOT)),)
@@ -107,7 +109,7 @@ $(APPFILE) : $(OBJS) $(UOBJS)
        @echo '  Building target: $@'
        @echo '  Invoking: C/C++ Linker'
        $(call MAKEDIRS,$(@D))
-       $(CXX) -o $(APPFILE) $(OBJS) $(UOBJS) $(LIBPATHS) -Xlinker --as-needed $(LIBS) $(LINK_FLAGS) $(TC_LINKER_MISC) $(RS_LINKER_MISC) -pie -lpthread -Xlinker -rpath="/home/developer/sdk_tools/lib" --sysroot="$(SYSROOT)" -Xlinker --version-script="$(PROJ_ROOT)/.exportMap" $(RS_LIB_PATHS) $(RS_LIBRARIES) -Xlinker -rpath="/opt/usr/apps/$(APPID)/lib" -Werror-implicit-function-declaration
+       $(CXX) -o $(APPFILE) $(OBJS) $(UOBJS) $(LIBPATHS) -Xlinker --as-needed $(LIBS) $(LINK_FLAGS) $(TC_LINKER_MISC) $(RS_LINKER_MISC) -pie -lpthread --sysroot="$(SYSROOT)" -Xlinker --version-script="$(PROJ_ROOT)/.exportMap" $(RS_LIB_PATHS) $(RS_LIBRARIES) -Xlinker -rpath="/opt/usr/apps/$(APPID)/lib" -Werror-implicit-function-declaration
        @echo '  Finished building target: $@'
 endif
 ifeq ($(strip $(APPTYPE)),staticLib)
@@ -134,7 +136,7 @@ $(OBJ_OUTPUT) :
 $(OUTPUT_DIR) :
        $(call MAKEDIRS,$@)
 
-  
+
 ifneq ($(strip $(PLATFORM_INCS)),)
 $(PLATFORM_INCS_FILE) : $(OBJ_OUTPUT)
        @echo '  Building inc file: $@'
@@ -143,7 +145,7 @@ ifneq ($(findstring 3.82,$(MAKE_VERSION)),)
        $(file > $@,$(PLATFORM_INCS))
 else
        @echo $(PLATFORM_INCS) > $@
-endif    
+endif
 else
        @echo $(PLATFORM_INCS) > $@
 endif
@@ -151,7 +153,11 @@ endif
 
 
 include $(BUILD_ROOT)/build_edc.mk
+
+#ifeq ($(strip $(ENVENTOR_SHARED_RES_PATH)),)
+ENVENTOR_SHARED_RES_PATH ?= $(ENVENTOR_PATH)/share/enventor
+#endif
+
 EDJ_FILES :=
 
 # Global EDCs
diff --git a/Build/platform.mk b/Build/platform.mk
new file mode 100644 (file)
index 0000000..294a38a
--- /dev/null
@@ -0,0 +1,15 @@
+# Add inputs and outputs from these tool invocations to the build variables
+
+SYSROOT = $(SBI_SYSROOT)
+
+USR_INCS := $(addprefix -I $(SYSROOT),$(PLATFORM_INCS_EX))
+
+ifeq ($(strip $(PLATFORM_LIB_PATHS)),)
+RS_LIB_PATHS := "$(SYSROOT)/usr/lib"
+else
+RS_LIB_PATHS := $(addprefix -L$(SYSROOT),$(PLATFORM_LIB_PATHS))
+endif
+
+RS_LIBRARIES := $(addprefix -l,$(RS_LIBRARIES_EX))
+
+PLATFORM_INCS = $(USR_INCS) -I"$(SDK_PATH)/library"
index 9df2a39fa2900fea0682de47f3340fe80ec6df60..fded35b84fe9b3bb17de5ed900aeb83422bece9e 100644 (file)
@@ -1,17 +1,5 @@
 # Add inputs and outputs from these tool invocations to the build variables
 
-ifeq ($(strip $(BUILD_CONFIG)),)
-BUILD_CONFIG = Debug
-endif
-
-ifneq ($(strip $(PROJROOT)),)
-PROJPATH := $(PROJROOT)
-endif
-
-ifeq ($(strip $(OUTPUT_DIR)),)
-OUTPUT_DIR := $(PROJPATH)/$(BUILD_CONFIG)
-endif
-
 ifneq ($(strip $(SHELL_BIN)),)
 SHELL = $(SHELL_BIN)
 else
@@ -73,4 +61,3 @@ MSGFMT = $(MSGFMT_BIN)
 else
 MSGFMT = msgfmt
 endif
-
index 518d634af98126f5aaa8a850512978a30035fd13..83b4a06d19db4eae03d1fecd631d1d0b1b6a088a 100644 (file)
@@ -9,13 +9,13 @@ type = app
 profile = mobile-3.0
 
 # C/CPP Sources
-USER_SRCS = src/common-efl.c src/do-not-disturb-efl.c src/notification-setting-info.c src/app-details.c src/excepted-apps-efl.c src/main.c src/allowed-calls.c src/pkgmgr-setting-info.c src/lock_screen_content.c src/set-schedule-info.c src/sys_setting.c 
+USER_SRCS = src/excepted-apps-efl.c src/do-not-disturb-efl.c src/sys_setting.c src/set-schedule-info.c src/allowed-calls.c src/pkgmgr-setting-info.c src/app-details.c src/common-efl.c src/lock_screen_content.c src/notification-setting-info.c src/main.c 
 
 # EDC Sources
 USER_EDCS =  
 
 # PO Sources
-USER_POS = res/po/fr.po res/po/it_IT.po res/po/et.po res/po/sr.po res/po/hy.po res/po/ca.po res/po/is.po res/po/hi.po res/po/az.po res/po/en_US.po res/po/hr.po res/po/ka.po res/po/zh_HK.po res/po/pl.po res/po/el_GR.po res/po/ko_KR.po res/po/lt.po res/po/sl.po res/po/uz.po res/po/sv.po res/po/fi.po res/po/eu.po res/po/fr_CA.po res/po/bg.po res/po/ja_JP.po res/po/en_PH.po res/po/nl.po res/po/gl.po res/po/uk.po res/po/de.po res/po/tr_TR.po res/po/zh_TW.po res/po/en.po res/po/lv.po res/po/nb.po res/po/pt_PT.po res/po/ru_RU.po res/po/da.po res/po/ro.po res/po/es_ES.po res/po/mk.po res/po/ga.po res/po/sk.po res/po/kk.po res/po/cs.po res/po/pt_BR.po res/po/hu.po res/po/zh_CN.po res/po/ar.po res/po/es_US.po 
+USER_POS = res/po/de.po res/po/en_US.po res/po/fi.po res/po/zh_HK.po res/po/sl.po res/po/tr_TR.po res/po/pt_PT.po res/po/sr.po res/po/az.po res/po/ga.po res/po/gl.po res/po/hy.po res/po/lv.po res/po/da.po res/po/en.po res/po/it_IT.po res/po/lt.po res/po/nb.po res/po/ja_JP.po res/po/ru_RU.po res/po/el_GR.po res/po/bg.po res/po/zh_TW.po res/po/pt_BR.po res/po/sv.po res/po/pl.po res/po/cs.po res/po/fr_CA.po res/po/zh_CN.po res/po/ar.po res/po/hu.po res/po/eu.po res/po/kk.po res/po/et.po res/po/ca.po res/po/fr.po res/po/nl.po res/po/sk.po res/po/is.po res/po/ka.po res/po/ro.po res/po/ko_KR.po res/po/es_US.po res/po/mk.po res/po/en_PH.po res/po/es_ES.po res/po/uz.po res/po/uk.po res/po/hr.po 
 
 # User Defines
 USER_DEFS = 
@@ -52,7 +52,7 @@ USER_EDCS_FONT_DIRS = ${OUTPUT_DIR} edje/fonts
 # EDC Flags
 USER_EXT_EDC_KEYS = EDC0 
 
-USER_EXT_EDC0_EDCS = res/edje/repeat_weekly_item.edc res/edje/setting_notification.edc res/edje/reject_calls_popup.edc res/edje/time_button_layout.edc 
+USER_EXT_EDC0_EDCS = res/edje/time_button_layout.edc res/edje/setting_notification.edc res/edje/reject_calls_popup.edc res/edje/repeat_weekly_item.edc 
 USER_EXT_EDC0_EDCS_IMAGE_DIRS = ${OUTPUT_DIR} edje/images 
 USER_EXT_EDC0_EDCS_SOUND_DIRS = ${OUTPUT_DIR} edje/sounds 
 USER_EXT_EDC0_EDCS_FONT_DIRS = ${OUTPUT_DIR} edje/fonts 
index a1f86b134075d00c18b68574d0ce2e508f51601a..c4375e9ea03e9a074ab299d37756b37fc01a1ca9 100644 (file)
@@ -18,6 +18,9 @@
 #include "app-details.h"
 #include <badge.h>
 #include <badge_internal.h>
+#include <notification_setting_internal.h>
+
+#define AMOUNT_OF_CONTENT_ITEMS 3
 
 typedef enum
 {
@@ -32,6 +35,12 @@ typedef enum
 item_info_s *g_app_info = NULL;
 Evas_Object *g_app_notification_genlist = NULL;
 
+static char *items[AMOUNT_OF_CONTENT_ITEMS] = {
+    "IDS_QP_OPT_SHOW_ALL_CONTENT_ABB",
+    "IDS_QP_OPT_HIDE_SENSITIVE_CONTENT_ABB",
+    "IDS_QP_OPT_DONT_SHOW_NOTIFICATIONS_ABB"
+};
+
 static void close_app_details_cb(void *data, Evas_Object *obj, void *event_info)
 {
     NOTISET_TRACE_BEGIN;
@@ -57,13 +66,58 @@ static void allow_noti_check_changed_cb(void *data, Evas_Object *obj, void *even
 
 static Eina_Bool popup_noti_status_get()
 {
-    /*TODO: implement when API appears */
-    return EINA_TRUE;
+    NOTISET_TRACE_BEGIN;
+
+    bool state = false;
+    notification_setting_h setting = NULL;
+
+    int err = notification_setting_get_setting_by_package_name(g_app_info->appid, &setting);
+    if(err != NOTIFICATION_ERROR_NONE)
+    {
+        NOTISET_ERR("notification_setting_get_setting_by_package_name [%d]\n", err);
+    }
+    else if(setting == NULL)
+    {
+        NOTISET_ERR("Notification setting is NULL\n");
+    }
+    else
+    {
+        notification_setting_get_pop_up_notification(setting, &state);
+        NOTISET_DBG("notification_setting_get_pop_up_notification [%d]\n", state);
+    }
+
+    if(setting)
+        notification_setting_free_notification(setting);
+
+    return state;
 }
 
 static void popup_noti_status_set(Eina_Bool value)
 {
-    /*TODO: implement when API appears */
+    NOTISET_TRACE_BEGIN;
+    notification_setting_h setting = NULL;
+
+    int err = notification_setting_get_setting_by_package_name(g_app_info->appid, &setting);
+    if(err != NOTIFICATION_ERROR_NONE)
+    {
+        NOTISET_ERR("notification_setting_get_setting_by_package_name [%d]\n", err);
+    }
+    else if(setting == NULL)
+    {
+        NOTISET_ERR("Notification setting is NULL\n");
+    }
+    else
+    {
+        notification_setting_set_pop_up_notification(setting, value);
+        NOTISET_DBG("notification_setting_set_pop_up_notification [%d]\n", value);
+
+        err = notification_setting_update_setting(setting);
+        if(err != NOTIFICATION_ERROR_NONE)
+            NOTISET_ERR("notification_setting_update_setting err[%d]\n", err);
+    }
+
+    if(setting)
+        notification_setting_free_notification(setting);
 }
 
 static void popup_noti_check_changed_cb(void *data, Evas_Object *obj, void *event_info)
@@ -72,6 +126,12 @@ static void popup_noti_check_changed_cb(void *data, Evas_Object *obj, void *even
     popup_noti_status_set(state);
 }
 
+static Eina_Bool app_pop_up_notification_exists_get()
+{
+    /* implement when API will be available */
+    return EINA_TRUE;
+}
+
 static Eina_Bool app_badge_exists_get()
 {
     bool value = EINA_FALSE;
@@ -97,10 +157,32 @@ static void app_badge_check_changed_cb(void *data, Evas_Object *obj, void *event
     app_badge_status_set(state);
 }
 
-static const char *noti_on_lock_screen_status_get()
+static int noti_on_lock_screen_status_get()
 {
-    /*TODO: implement when API appears */
-    return "IDS_QP_OPT_SHOW_ALL_CONTENT_ABB";
+    NOTISET_TRACE_BEGIN;
+
+    lock_screen_content_level_e level = SHOW_ALL_CONTENT;
+    notification_setting_h setting = NULL;
+
+    int err = notification_setting_get_setting_by_package_name(g_app_info->appid, &setting);
+    if(err != NOTIFICATION_ERROR_NONE)
+    {
+        NOTISET_ERR("notification_setting_get_setting_by_package_name [%d]\n", err);
+    }
+    else if(setting == NULL)
+    {
+        NOTISET_ERR("Notification setting is NULL\n");
+    }
+    else
+    {
+        notification_setting_get_lock_screen_content(setting, &level);
+        NOTISET_DBG("notification_setting_get_lock_screen_content [%d]\n", level);
+    }
+
+    if(setting)
+        notification_setting_free_notification(setting);
+
+    return level;
 }
 
 static char *app_details_gl_text_get_cb(void *data, Evas_Object *obj, const char *part)
@@ -148,7 +230,13 @@ static char *app_details_gl_text_get_cb(void *data, Evas_Object *obj, const char
             }
             else if(!strcmp(part, "elm.text.sub"))
             {
-                return strdup(APP_STRING(noti_on_lock_screen_status_get()));
+                int level = noti_on_lock_screen_status_get();
+                if(level == SHOW_ALL_CONTENT)
+                    return strdup(APP_STRING("IDS_QP_OPT_SHOW_ALL_CONTENT_ABB"));
+                else if(level == HIDE_SENSITIVE_CONTENT)
+                    return strdup(APP_STRING("IDS_QP_OPT_HIDE_SENSITIVE_CONTENT_ABB"));
+                else if(level == DO_NOT_SHOW_NOTIFICATIONS)
+                    return strdup(APP_STRING("IDS_QP_OPT_DONT_SHOW_NOTIFICATIONS_ABB"));
             }
             break;
         default:
@@ -207,13 +295,162 @@ static void app_details_gl_del_cb(void *data, Evas_Object *obj EINA_UNUSED)
 {
 }
 
+static void popup_hide_cb(void *data, Evas_Object *obj, void *event_info)
+{
+    evas_object_del(obj);
+}
+
+static char *gl_text_get_cb(void *data, Evas_Object *obj, const char *part)
+{
+    if(!strcmp(part, "elm.text"))
+    {
+        int index = (int)data;
+        return strdup(APP_STRING(items[index]));
+    }
+    return NULL;
+}
+
+static Evas_Object *gl_content_get_cb(void *data, Evas_Object *obj, const char *part)
+{
+    if(!strcmp(part, "elm.swallow.end"))
+    {
+        int index = (int)data;
+        Evas_Object *radio = NULL;
+        Evas_Object *radio_main = evas_object_data_get(obj, "radio");
+        radio = elm_radio_add(obj);
+        elm_radio_group_add(radio, radio_main);
+        elm_radio_state_value_set(radio, index);
+        evas_object_size_hint_weight_set(radio, EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);
+        evas_object_size_hint_align_set(radio, EVAS_HINT_FILL, EVAS_HINT_FILL);
+        return radio;
+    }
+
+    return NULL;
+}
+
+static void gl_radio_sel_cb(void *data, Evas_Object *obj, void *event_info)
+{
+    NOTISET_TRACE_BEGIN;
+
+    notification_setting_h setting = NULL;
+    lock_screen_content_level_e level = SHOW_ALL_CONTENT;
+    Elm_Object_Item *it = event_info;
+
+    Evas_Object *radio = NULL;
+
+    elm_genlist_item_selected_set(it, EINA_FALSE);
+    radio = elm_object_item_part_content_get(it, "elm.swallow.end");
+    int index = (int)elm_object_item_data_get(it);
+    elm_radio_value_set(radio, index);
+
+    int err = notification_setting_get_setting_by_package_name(g_app_info->appid, &setting);
+    if(err != NOTIFICATION_ERROR_NONE)
+    {
+        NOTISET_ERR("notification_setting_get_setting_by_package_name [%d]\n", err);
+    }
+    else if(setting == NULL)
+    {
+        NOTISET_ERR("Notification setting is NULL\n");
+    }
+    else
+    {
+        switch (index)
+        {
+            case 0:
+                level = SHOW_ALL_CONTENT;
+                break;
+            case 1:
+                level = HIDE_SENSITIVE_CONTENT;
+                break;
+            case 2:
+                level = DO_NOT_SHOW_NOTIFICATIONS;
+                break;
+            default:
+                NOTISET_ERR("Incorrect index");
+                break;
+        }
+
+        notification_setting_set_lock_screen_content(setting, level);
+        NOTISET_DBG("notification_setting_set_lock_screen_content [%d]\n", level);
+
+        err = notification_setting_update_setting(setting);
+        if(err != NOTIFICATION_ERROR_NONE)
+            NOTISET_ERR("notification_setting_update_setting err[%d]\n", err);
+    }
+
+    if(setting)
+        notification_setting_free_notification(setting);
+
+    elm_genlist_item_update(elm_genlist_last_item_get(get_app_ui_data()->list_sub));
+    evas_object_del(data);
+}
+
+static void show_noti_on_lock_popup()
+{
+    NOTISET_TRACE_BEGIN;
+    static Elm_Genlist_Item_Class itc;
+    Evas_Object *popup = NULL;
+    Evas_Object *genlist = NULL;
+    ug_data *ug_main = get_app_ui_data();
+    ret_if(ug_main == NULL);
+
+    popup = elm_popup_add(ug_main->win);
+    elm_popup_orient_set(popup, ELM_POPUP_ORIENT_BOTTOM);
+    elm_popup_align_set(popup, ELM_NOTIFY_ALIGN_FILL, 1.0);
+    elm_object_part_text_set(popup, "title,text", APP_STRING("IDS_QP_TMBODY_NOTIFICATIONS_ON_LOCK_SCREEN"));
+    evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+    evas_object_size_hint_align_set(popup, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+    eext_object_event_callback_add(popup, EEXT_CALLBACK_BACK, popup_hide_cb, NULL);
+    evas_object_smart_callback_add(popup, "dismissed", popup_hide_cb, NULL);
+    evas_object_smart_callback_add(popup, "block,clicked", popup_hide_cb, NULL);
+
+    /* genlist */
+    genlist = elm_genlist_add(popup);
+    elm_scroller_content_min_limit(genlist, EINA_FALSE, EINA_TRUE);
+    elm_object_content_set(popup, genlist);
+
+    Evas_Object *radio = elm_radio_add(genlist);
+    evas_object_data_set(genlist, "radio", radio);
+
+    itc.item_style = "type1";
+    itc.func.text_get = gl_text_get_cb;
+    itc.func.content_get = gl_content_get_cb;
+    itc.func.state_get = NULL;
+    itc.func.del = NULL;
+
+    for (int i = 0; i < AMOUNT_OF_CONTENT_ITEMS; i++)
+    {
+        elm_genlist_item_append(genlist, &itc, (void *)i, NULL, ELM_GENLIST_ITEM_NONE, gl_radio_sel_cb, popup);
+    }
+
+    evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+    evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+    elm_genlist_mode_set(genlist, ELM_LIST_EXPAND);
+    evas_object_show(genlist);
+
+    int index = noti_on_lock_screen_status_get();
+    elm_radio_value_set(radio, index);
+
+    evas_object_show(popup);
+}
+
 static void app_details_gl_selected_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
 {
+    App_Details_Items detail = (App_Details_Items)data;
+
     Elm_Object_Item *it = (Elm_Object_Item*)event_info;
     elm_genlist_item_selected_set(it, EINA_FALSE);
 
+    if(detail == APP_DETAILS_NOTI_ON_LOCK)
+    {
+        show_noti_on_lock_popup();
+        return;
+    }
+
     Evas_Object *check = elm_object_item_part_content_get(it, "elm.swallow.end");
-    if (check) {
+    if(check)
+    {
         elm_check_state_set(check, !elm_check_state_get(check));
         evas_object_smart_callback_call(check, "changed", NULL);
     }
@@ -232,11 +469,11 @@ static void app_details_gl_append(Evas_Object *genlist, char *style, App_Details
     itc->func.del = app_details_gl_del_cb;
 
     gen_item = elm_genlist_item_append(genlist,                    /* genlist object */
-                            itc,                        /* item class */
+                            itc,                                   /* item class */
                             (void *)item_name,                     /* item class user data */
-                            NULL,                       /* parent item */
-                            ELM_GENLIST_ITEM_NONE,      /* item type */
-                            app_details_gl_selected_cb,             /* select smart callback */
+                            NULL,                                  /* parent item */
+                            ELM_GENLIST_ITEM_NONE,                 /* item type */
+                            app_details_gl_selected_cb,            /* select smart callback */
                             (void *)item_name);                    /* smart callback user data */
     if(style && !strcmp(style, "group_index"))
         elm_genlist_item_select_mode_set(gen_item, ELM_OBJECT_SELECT_MODE_NONE);
@@ -276,15 +513,16 @@ void app_details_create_view(ug_data *data, item_info_s *app_info)
 
     app_details_gl_append(genlist, "type1", APP_DETAILS_ALLOW_NOTI);
     app_details_gl_append(genlist, "group_index", APP_DETAILS_GROUP_INDEX);
-    /* TODO: Show this items only if API allows [ */
-    app_details_gl_append(genlist, "multiline", APP_DETAILS_POPUP_NOTI);
-    if (app_badge_exists_get())
+    if(app_pop_up_notification_exists_get())
+        app_details_gl_append(genlist, "multiline", APP_DETAILS_POPUP_NOTI);
+    if(app_badge_exists_get())
         app_details_gl_append(genlist, "type1", APP_DETAILS_APP_BADGE);
-    /* ] */
     app_details_gl_append(genlist, "type1", APP_DETAILS_NOTI_ON_LOCK);
 
     Elm_Object_Item *navi_item = elm_naviframe_item_push(data->naviframe, g_app_info->name, back_btn, NULL, genlist, NULL);
     elm_naviframe_item_pop_cb_set(navi_item, app_details_pop_cb, NULL);
+
+    data->list_sub = genlist;
 }
 
 Evas_Object *create_app_notification_gl(ug_data *ugd)