X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fsetting-main.c;h=0dc986931caf65c9f8966e3de7dfc81d69868731;hb=2efbd1d3ac1e522d5435d974e7c94a972dc1ac5c;hp=e09e32ce478a9bda9813914dc2be2e22a6e3efd5;hpb=ff0e007e707a59d067a85748deb44df22c0d72be;p=apps%2Fcore%2Fpreloaded%2Fsettings.git diff --git a/src/setting-main.c b/src/setting-main.c index e09e32c..0dc9869 100755 --- a/src/setting-main.c +++ b/src/setting-main.c @@ -1,34 +1,33 @@ /* * setting + * Copyright (c) 2012 Samsung Electronics Co., Ltd. * - * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. - * - * Contact: MyoungJune Park - * - * Licensed under the Apache License, Version 2.0 (the "License"); + * Licensed under the Flora License, Version 1.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://www.apache.org/licenses/LICENSE-2.0 + * http://floralicense.org/license/ * * 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 #include #include #include #include -#include #include +#include #include #include +#include + +#include + #define PLUGIN_PREFIX "/opt" typedef struct _DrawAppInfo @@ -381,9 +380,9 @@ static Setting_GenGroupItem_Data * __wifi_handler(void* data, char* keyStr, char int value, err; setting_get_int_slp_key(INT_SLP_SETTING_WIFI_STATUS, &value, &err); - char* pa_wifi = get_pa_Wi_Fi_on_off_str(); + //char* pa_wifi = get_pa_Wi_Fi_on_off_str(); ad->data_wifi = setting_create_Gendial_field_groupitem(genlist, - &(ad->itc[GENDIAL_Type_2text_2icon_3]), + &(ad->itc[GENDIAL_Type_1text_2icon]), NULL, setting_main_click_list_ex_ug_cb, ug_args, @@ -392,10 +391,12 @@ static Setting_GenGroupItem_Data * __wifi_handler(void* data, char* keyStr, char NULL, value, keyStr, - pa_wifi, + NULL, setting_main_click_list_wifi_mode_cb); __BACK_POINTER_SET(ad->data_wifi); - G_FREE(pa_wifi); + if(ad->data_wifi) + ad->data_wifi->userdata = ad; + //G_FREE(pa_wifi); return ad->data_wifi; } @@ -407,7 +408,7 @@ static Setting_GenGroupItem_Data * __bluetooth_handler(void* data, char* keyStr, setting_get_int_slp_key(INT_SLP_SETTING_BT_STATUS, &value, &err); ad->data_bt = setting_create_Gendial_field_groupitem(genlist, - &(ad->itc[GENDIAL_Type_2text_2icon_3]), + &(ad->itc[GENDIAL_Type_1text_2icon]), NULL, setting_main_click_list_ex_ug_cb, ug_args, @@ -416,10 +417,11 @@ static Setting_GenGroupItem_Data * __bluetooth_handler(void* data, char* keyStr, NULL, value, keyStr, - get_BT_on_off_str - (), + NULL, setting_main_click_list_bt_mode_cb); __BACK_POINTER_SET(ad->data_bt); + if(ad->data_bt) + ad->data_bt->userdata = ad; return ad->data_bt; } @@ -469,7 +471,7 @@ static Setting_GenGroupItem_Data * __nfc_handler(void* data, char* keyStr, char* setting_get_bool_slp_key(BOOL_SLP_SETTING_NFC_STATUS, &value, &err); ad->data_nfc = setting_create_Gendial_field_groupitem(genlist, - &(ad->itc[GENDIAL_Type_2text_2icon_3]), + &(ad->itc[GENDIAL_Type_1text_2icon]), NULL, setting_main_click_list_ex_ug_cb, ug_args, @@ -478,9 +480,11 @@ static Setting_GenGroupItem_Data * __nfc_handler(void* data, char* keyStr, char* NULL, value, keyStr, - get_NFC_on_off_str(), + NULL, setting_main_click_list_nfc_mode_cb); __BACK_POINTER_SET(ad->data_nfc); + if(ad->data_nfc) + ad->data_nfc->userdata = ad; #if DISABLED_CODE setting_create_Gendial_field_def(genlist, &itc_multiline_text, NULL, @@ -826,6 +830,8 @@ void __load_system_menu_list(void *data, Cfg_Item_Position inputPos, Evas_Object continue; /* hide Memory in Emulator*/ } else if (!safeStrCmp(KeyStr_Powersaving, keyStr)) { continue; /* hide Powersaving in Emulator*/ + } else if (!safeStrCmp(KeyStr_FlightMode, keyStr)) { + continue; /* hide Powersaving in Emulator*/ } else { /* do nothing */ } @@ -1085,7 +1091,6 @@ static void __load_applications_level_all_list(void *data) __load_applications_menu_list(ad, Cfg_Item_Pos_Level_All); } - bool is_3rdapp_installed_setting_cfg(char* pkgname) { SETTING_TRACE_BEGIN; @@ -1108,6 +1113,60 @@ bool is_3rdapp_installed_setting_cfg(char* pkgname) return result_opt; } +static int __pkg_list_cb (const pkgmgrinfo_pkginfo_h handle, void *data) +{ + SETTING_TRACE_BEGIN; + + DrawAppInfo* pinfo = (DrawAppInfo*)data; + + int ret = -1; + char *pkgid; + ret = pkgmgr_pkginfo_get_pkgid(handle, &pkgid); + if(ret < 0) { + SETTING_TRACE(">>>>> pkgmgr_pkginfo_get_pkgid() failed\n"); + } + + char *label; + ret = pkgmgr_pkginfo_get_label(handle, &label); + if(ret < 0) { + SETTING_TRACE(">>>>> pkgmgr_pkginfo_get_pkg_name() failed\n"); + } + SETTING_TRACE(" 3rd party - pkg id : ----> %s, pkg name ----> %s ", pkgid, label); + + // appid - 1234567890.AppSetting2 + // pkgid - 1234567890 + char *name = pkgid; + + if (is_3rdapp_installed_setting_cfg(pkgid) == true ) + { + pinfo->ncount++; + // draw code here + if (pinfo->draw_app != NULL) + { + SETTING_TRACE(">>> pkg name --> %s ", pkgid); + pinfo->draw_app(pinfo->data, strdup(label)/* appname*/, strdup(pkgid)/* pkg_name*/); + } + } + + SETTING_TRACE_END; + return 0; + +} + +static void get_3rdapp_installed_setting_list() +{ + SETTING_TRACE_BEGIN; + int val = 1; + + pkgmgrinfo_pkginfo_filter_h handle; + pkgmgrinfo_pkginfo_filter_create(&handle); + pkgmgrinfo_pkginfo_filter_add_bool(handle, PMINFO_PKGINFO_PROP_PACKAGE_APPSETTING, val); + + pkgmgrinfo_pkginfo_filter_foreach_pkginfo(handle, __pkg_list_cb, NULL); +} + + + /** * @param data * ex) name : AppSetting4 @@ -1145,66 +1204,6 @@ static void draw_3rdapp(void* data, char* name, char* pkgname) } /** - * - * ail code here - */ -static ail_cb_ret_e __download_apps_cb(ail_appinfo_h ai, void* data) -{ - DrawAppInfo* pinfo = (DrawAppInfo*)data; - char *id; - - if (AIL_ERROR_OK == ail_appinfo_get_str(ai, AIL_PROP_PACKAGE_STR, &id)) - { - SETTING_TRACE(" 3rd party - app name : ----> %s ", id); - } - - ail_appinfo_h handle; - - char *name = NULL; - char *icon = NULL; - int installed_time; - bool nodisplay = false; - bool removable = true; - - if (AIL_ERROR_OK == ail_package_get_appinfo(id, &handle)) - { - if (AIL_ERROR_OK != ail_appinfo_get_str(handle, AIL_PROP_NAME_STR, &name)) - SETTING_TRACE("cannot get name"); - - if (AIL_ERROR_OK != ail_appinfo_get_str(handle, AIL_PROP_ICON_STR, &icon)) - SETTING_TRACE("cannot get icon"); - - if (AIL_ERROR_OK != ail_appinfo_get_bool(handle, AIL_PROP_NODISPLAY_BOOL, &nodisplay)) - SETTING_TRACE("cannot get nodisplay"); - - if (AIL_ERROR_OK != ail_appinfo_get_bool(handle, AIL_PROP_X_SLP_REMOVABLE_BOOL, &removable)) - SETTING_TRACE("cannot get removable"); - - if (AIL_ERROR_OK != ail_appinfo_get_int(handle, AIL_PROP_X_SLP_INSTALLEDTIME_INT, &installed_time)) - SETTING_TRACE("cannot get installed_time"); - - //SETTING_TRACE("installed_time = %d ", installed_time); - if (installed_time != 0 && is_3rdapp_installed_setting_cfg(id) == true ) - { - SETTING_TRACE(" 3rd party - app name : ----> id : %s --- name : %s ", id, name); - SETTING_TRACE(" 3rd party - icon : ----> %s ", icon); - SETTING_TRACE(" 3rd party - nodisplay : ----> %d ", nodisplay); - pinfo->ncount++; - - // draw code here - if (pinfo->draw_app != NULL) - { - SETTING_TRACE(">>> pkg name --> %s ", id); - pinfo->draw_app(pinfo->data, strdup(name)/* appname*/, strdup(id)/* pkg_name*/); - } - } - } - SETTING_TRACE_END; - return AIL_CB_RET_CONTINUE; -} - - -/** * get 3rd party applist from AIL & searching dir/file by the defined rule * @param data ad * if data is NULL --> just get how many items are there @@ -1216,39 +1215,36 @@ static int get_downloadapp_list(void* data) setting_main_appdata *ad = data; - int ncount = 0; - ail_filter_h f; + int val = 1; + pkgmgrinfo_pkginfo_filter_h handle; + pkgmgrinfo_pkginfo_filter_create(&handle); + pkgmgrinfo_pkginfo_filter_add_bool(handle, PMINFO_PKGINFO_PROP_PACKAGE_APPSETTING, val); + + int ncount = 0; DrawAppInfo* pinfo = (DrawAppInfo*)malloc(sizeof(DrawAppInfo)); if (pinfo) { pinfo->ncount = 0; pinfo->draw_app = draw_3rdapp; pinfo->data = ad; + pkgmgrinfo_pkginfo_filter_foreach_pkginfo(handle, __pkg_list_cb, pinfo); - if (ail_filter_new(&f) == AIL_ERROR_OK) - { - if (ail_filter_add_bool(f, AIL_PROP_NODISPLAY_BOOL, false) != AIL_ERROR_OK) - { - SETTING_TRACE("ail filter error"); - - free(pinfo); - pinfo = NULL; - - ail_filter_destroy(f); - return 0; - } - - ail_filter_list_appinfo_foreach(f, __download_apps_cb, pinfo); - //--------------------------------------------------------------- - ail_filter_destroy(f); - } ncount = pinfo->ncount; free(pinfo); pinfo = NULL; } + if (handle) { + if (PMINFO_R_OK == pkgmgrinfo_pkginfo_filter_destroy(handle)) { + SETTING_TRACE("remove pkginfo successfully"); + } else { + SETTING_TRACE("failed removing pkginfo"); + } + handle = NULL; + } + SETTING_TRACE_END; return ncount; } @@ -1706,6 +1702,10 @@ static void setting_main_tapi_event_cb(TapiHandle *handle, int result, void *dat break; default: /* do nothing */ + SETTING_TRACE_DEBUG("default"); + if(ad->data_flight) + setting_set_bool_slp_key(BOOL_SLP_SETTING_FLIGHT_MODE, + ad->data_flight->chk_status, &err); break; } return; @@ -1832,13 +1832,6 @@ static int setting_main_destroy(void *cb) ad->flight_popup = NULL; } -#if 0 - if (ad->plugin_node) - { - setting_plugin_destroy(ad->plugin_node); - } -#endif - evas_object_smart_callback_del(ad->main_genlist, "realized", __gl_realized); setting_dbus_handler_fini(); @@ -2202,19 +2195,17 @@ setting_main_click_list_plugin_cb(void *data, Evas_Object *obj, setting_main_appdata *ad = data; - ad->plugin_path = strdup(selected_item->sub_desc); SETTING_TRACE(" >> SELECTED plugin name : %s \n", ad->plugin_path); - setting_dbus_handler_init( ad ); + PluginNode* plugin_node = setting_plugin_create(g_main_ad->navibar_main, g_main_ad->win_main); + plugin_node->plugin_path = strdup(selected_item->sub_desc); + ad->plugin_node = plugin_node; // the selected plugin name - #if 1 - PluginNode* plugin_node = setting_plugin_create(ad); - plugin_node->plugin_path = strdup(ad->plugin_path); - setting_plugin_load(plugin_node, (const char *)plugin_node->plugin_path); + setting_drawer_list_init(); + setting_dbus_handler_init( ad->plugin_node ); - ad->plugin_node = plugin_node; // the selected plugin name - #endif + setting_plugin_load(plugin_node, (const char *)plugin_node->plugin_path); } /** @@ -2340,77 +2331,241 @@ void __alternate_flight_mode(Evas_Object *check) SETTING_TRACE_END; } -void __alternate_wifi_mode(Evas_Object *check) +static void __tethering_disabled_cb(tethering_error_e error, tethering_type_e type, tethering_disabled_cause_e code, void *data) { - SETTING_TRACE_BEGIN; int ret; - Eina_Bool status = elm_check_state_get(check); - SETTING_TRACE("wifi mode status : %d", status); + + if (data) { + tethering_h th = (tethering_h)data; + tethering_destroy(th); + } ret = wifi_initialize(); setting_retm_if(ret < 0, "*** [ERR] wifi_initialize() ***"); - - if (status) { - ret = wifi_activate(NULL, NULL); - setting_retm_if(ret < 0, - "*** [ERR] wifi_activate() ***"); - } else { - ret = wifi_deactivate(NULL, NULL); - setting_retm_if(ret < 0, - "*** [ERR] wifi_deactivate() ***"); + ret = wifi_activate(NULL, NULL); + if (ret < 0) { + wifi_deinitialize(); } + setting_retm_if(ret < 0, "*** [ERR] wifi_activate() ***"); + ret = wifi_deinitialize(); setting_retm_if(ret < 0, "*** [ERR] wifi_deinitialize() ***"); +} + +static void __tethering_turn_off_resp_cb(void *data, Evas_Object *obj, void *event_info) +{ + setting_retm_if(NULL == obj, "NULL == obj"); + int response_type = btn_type(obj); + Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *)data; + + if (g_main_ad) + { + evas_object_del(g_main_ad->popup); + g_main_ad->popup = NULL; + } + + if (POPUP_RESPONSE_OK == response_type) + { + tethering_h th = NULL; + tethering_error_e ret = TETHERING_ERROR_NONE; + + ret = tethering_create(&th); + if (ret != TETHERING_ERROR_NONE) { + list_item->swallow_type = SWALLOW_Type_1ICON_1RADIO; + list_item->chk_status = EINA_FALSE; + elm_object_item_data_set(list_item->item, list_item); + elm_genlist_item_update(list_item->item); + } + + ret = tethering_set_disabled_cb(th, TETHERING_TYPE_WIFI, __tethering_disabled_cb, th); + if (ret != TETHERING_ERROR_NONE) { + list_item->swallow_type = SWALLOW_Type_1ICON_1RADIO; + list_item->chk_status = EINA_FALSE; + elm_object_item_data_set(list_item->item, list_item); + elm_genlist_item_update(list_item->item); + + tethering_destroy(th); + return; + } + + tethering_disable(th, TETHERING_TYPE_WIFI); + } + else if (POPUP_RESPONSE_CANCEL == response_type) + { + list_item->swallow_type = SWALLOW_Type_1ICON_1RADIO; + list_item->chk_status = EINA_FALSE; + elm_object_item_data_set(list_item->item, list_item); + elm_genlist_item_update(list_item->item); + } +} + +void __alternate_wifi_mode(Setting_GenGroupItem_Data *list_item, Evas_Object *check) +{ + SETTING_TRACE_BEGIN; + int ret; + Eina_Bool status = elm_check_state_get(check); + SETTING_TRACE("wifi mode status : %d", status); + int value, err; + + if (tethering_is_enabled(NULL, TETHERING_TYPE_WIFI) == TRUE) { + list_item->swallow_type = SWALLOW_Type_1ICON_1PROCESS; + elm_object_item_data_set(list_item->item, list_item); + elm_genlist_item_update(list_item->item); + + g_main_ad->popup = setting_create_popup_with_btn(list_item, + g_main_ad->win_main, NULL, + _("Connecting Wi-Fi will turn off Mobile hotspot. Continue?"), + __tethering_turn_off_resp_cb, + 0, 2, _("IDS_COM_SK_OK"), _("IDS_COM_SK_CANCEL")); + } else { + ret = wifi_initialize(); + if (ret < 0) { + setting_get_int_slp_key(INT_SLP_SETTING_WIFI_STATUS, &value, &err); + list_item->chk_status = value; + elm_object_item_data_set(list_item->item, list_item); + elm_genlist_item_update(list_item->item); + } + setting_retm_if(ret < 0, "*** [ERR] wifi_initialize() ***"); + + if (status) { + ret = wifi_activate(NULL, NULL); + if (ret < 0) { + setting_get_int_slp_key(INT_SLP_SETTING_WIFI_STATUS, &value, &err); + list_item->chk_status = value; + elm_object_item_data_set(list_item->item, list_item); + elm_genlist_item_update(list_item->item); + wifi_deinitialize(); + } + setting_retm_if(ret < 0, "*** [ERR] wifi_activate() ***"); + } else { + ret = wifi_deactivate(NULL, NULL); + if (ret < 0) { + setting_get_int_slp_key(INT_SLP_SETTING_WIFI_STATUS, &value, &err); + list_item->chk_status = value; + elm_object_item_data_set(list_item->item, list_item); + elm_genlist_item_update(list_item->item); + wifi_deinitialize(); + } + setting_retm_if(ret < 0, "*** [ERR] wifi_deactivate() ***"); + } + + ret = wifi_deinitialize(); + if (ret < 0) { + setting_get_int_slp_key(INT_SLP_SETTING_WIFI_STATUS, &value, &err); + list_item->chk_status = value; + elm_object_item_data_set(list_item->item, list_item); + elm_genlist_item_update(list_item->item); + } + setting_retm_if(ret < 0, "*** [ERR] wifi_deinitialize() ***"); + + list_item->swallow_type = SWALLOW_Type_1ICON_1PROCESS; + elm_object_item_data_set(list_item->item, list_item); + elm_genlist_item_update(list_item->item); + + } SETTING_TRACE_END; } -void __alternate_bt_mode(Evas_Object *check) +void __alternate_bt_mode(Setting_GenGroupItem_Data *list_item, Evas_Object *check) { SETTING_TRACE_BEGIN; int ret; Eina_Bool status = elm_check_state_get(check); SETTING_TRACE("bt mode status : %d", status); + int value, err; + ret = bt_initialize(); + if (ret < 0) { + setting_get_int_slp_key(INT_SLP_SETTING_BT_STATUS, &value, &err); + list_item->chk_status = value; + elm_object_item_data_set(list_item->item, list_item); + elm_genlist_item_update(list_item->item); + } setting_retm_if(ret < 0, "*** [ERR] bt_initialize() ***"); if (status) { ret = bt_adapter_enable(); - setting_retm_if(ret < 0, - "*** [ERR] bt_adapter_enable() ***"); + if (ret < 0) { + setting_get_int_slp_key(INT_SLP_SETTING_BT_STATUS, &value, &err); + list_item->chk_status = value; + elm_object_item_data_set(list_item->item, list_item); + elm_genlist_item_update(list_item->item); + bt_deinitialize(); + } + setting_retm_if(ret < 0, "*** [ERR] bt_adapter_enable() ***"); } else { ret = bt_adapter_disable(); - setting_retm_if(ret < 0, - "*** [ERR] bt_adapter_disable() ***"); + if (ret < 0) { + setting_get_int_slp_key(INT_SLP_SETTING_BT_STATUS, &value, &err); + list_item->chk_status = value; + elm_object_item_data_set(list_item->item, list_item); + elm_genlist_item_update(list_item->item); + bt_deinitialize(); + } + setting_retm_if(ret < 0, "*** [ERR] bt_adapter_disable() ***"); } ret = bt_deinitialize(); + if (ret < 0) { + setting_get_int_slp_key(INT_SLP_SETTING_BT_STATUS, &value, &err); + list_item->chk_status = value; + elm_object_item_data_set(list_item->item, list_item); + elm_genlist_item_update(list_item->item); + } setting_retm_if(ret < 0, "*** [ERR] bt_deinitialize() ***"); + list_item->swallow_type = SWALLOW_Type_1ICON_1PROCESS; + elm_object_item_data_set(list_item->item, list_item); + elm_genlist_item_update(list_item->item); + SETTING_TRACE_END; } -void __alternate_nfc_mode(Evas_Object *check) +void __alternate_nfc_mode(Setting_GenGroupItem_Data *list_item, Evas_Object *check) { SETTING_TRACE_BEGIN; int ret; Eina_Bool status = elm_check_state_get(check); SETTING_TRACE("nfc mode status : %d", status); + int value, err; + ret = nfc_manager_initialize(NULL, NULL); + if (ret < 0) { + setting_get_bool_slp_key(BOOL_SLP_SETTING_NFC_STATUS, &value, &err); + list_item->chk_status = value; + elm_object_item_data_set(list_item->item, list_item); + elm_genlist_item_update(list_item->item); + } setting_retm_if(ret < 0, "*** [ERR] nfc_manager_initialize() ***"); - ret = nfc_manager_set_activation(status, NULL, NULL); - setting_retm_if(ret < 0, - "*** [ERR] nfc_manager_set_activation() ***"); + if (ret < 0) { + setting_get_bool_slp_key(BOOL_SLP_SETTING_NFC_STATUS, &value, &err); + list_item->chk_status = value; + elm_object_item_data_set(list_item->item, list_item); + elm_genlist_item_update(list_item->item); + nfc_manager_deinitialize(); + } + setting_retm_if(ret < 0, "*** [ERR] nfc_manager_set_activation() ***"); ret = nfc_manager_deinitialize(); + if (ret < 0) { + setting_get_bool_slp_key(BOOL_SLP_SETTING_NFC_STATUS, &value, &err); + list_item->chk_status = value; + elm_object_item_data_set(list_item->item, list_item); + elm_genlist_item_update(list_item->item); + } setting_retm_if(ret < 0, "*** [ERR] nfc_manager_deinitialize() ***"); + list_item->swallow_type = SWALLOW_Type_1ICON_1PROCESS; + elm_object_item_data_set(list_item->item, list_item); + elm_genlist_item_update(list_item->item); + SETTING_TRACE_END; } @@ -2546,7 +2701,7 @@ setting_main_click_list_wifi_mode_cb(void *data, Evas_Object *obj, SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr), list_item->chk_status); - __alternate_wifi_mode(obj); + __alternate_wifi_mode(list_item, obj); SETTING_TRACE_END; } @@ -2565,7 +2720,7 @@ setting_main_click_list_bt_mode_cb(void *data, Evas_Object *obj, SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr), list_item->chk_status); - __alternate_bt_mode(obj); + __alternate_bt_mode(list_item, obj); SETTING_TRACE_END; } @@ -2584,7 +2739,7 @@ setting_main_click_list_nfc_mode_cb(void *data, Evas_Object *obj, SETTING_TRACE("process item [%s], status:%d", _(list_item->keyStr), list_item->chk_status); - __alternate_nfc_mode(obj); + __alternate_nfc_mode(list_item, obj); SETTING_TRACE_END; }