X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fmh_view_main.c;h=af55b3905f56de88ce508b7959fafce6fecd2886;hb=00b27304115663537614e381bb39cfde1b8669a4;hp=0b2ce48181dd6b363ec08df3b30c4e94d6cc4506;hpb=6d92ce7415d0175852aac92e0b79acd6b04d2075;p=apps%2Fnative%2Fug-mobile-ap.git diff --git a/src/mh_view_main.c b/src/mh_view_main.c index 0b2ce48..af55b39 100644 --- a/src/mh_view_main.c +++ b/src/mh_view_main.c @@ -1,13 +1,13 @@ /* * ug-mobile-ap * -* Copyright 2012 Samsung Electronics Co., Ltd +* Copyright 2012-2013 Samsung Electronics Co., Ltd -* Licensed under the Flora License, Version 1.0 (the "License"); +* Licensed under the Flora License, Version 1.1 (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.tizenopensource.org/license +* 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, @@ -17,6 +17,7 @@ * */ +#include #include "mh_view_main.h" static void _gl_device_item_sel(void *data, Evas_Object *obj, void *event_info); @@ -124,9 +125,11 @@ static void __genlist_update_device_item(mh_appdata_t *ad, int no_of_dev) itc, ad, NULL, ad->main.usage_item, item_flags, _gl_device_item_sel, NULL); if (item == NULL) { - ERR("elm_genlist_item_insert_before is failed\n"); + ERR("elm_genlist_item_insert_before is failed.\n"); return; } + elm_object_item_signal_emit(item, "elm,state,top", ""); + ad->main.device_item = item; if (no_of_dev == 0) { @@ -184,6 +187,11 @@ Eina_Bool ap_update_data_packet_usage(mh_appdata_t *ad) return EINA_FALSE; } + if (ad->main.usage_item == NULL) { + DBG("usage_item is removed\n"); + return EINA_TRUE; + } + elm_genlist_item_update(ad->main.usage_item); return EINA_TRUE; @@ -286,7 +294,7 @@ static void __read_setting(mh_appdata_t *ad) ret = tethering_wifi_get_ssid(ad->handle, &ssid); if (ret != TETHERING_ERROR_NONE || ssid == NULL) { - ERR("tethering_wifi_get_ssid is failed : %d %s\n", ret, ssid); + ERR("tethering_wifi_get_ssid is failed : %d\n", ret); return; } g_strlcpy(ad->setup.device_name, ssid, sizeof(ad->setup.device_name)); @@ -294,7 +302,7 @@ static void __read_setting(mh_appdata_t *ad) ret = tethering_wifi_get_passphrase(ad->handle, &passphrase); if (ret != TETHERING_ERROR_NONE || passphrase == NULL) { - ERR("tethering_wifi_get_ssid is failed : %d %s\n", ret, ssid); + ERR("tethering_wifi_get_passphrase is failed : %d\n", ret); return; } g_strlcpy(ad->setup.wifi_passphrase, passphrase, @@ -312,13 +320,6 @@ static void __read_setting(mh_appdata_t *ad) if (ret != TETHERING_ERROR_NONE) { ERR("tethering_wifi_get_security_type is failed\n"); } - - DBG("VCONFKEY_MOBILE_HOTSPOT_MODE : %d\n", ad->main.hotspot_mode); - DBG("Device name - %s\n", ad->setup.device_name); - DBG("Wifi passphrase- %s\n", ad->setup.wifi_passphrase); - DBG("Connected device : %d\n", ad->clients.number); - DBG("Visibility: %d\n", ad->setup.visibility); - DBG("Security: %d\n", ad->setup.security_type); DBG("End of Load setting value \n"); __MOBILE_AP_FUNC_EXIT__; @@ -417,8 +418,6 @@ void _update_main_view(mh_appdata_t *ad) ad->main.hotspot_mode = _get_vconf_hotspot_mode(); state = ad->main.hotspot_mode; - ap_update_data_device(ad); - wifi_state = (Eina_Bool)(state & VCONFKEY_MOBILE_HOTSPOT_MODE_WIFI); bt_state = (Eina_Bool)(state & VCONFKEY_MOBILE_HOTSPOT_MODE_BT); usb_state = (Eina_Bool)(state & VCONFKEY_MOBILE_HOTSPOT_MODE_USB); @@ -447,12 +446,39 @@ void _update_main_view(mh_appdata_t *ad) } if (wifi_state || bt_state || usb_state) { + if (ad->main.usage_item == NULL) { + item = elm_genlist_item_insert_before(ad->main.genlist, + ad->main.usage_itc, ad, NULL, + ad->main.sp_item[3], + ELM_GENLIST_ITEM_NONE, NULL, NULL); + elm_genlist_item_select_mode_set(item, + ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); + ad->main.usage_item = item; + } + + if (ad->main.device_item == NULL) { + ap_update_data_device(ad); + } + _start_update_data_packet_usage(ad); + } else { + _stop_update_data_packet_usage(ad); + + if (ad->main.device_item) { + elm_genlist_item_subitems_clear(ad->main.device_item); + elm_object_item_del(ad->main.device_item); + ad->main.device_item = NULL; + } + + if (ad->main.usage_item) { + elm_object_item_del(ad->main.usage_item); + ad->main.usage_item = NULL; + } } if (wifi_state || bt_state) { if (ad->main.help_item) { - DBG("Just update genlist\n"); + DBG("Just update help label item\n"); elm_genlist_item_update(ad->main.help_item); return; } else { @@ -471,10 +497,7 @@ void _update_main_view(mh_appdata_t *ad) ad->main.help_item = item; } } else { - if (!ad->main.help_item) { - DBG("No need to update\n"); - return; - } else { + if (ad->main.help_item) { DBG("Remove help item\n"); elm_object_item_del(ad->main.help_item); ad->main.help_item = NULL; @@ -556,17 +579,17 @@ static void __select_setup_item(void *data, Evas_Object *obj, void *event_info) } if (connected_wifi_clients > 0) { - _prepare_popup(ad, MH_POP_ENTER_TO_WIFI_SETUP_CONF, + _prepare_popup(MH_POP_ENTER_TO_WIFI_SETUP_CONF, _("IDS_MOBILEAP_POP_CONNECTED_DEVICE_WILL_BE_DISCONNECTED")); _create_popup(ad); } else { _update_wifi_item(ad, MH_STATE_PROCESS); ret = tethering_disable(ad->handle, TETHERING_TYPE_WIFI); if (ret != TETHERING_ERROR_NONE) { - ERR("wifi tethering off is failed : %d\n", ret); + ERR("Wi-Fi tethering off is failed : %d\n", ret); _update_wifi_item(ad, MH_STATE_NONE); } else - ad->main.old_wifi_state = true; + ad->main.need_recover_wifi_tethering = true; mh_draw_wifi_setup_view(ad); } @@ -682,7 +705,7 @@ static void __back_btn_cb(void *data, Evas_Object *obj, void *event_info) static char *__get_wifi_label(void *data, Evas_Object *obj, const char *part) { if (strcmp(part, "elm.text") != 0) { - ERR("Invalid param\n"); + DBG("Unknown part : %s\n", part); return NULL; } @@ -700,7 +723,7 @@ static Evas_Object *__get_wifi_icon(void *data, Evas_Object *obj, } if (strcmp(part, "elm.icon") != 0) { - ERR("Invalid param\n"); + DBG("Unknown part : %s\n", part); return NULL; } @@ -747,7 +770,7 @@ static char *__get_setup_label(void *data, Evas_Object *obj, const char *part) } if (strcmp(part, "elm.text") != 0) { - ERR("Invalid param\n"); + DBG("Unknown part : %s\n", part); return NULL; } @@ -757,7 +780,7 @@ static char *__get_setup_label(void *data, Evas_Object *obj, const char *part) static char *__get_bt_label(void *data, Evas_Object *obj, const char *part) { if (strcmp(part, "elm.text") != 0) { - ERR("Invalid param\n"); + DBG("Unknown part : %s\n", part); return NULL; } @@ -773,7 +796,7 @@ static Evas_Object *__get_bt_icon(void *data, Evas_Object *obj, const char *part Evas_Object *progressbar = NULL; if (strcmp(part, "elm.icon") != 0) { - ERR("Invalid param\n"); + DBG("Unknown part : %s\n", part); return NULL; } @@ -819,7 +842,7 @@ static Evas_Object *__get_bt_icon(void *data, Evas_Object *obj, const char *part static char *__get_usb_label(void *data, Evas_Object *obj, const char *part) { if (strcmp(part, "elm.text") != 0) { - ERR("Invalid param\n"); + DBG("Unknown part : %s\n", part); return NULL; } @@ -836,7 +859,7 @@ static Evas_Object *__get_usb_icon(void *data, Evas_Object *obj, Evas_Object *progressbar = NULL; if (strcmp(part, "elm.icon") != 0) { - ERR("Invalid param\n"); + DBG("Unknown part : %s\n", part); return NULL; } @@ -892,7 +915,7 @@ static char *__get_help_label(void *data, Evas_Object *obj, const char *part) int wifi_state = VCONFKEY_MOBILE_HOTSPOT_MODE_NONE; if (strcmp(part, "elm.text") != 0) { - ERR("Invalid param : %s\n", part); + DBG("Unknown part : %s\n", part); return NULL; } @@ -957,7 +980,7 @@ static char *__get_connected_device_label(void *data, Evas_Object *obj, const char *part) { if (strcmp(part, "elm.text.1") != 0 && strcmp(part, "elm.text.2") != 0) { - ERR("Invalid param\n"); + DBG("Unknown part : %s\n", part); return NULL; } @@ -987,7 +1010,7 @@ static char *__get_usage_label(void *data, Evas_Object *obj, const char *part) } if (strcmp(part, "elm.text.1") != 0 && strcmp(part, "elm.text.2") != 0) { - ERR("Invalid param\n"); + DBG("Unknown part : %s\n", part); return NULL; } @@ -1036,6 +1059,37 @@ static char *__get_usage_label(void *data, Evas_Object *obj, const char *part) return strdup(label); } +static char *__get_diff_time(time_t connection_time) +{ + time_t current_time; + char buf[MH_LABEL_LENGTH_MAX] = {0, }; + int day; + int hour; + int min; + int sec; + double diff; + + time(¤t_time); + diff = difftime(current_time, connection_time); + day = diff / (60 * 60 * 24); + diff = diff - (day * 60 * 60 * 24); + hour = diff / (60 * 60); + diff = diff - (hour * 60 * 60); + min = diff / 60; + diff = diff - (min * 60); + sec = diff; + + if (day > 0) + hour = hour + day * 24; + + if (hour > 0) + snprintf(buf, sizeof(buf), "%02d : %02d : %02d", hour, min, sec); + else + snprintf(buf, sizeof(buf), "%02d : %02d", min, sec); + + return g_strdup(buf); +} + static char *__gl_get_dev_label(void *data, Evas_Object *obj, const char *part) { if (data == NULL || part == NULL) { @@ -1045,16 +1099,20 @@ static char *__gl_get_dev_label(void *data, Evas_Object *obj, const char *part) tethering_client_h client = (tethering_client_h)data; char *name = NULL; + time_t tm; - if (!strcmp(part, "elm.text")) { + if (!strcmp(part, "elm.text.1")) { tethering_client_get_name(client, &name); DBG("Device name : %s\n", name); if (!strcmp(name, "UNKNOWN")) { - return strdup(_(MH_DEVICE_LIST_NO_NAME)); + return strdup(S_("IDS_COM_BODY_NO_NAME")); } return name; + } else if (!strcmp(part, "elm.text.2")) { + tethering_client_get_time(client, &tm); + return __get_diff_time(tm); } return NULL; @@ -1251,24 +1309,21 @@ static void __set_genlist_itc(mh_appdata_t *ad) ad->main.usage_itc->func.del = NULL; ad->main.dev_itc[TETHERING_TYPE_WIFI] = elm_genlist_item_class_new(); - ad->main.dev_itc[TETHERING_TYPE_WIFI]->item_style = - "dialogue/1text.1icon/expandable2"; + ad->main.dev_itc[TETHERING_TYPE_WIFI]->item_style = "dialogue/2text.1icon.2"; ad->main.dev_itc[TETHERING_TYPE_WIFI]->func.text_get = __gl_get_dev_label; ad->main.dev_itc[TETHERING_TYPE_WIFI]->func.content_get = __gl_get_dev_wifi_icon; ad->main.dev_itc[TETHERING_TYPE_WIFI]->func.state_get = NULL; ad->main.dev_itc[TETHERING_TYPE_WIFI]->func.del = NULL; ad->main.dev_itc[TETHERING_TYPE_USB] = elm_genlist_item_class_new(); - ad->main.dev_itc[TETHERING_TYPE_USB]->item_style = - "dialogue/1text.1icon/expandable2"; + ad->main.dev_itc[TETHERING_TYPE_USB]->item_style = "dialogue/2text.1icon.2"; ad->main.dev_itc[TETHERING_TYPE_USB]->func.text_get = __gl_get_dev_label; ad->main.dev_itc[TETHERING_TYPE_USB]->func.content_get = __gl_get_dev_usb_icon; ad->main.dev_itc[TETHERING_TYPE_USB]->func.state_get = NULL; ad->main.dev_itc[TETHERING_TYPE_USB]->func.del = NULL; ad->main.dev_itc[TETHERING_TYPE_BT] = elm_genlist_item_class_new(); - ad->main.dev_itc[TETHERING_TYPE_BT]->item_style = - "dialogue/1text.1icon/expandable2"; + ad->main.dev_itc[TETHERING_TYPE_BT]->item_style = "dialogue/2text.1icon.2"; ad->main.dev_itc[TETHERING_TYPE_BT]->func.text_get = __gl_get_dev_label; ad->main.dev_itc[TETHERING_TYPE_BT]->func.content_get = __gl_get_dev_bt_icon; ad->main.dev_itc[TETHERING_TYPE_BT]->func.state_get = NULL; @@ -1280,13 +1335,53 @@ static void __set_genlist_itc(mh_appdata_t *ad) static void __gl_realized(void *data, Evas_Object *obj, void *event_info) { + if (data == NULL || event_info == NULL) { + ERR("Invalid param\n"); + return; + } + mh_appdata_t *ad = (mh_appdata_t *)data; Elm_Object_Item *item = (Elm_Object_Item *)event_info; + Evas_Object *ao; + Evas_Object *btn; + char str[MH_LABEL_LENGTH_MAX] = {0, }; + int i = 0; + + if (item == ad->main.wifi_item || item == ad->main.bt_item || item == ad->main.usb_item) { + ao = elm_object_item_access_object_get(item); + btn = elm_object_item_part_content_get(item, "on&off"); + snprintf(str, sizeof(str), "%s, %s", "On/off button", + (elm_check_state_get(btn) ? "On" : "Off")); + elm_access_info_set(ao, ELM_ACCESS_CONTEXT_INFO, str); + + if (item == ad->main.wifi_item || item == ad->main.bt_item) { + elm_object_item_signal_emit(item, "elm,state,top", ""); + } else if (item == ad->main.usb_item) { + elm_object_item_signal_emit(item, "elm,state,bottom", ""); + } + } else if (item == ad->main.setup_item) { + ao = elm_object_item_access_object_get(item); + elm_access_info_set(ao, ELM_ACCESS_CONTEXT_INFO, "Item"); - if (item == ad->main.wifi_item || item == ad->main.bt_item || item == ad->main.device_item) - elm_object_item_signal_emit(item, "elm,state,top", ""); - else if (item == ad->main.setup_item || item == ad->main.usage_item || item == ad->main.usb_item) elm_object_item_signal_emit(item, "elm,state,bottom", ""); + } else if (item == ad->main.usage_item) { + elm_object_item_signal_emit(item, "elm,state,bottom", ""); + } else if (item == ad->main.device_item) { + ao = elm_object_item_access_object_get(item); + snprintf(str, sizeof(str), "%s, %s", "Expandable list", + "Double tap to open list"); + elm_access_info_set(ao, ELM_ACCESS_CONTEXT_INFO, str); + + elm_object_item_signal_emit(item, "elm,state,top", ""); + } else if (ad->main.device_item != NULL && + ad->main.device_item == elm_genlist_item_parent_get(item)) { + elm_object_item_signal_emit(item, "elm,state,center", ""); + } else { + for (i = 0; i < 4; i++) { + if (item == ad->main.sp_item[i]) + elm_object_item_access_unregister(item); + } + } return; } @@ -1296,11 +1391,9 @@ static void __create_inner_contents(mh_appdata_t *ad) __MOBILE_AP_FUNC_ENTER__; Elm_Object_Item *item = NULL; + int i = 0; __read_setting(ad); - if (ad->main.hotspot_mode != VCONFKEY_MOBILE_HOTSPOT_MODE_NONE) - _start_update_data_packet_usage(ad); - ad->main.genlist = elm_genlist_add(ad->naviframe); elm_genlist_mode_set(ad->main.genlist, ELM_LIST_COMPRESS); evas_object_smart_callback_add(ad->main.genlist, "realized", __gl_realized, ad); @@ -1311,6 +1404,7 @@ static void __create_inner_contents(mh_appdata_t *ad) item = elm_genlist_item_append(ad->main.genlist, ad->main.sp_itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); + ad->main.sp_item[i++] = item; item = elm_genlist_item_append(ad->main.genlist, ad->main.wifi_itc, ad, NULL, ELM_GENLIST_ITEM_NONE, @@ -1326,6 +1420,7 @@ static void __create_inner_contents(mh_appdata_t *ad) item = elm_genlist_item_append(ad->main.genlist, ad->main.sp_itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); + ad->main.sp_item[i++] = item; item = elm_genlist_item_append(ad->main.genlist, ad->main.bt_itc, ad, NULL, ELM_GENLIST_ITEM_NONE, @@ -1351,18 +1446,25 @@ static void __create_inner_contents(mh_appdata_t *ad) item = elm_genlist_item_append(ad->main.genlist, ad->main.sp_itc, ad, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); + ad->main.sp_item[i++] = item; - item = elm_genlist_item_append(ad->main.genlist, ad->main.usage_itc, - ad, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); - elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); - ad->main.usage_item = item; + if (ad->main.hotspot_mode != VCONFKEY_MOBILE_HOTSPOT_MODE_NONE) { + item = elm_genlist_item_append(ad->main.genlist, ad->main.usage_itc, + ad, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); + elm_genlist_item_select_mode_set(item, + ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); + ad->main.usage_item = item; - /* Insert "Connected devices" item */ - ap_update_data_device(ad); + /* Insert "Connected devices" item */ + ap_update_data_device(ad); + + _start_update_data_packet_usage(ad); + } item = elm_genlist_item_append(ad->main.genlist, ad->main.end_sp_itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); + ad->main.sp_item[i++] = item; __MOBILE_AP_FUNC_EXIT__; return; @@ -1419,6 +1521,7 @@ void ap_draw_contents(mh_appdata_t *ad) elm_object_style_set(ad->main.back_btn, "naviframe/back_btn/default"); evas_object_smart_callback_add(ad->main.back_btn, "clicked", __back_btn_cb, ad); + elm_object_focus_allow_set(ad->main.back_btn, EINA_FALSE); elm_naviframe_item_push(ad->naviframe, _("IDS_MOBILEAP_BODY_TETHERING"),