TizenRefApp-7278 Use already loaded list of application in "Allow notifications from... 22/89722/2
authorOleksander Kostenko <o.kostenko@samsung.com>
Mon, 26 Sep 2016 12:22:35 +0000 (15:22 +0300)
committerOleksander Kostenko <o.kostenko@samsung.com>
Mon, 26 Sep 2016 13:29:00 +0000 (16:29 +0300)
Change-Id: I8091117ce177a0354903f626aac4d9510ca777ea
Signed-off-by: Oleksander Kostenko <o.kostenko@samsung.com>
inc/notification-setting-info.h
src/do-not-disturb-efl.c
src/excepted-apps-efl.c
src/main.c
src/notification-setting-info.c

index ebf812a21e0a8ce35c53ba50436ea0d3b63c6766..ca87b3b16a1fcd08989933812e40253e5c777d5a 100755 (executable)
@@ -70,6 +70,7 @@ Eina_List *get_lower_noti_list();
 void create_app_notification_list();
 void update_app_notification_list_on_item(item_info_s *item_info);
 void create_do_not_disturb_application_list();
+void update_do_not_disturb_application_list();
 /**
  *@brief Create list that should be shown in lower part of screen in lock screen content menu.
  */
@@ -81,6 +82,6 @@ void remove_lower_noti_list();
 void remove_apps_noti_allowed_list();
 void remove_apps_noti_blocked_list();
 void remove_excepted_apps_list();
-void remove_arranged_list();
+void update_apps_settings_info();
 
 #endif /* __NOTIFICATION_SETTING_INFO_H__ */
index 06fc75d4a883f38a21ec27c2b2404012b0d2d812..970e70c7a2cf78a37ccb9de210b9ca002100af39 100755 (executable)
@@ -40,7 +40,8 @@ void do_not_disturb_append_items_in_list(Evas_Object* genlist)
 //    TODO: append when API will be implemented, will be move to final release
     append_gl_start_option(genlist, "multiline", "set-schedule-multiline");
 //    append_gl_start_option(genlist, "multiline", "allowed-calls");
-    Eina_List *allowed_list = eina_list_merge(get_first_excepted_apps_list(), get_excepted_apps_list());
+    Eina_List *list = eina_list_clone(get_excepted_apps_list());
+    Eina_List *allowed_list = eina_list_merge(get_first_excepted_apps_list(), list);
     append_gl_full_item(genlist, do_not_disturb_allowed_apps_cont_cb, allowed_list);
 }
 
index 37da02fb843ea74cf4745e31c2a20a0939283899..d0c3e50b5f89b4e59d39bc2a758685ebb56455c1 100755 (executable)
@@ -91,7 +91,6 @@ static void _done_button_cb(void *data, Evas_Object *obj, void *event_info)
     NOTISET_TRACE_BEGIN;
 
     ug_data *u_data = data;
-    Eina_List *list = NULL;
 
     elm_naviframe_item_pop(u_data->naviframe);
 
@@ -101,40 +100,11 @@ static void _done_button_cb(void *data, Evas_Object *obj, void *event_info)
 
     if(u_data->list_main && is_need_to_update)
     {
-        list = get_first_allowed_apps_list();
-        while(list)
-        {
-            item_info_s *item = (item_info_s*) eina_list_data_get(list);
-            set_excepted_apps(item->appid, item->do_not_disturb_except);
-            list = eina_list_next(list);
-        }
-
-        list = get_excepted_apps_list();
-        while(list)
-        {
-            item_info_s *item = (item_info_s*) eina_list_data_get(list);
-            if(item->do_not_disturb_except == false)
-            {
-                set_excepted_apps(item->appid, item->do_not_disturb_except);
-            }
-            list = eina_list_next(list);
-        }
-
-        list = get_not_excepted_apps_list();
-        while(list)
-        {
-            item_info_s *item = (item_info_s*) eina_list_data_get(list);
-            if(item->do_not_disturb_except)
-            {
-                set_excepted_apps(item->appid, item->do_not_disturb_except);
-            }
-            list = eina_list_next(list);
-        }
-
-        create_do_not_disturb_application_list();
+        update_do_not_disturb_application_list();
         elm_genlist_clear(u_data->list_main);
         do_not_disturb_append_items_in_list(u_data->list_main);
     }
+
     remove_state_list();
 }
 
@@ -160,8 +130,6 @@ void exception_application_clicked_cb(void *data, Evas_Object *obj, void *event_
     Evas_Object *cancel_btn = NULL;
     Evas_Object *done_btn = NULL;
 
-    create_do_not_disturb_application_list();
-
     u_data->list_sub = _create_edit_exception_apps_list(u_data);
 
     /* Push to naviframe */
index 95a39c11d6792680cb0c15049879af1b02686ef0..41315b72348947344f8d0a403ac6f56c8a4acea4 100755 (executable)
@@ -286,6 +286,7 @@ static void on_destroy(void *priv)
        ug_data *ugd = priv;
        remove_apps_noti_allowed_list();
        remove_apps_noti_blocked_list();
+       update_apps_settings_info();
        update_system_settings();
        free(ugd);
 }
index cae7e24fe8aefcd399ee8defed5bda75224ba4e3..6190005e1ccb1a122d4d8976b8103fcfb5961c1b 100755 (executable)
@@ -195,6 +195,51 @@ void create_do_not_disturb_application_list()
     notification_setting_free_notification(setting_array);
 }
 
+void update_do_not_disturb_application_list()
+{
+    NOTISET_TRACE_BEGIN;
+
+    setting_info->first_excepted_list = NULL;
+    Eina_List *sub_list = NULL;
+
+    Eina_List *list = get_first_allowed_apps_list();
+    while(list)
+    {
+        item_info_s *item = (item_info_s*) eina_list_data_get(list);
+        if(item->do_not_disturb_except)
+            setting_info->first_excepted_list = eina_list_append(setting_info->first_excepted_list, item);
+
+        list = eina_list_next(list);
+    }
+
+    list = get_excepted_apps_list();
+    while(list)
+    {
+        item_info_s *item = (item_info_s*) eina_list_data_get(list);
+        if(item->do_not_disturb_except)
+            sub_list = eina_list_append(sub_list, item);
+        else
+            setting_info->not_excepted_list = eina_list_sorted_insert(setting_info->not_excepted_list, apps_sort_cb, item);
+
+        list = eina_list_next(list);
+    }
+    setting_info->excepted_list = sub_list;
+
+    list = get_not_excepted_apps_list();
+    sub_list = NULL;
+    while(list)
+    {
+        item_info_s *item = (item_info_s*)eina_list_data_get(list);
+        if(item->do_not_disturb_except)
+            setting_info->excepted_list = eina_list_sorted_insert(setting_info->excepted_list, apps_sort_cb, item);
+        else
+            sub_list = eina_list_append(sub_list, item);
+
+        list = eina_list_next(list);
+    }
+    setting_info->not_excepted_list = sub_list;
+}
+
 void create_notification_on_ls_list()
 {
     NOTISET_TRACE_BEGIN;
@@ -421,13 +466,38 @@ void remove_apps_noti_blocked_list() {
         _remove_apps_list(setting_info->apps_noti_blocked_list);
     }
 }
+
 void remove_excepted_apps_list()
 {
     NOTISET_TRACE_BEGIN;
     if(setting_info)
     {
+        _remove_apps_list(setting_info->first_excepted_list);
+        _remove_apps_list(setting_info->excepted_list);
         _remove_apps_list(setting_info->first_allowed_list);
         _remove_apps_list(setting_info->not_excepted_list);
     }
 }
 
+void update_apps_settings_info()
+{
+    NOTISET_TRACE_BEGIN;
+    if(setting_info)
+    {
+        Eina_List *first_list = eina_list_merge(setting_info->first_allowed_list, setting_info->excepted_list);
+        setting_info->first_allowed_list = NULL;
+        setting_info->excepted_list = NULL;
+
+        Eina_List *list = eina_list_merge(first_list, setting_info->not_excepted_list);
+        first_list = NULL;
+        setting_info->not_excepted_list = NULL;
+
+        while(list)
+        {
+            item_info_s *item = (item_info_s*)eina_list_data_get(list);
+            set_excepted_apps(item->appid, item->do_not_disturb_except);
+            list = eina_list_next(list);
+        }
+    }
+}
+