/*
* setting
- * Copyright (c) 2012 Samsung Electronics Co., Ltd.
*
- * Licensed under the Flora License, Version 1.1 (the License);
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
+ *
+ * Contact: MyoungJune Park <mj2004.park@samsung.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * http://floralicense.org/license/
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
+ * distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
+ *
*/
#include <setting-network-main.h>
+#include <app_preference.h>
+#include <efl_assist.h>
#define MOBILE_DATA_WITHOUT_WIFI_STR "IDS_ST_BODY_MOBILE_DATA_WILL_BE_USED_IF_YOU_DOWNLOAD_OR_UPLOAD_DATA_WITHOUT_WI_FI_CONNECTION"
#define UMTS_MODE_WORK_OUTSIDE_STR "IDS_ST_BODY_UMTS_MODE_ONLY_WORKS_INSIDE_3G_COVERAGE_AREA"
#define BAND_OPERATE_OUTSIDE_USA_CANADA_STR "IDS_ST_BODY_THIS_BAND_MAY_NOT_WORK_OUTSIDE_THE_USA_AND_CANADA"
+#define __switch_radio_state(cur_data, dst_state, dst_key) do { \
+ if (cur_data)\
+ {\
+ old_status = cur_data->chk_status;\
+ cur_data->chk_status = dst_state;\
+ elm_radio_state_value_set(cur_data->eo_check, cur_data->chk_status);\
+ if (sel_mode == old_status)\
+ {\
+ sel_item_data = cur_data;\
+ }\
+ \
+ G_FREE(cur_data->keyStr);\
+ cur_data->keyStr = g_strdup(dst_key);\
+ elm_genlist_item_fields_update(cur_data->item, "*", ELM_GENLIST_ITEM_FIELD_TEXT);\
+ }\
+} while (0);
+
static int setting_network_main_create(void *cb);
static int setting_network_main_destroy(void *cb);
static int setting_network_main_update(void *cb);
void *event_info);
static void __setting_network_data_roaming_resp_cb(void *data, Evas_Object *obj,
void *event_info);
+static void __net_restriction_mode_vconf_change_cb( keynode_t *key, void *data );
+
+#if SUPPORT_TETHERING
+static void __enabled_tethering(void *data)
+{
+ SettingNetworkUG *ad = (SettingNetworkUG *) data;
+ SETTING_TRACE("Tethering is enabled -- callback\n");
+
+ if (ad && ad->data_connection)
+ setting_disable_genlist_item(ad->data_connection->item);
+}
+
+static void __disabled_tethering(void *data)
+{
+ SettingNetworkUG *ad = (SettingNetworkUG *) data;
+ SETTING_TRACE("Tethering is disabled -- callback\n");
+
+ if (ad && ad->data_connection)
+ setting_enable_genlist_item(ad->data_connection->item);
+}
+
+static void __enabled_cb(tethering_error_e error, tethering_type_e type, bool is_requested, void *data)
+{
+ SETTING_TRACE_BEGIN;
+ SettingNetworkUG *ad = (SettingNetworkUG *) data;
+
+ __enabled_tethering(ad);
+}
+
+static void __disabled_cb(tethering_error_e error, tethering_type_e type, tethering_disabled_cause_e code, void *data)
+{
+ SETTING_TRACE_BEGIN;
+ SettingNetworkUG *ad = (SettingNetworkUG *) data;
+
+ __disabled_tethering(ad);
+}
+
+/**
+ * DOCOMO required
+ * if tethering is ON, 'connection' should be inactivated.
+ */
+static bool is_tethering_enabled(void* data)
+{
+ SettingNetworkUG *ad = (SettingNetworkUG *) data;
+
+ bool ret = false;
+ tethering_h th = NULL;
+ (void)tethering_create(&th);
+
+ ad->th_main = th;
+
+ tethering_set_enabled_cb(th, TETHERING_TYPE_ALL, __enabled_cb, data);
+ tethering_set_disabled_cb(th, TETHERING_TYPE_ALL, __disabled_cb, data);
+ if (tethering_is_enabled(th, TETHERING_TYPE_WIFI) == true ||
+ tethering_is_enabled(th, TETHERING_TYPE_USB) == true ||
+ tethering_is_enabled(th, TETHERING_TYPE_BT) == true) {
+
+ SETTING_TRACE("Tethering is enabled\n");
+ __enabled_tethering(ad);
+ ret = true;
+ } else {
+ SETTING_TRACE("Tethering is not enabled\n");
+ __disabled_tethering(ad);
+ ret = false;;
+ }
+
+ //tethering_destroy(th);
+ return ret;
+}
+#endif
/* ***************************************************
*
*basic func
*
***************************************************/
+#ifdef NETWORK_MODE
+static Eina_Bool __set_net_mode_on_timer(void *data)
+{
+ /* error check */
+ SETTING_TRACE_BEGIN;
+ retvm_if(data == NULL, ECORE_CALLBACK_CANCEL, "Data parameter is NULL");
+ Elm_Object_Item *subitem = (Elm_Object_Item *) data;
+ Elm_Object_Item *parentItem = elm_genlist_item_parent_get(subitem);
+ retvm_if(parentItem == NULL, ECORE_CALLBACK_CANCEL, "parentItem is NULL");
+
+ Setting_GenGroupItem_Data *data_subItem = elm_object_item_data_get(subitem); /* parent data */
+ Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem); /* parent data */
+ retvm_if(!data_subItem || !data_parentItem, ECORE_CALLBACK_CANCEL, "!data_subItem || !data_parentItem");
+
+ SettingNetworkUG *ad = data_parentItem->userdata;
+ retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "ad is NULL");
+ if (ad->popup)
+ {
+ evas_object_del(ad->popup);
+ ad->popup = NULL;
+ }
+
+ elm_radio_value_set(ad->data_net_mode->rgd, data_subItem->chk_status);
+
+ ad->net_mode = data_subItem->chk_status;
+ int tapi_ret = tel_set_network_mode(ad->handle, data_subItem->chk_status, setting_tapi_set_band_cb, ad);
+ if (tapi_ret != TAPI_API_SUCCESS) {
+ SETTING_TRACE_DEBUG
+ ("%s*** [ERR] tel_set_network_mode. tapi_ret=%d ***%s",
+ SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
+ setting_create_popup_without_btn(ad, ad->win_get, NULL, _(Invok_API_Failed_Desc), NULL, POPUP_INTERVAL, FALSE, FALSE);
+ //rollback
+ int err = 0;
+ int ret = setting_get_int_slp_key(ad->data_net_mode->int_slp_setting_binded,
+ &(ad->net_mode), &err);
+ if (ret == SETTING_RETURN_FAIL) {
+ SETTING_TRACE_ERROR("failed to get vconf");
+ }
+
+ if (ad->net_mode == (TAPI_NETWORK_MODE_GSM|TAPI_NETWORK_MODE_WCDMA)) {
+ ad->net_mode = TAPI_NETWORK_MODE_AUTO;
+ }
+ elm_radio_value_set(ad->data_net_mode->rgd, ad->net_mode);
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ //it will be deleted in callback set by tel_set_network_mode(that is setting_tapi_set_band_cb.)
+ ad->network_ug_pop = setting_create_popup_without_btn(ad, ad->win_get, NULL,
+ _("IDS_COM_POP_PROCESSING"), NULL,
+ 0.0, TRUE, FALSE);
+
+ //ecore_timer_del(ad->timer);
+ ad->timer = NULL;
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static Eina_Bool __set_net_mode_on_delay(void *data)
+{
+ /* error check */
+ SETTING_TRACE_BEGIN;
+
+ retvm_if(data == NULL, ECORE_CALLBACK_CANCEL, "Data parameter is NULL");
+
+ Elm_Object_Item *subitem = (Elm_Object_Item *) data;
+ Elm_Object_Item *parentItem = elm_genlist_item_parent_get(subitem);
+
+ retvm_if(parentItem == NULL, ECORE_CALLBACK_CANCEL, "parentItem is NULL");
+
+ Setting_GenGroupItem_Data *data_subItem = elm_object_item_data_get(subitem); /* parent data */
+ Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem); /* parent data */
+
+ retvm_if(!data_subItem || !data_parentItem, ECORE_CALLBACK_CANCEL, "!data_subItem || !data_parentItem");
+
+ SettingNetworkUG *ad = data_parentItem->userdata;
+
+ retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "ad is NULL");
+
+ SETTING_TRACE( "tel_set_network_mode(data_subItem->chk_status=%d) run", data_subItem->chk_status );
+ int tapi_ret = tel_set_network_mode( ad->handle, data_subItem->chk_status, setting_tapi_set_band_cb, ad );
+
+ if ( tapi_ret != TAPI_API_SUCCESS )
+ {
+ SETTING_TRACE_DEBUG
+ ("%s*** [ERR] tel_set_network_mode. tapi_ret=%d ***%s",
+ SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
+ setting_create_popup_without_btn(ad, ad->win_get, NULL, _(Invok_API_Failed_Desc), NULL, POPUP_INTERVAL, FALSE, FALSE);
+ //rollback
+ int err = 0;
+ int ret = setting_get_int_slp_key( ad->data_net_mode->int_slp_setting_binded, &(ad->net_mode), &err );
+ if (ret == SETTING_RETURN_FAIL) {
+ SETTING_TRACE_ERROR("failed to get vconf");
+ }
+ }
+ else
+ {
+ SETTING_TRACE( "tel_set_network_mode()=TAPI_API_SUCCESS" );
+ }
+
+ ad->timer = NULL;
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static void __change_3g_on_resp_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ SETTING_TRACE_BEGIN;
+ retm_if(data == NULL, "Data parameter is NULL");
+ Elm_Object_Item *subitem = (Elm_Object_Item *) data;
+ Elm_Object_Item *parentItem = elm_genlist_item_parent_get(subitem);
+ retm_if(parentItem == NULL, "parentItem is NULL");
+
+ Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem); /* parent data */
+ retm_if(!data_parentItem, "!data_parentItem");
+
+ SettingNetworkUG *ad = data_parentItem->userdata;
+ retm_if(ad == NULL, "ad is NULL");
+
+ int response_type = btn_type(obj);
+ if (ad->popup)
+ {
+ evas_object_del(ad->popup);
+ ad->popup = NULL;
+ }
+ if (POPUP_RESPONSE_OK == response_type) {
+ //changing of USE_PACKET_DATA was trigged by betwork searching
+ ad->b_trigged_by_modechanging = TRUE;
+ //for delay..
+ ad->popup = setting_create_popup_with_progressbar(ad, ad->win_get,
+ PROGRESSBAR_STYLE,
+ NULL, NULL, NULL, 0, TRUE, FALSE);
+ if (ad->timer) {
+ ecore_timer_del(ad->timer);
+ ad->timer = NULL;
+ }
+ ad->timer = ecore_timer_add(TIME_TO_TURN_OFF_3G, __set_net_mode_on_timer, subitem);
+
+ } else if (POPUP_RESPONSE_CANCEL == response_type) {
+ //rollback..
+ int value = 0;
+ vconf_get_int(VCONFKEY_SETAPPL_NETWORK_MODE_INT, &value);
+ SETTING_TRACE("vaule:%d", value);
+
+ if ((value & TAPI_NETWORK_MODE_GSM) && (value & TAPI_NETWORK_MODE_WCDMA))
+ {
+ SETTING_TRACE("has TAPI_NETWORK_MODE_GSM|TAPI_NETWORK_MODE_WCDMA");
+ if (ad->lte_wcdma_gsm) elm_radio_value_set(ad->data_net_mode->rgd, ad->lte_wcdma_gsm->chk_status);
+ }
+ else if(value & TAPI_NETWORK_MODE_GSM)
+ {
+ SETTING_TRACE("has TAPI_NETWORK_MODE_WCDMA but not has TAPI_NETWORK_MODE_GSM");
+ if (ad->gsm_only) elm_radio_value_set(ad->data_net_mode->rgd, ad->gsm_only->chk_status);
+ }
+ else
+ {
+ SETTING_TRACE("not have TAPI_NETWORK_MODE_WCDMA");
+ if (ad->wcdma_only) elm_radio_value_set(ad->data_net_mode->rgd, ad->wcdma_only->chk_status);
+ }
+ //elm_radio_value_set(ad->data_net_mode->rgd, ad->net_mode);
+ }
+}
+
void __network_sub_list_sel_cb(void *data, Evas_Object *obj, void *event_info)
{
SETTING_TRACE_BEGIN;
retm_if(event_info == NULL, "Invalid argument: event info is NULL");
ret_if(NULL == data);
SettingNetworkUG *ad = (SettingNetworkUG *) data;
+
Elm_Object_Item *subitem = (Elm_Object_Item *) event_info;
elm_genlist_item_selected_set(subitem, 0);
+
Setting_GenGroupItem_Data *data_subItem = elm_object_item_data_get(subitem);
- SETTING_TRACE("data_subItem->chk_status:%d", data_subItem->chk_status);
+
+ SETTING_TRACE("ad->net_mode=%d", ad->net_mode);
SETTING_TRACE("elm_radio_value_get(ad->data_net_mode->rgd):%d", elm_radio_value_get(ad->data_net_mode->rgd));
+ SETTING_TRACE("data_subItem->chk_status=%d", data_subItem->chk_status);
+
+ if ( ad->net_mode == data_subItem->chk_status )
+ {
+ SETTING_TRACE("No change");
+ return;
+ }
+
+ int value_use_packet;
+
+ vconf_get_int(VCONFKEY_DNET_STATE, &value_use_packet);
+
+ if (value_use_packet != VCONFKEY_DNET_OFF)
+ {
+ ad->popup =
+ setting_create_popup_with_btn(subitem, ad->win_get,
+ NULL, _(SETTING_NETWORK_CHANGE_3G_ON_DESC),
+ __change_3g_on_resp_cb,
+ 0, 2, _("IDS_ST_BUTTON_OK"),_("IDS_COM_SK_CANCEL"));
+ return;
+ }
+
+ #if 0
if (data_subItem->chk_status == elm_radio_value_get(ad->data_net_mode->rgd))
{
+ SETTING_TRACE("chk_status EQUALS radio check -- return ");
return;
}
- elm_radio_value_set(ad->data_net_mode->rgd, data_subItem->chk_status);
+ #endif
+ //it will be deleted in callback set by tel_set_network_mode(that is setting_tapi_set_band_cb.)
+ ad->network_ug_pop = setting_create_popup_without_btn(ad, ad->win_get, NULL,
+ _("IDS_COM_POP_PROCESSING"), NULL,
+ 0.0, TRUE, FALSE);
+ elm_radio_value_set(ad->data_net_mode->rgd, data_subItem->chk_status);
ad->net_mode = data_subItem->chk_status;
- int tapi_ret = tel_set_network_mode(ad->handle, data_subItem->chk_status, setting_tapi_set_band_cb, ad);
+
+ //for delay..
+ if (ad->timer) {
+ ecore_timer_del(ad->timer);
+ ad->timer = NULL;
+ }
+ ad->timer = ecore_timer_add(0.5, __set_net_mode_on_delay, data_subItem->item);
+
+ /*int tapi_ret = tel_set_network_mode(ad->handle, data_subItem->chk_status, setting_tapi_set_band_cb, ad);
if (tapi_ret != TAPI_API_SUCCESS) {
SETTING_TRACE_DEBUG
("%s*** [ERR] tel_set_network_mode. tapi_ret=%d ***%s",
SETTING_FONT_RED, tapi_ret, SETTING_FONT_BLACK);
setting_create_popup_without_btn(ad, ad->win_get, NULL, _(Invok_API_Failed_Desc), NULL, POPUP_INTERVAL, FALSE, FALSE);
//rollback
- int err;
- setting_get_int_slp_key(ad->data_net_mode->int_slp_setting_binded,
+ int err = 0;
+ int ret = setting_get_int_slp_key(ad->data_net_mode->int_slp_setting_binded,
&(ad->net_mode), &err);
- /** @todo check 'err' variable for exception handling */
+ if (ret == SETTING_RETURN_FAIL) {
+ SETTING_TRACE_ERROR("failed to get vconf");
+ }
+
+ if (ad->net_mode == (TAPI_NETWORK_MODE_GSM|TAPI_NETWORK_MODE_WCDMA)) {
+ ad->net_mode = TAPI_NETWORK_MODE_AUTO;
+ }
elm_radio_value_set(ad->data_net_mode->rgd, ad->net_mode);
return;
- }
-
- //it will be deleted in callback set by tel_set_network_mode(that is setting_tapi_set_band_cb.)
- ad->network_ug_pop = setting_create_popup_without_btn(ad, ad->win_get, NULL,
- _("IDS_COM_POP_PROCESSING"), NULL,
- 0.0, TRUE, TRUE);
+ }*/
}
+EXPORT_PUBLIC
+void __network_default_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;
+ //list_item->chk_status = elm_radio_value_get(obj); /* for update */
+
+ //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;
+}
+
+/**
+ * expandable list handler - expand / collaps
+ */
static void
__setting_network_main_exp_cb(void *data, Evas_Object *obj, void *event_info)
{
ret_if(NULL == data || NULL == event_info);
SETTING_TRACE_BEGIN;
SettingNetworkUG *ad = (SettingNetworkUG *) data;
+
+ int status = VCONFKEY_CALL_OFF;
+ vconf_get_int(VCONFKEY_CALL_STATE, &status);
+ if (VCONFKEY_CALL_OFF != status)
+ {
+ setting_create_simple_popup(ad, ad->win_get, NULL,
+ _("IDS_CST_POP_OPERATION_NOT_ALLOWED_DURING_CALLS"));
+ elm_genlist_item_expanded_set(event_info, FALSE);
+ return;
+ }
+
Elm_Object_Item *parentItem = event_info; /* parent item */
Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem); /* parent data */
Evas_Object *scroller = elm_object_item_widget_get(parentItem);
+ int value = 0;
+ int err = 0;
+
Evas_Object *rgd;
if (data_parentItem == ad->data_net_mode) {
rgd = elm_radio_add(scroller);
elm_radio_value_set(rgd, -1);
+ data_parentItem->rgd = rgd;
- setting_create_Gendial_exp_sub_field(scroller,
- &itc_1icon_1text_sub,
- __network_sub_list_sel_cb,
- ad, parentItem,
- SWALLOW_Type_1RADIO, rgd,
- TAPI_NETWORK_MODE_AUTO,
- Keystr_NetBrand_Auto, NULL);
-
- setting_create_Gendial_exp_sub_field(scroller,
- &itc_1icon_1text_sub,
- __network_sub_list_sel_cb,
- ad, parentItem,
- SWALLOW_Type_1RADIO, rgd,
- TAPI_NETWORK_MODE_GSM,
- Keystr_NetBrand_GSM, NULL);
-
- setting_create_Gendial_exp_sub_field(scroller,
- &itc_1icon_1text_sub,
- __network_sub_list_sel_cb,
- ad, parentItem,
- SWALLOW_Type_1RADIO, rgd,
- TAPI_NETWORK_MODE_WCDMA,
- Keystr_NetBrand_WCDMA, NULL);
+ //Need to fix
+ char* szCscFeatureValue = "all_numeric";
+ char* pszStrId = NULL;
- data_parentItem->rgd = rgd;
- setting_update_chk_status(rgd, data_parentItem->int_slp_setting_binded);
+ // LTE/WCDMA/GSM
+ if ( is_lte_on_feature( ad ) )
+ {
+ if ( strcmp( szCscFeatureValue, "all_numeric" ) == 0 )
+ pszStrId = _( "IDS_ST_OPT_4G_3G_2G_HAUTO_CONNECT" );
+ else
+ pszStrId = _( "IDS_ST_BODY_LTE_WCDMA_GSM_NHAUTO_CONNECT" );
+
+ ad->lte_wcdma_gsm = setting_create_Gendial_exp_sub_field( scroller,
+ &itc_multiline_1text_1icon,
+ __network_sub_list_sel_cb,
+ ad,
+ parentItem,
+ SWALLOW_Type_1RADIO,
+ rgd,
+ TAPI_NETWORK_MODE_LTE|TAPI_NETWORK_MODE_WCDMA|TAPI_NETWORK_MODE_GSM, // chk_status
+ pszStrId,
+ __network_default_rd_change );
+ if ( ad->lte_wcdma_gsm )
+ {
+ setting_genlist_item_groupstyle_set( ad->lte_wcdma_gsm, SETTING_GROUP_STYLE_CENTER );
+ }
+ else
+ SETTING_TRACE_ERROR("ad->lte_wcdma_gsm is NULL");
+ }
+ // WCDMA/GSM
+ if ( strcmp( szCscFeatureValue, "all_numeric" ) == 0 )
+ pszStrId = _( "IDS_ST_OPT_3G_2G_HAUTO_CONNECT" );
+ else
+ pszStrId = _( "IDS_ST_BODY_WCDMA_GSM_NHAUTO_CONNECT" );
+
+ ad->wcdma_gsm = setting_create_Gendial_exp_sub_field( scroller,
+ &itc_multiline_1text_1icon,
+ __network_sub_list_sel_cb,
+ ad,
+ parentItem,
+ SWALLOW_Type_1RADIO,
+ rgd,
+ TAPI_NETWORK_MODE_WCDMA|TAPI_NETWORK_MODE_GSM, // chk_status
+ pszStrId,
+ __network_default_rd_change );
+ if ( ad->wcdma_gsm )
+ {
+ setting_genlist_item_groupstyle_set( ad->wcdma_gsm, SETTING_GROUP_STYLE_CENTER );
+ }
+ else
+ SETTING_TRACE_ERROR( "ad->wcdma_gsm is NULL" );
+
+ // WCDMA
+ if ( strcmp( szCscFeatureValue, "all_numeric" ) == 0 )
+ pszStrId = _( "IDS_ST_BODY_3G_ONLY" );
+ else
+ pszStrId = _( "IDS_ST_MBODY_WCDMA_ONLY" );
+
+ ad->wcdma_only = setting_create_Gendial_exp_sub_field( scroller,
+ &itc_multiline_1text_1icon,
+ __network_sub_list_sel_cb,
+ ad,
+ parentItem,
+ SWALLOW_Type_1RADIO,
+ rgd,
+ TAPI_NETWORK_MODE_WCDMA, // chk_status
+ pszStrId,
+ __network_default_rd_change );
+ if ( ad->wcdma_only )
+ {
+ setting_genlist_item_groupstyle_set( ad->wcdma_only, SETTING_GROUP_STYLE_CENTER );
+ }
+ else
+ SETTING_TRACE_ERROR( "ad->wcdma_only is NULL" );
+
+ // GSM
+ if ( strcmp( szCscFeatureValue, "all_numeric" ) == 0 )
+ pszStrId = _( "IDS_ST_OPT_2G_ONLY" );
+ else
+ pszStrId = _( "IDS_ST_MBODY_GSM_ONLY" );
+
+ ad->gsm_only = setting_create_Gendial_exp_sub_field( scroller,
+ &itc_multiline_1text_1icon,
+ __network_sub_list_sel_cb,
+ ad,
+ parentItem,
+ SWALLOW_Type_1RADIO,
+ rgd,
+ TAPI_NETWORK_MODE_GSM, // chk_status
+ pszStrId,
+ __network_default_rd_change );
+ if ( ad->gsm_only )
+ {
+ setting_genlist_item_groupstyle_set( ad->gsm_only, SETTING_GROUP_STYLE_CENTER );
+ }
+ else
+ SETTING_TRACE_ERROR("ad->gsm_only is NULL");
+
+ setting_get_int_slp_key(data_parentItem->int_slp_setting_binded, &value, &err);
+ SETTING_TRACE("value: %d, err: %d", value, err);
+
+ /* Selection */
+ do
+ {
+ if ( is_lte_on_feature( ad ) )
+ {
+ if ( ( value & TAPI_NETWORK_MODE_LTE ) && ( value & TAPI_NETWORK_MODE_WCDMA ) && ( value & TAPI_NETWORK_MODE_GSM ) )
+ {
+ SETTING_TRACE( "TAPI_NETWORK_MODE_LTE|TAPI_NETWORK_MODE_WCDMA|TAPI_NETWORK_MODE_GSM selected" );
+
+ if ( ad->lte_wcdma_gsm )
+ {
+ elm_radio_value_set( ad->data_net_mode->rgd, ad->lte_wcdma_gsm->chk_status );
+ SETTING_TRACE( "ad->lte_wcdma_gsm->chk_status=%d checked", ad->lte_wcdma_gsm->chk_status );
+ break;
+ }
+ else
+ SETTING_TRACE_ERROR( "ad->lte_wcdma_gsm is NULL" );
+ }
+ }
+
+ if ( ( value & TAPI_NETWORK_MODE_WCDMA ) && ( value & TAPI_NETWORK_MODE_GSM ) )
+ {
+ SETTING_TRACE( "TAPI_NETWORK_MODE_WCDMA|TAPI_NETWORK_MODE_GSM selected" );
+
+ if ( ad->wcdma_gsm )
+ {
+ elm_radio_value_set( ad->data_net_mode->rgd, ad->wcdma_gsm->chk_status );
+ SETTING_TRACE( "ad->wcdma_gsm->chk_status=%d checked", ad->wcdma_gsm->chk_status );
+ }
+ else
+ SETTING_TRACE_ERROR( "ad->wcdma_gsm is NULL" );
+ }
+ else
+ if ( value & TAPI_NETWORK_MODE_WCDMA )
+ {
+ SETTING_TRACE( "TAPI_NETWORK_MODE_WCDMA selected" );
+
+ if ( ad->wcdma_only )
+ {
+ elm_radio_value_set( ad->data_net_mode->rgd, ad->wcdma_only->chk_status );
+ SETTING_TRACE( "ad->wcdma_only->chk_status=%d checked", ad->wcdma_only->chk_status );
+ }
+ else
+ SETTING_TRACE_ERROR( "ad->wcdma_only is NULL" );
+ }
+ else
+ if ( value & TAPI_NETWORK_MODE_GSM )
+ {
+ SETTING_TRACE( "TAPI_NETWORK_MODE_GSM selected" );
+
+ if ( ad->gsm_only )
+ {
+ elm_radio_value_set( ad->data_net_mode->rgd, ad->gsm_only->chk_status );
+ SETTING_TRACE( "ad->gsm_only->chk_status=%d checked", ad->gsm_only->chk_status );
+ }
+ else
+ SETTING_TRACE_ERROR( "ad->gsm_only is NULL" );
+ }
+ else
+ SETTING_TRACE_ERROR( "TAPI_NETWORK(%d) unknown", value );
+
+ } while ( 0 );
+
+ SETTING_TRACE("after value set -- value: %d, err: %d", value, err);
}
}
+#endif
-#define __switch_radio_state(cur_data, dst_state, dst_key) do { \
- if (cur_data)\
- {\
- old_status = cur_data->chk_status;\
- cur_data->chk_status = dst_state;\
- elm_radio_state_value_set(cur_data->eo_check, cur_data->chk_status);\
- if (sel_mode == old_status)\
- {\
- sel_item_data = cur_data;\
- }\
- \
- G_FREE(cur_data->keyStr);\
- cur_data->keyStr = g_strdup(dst_key);\
- elm_genlist_item_fields_update(cur_data->item, "*", ELM_GENLIST_ITEM_FIELD_TEXT);\
- }\
-} while (0);
-
+/**
+ * VCONFKEY_3G_ENABLE : notification handler
+ */
static void __3g_change_cb(keynode_t *key, void *data)
{
SETTING_TRACE_BEGIN;
if (!safeStrCmp(vconf_name, VCONFKEY_3G_ENABLE)) {
if(ad->data_use_packet)
{
+ // change 'use packet data' with the vconf value
ad->data_use_packet->chk_status = status;
- elm_check_state_set(ad->data_use_packet->eo_check, ad->data_use_packet->chk_status);
+
+ // set toggle state
+
+ elm_object_item_data_set(ad->data_use_packet->item, ad->data_use_packet);
+ elm_genlist_item_update(ad->data_use_packet->item);
}
}
}
+
+
+/**
+ * if data roaming is on, set 'use packet data' to ON
+ *
+ * VCONFKEY_SETAPPL_STATE_DATA_ROAMING_BOOL : __data_roaming_change_cb
+ *
+ * @see also vconf_notify_key_changed
+ */
static void __data_roaming_change_cb(keynode_t *key, void *data)
{
SETTING_TRACE_BEGIN;
- ret_if(NULL == data);
- SettingNetworkUG *ad = data;
- int status = vconf_keynode_get_bool(key);
- char *vconf_name = vconf_keynode_get_name(key);
- SETTING_TRACE("vconf_name:%s, status:%d", vconf_name, status);
+ ret_if(NULL == data);
+ SettingNetworkUG *ad = data;
+ int status = vconf_keynode_get_bool(key);
+ char *vconf_name = vconf_keynode_get_name(key);
+ SETTING_TRACE("vconf_name:%s, status:%d", vconf_name, status);
+
+ if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_STATE_DATA_ROAMING_BOOL) && ad->data_roaming) {
+ setting_update_gl_item_chk_status(ad->data_roaming, status);
+ if (status)
+ {
+ int value = 0;
+ int err = 0;
+ setting_get_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA, &value, &err);
+ setting_retm_if(err != 0, "get vconf failed");
+ if (!value) {
+ setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA, SETTING_ON_OFF_BTN_ON, &err);
+ }
+ }
+ }
+}
+
+/**
+ * Vconf callback for network restriction mode (VCONFKEY_SETAPPL_NETWORK_RESTRICT_MODE)
+ */
+static void __net_restriction_mode_vconf_change_cb( keynode_t *key, void *data )
+{
+ SETTING_TRACE_BEGIN;
+
+ ret_if(NULL == data);
+
+ SettingNetworkUG *ad = data;
+
+ int status = vconf_keynode_get_bool( key );
+ char *vconf_name = vconf_keynode_get_name( key );
+
+ SETTING_TRACE( "vconf_name:%s, status:%d", vconf_name, status );
+
+ if ( !safeStrCmp( vconf_name, VCONFKEY_SETAPPL_NETWORK_RESTRICT_MODE ) )
+ {
+ if ( status )
+ {
+ if ( ad->data_use_packet )
+ setting_disable_genlist_item( ad->data_use_packet->item );
+
+ if ( ad->data_roaming )
+ setting_disable_genlist_item( ad->data_roaming->item );
+ }
+ else
+ {
+ if ( ad->data_use_packet )
+ setting_enable_genlist_item( ad->data_use_packet->item );
+
+ if ( ad->data_roaming )
+ setting_enable_genlist_item( ad->data_roaming->item );
+ }
+ }
+
+ return;
+}
+
+#ifdef NETWORK_MODE
+#if 0 /* DISABLED CODE */
+/**
+ * get network name by entwork_mode vconf key
+ *
+ * featuring : docomo
+ * @return pointer of static variable (no free)
+ */
+static char* _get_network_mode_sub_desc()
+{
+ /* ***BEGIN*** Fixed the problem of word twinkle SAMSUNG 2010/7/21 add */
+ /* hide NETWORK MODE in Emulator*/
+ char *sub_des = NULL;
+ int value = TAPI_NETWORK_MODE_AUTO;
+ int k;
+ k = vconf_get_int(VCONFKEY_SETAPPL_NETWORK_MODE_INT, &value);
+ int status_3G = 0;
+ vconf_get_bool(VCONFKEY_3G_ENABLE, &status_3G);
+ int roam_status = 0;
+ vconf_get_bool(VCONFKEY_TELEPHONY_SVC_ROAM, &roam_status);
+
+ if (-1 != k) {
+ SETTING_TRACE("VCONFKEY_SETAPPL_NETWORK_MODE_INT value:%d", value);
+ switch (value) {
+ case TAPI_NETWORK_MODE_AUTO:
+ case TAPI_NETWORK_MODE_LTE|TAPI_NETWORK_MODE_GSM|TAPI_NETWORK_MODE_WCDMA:
+ {
+ SETTING_TRACE("_(Keystr_NetBrand_Auto):%s", _(Keystr_NetBrand_Auto));
+ sub_des = _(Keystr_NetBrand_Auto);
+ break;
+ }
+
+ case TAPI_NETWORK_MODE_GSM:
+ sub_des = _(Keystr_NetBrand_GSM);
+ break;
+ case TAPI_NETWORK_MODE_WCDMA:
+ sub_des = _(Keystr_NetBrand_WCDMA);
+ break;
+ case TAPI_NETWORK_MODE_LTE|TAPI_NETWORK_MODE_WCDMA:
+ sub_des = _(Keystr_NetBrand_LTE_WCDMA);
+ break;
+ case TAPI_NETWORK_MODE_GSM|TAPI_NETWORK_MODE_WCDMA:
+ sub_des = _(Keystr_NetBrand_Auto_WCDMA_GSM);
+ break;
+ default:
+ break;
+ }
+ } else {
+ SETTING_TRACE("VCONFKEY_SETAPPL_NETWORK_MODE_INT value:%d on success ", value);
+ }
+ return sub_des;
+}
+#endif
+#endif
+
+void _get_network_selected_desc(void* data, char* sel_network_desc, int size)
+{
+ int value = 0;
+ SettingNetworkUG *ad = (SettingNetworkUG *) data;
+
+ ad->sel_net = TAPI_NETWORK_SELECTIONMODE_AUTOMATIC;
+ ad->sel_act = TAPI_NETWORK_SYSTEM_NO_SRV;
+ vconf_get_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, &ad->sel_net);
+ vconf_get_int(VCONFKEY_SETAPPL_SELECT_OLD_NT_ACT, &ad->sel_act);
+
+ FREE(ad->sel_network);
+ ad->sel_network = get_pa_select_network();
+ SETTING_TRACE("pa_sel_net_name:%s", ad->sel_network);
+ if (!ad->sel_network) {
+ ad->sel_network = strndup(Keystr_UNKNOWN_NETWORK, strlen(Keystr_UNKNOWN_NETWORK)+1);
+ }
+ SETTING_TRACE("pa_net_name:%s", ad->sel_network);
+ SETTING_TRACE("old act:%d", ad->sel_act);
+ SETTING_TRACE("old network mode:%d", ad->sel_net);
+
+ // TODO : value is always zero need to fix
+ if (TAPI_NETWORK_SELECTIONMODE_MANUAL == value) {
+ snprintf(sel_network_desc, size,
+ "%s, %s", _("IDS_COM_BODY_MANUAL"), _(ad->sel_network));
+ }
+ else{
+ snprintf(sel_network_desc, size,
+ "%s, %s", _("IDS_COM_BODY_AUTOMATIC"), _(ad->sel_network));
+ }
+}
+
+static void __popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ SETTING_TRACE_BEGIN;
+ setting_retm_if(NULL == data, "NULL == data");
+ SettingNetworkUG *ad = (SettingNetworkUG *) data;
+
+ const char *txt = elm_object_text_get(obj);
+ if (ad->popup) {
+ evas_object_del(ad->popup);
+ ad->popup = NULL;
+ }
+ if (0 == safeStrCmp(txt, _(keyStr_OK)))
+ {
+ ug_destroy_me(ad->ug);
+ }
+}
+
+void __check_sim_card(void *cb) {
+ SETTING_TRACE_BEGIN;
+ SettingNetworkUG *ad = (SettingNetworkUG *) cb;
+ int err = 0;
+ int value;
+ setting_get_int_slp_key(INT_SLP_SETTING_SIM_SLOT, &value, &err);
+ SETTING_TRACE("sim: %d", value);
+ switch (value) {
+ case VCONFKEY_TELEPHONY_SIM_NOT_PRESENT:
+ ad->popup = setting_create_popup_with_btn(ad, ad->win_get,
+ NULL, _("IDS_ST_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"),
+ __popup_cb, 0, 1, keyStr_OK);
+ SETTING_TRACE("%s*** [ERR] No SIM. sim_slot_type=%d ***%s",
+ SETTING_FONT_RED, value, SETTING_FONT_BLACK);
+ return;
+ break;
+ case VCONFKEY_TELEPHONY_SIM_CARD_ERROR:
+ case VCONFKEY_TELEPHONY_SIM_UNKNOWN:
+ ad->popup = setting_create_popup_with_btn(ad, ad->win_get,
+ NULL, _("IDS_ST_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"),
+ __popup_cb, 0, 1, keyStr_OK);
+ SETTING_TRACE("%s*** [ERR] Invalid SIM. sim_slot_type=%d ***%s",
+ SETTING_FONT_RED, value, SETTING_FONT_BLACK);
+ return;
+ break;
+ default:
+ break;
+ }
+}
+
+static void __popup_cb2(void *data, Evas_Object *obj, void *event_info)
+{
+ SETTING_TRACE_BEGIN;
+ setting_retm_if(NULL == data, "NULL == data");
+ SettingNetworkUG *ad = (SettingNetworkUG *) data;
+
+ const char *txt = elm_object_text_get(obj);
+ if (ad->popup) {
+ evas_object_del(ad->popup);
+ ad->popup = NULL;
+ }
+ if (0 == safeStrCmp(txt, _(keyStr_OK)))
+ {
+ ug_destroy_me(ad->ug);
+ }
+}
+
+void __check_flight_mode(void *cb) {
+ SETTING_TRACE_BEGIN;
+ SettingNetworkUG *ad = (SettingNetworkUG *) cb;
+ //check flight mode
+ int flight_mode = 0;
+ vconf_get_bool(VCONFKEY_TELEPHONY_FLIGHT_MODE, &flight_mode);
+ if (flight_mode) {
+ if (ad->popup)
+ {
+ evas_object_del(ad->popup);
+ ad->popup = NULL;
+ }
+ ad->popup = setting_create_popup_with_btn(ad, ad->win_get,
+ NULL, "IDS_ST_BODY_FLIGHT_MODE_HAS_BEEN_ENABLED_NETWORK_SETTINGS_WILL_CLOSE",
+ __popup_cb2, 0, 1, keyStr_OK);
+ }
+}
+
+void __check_net_restriction_mode(void *cb)
+{
+ SETTING_TRACE_BEGIN;
+ SettingNetworkUG *ad = (SettingNetworkUG *) cb;
- if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_STATE_DATA_ROAMING_BOOL) && ad->data_roaming) {
- ad->data_roaming->chk_status = status;
- elm_check_state_set(ad->data_roaming->eo_check, ad->data_roaming->chk_status);
- if (status)
- {
- int value = 0;
- int err = 0;
- setting_get_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA, &value, &err);
- setting_retm_if(err != 0, "get vconf failed");
- if (!value) {
- setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
- SETTING_ON_OFF_BTN_ON, &err);
- }
- }
+ int status = 0;
+ vconf_get_bool(VCONFKEY_SETAPPL_NETWORK_RESTRICT_MODE, &status);
+
+ if ( status )
+ {
+ if ( ad->data_use_packet )
+ setting_disable_genlist_item( ad->data_use_packet->item );
+
+ if ( ad->data_roaming )
+ setting_disable_genlist_item( ad->data_roaming->item );
+ }
+ else
+ {
+ if ( ad->data_use_packet )
+ setting_enable_genlist_item( ad->data_use_packet->item );
+
+ if ( ad->data_roaming )
+ setting_enable_genlist_item( ad->data_roaming->item );
}
}
+
static int setting_network_main_create(void *cb)
{
SETTING_TRACE_BEGIN;
retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
SettingNetworkUG *ad = (SettingNetworkUG *) cb;
- /* ***BEGIN*** Fixed the problem of word twinkle SAMSUNG 2010/7/21 add */
- int value = 0;
- int k = -1;
- /* ****END**** Fixed the problem of word twinkle SAMSUNG 2010/7/21 add */
-
Evas_Object *scroller;
ad->ly_main =
setting_create_layout_navi_bar_genlist(ad->win_main_layout,
ad->win_get,
_("IDS_ST_BODY_NETWORK"),
- dgettext("sys_string",
- "IDS_COM_BODY_BACK"),
+ dgettext("sys_string", "IDS_COM_BODY_BACK"),
NULL,//_("IDS_COM_BODY_HELP"),
setting_network_main_click_softkey_back_cb,
setting_network_main_click_softkey_help_cb,
ad, &scroller,
&ad->navi_bar);
- setting_enable_expandable_genlist(scroller, ad,
- __setting_network_main_exp_cb, NULL);
+ if (scroller) {
+ ad->genlist = scroller;
+ } else {
+ ad->genlist = NULL;
+ SETTING_TRACE("genlist is NULL ERROR COND");
+ }
+
+ evas_object_smart_callback_add(ad->genlist, "realized", __gl_realized_cb, ad);
+
+#ifdef NETWORK_MODE
+ setting_enable_expandable_genlist(scroller, ad, __setting_network_main_exp_cb, NULL);
+#endif
Elm_Object_Item *item = NULL;;
- item =
- elm_genlist_item_append(scroller, &itc_seperator, NULL, NULL,
+ item = elm_genlist_item_append(scroller, &itc_seperator, NULL, NULL,
ELM_GENLIST_ITEM_NONE, NULL, NULL);
elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ //elm_object_item_access_unregister(item);
+ /* [UI] Use packet data */
int value_use_packet;
int err_use_packet;
setting_get_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
&value_use_packet, &err_use_packet);
- /** @todo check 'err_use_packet' variable for exception handling */
- ad->data_use_packet =
- setting_create_Gendial_field_def(scroller, &itc_1text_1icon,
+
+ ad->data_use_packet = setting_create_Gendial_field_def(scroller, &itc_1text_1icon,
setting_network_main_item_Gendial_mouse_up_cb,
- ad, SWALLOW_Type_1TOGGLE, NULL,
+ ad, SWALLOW_Type_1ICON_1RADIO, NULL,
NULL, value_use_packet,
KeyStr_UsePacketData, NULL,
setting_network_main_chk_btn_cb);
if (ad->data_use_packet) {
ad->data_use_packet->userdata = ad;
+ __BACK_POINTER_SET(ad->data_use_packet);
} else {
SETTING_TRACE_ERROR("ad->data_use_packet is NULL");
}
- setting_create_Gendial_field_def(scroller, &itc_multiline_text, NULL,
- ad, SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
- NULL, NULL, 0, Data_packet_Desc, NULL,
- NULL);
- elm_genlist_item_select_mode_set(elm_genlist_item_append(scroller, &(itc_seperator), NULL, NULL,ELM_GENLIST_ITEM_NONE, NULL, NULL),
- ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
-
- /* data roaming */
+ //const char *title = "Enable data access by Mobile network"; feature
+ const char *title = Data_packet_Sub_desc;
+ /* [UI] packet data descrition */
+ ADD_GL_HELP(scroller,title);
+ /* [UI] data roaming */
int value_data_roaming = 0;
int err_data_roaming = 0;
setting_get_bool_slp_key(BOOL_SLP_SETTING_DATA_ROAMING,
if (err_data_roaming != 0) {
SETTING_TRACE_ERROR("get vconf failed");
}
- ad->data_roaming = setting_create_Gendial_field_def(scroller, &itc_1text_1icon,
- setting_network_main_item_Gendial_mouse_up_cb,
- ad, SWALLOW_Type_1TOGGLE, NULL,
- NULL, value_data_roaming,
- KeyStr_DataRoaming, NULL,
- setting_network_main_chk_btn_cb);
+ ad->data_roaming = setting_create_Gendial_field_def(scroller, &(itc_1text_1icon),
+ setting_network_main_item_Gendial_mouse_up_cb,
+ ad, SWALLOW_Type_1ICON_1RADIO, NULL,
+ NULL, value_data_roaming,
+ KeyStr_DataRoaming, NULL,
+ setting_network_main_chk_btn_cb);
if (ad->data_roaming) {
ad->data_roaming->userdata = ad;
+ __BACK_POINTER_SET(ad->data_roaming);
} else {
SETTING_TRACE_ERROR("ad->data_roaming is NULL");
}
- setting_create_Gendial_field_def(scroller, &itc_multiline_text, NULL,
- ad, SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
- NULL, NULL, 0, SETTING_NETWORK_DATA_ROMING_DESC, NULL,
- NULL);
- elm_genlist_item_select_mode_set(elm_genlist_item_append(scroller, &(itc_seperator), NULL, NULL,ELM_GENLIST_ITEM_NONE, NULL, NULL),
- ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
-
-
- /* (void)setting_create_Gendial_field_titleItem(scroller, &(ad->itc_group_item), speciliztion, NULL); */
+ ADD_GL_HELP(scroller,SETTING_NETWORK_DATA_ROMING_DESC);
/* Don't need to check flight mode,if flight mode is on, thw whole Network function will be disable*/
/* ***BEGIN*** Fixed the problem of word twinkle SAMSUNG 2010/7/21 add */
- ad->sel_net = TAPI_NETWORK_SELECTIONMODE_AUTOMATIC;
- ad->sel_act = TAPI_NETWORK_SYSTEM_NO_SRV;
- vconf_get_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, &ad->sel_net);
- vconf_get_int(VCONFKEY_SETAPPL_SELECT_OLD_NT_ACT, &ad->sel_act);
-
- FREE(ad->sel_network);
- //ad->sel_network = vconf_get_str(VCONFKEY_TELEPHONY_NWNAME);
- ad->sel_network = get_pa_select_network();
- SETTING_TRACE("pa_sel_net_name:%s", ad->sel_network);
- if (isEmptyStr(ad->sel_network)) {
- ad->sel_network = strndup(Keystr_UNKNOWN_NETWORK, strlen(Keystr_UNKNOWN_NETWORK)+1);
- }
- SETTING_TRACE("pa_net_name:%s", ad->sel_network);
- SETTING_TRACE("old act:%d", ad->sel_act);
- SETTING_TRACE("old network mode:%d", ad->sel_net);
-
- char sel_network_desc[MAX_COMMON_BUFFER_LEN] = { 0, };
- if (TAPI_NETWORK_SELECTIONMODE_MANUAL == value) {
- snprintf(sel_network_desc, MAX_COMMON_BUFFER_LEN,
- "%s, %s (%s)", _("IDS_COM_BODY_MANUAL"), _(ad->sel_network),
- setting_network_get_act_str(ad->sel_act));
- }
- else{
- snprintf(sel_network_desc, MAX_COMMON_BUFFER_LEN,
- "%s, %s", _("IDS_COM_BODY_AUTOMATIC"), _(ad->sel_network));
- }
-
+ char sel_network_desc[MAX_COMMON_BUFFER_LEN] = {0,};
+ _get_network_selected_desc(ad, sel_network_desc, MAX_COMMON_BUFFER_LEN);
ad->data_sel_net = setting_create_Gendial_field_def(scroller,
&itc_2text_3,
setting_network_main_item_Gendial_mouse_up_cb,
ad, SWALLOW_Type_INVALID,
NULL, NULL, 0,
- "IDS_ST_BODY_SELECT_NETWORK",
+ "IDS_COM_BODY_NETWORK_OPERATORS",
sel_network_desc, NULL);
if (ad->data_sel_net) {
+ __BACK_POINTER_SET(ad->data_sel_net);
ad->data_sel_net->userdata = ad;
+ ad->data_sel_net->group_style = SETTING_GROUP_STYLE_TOP;
} else {
SETTING_TRACE_ERROR("ad->data_sel_net is NULL");
}
- /* ***BEGIN*** Fixed the problem of word twinkle SAMSUNG 2010/7/21 add */
- /* hide NETWORK MODE in Emulator*/
- char *sub_des = NULL;
- value = TAPI_NETWORK_MODE_AUTO;
- k = vconf_get_int(VCONFKEY_SETAPPL_NETWORK_MODE_INT, &value);
- if (-1 != k) {
- SETTING_TRACE("VCONFKEY_SETAPPL_NETWORK_MODE_INT value:%d", value);
- switch (value) {
- case TAPI_NETWORK_MODE_AUTO:
- case TAPI_NETWORK_MODE_LTE|TAPI_NETWORK_MODE_GSM|TAPI_NETWORK_MODE_WCDMA:
- {
- sub_des = _(Keystr_NetBrand_Auto);
- break;
- }
- case TAPI_NETWORK_MODE_GSM:
- sub_des = _(Keystr_NetBrand_GSM);
- break;
- case TAPI_NETWORK_MODE_WCDMA:
- sub_des = _(Keystr_NetBrand_WCDMA);
- break;
- case TAPI_NETWORK_MODE_LTE|TAPI_NETWORK_MODE_WCDMA:
- sub_des = _(Keystr_NetBrand_LTE_WCDMA);
- break;
- case TAPI_NETWORK_MODE_GSM|TAPI_NETWORK_MODE_WCDMA:
- sub_des = _(Keystr_NetBrand_Auto_WCDMA_GSM);
- break;
- default:
- break;
- }
+#ifdef NETWORK_MODE
+ /* [UI] Network Mode */
+ /* Not appeared in advance.
+ char* sub_des = _get_network_mode_sub_desc();
+ int value = TAPI_NETWORK_MODE_AUTO;
+ vconf_get_int(VCONFKEY_SETAPPL_NETWORK_MODE_INT, &value);
+ if (value == TAPI_NETWORK_MODE_AUTO && is_lte_on_feature(ad))
+ {
+ sub_des = _("IDS_BR_OPT_LTE_GSM_WCDMA_HAUTO_CONNECT");
}
- ad->data_net_mode =
- setting_create_Gendial_exp_parent_field(scroller,
+ */
+
+ ad->data_net_mode = setting_create_Gendial_exp_parent_field(scroller,
&itc_2text_3_parent,
NULL, NULL,
SWALLOW_Type_INVALID,
"IDS_ST_BODY_NETWORK_MODE",
- sub_des);
+ NULL,//sub_des,
+ SETTING_GROUP_STYLE_CENTER,
+ SETTING_GROUP_STYLE_CENTER);
if (ad->data_net_mode) {
+ __BACK_POINTER_SET(ad->data_net_mode);
ad->data_net_mode->int_slp_setting_binded =
INT_SLP_SETTING_NETWORK_MODE;
ad->data_net_mode->userdata = ad;
} else {
SETTING_TRACE_ERROR("ad->data_back is NULL");
}
+#endif
- setting_create_Gendial_field_def(scroller, &itc_1text,
+ /* [UI] Connection mode description */
+ ad->data_connection = setting_create_Gendial_field_def(scroller, &itc_1text,
setting_network_main_item_Gendial_mouse_up_cb,
ad, SWALLOW_Type_INVALID, NULL, NULL,
0, CONNECTION_DSC,
NULL, NULL);
-
- item = elm_genlist_item_append(scroller, &itc_bottom_seperator, NULL, NULL,
- ELM_GENLIST_ITEM_NONE, NULL, NULL);
- elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ if (ad->data_connection) {
+ __BACK_POINTER_SET(ad->data_connection);
+ ad->data_connection->userdata = ad;
+ ad->data_connection->group_style = SETTING_GROUP_STYLE_BOTTOM;
+ } else {
+ SETTING_TRACE_ERROR("ad->data_connection is NULL");
+ }
vconf_notify_key_changed(VCONFKEY_3G_ENABLE, __3g_change_cb, ad);
vconf_notify_key_changed(VCONFKEY_SETAPPL_STATE_DATA_ROAMING_BOOL, __data_roaming_change_cb, ad);
+ vconf_notify_key_changed(VCONFKEY_SETAPPL_NETWORK_RESTRICT_MODE, __net_restriction_mode_vconf_change_cb, ad);
+#if SUPPORT_TETHERING
+ is_tethering_enabled(ad);
+#endif
setting_view_network_main.is_create = 1;
setting_view_update(&setting_view_network_main, ad);
+
+ //check sim card
+ __check_sim_card(ad);
+ __check_flight_mode(ad);
+ __check_net_restriction_mode(ad);
return SETTING_RETURN_SUCCESS;
}
retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
SettingNetworkUG *ad = (SettingNetworkUG *) cb;
+
vconf_ignore_key_changed(VCONFKEY_3G_ENABLE, __3g_change_cb);
vconf_ignore_key_changed(VCONFKEY_SETAPPL_STATE_DATA_ROAMING_BOOL, __data_roaming_change_cb);
+ vconf_ignore_key_changed(VCONFKEY_SETAPPL_NETWORK_RESTRICT_MODE, __net_restriction_mode_vconf_change_cb);
if (ad->ly_main != NULL) {
evas_object_del(ad->ly_main);
+ ad->ly_main = NULL;
}
if(ad->network_ug_pop)
{
evas_object_del(ad->network_ug_pop);
ad->network_ug_pop = NULL;
}
+ if (ad->timer) {
+ ecore_timer_del(ad->timer);
+ ad->timer = NULL;
+ }
ad->data_sel_net = NULL;//reset NULL after genlis destoryed with ly_main.
+#if SUPPORT_TETHERING
+ if (ad->th_main)
+ {
+ SETTING_TRACE("tethering destruction ");
+ tethering_destroy(ad->th_main);
+ ad->th_main = NULL;
+ }
+#endif
+
setting_view_network_main.is_create = 0;
return SETTING_RETURN_SUCCESS;
}
SettingNetworkUG *ad = (SettingNetworkUG *) cb;
if (ad->ly_main != NULL) {
-
evas_object_show(ad->ly_main);
}
- SETTING_TRACE_END;
+ SETTING_TRACE_END;
return SETTING_RETURN_SUCCESS;
}
void *event_info)
{
SETTING_TRACE_BEGIN;
- /* error check */
retm_if(data == NULL, "Data parameter is NULL");
SettingNetworkUG *ad = (SettingNetworkUG *) data;
- /* Send destroy request */
ug_destroy_me(ad->ug);
}
+static Eina_Bool __change_search_view_on_timer(void *data)
+{
+ /* error check */
+ SETTING_TRACE_BEGIN;
+ SettingNetworkUG *ad = data;
+ retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "ad is NULL");
+ if (ad->popup)
+ {
+ evas_object_del(ad->popup);
+ ad->popup = NULL;
+ }
+
+ setting_view_change(&setting_view_network_main,
+ &setting_view_network_select_network,
+ ad);
+ //ecore_timer_del(ad->timer);
+ ad->timer = NULL;
+ return ECORE_CALLBACK_CANCEL;
+}
+
+void __change_search_view_on_resp_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ SETTING_TRACE_BEGIN;
+ retm_if(data == NULL, "Data parameter is NULL");
+
+ SettingNetworkUG *ad = (SettingNetworkUG *) data;
+ int response_type = btn_type(obj);
+ if (ad->popup)
+ {
+ evas_object_del(ad->popup);
+ ad->popup = NULL;
+ }
+
+ if (POPUP_RESPONSE_OK == response_type) {
+ //changing of USE_PACKET_DATA was trigged by betwork searching
+ ad->b_trigged_by_searching = TRUE;
+
+ //for delay..
+ ad->popup = setting_create_popup_with_progressbar(ad, ad->win_get,
+ PROGRESSBAR_STYLE,
+ NULL, NULL, NULL, 0, TRUE, FALSE);
+
+ if (ad->timer) {
+ ecore_timer_del(ad->timer);
+ ad->timer = NULL;
+ }
+ ad->timer = ecore_timer_add(TIME_TO_TURN_OFF_3G, __change_search_view_on_timer, ad);
+
+ } else if (POPUP_RESPONSE_CANCEL == response_type) {
+ }
+}
+
+Evas_Object *_create_popup(Evas_Object *parent, char *content, setting_call_back_func response_cb, void *data) {
+ Evas_Object *popup = elm_popup_add(parent);
+ ea_object_event_callback_add(popup, EA_CALLBACK_BACK, response_cb, data);
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+
+ elm_object_domain_translatable_text_set(popup, SETTING_PACKAGE, content);
+
+ Evas_Object *btn = elm_button_add(popup);
+ elm_object_domain_translatable_text_set(btn, SYSTEM_PACKAGE, "IDS_COM_SK_OK");
+ if (response_cb) {
+ evas_object_smart_callback_add(btn, "clicked",
+ response_cb, data);
+ }
+ evas_object_show(btn);
+ elm_object_style_set(btn, "popup");
+ elm_object_part_content_set(popup, "button1", btn);
+
+ evas_object_show(popup);
+ return popup;
+}
+
+Evas_Object *_create_popup_with_btn(void *data,
+ Evas_Object *parent,
+ char *title,
+ char *text,
+ setting_call_back_func response_cb,
+ int timeout,
+ int btn_num, ...)
+{
+ SETTING_TRACE_BEGIN;
+ Evas_Object *popup = elm_popup_add(parent);
+ ea_object_event_callback_add(popup, EA_CALLBACK_BACK, ea_popup_back_cb_2, NULL);
+ setting_add_hardkey_features(popup, data);
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ if (text) {
+ elm_object_domain_translatable_text_set(popup, SETTING_PACKAGE, text);
+ }
+ if (title) {
+ elm_object_domain_translatable_part_text_set(popup, SETTING_PACKAGE,
+ "title,text", title);
+ }
+ if (timeout > 0) {
+ elm_popup_timeout_set(popup, timeout);
+ }
+
+ va_list args;
+ va_start(args, btn_num);
+
+ char *btn_str[3];
+ int argno = 0;
+
+ char *btn_part_str[] = {
+ _("button1"), _("button2"), _("button3")
+ };
+
+ int i = 0;
+ for (; i < btn_num; i++) {
+ btn_str[i] = va_arg( args, char *);
+ }
+
+ for (; argno < btn_num; argno++) {
+ if (btn_str[btn_num-1-argno]) {
+ Evas_Object *btn = setting_create_button(popup, btn_str[btn_num-1-argno], NULL, response_cb, data);
+ elm_object_style_set(btn, "popup");
+ char *p = dgettext(SETTING_PACKAGE, btn_str[btn_num-1-argno]);
+ if (safeStrCmp(p, btn_str[btn_num-1-argno])) {
+ elm_object_domain_translatable_text_set(btn, SETTING_PACKAGE, btn_str[btn_num-1-argno]);
+ } else {
+ elm_object_domain_translatable_text_set(btn, SYSTEM_PACKAGE, btn_str[btn_num-1-argno]);
+ }
+ elm_object_part_content_set(popup, btn_part_str[argno], btn);
+ }
+ }
+ va_end(args);
+
+ evas_object_show(popup);
+ SETTING_TRACE_END;
+ return popup;
+ }
+
static void
-setting_network_main_item_Gendial_mouse_up_cb(void *data, Evas_Object *obj,
- void *event_info)
+setting_network_main_item_Gendial_mouse_up_cb(void *data, Evas_Object *obj, void *event_info)
{
SETTING_TRACE_BEGIN;
/* error check */
SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
int ret;
+ int reminder_flag = TRUE;
+ int err;
- if (!safeStrCmp("IDS_ST_BODY_SELECT_NETWORK", list_item->keyStr)) {
- ret =
- setting_view_change(&setting_view_network_main,
- &setting_view_network_select_network,
- ad);
- }
- else if (!safeStrCmp(KeyStr_UsePacketData, list_item->keyStr)) {
- int old_status = elm_check_state_get(list_item->eo_check);
- /* new status */
- list_item->chk_status = !old_status;
- elm_check_state_set(list_item->eo_check, list_item->chk_status);
- if (!list_item->chk_status) {
- ad->popup =
- setting_create_popup_with_btn(ad, ad->win_get,
- NULL, _(SETTING_NETWORK_USE_PACKET_DATA_OFF_DESC),
- setting_network_use_packet_resp_cb,
- 0, 2, _("IDS_COM_SK_YES"),_("IDS_COM_SK_NO"));
- } else {
+ if (!safeStrCmp("IDS_COM_BODY_NETWORK_OPERATORS", list_item->keyStr)) {
+ int status = VCONFKEY_CALL_OFF;
+ vconf_get_int(VCONFKEY_CALL_STATE, &status);
+ if (VCONFKEY_CALL_OFF != status)
+ {
+ setting_create_simple_popup(ad, ad->win_get, NULL,
+ _("IDS_CST_POP_OPERATION_NOT_ALLOWED_DURING_CALLS"));
+ return;
+ }
+
+ int value_use_packet;
+ vconf_get_int(VCONFKEY_DNET_STATE, &value_use_packet);
+
+ vconf_get_int(VCONFKEY_SETAPPL_SELECT_NETWORK_INT, &ad->sel_net);//retrieve here
+ SETTING_TRACE("ad->sel_net:%d", ad->sel_net);
+
+ /* Not used, Enter menu directly.
+ if (value_use_packet != VCONFKEY_DNET_OFF && TAPI_NETWORK_SELECTIONMODE_MANUAL == ad->sel_net)
+ {
ad->popup =
setting_create_popup_with_btn(ad, ad->win_get,
- NULL, _(SETTING_NETWORK_USE_PACKET_DATA_ON_DESC),
- setting_network_use_packet_resp_cb,
- 0, 1, _("IDS_COM_SK_OK"));
+ NULL, _(SETTING_NETWORK_SEARCH_3G_ON_DESC),
+ __change_search_view_on_resp_cb,
+ 0, 2, _("IDS_COM_SK_OK"),_("IDS_COM_SK_CANCEL"));
+ }
+ else
+ */
+ {
+ ret = setting_view_change(&setting_view_network_main,
+ &setting_view_network_select_network,
+ ad);
}
- } else if (!safeStrCmp(KeyStr_DataRoaming, list_item->keyStr)) {
- int old_status = elm_check_state_get(list_item->eo_check);
+ }
+ else if (!safeStrCmp(KeyStr_UsePacketData, list_item->keyStr)) {
/* new status */
- list_item->chk_status = !old_status;
- elm_check_state_set(list_item->eo_check, list_item->chk_status);
-
- char *notify_str = NULL;
+ setting_update_gl_item_chk_status(ad->data_use_packet, !(list_item->chk_status));
if (!list_item->chk_status) {
- notify_str = SETTING_NETWORK_DATA_ROMING_OFF_DESC;
- ad->popup = setting_create_popup_with_btn(ad, ad->win_get,
- NULL, notify_str,
- __setting_network_data_roaming_resp_cb, 0,
- 1, _("IDS_COM_SK_OK"));
+ // On -> Off
+ char * pop_info = NULL;
+ char * pop_title = NULL;
+
+ pop_info = (char *)g_strdup(SETTING_NETWORK_USE_PACKET_DATA_OFF_NO_DATA_DESC);
+
+ ret = vconf_get_bool(VCONFKEY_SETAPPL_MOBILE_DATA_OFF_REMINDER, &reminder_flag);
+ if (0 != ret) {
+ SETTING_TRACE_ERROR("Failed to get vconf value");
+ }
+ if(reminder_flag){
+ ad->popup_data_off =
+ setting_create_popup_with_label_check(ad, ad->win_get,
+ pop_title, pop_info,
+ "IDS_ST_POP_DO_NOT_ASK_AGAIN",
+ &(ad->popup_chk),
+ setting_network_use_packet_resp_cb,
+ 0, 2,"IDS_COM_SK_CANCEL","IDS_ST_BUTTON_DISABLE");
+ //0, 2,"IDS_COM_SK_CANCEL","IDS_COM_SK_OK");
+ }else{
+ setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
+ SETTING_ON_OFF_BTN_OFF, &err);
+ setting_retm_if(err != 0, "set vconf failed");
+
+ setting_update_gl_item_chk_status(ad->data_use_packet, 0);
+
+
+ /* should set data_roming as same as status of use_packet_data */
+ int data_roaming_value = 0;
+
+ setting_get_bool_slp_key(BOOL_SLP_SETTING_DATA_ROAMING, &data_roaming_value, &err);
+ setting_retm_if(err != 0, "get vconf failed");
+ if (data_roaming_value) {
+ setting_set_bool_slp_key(BOOL_SLP_SETTING_DATA_ROAMING,
+ SETTING_ON_OFF_BTN_OFF, &err);
+ setting_retm_if(err != 0, "set vconf failed");
+
+ setting_update_gl_item_chk_status(ad->data_roaming, 0);
+ }
+ }
+ FREE(pop_info);
} else {
+ // Off -> On
+ /*
int err = 0;
- setting_set_bool_slp_key(BOOL_SLP_SETTING_DATA_ROAMING,
+ setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
+ SETTING_ON_OFF_BTN_ON, &err);*/
+ ret = vconf_get_bool(VCONFKEY_SETAPPL_MOBILE_DATA_ON_REMINDER, &reminder_flag);
+ if (0 != ret) {
+ SETTING_TRACE_ERROR("Failed to get vconf value");
+ }
+ if(reminder_flag){
+ ad->popup_data_on =
+ setting_create_popup_with_label_check(ad, ad->win_get,
+ NULL, _(Data_packet_Popup_desc),
+ "IDS_ST_POP_DO_NOT_ASK_AGAIN",
+ &(ad->popup_chk),
+ setting_network_use_packet_resp_cb,
+ 0, 2,"IDS_COM_SK_CANCEL","IDS_ST_BUTTON_ENABLE");
+ //0, 2,"IDS_COM_SK_CANCEL","IDS_ST_BUTTON_CONTINUE");
+ }else{
+ setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
SETTING_ON_OFF_BTN_ON, &err);
+ setting_retm_if(err != 0, "set vconf failed");
+
+ setting_update_gl_item_chk_status(ad->data_use_packet, 1);
+
+ }
+ }
+
+ } else if (!safeStrCmp(KeyStr_DataRoaming, list_item->keyStr)) {
+ setting_update_gl_item_chk_status(list_item, !(list_item->chk_status));
+
+ if (list_item->chk_status)
+ {
+ ad->popup = _create_popup_with_btn( ad, ad->win_get,
+ NULL, _( "IDS_COM_BODY_ALLOW_DATA_ROAMING_Q_YOU_MAY_INCUR_SIGNIFICANT_ROAMING_CHARGES_E" ) ,
+ __setting_network_data_roaming_resp_cb,
+ 0, 2, "IDS_ST_BUTTON_ENABLE","IDS_COM_SK_CANCEL");
+ //0, 2, "IDS_ST_BUTTON_CONTINUE","IDS_COM_SK_CANCEL");
+ }
+ else
+ {
+ ad->popup = _create_popup_with_btn( ad, ad->win_get,
+ NULL, _( "IDS_ST_BODY_WHEN_DATA_ROAMING_IS_DISABLED_APPLICATIONS_THAT_USE_THE_DATA_CONNECTION_MAY_NOT_WORK" ) ,
+ __setting_network_data_roaming_resp_cb,
+ 0, 2, "IDS_ST_BUTTON_DISABLE","IDS_COM_SK_CANCEL");
+ //0, 2, "IDS_COM_SK_OK","IDS_COM_SK_CANCEL");
}
} else if(!safeStrCmp(CONNECTION_DSC, list_item->keyStr)) {
ret = setting_view_change(&setting_view_network_main,
ad = list_item->userdata;
list_item->chk_status = elm_check_state_get(obj); /* for genlist update status */
+ int err;
if (obj == ad->data_use_packet->eo_check) {
+ // On -> Off
+ int reminder_flag = TRUE;
+ int ret= 0;
if (!list_item->chk_status) {
- ad->popup =
- setting_create_popup_with_btn(ad, ad->win_get,
- NULL, _(SETTING_NETWORK_USE_PACKET_DATA_OFF_DESC),
- setting_network_use_packet_resp_cb,
- 0, 2, _("IDS_COM_SK_YES"),_("IDS_COM_SK_NO"));
+ char * pop_info = NULL;
+ char * pop_title = NULL;
+ pop_info = (char *)g_strdup(SETTING_NETWORK_USE_PACKET_DATA_OFF_NO_DATA_DESC);
+ ret = vconf_get_bool(VCONFKEY_SETAPPL_MOBILE_DATA_OFF_REMINDER, &reminder_flag);
+ if (0 != ret) {
+ SETTING_TRACE_ERROR("Failed to get vconf value");
+ }
+ if(reminder_flag){
+ ad->popup_data_off =
+ setting_create_popup_with_label_check(ad, ad->win_get,
+ pop_title, pop_info,
+ "IDS_ST_POP_DO_NOT_ASK_AGAIN",
+ &(ad->popup_chk),
+ setting_network_use_packet_resp_cb,
+ 0, 2, "IDS_COM_SK_CANCEL","IDS_ST_BUTTON_DISABLE");
+ //0, 2, "IDS_COM_SK_CANCEL","IDS_COM_SK_OK");
+ }else{
+ setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
+ SETTING_ON_OFF_BTN_OFF, &err);
+ setting_retm_if(err != 0, "set vconf failed");
+
+ setting_update_gl_item_chk_status(ad->data_use_packet, 0);
+
+
+ /* should set data_roming as same as status of use_packet_data */
+ int data_roaming_value = 0;
+
+ setting_get_bool_slp_key(BOOL_SLP_SETTING_DATA_ROAMING, &data_roaming_value, &err);
+ setting_retm_if(err != 0, "get vconf failed");
+ if (data_roaming_value) {
+ setting_set_bool_slp_key(BOOL_SLP_SETTING_DATA_ROAMING,
+ SETTING_ON_OFF_BTN_OFF, &err);
+ setting_retm_if(err != 0, "set vconf failed");
+
+ setting_update_gl_item_chk_status(ad->data_roaming, 0);
+ }
+
+ }
+ FREE(pop_info);
+
} else {
- ad->popup =
- setting_create_popup_with_btn(ad, ad->win_get,
- NULL, _(SETTING_NETWORK_USE_PACKET_DATA_ON_DESC),
- setting_network_use_packet_resp_cb,
- 0, 1, _("IDS_COM_SK_OK"));
+ // Off -> On
+ ret = vconf_get_bool(VCONFKEY_SETAPPL_MOBILE_DATA_ON_REMINDER, &reminder_flag);
+ if (0 != ret) {
+ SETTING_TRACE_ERROR("Failed to get vconf value");
+ }
+ if(reminder_flag){
+ ad->popup_data_on =
+ setting_create_popup_with_label_check(ad, ad->win_get,
+ NULL, _(Data_packet_Popup_desc),
+ "IDS_ST_POP_DO_NOT_ASK_AGAIN",
+ &(ad->popup_chk),
+ setting_network_use_packet_resp_cb,
+ 0, 2, "IDS_COM_SK_CANCEL","IDS_ST_BUTTON_ENABLE");
+ //0, 2, "IDS_COM_SK_CANCEL","IDS_ST_BUTTON_CONTINUE");
+ }else{
+ setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
+ SETTING_ON_OFF_BTN_ON, &err);
+ setting_retm_if(err != 0, "set vconf failed");
+ setting_update_gl_item_chk_status(ad->data_use_packet, 1);
+ }
}
}else if (obj == ad->data_roaming->eo_check) {
- char *notify_str = NULL;
- if (!list_item->chk_status) {
- notify_str = SETTING_NETWORK_DATA_ROMING_OFF_DESC;
- ad->popup = setting_create_popup_with_btn(ad, ad->win_get,
- NULL, notify_str,
- __setting_network_data_roaming_resp_cb, 0,
- 1, _("IDS_COM_SK_OK"));
- } else {
- int err = 0;
- setting_set_bool_slp_key(BOOL_SLP_SETTING_DATA_ROAMING,
- SETTING_ON_OFF_BTN_ON, &err);
+ if (list_item->chk_status)
+ {
+ ad->popup = _create_popup_with_btn( ad, ad->win_get,
+ NULL, _( "IDS_COM_BODY_ALLOW_DATA_ROAMING_Q_YOU_MAY_INCUR_SIGNIFICANT_ROAMING_CHARGES_E" ) ,
+ __setting_network_data_roaming_resp_cb,
+ 0, 2, "IDS_ST_BUTTON_ENABLE","IDS_COM_SK_CANCEL");
+ //0, 2, "IDS_ST_BUTTON_CONTINUE","IDS_COM_SK_CANCEL");
+ }
+ else
+ {
+ ad->popup = _create_popup_with_btn( ad, ad->win_get,
+ NULL, _( "IDS_ST_BODY_WHEN_DATA_ROAMING_IS_DISABLED_APPLICATIONS_THAT_USE_THE_DATA_CONNECTION_MAY_NOT_WORK" ) ,
+ __setting_network_data_roaming_resp_cb,
+ 0, 2, "IDS_ST_BUTTON_DISABLE","IDS_COM_SK_CANCEL");
+ //0, 2, "IDS_COM_SK_OK","IDS_COM_SK_CANCEL");
}
}
}
SETTING_ON_OFF_BTN_ON, &err);
setting_retm_if(err != 0, "set vconf failed");
- elm_check_state_set(ad->data_use_packet->eo_check, 1);
- ad->data_use_packet->chk_status = 1;
-
+ setting_update_gl_item_chk_status(ad->data_use_packet, 1);
+ if (ad->popup_chk && elm_check_state_get(ad->popup_chk)) {
+ (void)vconf_set_bool(VCONFKEY_SETAPPL_MOBILE_DATA_ON_REMINDER, 0);
+ }
/* if called by other apps, destroy ug */
if (!safeStrCmp(ad->view_type_string, "DATA_ROAMING")) {
if (ad->popup) {
SETTING_ON_OFF_BTN_OFF, &err);
setting_retm_if(err != 0, "set vconf failed");
- elm_check_state_set(ad->data_use_packet->eo_check, 0);
- ad->data_use_packet->chk_status = 0;
+ setting_update_gl_item_chk_status(ad->data_use_packet, 0);
+ if (ad->popup_chk && elm_check_state_get(ad->popup_chk)) {
+ (void)vconf_set_bool(VCONFKEY_SETAPPL_MOBILE_DATA_OFF_REMINDER, 0);
+ }
/* should set data_roming as same as status of use_packet_data */
int data_roaming_value = 0;
SETTING_ON_OFF_BTN_OFF, &err);
setting_retm_if(err != 0, "set vconf failed");
- elm_check_state_set(ad->data_roaming->eo_check, 0);
- ad->data_roaming->chk_status = 0;
+ setting_update_gl_item_chk_status(ad->data_roaming, 0);
}
}
} else if (POPUP_RESPONSE_CANCEL == response_type) {
/* rollback */
- if (value == 1) {
- setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
- SETTING_ON_OFF_BTN_ON, &err);
- setting_retm_if(err != 0, "set vconf failed");
- elm_check_state_set(ad->data_use_packet->eo_check, 1);
- ad->data_use_packet->chk_status = 1;
- }
+ setting_set_bool_slp_key(BOOL_SLP_SETTING_USE_PACKET_DATA,
+ value, &err);
+ setting_retm_if(err != 0, "set vconf failed");
+ setting_update_gl_item_chk_status(ad->data_use_packet, value);
}
- if (ad->popup)
+ if (ad->popup_data_off)
{
- evas_object_del(ad->popup);
- ad->popup = NULL;
+ evas_object_del(ad->popup_data_off);
+ ad->popup_data_off = NULL;
+ }
+ if (ad->popup_data_on)
+ {
+ evas_object_del(ad->popup_data_on);
+ ad->popup_data_on = NULL;
}
}
+/**
+ * toggle 'Data Roamding' mode as a popup callback
+ * @see also setting_create_popup_with_btn
+ */
static void __setting_network_data_roaming_resp_cb(void *data, Evas_Object *obj,
void *event_info)
{
SETTING_TRACE("elm_object_parent_widget_get(obj):%p", elm_object_parent_widget_get(obj));
SETTING_TRACE("obj:%p", obj);
if (POPUP_RESPONSE_OK == response_type) {
+ setting_update_gl_item_chk_status(ad->data_roaming, !( ad->data_roaming->chk_status));
+
int value = 0;
int err = 0;
setting_get_bool_slp_key(BOOL_SLP_SETTING_DATA_ROAMING, &value, &err);
+ // data roaming
+ // 0 --> 1
+ // 1 --> 0
if (value == 0) {
- setting_set_bool_slp_key(BOOL_SLP_SETTING_DATA_ROAMING,
- SETTING_ON_OFF_BTN_ON, &err);
+ setting_set_bool_slp_key(BOOL_SLP_SETTING_DATA_ROAMING, SETTING_ON_OFF_BTN_ON, &err);
setting_retm_if(err != 0, "set vconf failed");
- elm_check_state_set(ad->data_roaming->eo_check, 1);
- ad->data_roaming->chk_status = 1;
+ setting_update_gl_item_chk_status(ad->data_roaming, 1);
/* if called by other apps, destroy ug */
if (!safeStrCmp(ad->view_type_string, "DATA_ROAMING")) {
return;
}
} else {
- setting_set_bool_slp_key(BOOL_SLP_SETTING_DATA_ROAMING,
- SETTING_ON_OFF_BTN_OFF, &err);
+ setting_set_bool_slp_key(BOOL_SLP_SETTING_DATA_ROAMING, SETTING_ON_OFF_BTN_OFF, &err);
setting_retm_if(err != 0, "set vconf failed");
- elm_check_state_set(ad->data_roaming->eo_check, 0);
- ad->data_roaming->chk_status = 0;
+ setting_update_gl_item_chk_status(ad->data_roaming, 0);
}
+ } else {
+ //do nothing
+ /* rollback */
+ int value = 0;
+ int err = 0;
+ setting_get_bool_slp_key(BOOL_SLP_SETTING_DATA_ROAMING, &value, &err);
+ setting_retm_if(err != 0, "set vconf failed");
+ setting_update_gl_item_chk_status(ad->data_roaming, value);
}
- if (ad->popup)
- {
+ if (ad->popup) {
evas_object_del(ad->popup);
ad->popup = NULL;
}