TizenRefApp-7896 DnD check button does not change automatically 63/109563/3 submit/tizen_3.0/20170111.130127
authorOleksander Kostenko <o.kostenko@samsung.com>
Tue, 10 Jan 2017 12:26:30 +0000 (14:26 +0200)
committerOleksander Kostenko <o.kostenko@samsung.com>
Wed, 11 Jan 2017 09:17:31 +0000 (11:17 +0200)
Change-Id: I7516ef6fb110e38a3ee3f1e57a09985e6045113d
Signed-off-by: Oleksander Kostenko <o.kostenko@samsung.com>
inc/common-efl.h
inc/sys_setting.h
src/allowed-calls.c
src/common-efl.c
src/main.c
src/notification-setting-info.c
src/set-schedule-info.c
src/sys_setting.c

index c3108e2d7d95c41d55ad88b516f17603b248b05c..5c6672bf7c4f3574bd7a53f8a1c2f376e9f61671 100755 (executable)
@@ -44,6 +44,7 @@ typedef struct ug_data_t {
        Evas_Object *done_button;   /**< @brief "Done" button displayed on the top of naviframe.*/
        Elm_Object_Item *navi_item; /**< @brief Naviframe item.*/
        Ecore_Thread *init_thread;      /**< @brief A thread for lazy initiation. */
+       Elm_Object_Item *dnd_check_item;/**< @brief Genlist item "Do not disturb" */
 } ug_data;
 
 /**
index 13e74bd7395421177703b4fd54b17e57a0dcd843..cfff97841010e7e1b4d86e2184c257a778031651 100644 (file)
@@ -31,6 +31,9 @@ notification_system_setting_h get_system_setting();
  */
 void update_system_settings();
 
-
+/**
+ *@brief Free system settings.
+ */
+void free_system_setting();
 
 #endif /* __SYS_SETTING_INFO_H__ */
index b8594fa07b8f8511119ba1e37bf6f1d4f985e839..8a7bbe6121ed55b749ff771dc81c81ce92aa6b0c 100755 (executable)
@@ -99,6 +99,7 @@ const char *get_allowed_calls_string()
        NOTISET_TRACE_BEGIN;
        int value = 0;
        notification_system_setting_get_dnd_allow_exceptions(get_system_setting(), NOTIFICATION_DND_ALLOWED_CALLS, &value);
+       free_system_setting();
        return items[value];
 }
 
@@ -125,6 +126,7 @@ static void popup_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
        if (check_state) {
                int value = 0;
                notification_system_setting_get_dnd_allow_exceptions(get_system_setting(), NOTIFICATION_DND_ALLOWED_CALLS, &value);
+               free_system_setting();
                if (value == NOTIFICATION_DND_ALLOWED_CALLS_CONTACT)
                        set_do_not_show_contact_popup_again(false);
                else if (value == NOTIFICATION_DND_ALLOWED_CALLS_FAVORITE)
index 3ef9799d80407dc1de09fd386146e0272da44f0d..5aed1cf8da1da7846aece26f4735c28b6a334840 100755 (executable)
@@ -487,6 +487,9 @@ void append_gl_start_option(Evas_Object *genlist, char *style, char *ugName)
                                                        gl_selected_cb,                  /* select smart callback */
                                                        ugName);                                        /* smart callback user data */
 
+       if(ugName && !strcmp(ugName, "do-not-disturb"))
+               g_ug_data->dnd_check_item = gen_item;
+
        if (style && !strcmp(style, "group_index"))
                elm_genlist_item_select_mode_set(gen_item, ELM_OBJECT_SELECT_MODE_NONE);
        elm_genlist_item_class_free(itc);
index 4889d89f809a5429113bcf040b7cfb02327e8b3b..e8c3c53bd0c24bfb099a66241dc62c74129a9566 100755 (executable)
@@ -153,12 +153,23 @@ static void _init_finish_dnd_app_list(void *data, Ecore_Thread *thread)
        ugd->init_thread = NULL;
 }
 
+static void _dnd_state_changed(void *user_data, int do_not_disturb)
+{
+       NOTISET_TRACE_BEGIN;
+       ug_data *ugd = (ug_data *)user_data;
+       ret_if(!ugd);
+
+       elm_genlist_item_update(ugd->dnd_check_item);
+}
+
 static void _create_do_not_disturb_view(void *data)
 {
        NOTISET_TRACE_BEGIN;
-       ug_data *ugd = (ug_data *) data;
+       ug_data *ugd = (ug_data *)data;
        ret_if(!ugd);
 
+       notification_register_system_setting_dnd_changed_cb(_dnd_state_changed, ugd);
+
        /* back Button */
        Evas_Object *back_btn = elm_button_add(ugd->naviframe);
        elm_object_style_set(back_btn, "naviframe/back_btn/default");
@@ -287,7 +298,6 @@ static void on_destroy(void *priv)
        remove_apps_noti_allowed_list();
        remove_apps_noti_blocked_list();
        update_apps_settings_info();
-       update_system_settings();
        free(ugd);
 }
 
index 8d89201194c334f31b5afbf045997f162a566df8..6d74a3c54e593512996d554f79b4ba3c1af594cc 100755 (executable)
@@ -303,6 +303,7 @@ bool get_do_not_disturb()
        bool do_not_disturb = false;
 
        notification_system_setting_get_do_not_disturb(get_system_setting(), &do_not_disturb);
+       free_system_setting();
        NOTISET_DBG("do_not_disturb [%d]\n", do_not_disturb);
 
        return do_not_disturb;
@@ -343,6 +344,7 @@ lock_screen_content_level_e get_lock_screen_content_setting()
 {
        lock_screen_content_level_e value = SHOW_ALL_CONTENT;
        notification_system_setting_get_lock_screen_content(get_system_setting(), &value);
+       free_system_setting();
        return value;
 }
 
index 0a9cd6f76dab724565c40a3bbab7aa0c9a49e0ce..08a83e1baab653f0ffbbf5a33d9367d5505bde9a 100755 (executable)
@@ -251,8 +251,8 @@ bool load_dnd_schedule_time(struct tm *start_time_out, struct tm *end_time_out)
        end_time_p.saved_time.tm_sec = 0;
 
        notification_system_setting_dnd_schedule_get_start_time(get_system_setting(), &start_time_p.saved_time.tm_hour, &start_time_p.saved_time.tm_min);
-
        notification_system_setting_dnd_schedule_get_end_time(get_system_setting(), &end_time_p.saved_time.tm_hour, &end_time_p.saved_time.tm_min);
+       free_system_setting();
 
        start_time_p.default_time = start_time_p.saved_time;
        end_time_p.default_time = end_time_p.saved_time;
@@ -306,6 +306,7 @@ int load_dnd_schedule_day()
        int res = 0;
 
        notification_system_setting_dnd_schedule_get_day(get_system_setting(), &res);
+       free_system_setting();
        default_dnd_schedule_weekday = res;
        new_dnd_schedule_weekday = res;
 
@@ -396,6 +397,7 @@ bool get_schedule()
        bool set_schedule = false;
 
        notification_system_setting_dnd_schedule_get_enabled(get_system_setting(), &set_schedule);
+       free_system_setting();
 
        NOTISET_DBG("get_schedule [%d]\n", set_schedule);
        return set_schedule;
@@ -460,7 +462,8 @@ static void week_button_clicked_cb(void *data, Evas_Object *obj, void *event_inf
 
        calc_label_size(cc->label);
        cc->change_color = !cc->change_color;
-
+       save_dnd_weekday(new_dnd_schedule_weekday);
+       ecore_main_loop_iterate(); /* update_system_settings work slow, so we use ui at first */
        update_system_settings();
 }
 
@@ -690,6 +693,7 @@ Evas_Object *start_end_time_item(Evas_Object *parent, bool is_start_time_item)
                notification_system_setting_dnd_schedule_get_end_time(get_system_setting(), &dt.saved_time.tm_hour, &dt.saved_time.tm_min);
                end_time_p = dt;
        }
+       free_system_setting();
 
        char *timeFormat = get_time_format() == time_format_12H ? TIME_12_FORMAT : TIME_24_FORMAT;
        if (is_start_time_item) {
@@ -726,17 +730,14 @@ static void close_set_schedule_cb(void *data, Evas_Object *obj, void *event_info
        ug_data *ugd = (ug_data *)data;
        bool update_ui = false;
        if (new_dnd_schedule_weekday != default_dnd_schedule_weekday) {
-               save_dnd_weekday(new_dnd_schedule_weekday);
                update_ui = true;
        }
 
        if (!same_time(&start_time_p.saved_time, &start_time_p.default_time)) {
-               save_date_time(&start_time_p);
                update_ui = true;
        }
 
        if (!same_time(&end_time_p.saved_time, &end_time_p.default_time)) {
-               save_date_time(&end_time_p);
                update_ui = true;
        }
 
index efe0e4ec87773f11b976900b31d32bb62fe1b2ca..4817c179c4d41f5562126bfe4ab3bc35cb37602d 100644 (file)
@@ -60,3 +60,12 @@ static void load_system_setting()
        }
 }
 
+void free_system_setting()
+{
+       if (system_setting)
+       {
+               notification_system_setting_free_system_setting(system_setting);
+               system_setting = NULL;
+       }
+}
+