Fix the issue in 'Setting->About phone->My number list' .
authorJing Yigang <yigang.jing@samsung.com>
Tue, 28 Aug 2012 03:49:34 +0000 (11:49 +0800)
committerJing Yigang <yigang.jing@samsung.com>
Tue, 28 Aug 2012 03:49:34 +0000 (11:49 +0800)
Change-Id: I332330a4a2083f967dbdc497198ca04a8e7c30e6

packaging/settings.spec
setting-about/include/setting-about.h
setting-about/src/setting-about-main.c
setting-about/src/setting-about.c
setting-common/include/setting-common-data-slp-setting.h
setting-common/src/setting-common-data-slp-setting.c

index 7be7dbf..bf8752e 100755 (executable)
@@ -375,7 +375,7 @@ GOPTION="-g 6514"
 
 #resetAbout
        vconftool $GOPTION set -t string db/setting/device_name "Redwood"
-
+       vconftool $GOPTION set -t string db/setting/selected_num ""
 #resetMenuWidgets
        vconftool $GOPTION -i set -t int memory/setting/font_changed "0"
        #vconftool $GOPTION -i set -t int memory/mobile_hotspot/skin_changed "0"
index 8db521e..222d320 100755 (executable)
@@ -92,7 +92,6 @@ struct _SettingAboutUG {
        bool empty_flag;
        //char *my_numbers[SETTING_ABOUT_MY_NUMBERS_LEN];
        TelSimMsisdnList_t my_numbers;
-       int my_number_sel_idx;
        bool popup_showed_flag; /** if popup has been showed, do not show again*/
 //     MOBILE_AP_HANDLE mobile_ap_handle;
 };
index 6c5a7fe..536d60f 100755 (executable)
@@ -52,9 +52,6 @@ setting_view setting_view_about_main = {
        .update = setting_about_main_update,
        .cleanup = setting_about_main_cleanup,
 };
-
-static void __setting_about_main_exp_cb(void *data, Evas_Object *obj, void *event_info);
-
 /**
 * Do process when clicking '<-' button
 *
@@ -84,8 +81,7 @@ static void __setting_about_main_mobile_ap_turn_off_ask_resp_cb(void *data,
 static void __setting_about_main_certificates_clicked(void *data);
 static void __setting_about_main_device_name_clicked(void *data, Evas_Object *obj);
 static void __setting_about_main_diagnostics_usage_clicked(void *data, Evas_Object *obj);
-
-static void __setting_about_sub_list_rd_change(void *data, Evas_Object *obj, void *event_info);
+static void __setting_about_main_exp_cb(void *data, Evas_Object *obj, void *event_info);
 /* ***************************************************
  *
  *basic func
@@ -691,13 +687,17 @@ int setting_about_generate_genlist(void *data)
        }
 
        // [UI] My number
+       int err;
+       char sel_num[TAPI_SIM_XDN_DIALING_NUMBER_LEN + 1] = { 0, };
+       setting_get_string_slp_key(STR_SLP_SETTING_SELECT_NUM, sel_num, &err);
+
        if (ad->my_numbers.count == 1) {
                item_data =
                        setting_create_Gendial_field_def(scroller, &(ad->itc_2text_2),
-                                            setting_about_main_mouse_up_Gendial_list_cb,
+                                            NULL,
                                             ad, SWALLOW_Type_INVALID, NULL,
                                             NULL, 0, SETTING_ABOUT_MY_NUMBER_STR,
-                                            ad->my_numbers.list[0].name, NULL);
+                                            sel_num, NULL);
                if (item_data) {
                        elm_genlist_item_select_mode_set(item_data->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
                } else {
@@ -711,7 +711,12 @@ int setting_about_generate_genlist(void *data)
                                                    NULL, NULL,
                                                    SWALLOW_Type_INVALID,
                                                    SETTING_ABOUT_MY_NUMBER_STR,
-                                                   ad->my_numbers.list[ad->my_number_sel_idx].name);
+                                                   sel_num);
+               if (item_data) {
+                       item_data->int_slp_setting_binded = STR_SLP_SETTING_SELECT_NUM;
+               } else {
+                       SETTING_TRACE_ERROR("ad->data_wap is NULL");
+               }
 
        } else {
                SETTING_TRACE_ERROR("don't have my number");
@@ -1265,6 +1270,53 @@ static void __setting_about_main_mobile_ap_turn_off_ask_resp_cb(void *data,
        }
 }
 
+void __setting_about_sub_list_sel_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       SETTING_TRACE_BEGIN;
+       /* error check */
+       retm_if(event_info == NULL, "Invalid argument: event info is NULL");
+       Elm_Object_Item *subitem = (Elm_Object_Item *) event_info;
+       Elm_Object_Item *parentItem = elm_genlist_item_parent_get(subitem);
+       elm_genlist_item_selected_set(subitem, 0);
+       Setting_GenGroupItem_Data *data_subItem = elm_object_item_data_get(subitem);
+       Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem);      /* parent data */
+       ret_if(NULL == data_subItem || NULL == data_parentItem);
+
+
+       int err;
+       setting_set_string_slp_key(data_parentItem->int_slp_setting_binded, data_subItem->keyStr, &err);
+       setting_retm_if(0 != err, "Set vconf error[%d]",data_parentItem->int_slp_setting_binded);
+
+       data_parentItem->sub_desc = (char *)g_strdup(_(data_subItem->keyStr));
+       elm_object_item_data_set(data_parentItem->item, data_parentItem);
+       elm_genlist_item_update(data_parentItem->item);
+       elm_radio_value_set(data_subItem->rgd, data_subItem->chk_status);
+}
+
+static void __setting_about_sub_list_rd_change(void *data, Evas_Object *obj, void *event_info)
+
+{
+       SETTING_TRACE_BEGIN;
+       retm_if(data == NULL, "Data parameter is NULL");
+       Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
+
+       Elm_Object_Item *subItem = list_item->item;
+       Elm_Object_Item *parentItem = elm_genlist_item_parent_get(subItem);
+
+       Setting_GenGroupItem_Data *data_subItem = elm_object_item_data_get(subItem);    /* subItem data */
+       Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem);      /* parent data */
+       ret_if(NULL == data_subItem || NULL == data_parentItem);
+
+       int err;
+       setting_set_string_slp_key(data_parentItem->int_slp_setting_binded, data_subItem->keyStr, &err);
+
+       ret_if(0 != err);
+       data_parentItem->sub_desc = (char *)g_strdup(_(data_subItem->keyStr));
+       elm_object_item_data_set(data_parentItem->item, data_parentItem);
+       elm_genlist_item_update(data_parentItem->item);
+       elm_radio_value_set(obj, data_subItem->chk_status);
+}
+
 static void __setting_about_main_exp_cb(void *data, Evas_Object *obj, void *event_info)
 {
        SETTING_TRACE_BEGIN;
@@ -1273,40 +1325,42 @@ static void __setting_about_main_exp_cb(void *data, Evas_Object *obj, void *even
 
        SettingAboutUG *ad = (SettingAboutUG *) data;
        Elm_Object_Item *parentItem = event_info;       /* parent item */
+       Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem);
        Evas_Object *scroller = elm_object_item_widget_get(parentItem);
 
        Evas_Object *rgd = elm_radio_add(scroller);
        elm_radio_value_set(rgd, -1);
 
+       int err;
+       char sel_num[TAPI_SIM_XDN_DIALING_NUMBER_LEN + 1] = { 0, };
+       setting_get_string_slp_key(data_parentItem->int_slp_setting_binded, sel_num, &err);
+       SETTING_TRACE("binded: %d, checked: %s, err: %d", data_parentItem->int_slp_setting_binded, sel_num, err);
+
        int i = 0;
+       int sel_idx = -1;
        Setting_GenGroupItem_Data *item_data = NULL;
        for(; i < SETTING_ABOUT_MY_NUMBERS_LEN; i++) {
-               if (ad->my_numbers.list[i].name == NULL) {
+               if (ad->my_numbers.list[i].num == NULL) {
                        break;
                }
 
+               if (sel_idx == -1 && 0 == safeStrCmp(sel_num, ad->my_numbers.list[i].num)) {
+                       sel_idx = i;
+               }
                item_data = setting_create_Gendial_exp_sub_field(scroller,
                                        &(ad->itc_1icon_1text_sub),
-                                       NULL, NULL, parentItem,
+                                       __setting_about_sub_list_sel_cb, ad, parentItem,
                                        SWALLOW_Type_1RADIO, rgd,
                                        i,
-                                       ad->my_numbers.list[i].name, __setting_about_sub_list_rd_change);
+                                       ad->my_numbers.list[i].num, __setting_about_sub_list_rd_change);
                if (item_data) {
                        item_data->userdata = ad;
-                       elm_genlist_item_select_mode_set(item_data->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+                       //elm_genlist_item_select_mode_set(item_data->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
                } else {
                        SETTING_TRACE_ERROR("item_data is NULL");
                }
        }
-       elm_radio_value_set(rgd, ad->my_number_sel_idx);
-}
 
-static void __setting_about_sub_list_rd_change(void *data, Evas_Object *obj, void *event_info) {
-       SETTING_TRACE_BEGIN;
-       retm_if(data == NULL, "Data parameter is NULL");
-       Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
-       SettingAboutUG *ad = (SettingAboutUG *) list_item->userdata;
-       SETTING_TRACE("my_number_sel_idx = %d", ad->my_number_sel_idx);
-       elm_radio_value_set(obj, ad->my_number_sel_idx);
+       elm_radio_value_set(rgd, sel_idx);
 }
 
index b0551ad..a796bf8 100755 (executable)
@@ -250,14 +250,41 @@ static void __on_sim_get_msisdn(TapiHandle *handle, int result, void *data, void
        int i =0;
 
        SETTING_TRACE("access_rt[%d]", access_rt);
+
+       //#define TEST
+       #ifndef TEST
        memcpy(&(ad->my_numbers), data, sizeof(TelSimMsisdnList_t));
+       #else
+       TelSimMsisdnList_t r_numbers;
+       /////////r_numbers.count = 3;
+       r_numbers.count = 3;
+       safeCopyStr(r_numbers.list[0].name, "n1", 30);
+       safeCopyStr(r_numbers.list[1].name, "n2", 30);
+       safeCopyStr(r_numbers.list[2].name, "n3", 30);
+       safeCopyStr(r_numbers.list[0].num, "1111111111", 30);
+       safeCopyStr(r_numbers.list[1].num, "2222222222", 30);
+       safeCopyStr(r_numbers.list[2].num, "3333333333", 30);
+       memcpy(&(ad->my_numbers), &r_numbers, sizeof(TelSimMsisdnList_t));
+       #endif
+
+       int err;
+       char sel_num[TAPI_SIM_XDN_DIALING_NUMBER_LEN + 1] = { 0, };
+       setting_get_string_slp_key(STR_SLP_SETTING_SELECT_NUM, sel_num, &err);
+
+       bool isFound = FALSE;
        SETTING_TRACE("ad->my_numbers.count[%d]", ad->my_numbers.count);
-       for (i = 0; i < ad->my_numbers.count && i < SETTING_ABOUT_MY_NUMBERS_LEN; i++)
-       {
+
+       for (i = 0; i < ad->my_numbers.count && i < SETTING_ABOUT_MY_NUMBERS_LEN; i++) {
                SETTING_TRACE("index[%d] - name[%s], num[%s]", i, ad->my_numbers.list[i].name, ad->my_numbers.list[i].num);
+               if (0 == safeStrCmp(sel_num, ad->my_numbers.list[i].num)) {
+                       isFound = TRUE;
+               }
+       }
+       if (!isFound && ad->my_numbers.count > 0) {//if not found, set as the first num of returned-list
+               SETTING_TRACE("Selected-num hasn't been found, to let the first one as defalut one");
+               setting_set_string_slp_key(STR_SLP_SETTING_SELECT_NUM, ad->my_numbers.list[0].num, &err);
        }
 
-       ad->my_number_sel_idx = 0;//default is 0, need improving
        ad->tapi_responsed = TRUE;
        if (ad->popup) {
                evas_object_del(ad->popup);
index e9b283b..7fadd54 100755 (executable)
@@ -72,6 +72,9 @@
 #define VCONFKEY_SETAPPL_SMARTSCREEN_SMARTSTAY_STATUS_REMINDER   VCONFKEY_SETAPPL_PREFIX"/smartscreen/smart_stay_r"
 #define VCONFKEY_SETAPPL_SMARTSCREEN_SMARTROTATE_STATUS_REMINDER VCONFKEY_SETAPPL_PREFIX"/smartscreen/smart_rotation_r"
 
+//about phone ug
+#define VCONFKEY_SETAPPL_SELECTED_NUM          VCONFKEY_SETAPPL_PREFIX"/selected_num"
+
 typedef enum {
        /* display and light */
        INT_SLP_SETTING_LCD_BRIGHTNESS = 0,     /* the value set by manul */
@@ -220,6 +223,7 @@ typedef enum {
        STR_SLP_LIST_PHONE_PASSWORD = 0,
        STR_SLP_SETTING_PHONE_LOCK_TIMESTAMP,
        STR_SLP_SETTING_SIM_LOCK_TIMESTAMP,
+       STR_SLP_SETTING_SELECT_NUM,
        STR_SLP_LIST_MAX
 } setting_str_slp_list;
 
index ca472f6..7af15e7 100755 (executable)
@@ -217,6 +217,7 @@ static VconfNode g_stable[] = {
                {       STR_SLP_LIST_PHONE_PASSWORD, NULL, eSTRING,{0}, export_default },
                {       STR_SLP_SETTING_PHONE_LOCK_TIMESTAMP,VCONFKEY_SETAPPL_PHONE_LOCK_TIMESTAMP_STR, eSTRING,{0}, export_default },
                {       STR_SLP_SETTING_SIM_LOCK_TIMESTAMP,VCONFKEY_SETAPPL_SIM_LOCK_TIMESTAMP_STR, eSTRING,{0}, export_default },
+               {       STR_SLP_SETTING_SELECT_NUM,VCONFKEY_SETAPPL_SELECTED_NUM, eSTRING,{0}, export_default },
                {       STR_SLP_LIST_MAX, NULL, eSTRING, {0}, export_default},
 };