#include <time.h>
#include <limits.h>
#include <efl_extension.h>
+#include <dpm/restriction.h>
#include "mh_view_main.h"
#include "mh_popup.h"
#include "mh_string.h"
-#if 0 /* device rename not supported */
static void __ctx_move_more_ctxpopup(Evas_Object *ctx, mh_appdata_t *ad);
static void __ctx_delete_more_ctxpopup_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+static void __create_ctxpopup_more_button(void *data, Evas_Object *obj, void *event_info);
+
static Eina_Bool rotate_flag = EINA_FALSE;
-#endif
+
void _genlist_update_device_item(mh_appdata_t *ad);
mh_appdata_t *g_ad = NULL;
#define UPDATE_INTERVAL 1
-#if 0 /* device rename not supported */
-void _rotate_adjust_rename_popup(void)
-{
- __MOBILE_AP_FUNC_ENTER__;
-
- int change_ang = 0;
-
- change_ang = elm_win_rotation_get(g_ad->win);
- if (change_ang == 0 || change_ang == 180) {
- _hadnle_rename_popup_rotation(EINA_TRUE);
- } else {
- _hadnle_rename_popup_rotation(EINA_FALSE);
- }
- __MOBILE_AP_FUNC_EXIT__;
-}
-#endif
-
void _select_connected_dev(void *data, Evas_Object *obj, void *event_info)
{
__MOBILE_AP_FUNC_ENTER__;
ERR("Invalid param\n");
return EINA_FALSE;
}
- if (ad->main.usage_item == NULL) {
- return EINA_TRUE;
- }
if (ad->main.usage_item)
elm_genlist_item_update(ad->main.usage_item);
}
/* If previous data is not updated, new data is not required */
- if (ad->data_statistics.is_updated == false) {
+ if (ad->data_statistics.is_updated == false)
return ECORE_CALLBACK_RENEW;
- }
/* Because previous data is updated, new data is required.
It will be returned asynchronously. */
return;
}
- if (ad->update_conn_time_handle) {
+ if (ad->update_conn_time_handle)
_stop_update_device_conn_time(ad);
- }
+
ad->update_conn_time_handle = ecore_timer_add(UPDATE_INTERVAL,
ap_update_device_conn_time, (void *)ad);
return;
}
- if (ad->update_statistics_handle) {
+ if (ad->update_statistics_handle)
_stop_update_data_packet_usage(ad);
- }
ad->data_statistics.is_updated = false;
tethering_get_data_usage(ad->handle, _data_usage_cb, (void *)ad);
free(passphrase);
ret = tethering_wifi_get_ssid_visibility(ad->handle, &visibility);
- if (ret != TETHERING_ERROR_NONE) {
+ if (ret != TETHERING_ERROR_NONE)
ERR("tethering_wifi_get_ssid_visibility is failed\n");
- }
+
ad->setup.visibility = visibility;
ad->setup.visibility_new = visibility;
ret = tethering_wifi_get_security_type(ad->handle, &type);
- if (ret != TETHERING_ERROR_NONE) {
+ if (ret != TETHERING_ERROR_NONE)
ERR("tethering_wifi_get_security_type is failed\n");
- }
+
ad->setup.security_type = type;
ad->setup.security_type_new = type;
{
__MOBILE_AP_FUNC_ENTER__;
- if (ad->main.wifi_state == wifi_state) {
+ if (ad->main.wifi_state == wifi_state)
return;
- }
if (ad->main.wifi_state == MH_STATE_PROCESS) {
ad->main.wifi_state = MH_STATE_NONE;
{
__MOBILE_AP_FUNC_ENTER__;
- if (ad->main.bt_state == bt_state) {
+ if (ad->main.bt_state == bt_state)
return;
- }
if (ad->main.bt_state == MH_STATE_PROCESS) {
ad->main.bt_state = MH_STATE_NONE;
{
__MOBILE_AP_FUNC_ENTER__;
- if (ad->main.usb_state == usb_state) {
+ if (ad->main.usb_state == usb_state)
return;
- }
if (ad->main.usb_state == MH_STATE_PROCESS) {
ad->main.usb_state = MH_STATE_NONE;
ad->main.device_item = item;
}
- if (ad->connected_device.navi_it) {
+ if (ad->connected_device.navi_it)
_update_conn_clients(ad);
- }
__MOBILE_AP_FUNC_EXIT__;
return;
elm_object_item_disabled_set(ad->main.setup_item, EINA_FALSE);
if (ad->main.bt_item)
elm_object_item_disabled_set(ad->main.bt_item, EINA_FALSE);
- if (_get_vconf_usb_state() != VCONFKEY_SYSMAN_USB_AVAILABLE) {
+ if (_get_vconf_usb_state() == VCONFKEY_SYSMAN_USB_DISCONNECTED) {
if (ad->main.usb_item)
elm_object_item_disabled_set(ad->main.usb_item, EINA_TRUE);
} else {
_update_wifi_item(ad, MH_STATE_NONE);
} else {
obj = elm_object_item_part_content_get(ad->main.wifi_item, "elm.swallow.end");
- if (obj != NULL) {
+ if (obj != NULL)
elm_check_state_set(obj, wifi_state);
- }
- if (ad->main.wifi_item) {
+ if (ad->main.wifi_item)
elm_genlist_item_update(ad->main.wifi_item);
- }
}
break;
_update_bt_item(ad, MH_STATE_NONE);
} else {
obj = elm_object_item_part_content_get(ad->main.bt_item, "elm.swallow.end");
- if (obj != NULL) {
+ if (obj != NULL)
elm_check_state_set(obj, bt_state);
- }
- if (ad->main.bt_item) {
+ if (ad->main.bt_item)
elm_genlist_item_update(ad->main.bt_item);
- }
}
break;
return;
}
+static int __is_allowed(tethering_type_e type)
+{
+ int state = 0;
+ device_policy_manager_h dpm = NULL;
+
+ dpm = dpm_manager_create();
+ if (dpm == NULL) {
+ ERR("Failed to create device policy manager!!");
+ return 0;
+ }
+
+ switch (type) {
+ case TETHERING_TYPE_WIFI:
+ dpm_restriction_get_wifi_hotspot_state(dpm, &state);
+ break;
+ case TETHERING_TYPE_USB:
+ dpm_restriction_get_usb_tethering_state(dpm, &state);
+ break;
+ case TETHERING_TYPE_BT:
+ dpm_restriction_get_bluetooth_tethering_state(dpm, &state);
+ break;
+ default:
+ break;
+ }
+
+ dpm_manager_destroy(dpm);
+
+ return state;
+}
+
static void __wifi_onoff_changed_cb(void *data, Evas_Object *obj,
void *event_info)
{
__MOBILE_AP_FUNC_ENTER__;
+ if (!__is_allowed(TETHERING_TYPE_WIFI)) {
+ ERR("Wi-Fi tethering is restricted!!");
+ elm_check_state_set(obj, EINA_FALSE);
+ _create_security_restriction_noti(TETHERING_TYPE_WIFI);
+ return;
+ }
+
if (data == NULL) {
ERR("The param is NULL\n");
return;
{
__MOBILE_AP_FUNC_ENTER__;
+ Evas_Object *content;
+ Elm_Object_Item *item = (Elm_Object_Item *)event_info;
+
if (data == NULL) {
ERR("The param is NULL\n");
return;
}
- mh_appdata_t *ad = (mh_appdata_t *)data;
- elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
- mh_draw_wifi_setup_view(ad);
+ elm_genlist_item_selected_set(item, EINA_FALSE);
+
+ content = elm_object_item_part_content_get(item, "elm.icon");
+ __wifi_onoff_changed_cb(data, content, NULL);
__MOBILE_AP_FUNC_EXIT__;
{
__MOBILE_AP_FUNC_ENTER__;
+ if (!__is_allowed(TETHERING_TYPE_BT)) {
+ ERR("BT tethering is restricted!!");
+ elm_check_state_set(obj, EINA_FALSE);
+ _create_security_restriction_noti(TETHERING_TYPE_BT);
+ return;
+ }
+
if (data == NULL) {
ERR("The param is NULL\n");
return;
{
__MOBILE_AP_FUNC_ENTER__;
+ if (!__is_allowed(TETHERING_TYPE_USB)) {
+ ERR("USB tethering is restricted!!");
+ elm_check_state_set(obj, EINA_FALSE);
+ _create_security_restriction_noti(TETHERING_TYPE_USB);
+ return;
+ }
+
if (data == NULL) {
ERR("The param is NULL\n");
return;
static char *__get_wifi_label(void *data, Evas_Object *obj, const char *part)
{
- if (!strcmp("elm.text", part)) {
- return strdup(STR_WIFI_TETH);
- }
+ if (!strcmp("elm.text", part))
+ return strdup(STR_MOBILE_HOTSPOT);
return NULL;
}
{
mh_appdata_t *ad = (mh_appdata_t*)data;
Evas_Object *btn = NULL;
- Evas_Object *progressbar = NULL;
- Evas_Object *icon_layout = NULL;
if (data == NULL) {
ERR("The param is NULL\n");
}
if (!strcmp("elm.swallow.end", part)) {
- icon_layout = elm_layout_add(obj);
- elm_layout_theme_set(icon_layout, "layout", "list/C/type.3", "default");
-
if (ad->main.wifi_state == MH_STATE_PROCESS) {
- progressbar = _create_progressbar(obj, "process_medium");
- elm_layout_content_set(icon_layout, "elm.swallow.content", progressbar);
+ btn = _create_progressbar(obj, "process_medium");
} else {
btn = elm_check_add(obj);
elm_object_style_set(btn, "on&off");
- evas_object_show(btn);
- evas_object_pass_events_set(btn, EINA_TRUE);
evas_object_propagate_events_set(btn, EINA_FALSE);
+ evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_check_state_set(btn, ad->main.hotspot_mode &
VCONFKEY_MOBILE_HOTSPOT_MODE_WIFI ? EINA_TRUE : EINA_FALSE);
evas_object_smart_callback_add(btn, "changed", __wifi_onoff_changed_cb, ad);
- elm_layout_content_set(icon_layout, "elm.swallow.content", btn);
+ evas_object_show(btn);
}
}
- return icon_layout;
+ return btn;
}
static char *__get_bt_label(void *data, Evas_Object *obj, const char *part)
{
- if (!strcmp("elm.text", part)) {
+ if (!strcmp("elm.text", part))
return strdup(STR_BLUETOOTH_TETH);
- }
return NULL;
}
{
mh_appdata_t *ad = (mh_appdata_t *)data;
Evas_Object *btn = NULL;
- Evas_Object *progressbar = NULL;
- Evas_Object *icon_layout = NULL;
if (data == NULL) {
ERR("The param is NULL\n");
}
if (!strcmp("elm.swallow.end", part)) {
- icon_layout = elm_layout_add(obj);
- elm_layout_theme_set(icon_layout, "layout", "list/C/type.3", "default");
-
if (ad->main.bt_state == MH_STATE_PROCESS) {
- progressbar = _create_progressbar(obj, "process_medium");
- elm_layout_content_set(icon_layout, "elm.swallow.content", progressbar);
+ btn = _create_progressbar(obj, "process_medium");
} else {
btn = elm_check_add(obj);
if (btn == NULL) {
VCONFKEY_MOBILE_HOTSPOT_MODE_BT ? EINA_TRUE : EINA_FALSE);
evas_object_show(btn);
evas_object_smart_callback_add(btn, "changed", __bt_onoff_changed_cb, ad);
- elm_layout_content_set(icon_layout, "elm.swallow.content", btn);
}
}
- return icon_layout;
+ return btn;
}
static char *__get_usb_label(void *data, Evas_Object *obj, const char *part)
{
- if (!strcmp("elm.text", part)) {
+ if (!strcmp("elm.text", part))
return strdup(STR_USB_TETH);
- }
return NULL;
}
{
mh_appdata_t *ad = (mh_appdata_t *)data;
Evas_Object *btn = NULL;
- Evas_Object *progressbar = NULL;
- Evas_Object *icon_layout = NULL;
if (data == NULL) {
ERR("The param is NULL\n");
}
if (!strcmp("elm.swallow.end", part)) {
- icon_layout = elm_layout_add(obj);
- elm_layout_theme_set(icon_layout, "layout", "list/C/type.3", "default");
-
if (ad->main.usb_state == MH_STATE_PROCESS) {
- progressbar = _create_progressbar(obj, "process_medium");
- elm_layout_content_set(icon_layout, "elm.swallow.content", progressbar);
+ btn = _create_progressbar(obj, "process_medium");
} else {
btn = elm_check_add(obj);
if (btn == NULL) {
VCONFKEY_MOBILE_HOTSPOT_MODE_USB ? EINA_TRUE : EINA_FALSE);
evas_object_show(btn);
evas_object_smart_callback_add(btn, "changed", __usb_onoff_changed_cb, ad);
- elm_layout_content_set(icon_layout, "elm.swallow.content", btn);
}
}
- return icon_layout;
+ return btn;
}
static char *__get_help_label(void *data, Evas_Object *obj, const char *part)
char device_name[MH_LABEL_LENGTH_MAX] = {0, };
char passphrase[MH_LABEL_LENGTH_MAX] = {0, };
char security_type[MH_LABEL_LENGTH_MAX] = {0, };
+ char *fmt = STR_SECURITY_TYPE_PS;
char *hidden = "";
char *ptr = NULL;
char *device_name_utf = NULL;
g_free(ptr);
snprintf(security_type, sizeof(security_type),
- STR_SECURITY_TYPE_PS, "WPA2 PSK");
+ fmt, "WPA2 PSK");
}
wifi_state = ad->main.hotspot_mode & VCONFKEY_MOBILE_HOTSPOT_MODE_WIFI;
if (wifi_state && ad->setup.visibility == false)
- hidden = STR_WIFI_TETH_HIDDEN;
+ hidden = STR_MOBILE_HOTSPOT_IS_HIDDEN;
if (wifi_state && ad->setup.security_type != TETHERING_WIFI_SECURITY_TYPE_NONE) {
snprintf(buf, MH_LABEL_LENGTH_MAX,
STR_PASSWORD,
passphrase,
security_type,
- STR_PASSWORD_FOR_WIFI_TETH,
+ STR_ENTER_THE_PASSWORD_ON_THE_OTHER_DEVICE,
hidden[0] != '\0' ? "<br>" : "",
hidden);
} else {
static void __set_genlist_itc(mh_appdata_t *ad)
{
/* On, Off view's item class for genlist */
-#if 0 /* not used */
- ad->main.sp_itc = elm_genlist_item_class_new();
- if (ad->main.sp_itc == NULL) {
- ERR("elm_genlist_item_class_new failed\n");
- return;
- }
-
- ad->main.sp_itc->item_style = "dialogue/separator";
- ad->main.sp_itc->func.text_get = NULL;
- ad->main.sp_itc->func.content_get = NULL;
- ad->main.sp_itc->func.state_get = NULL;
- ad->main.sp_itc->func.del = NULL;
-#endif
ad->main.wifi_itc = elm_genlist_item_class_new();
if (ad->main.wifi_itc == NULL) {
ERR("elm_genlist_item_class_new failed\n");
ad->main.wifi_itc->func.state_get = NULL;
ad->main.wifi_itc->func.del = NULL;
-#if 0 /* not used */
- ad->main.sp2_itc = elm_genlist_item_class_new();
- if (ad->main.sp2_itc == NULL) {
- ERR("elm_genlist_item_class_new failed\n");
- return;
- }
-
- ad->main.sp2_itc->item_style = "dialogue/separator.2";
- ad->main.sp2_itc->func.text_get = NULL;
- ad->main.sp2_itc->func.content_get = NULL;
- ad->main.sp2_itc->func.state_get = NULL;
- ad->main.sp2_itc->func.del = NULL;
-#endif
/* End of On, Off view's item class for genlist */
/* Off view's item class for genlist */
ad, NULL, ELM_GENLIST_ITEM_NONE,
__select_usb_item, ad);
ad->main.usb_item = item;
- if (_get_vconf_usb_state() != VCONFKEY_SYSMAN_USB_AVAILABLE) {
+ if (_get_vconf_usb_state() == VCONFKEY_SYSMAN_USB_DISCONNECTED) {
if (ad->main.usb_item)
elm_object_item_disabled_set(ad->main.usb_item, EINA_TRUE);
} else {
_free_genlist_itc(&mv->bt_itc);
_free_genlist_itc(&mv->setup_itc);
_free_genlist_itc(&mv->wifi_itc);
-#if 0 /* not used */
- _free_genlist_itc(&mv->sp_itc);
- _free_genlist_itc(&mv->sp2_itc);
-#endif
__MOBILE_AP_FUNC_EXIT__;
return;
}
__MOBILE_AP_FUNC_EXIT__;
}
-#if 0 /* device rename not supported */
+void _ctxpopup_more_button_callback_add(mh_appdata_t *ad)
+{
+ eext_object_event_callback_add(ad->naviframe, EEXT_CALLBACK_MORE,
+ __create_ctxpopup_more_button, ad);
+}
+
+void _ctxpopup_more_button_callback_del(mh_appdata_t *ad)
+{
+ eext_object_event_callback_del(ad->naviframe, EEXT_CALLBACK_MORE,
+ __create_ctxpopup_more_button);
+}
+
static void __ctx_move_more_ctxpopup(Evas_Object *ctx, mh_appdata_t *ad)
{
Evas_Coord w;
pos = elm_win_rotation_get(ad->win);
switch (pos) {
- case 0:
- case 180:
- evas_object_move(ctx, w/2, h);
- break;
- case 90:
- evas_object_move(ctx, h/2, w);
- break;
- case 270:
- evas_object_move(ctx, h/2, w);
- break;
+ case 0:
+ case 180:
+ evas_object_move(ctx, w/2, h);
+ break;
+ case 90:
+ evas_object_move(ctx, h/2, w);
+ break;
+ case 270:
+ evas_object_move(ctx, h/2, w);
+ break;
}
__MOBILE_AP_FUNC_EXIT__;
}
__MOBILE_AP_FUNC_EXIT__;
}
-static void _gl_rename_device_sel(void *data, Evas_Object *obj, void *event_info)
+static void __gl_configure_wifi_tethering(void *data, Evas_Object *obj, void *event_info)
{
__MOBILE_AP_FUNC_ENTER__;
- mh_appdata_t *ad = (mh_appdata_t *)data;
-
- if (ad == NULL) {
- ERR("ad is null\n");
+ if (data == NULL) {
+ ERR("The param is NULL\n");
return;
}
+ mh_appdata_t *ad = (mh_appdata_t *)data;
+
evas_object_del(ad->ctxpopup);
ad->ctxpopup = NULL;
- _create_rename_device_popup((void *)ad);
+ elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
+ _ctxpopup_more_button_callback_del(ad);
+ mh_draw_wifi_setup_view(ad);
+
__MOBILE_AP_FUNC_EXIT__;
+
+ return;
}
static void __create_ctxpopup_more_button(void *data, Evas_Object *obj,
}
__MOBILE_AP_FUNC_ENTER__;
- if (ad->setup.navi_it == NULL) {
- return;
- }
-
- elm_naviframe_item_pop_cb_set(ad->setup.navi_it, _setting_back_btn_cb, (void *)ad);
- ctxpopup = elm_ctxpopup_add(ad->naviframe);
+ ctxpopup = elm_ctxpopup_add(ad->win);
elm_ctxpopup_auto_hide_disabled_set(ctxpopup, EINA_TRUE);
eext_object_event_callback_add(ctxpopup, EEXT_CALLBACK_BACK,
ELM_CTXPOPUP_DIRECTION_UNKNOWN);
__ctx_move_more_ctxpopup(ctxpopup, ad);
- elm_ctxpopup_item_append(ctxpopup, STR_RENAME_DEVICE_HEADER,
- NULL, _gl_rename_device_sel, ad);
+ elm_ctxpopup_item_append(ctxpopup, STR_CONFIGURE_MOBILE_HOTSPOT,
+ NULL, __gl_configure_wifi_tethering, ad);
evas_object_show(ctxpopup);
__MOBILE_AP_FUNC_EXIT__;
}
-#endif
+
void _main_draw_contents(mh_appdata_t *ad)
{
eext_object_event_callback_add(ad->naviframe, EEXT_CALLBACK_BACK,
eext_naviframe_back_cb, NULL);
-#if 0 /* device rename not supported */
- eext_object_event_callback_add(ad->naviframe, EEXT_CALLBACK_MORE,
- __create_ctxpopup_more_button, ad);
-#endif
-
+ _ctxpopup_more_button_callback_add(ad);
evas_object_smart_callback_add(ad->main.back_btn, "clicked", (Evas_Smart_Cb)__back_btn_cb, (void *)ad);
elm_object_focus_allow_set(ad->main.back_btn, EINA_FALSE);