void _main_draw_contents(mh_appdata_t *ad);
void _main_callback_del(mh_appdata_t *ad);
void _main_free_genlist_itc(mh_appdata_t *ad);
-void _select_connected_dev(void *data, Evas_Object *obj, void *event_info);
+void _list_connected_dev(mh_appdata_t *data);
void _genlist_update_device_item(mh_appdata_t *ad);
void _update_conn_clients(mh_appdata_t *ad);
-void _create_connected_client_view(mh_appdata_t *ad);
+void _add_connected_clients(mh_appdata_t *ad);
void _ctxpopup_more_button_callback_add(mh_appdata_t *ad);
void _ctxpopup_more_button_callback_del(mh_appdata_t *ad);
Elm_Genlist_Item_Class *device0_itc;
Elm_Genlist_Item_Class *popup_descp_itc;
Elm_Genlist_Item_Class *popup_check_itc;
+ Elm_Genlist_Item_Class *dev_itc[TETHERING_TYPE_MAX];
Elm_Object_Item *sp_item[4];
Elm_Object_Item *help_sp_item;
Elm_Object_Item *help_item;
Elm_Object_Item *popup_descp_item;
Elm_Object_Item *popup_check_item;
+ Elm_Object_Item *dev_item;
+ Elm_Object_Item *station_items[MAX_CONNECTED_STA];
+ int no_of_clients;
#ifdef TETHERING_DATA_USAGE_SUPPORT
Elm_Genlist_Item_Class *usage_itc;
Elm_Object_Item *usage_item;
} mh_data_usage_t;
typedef struct {
- Elm_Object_Item *navi_it;
- Evas_Object *genlist;
-
- Elm_Genlist_Item_Class *dev_itc[TETHERING_TYPE_MAX];
- Elm_Object_Item *dev_item;
- Elm_Object_Item *station_items[MAX_CONNECTED_STA];
- int no_of_clients;
-} mh_conn_client_view_t;
-
-typedef struct {
void *gadget;
GSList *client_list;
bool is_foreground;
mh_main_view_t main;
mh_wifi_setting_view_t setup;
mh_data_usage_t data_statistics;
- mh_conn_client_view_t connected_device;
} mh_appdata_t;
typedef struct {
#include "mobile_hotspot.h"
#include "mh_string.h"
-static void __deconstruct_conn_clients_view(mh_appdata_t *ad)
+static void __remove_conn_clients(mh_appdata_t *ad)
{
__MOBILE_AP_FUNC_ENTER__;
- mh_conn_client_view_t *client = &ad->connected_device;
- int no_of_dev;
+ mh_main_view_t *mv = &ad->main;
+ int connected_clients = 0;
int i = 0;
- no_of_dev = _get_list_clients_count(ad);
- for (i = 0; i < no_of_dev; i++)
- _free_genlist_item(&ad->connected_device.station_items[i]);
+ if (_get_no_of_connected_device(ad, &connected_clients,
+ TETHERING_TYPE_ALL) == EINA_FALSE)
+ ERR("Getting the number of connected device is failed");
- _free_genlist_itc(&client->dev_itc[TETHERING_TYPE_WIFI]);
- _free_genlist_itc(&client->dev_itc[TETHERING_TYPE_BT]);
- _free_genlist_itc(&client->dev_itc[TETHERING_TYPE_USB]);
+ for (i = 0; i < MAX_CONNECTED_STA; i++)
+ _free_genlist_item(&ad->main.station_items[i]);
+
+ _free_genlist_itc(&mv->dev_itc[TETHERING_TYPE_WIFI]);
+ _free_genlist_itc(&mv->dev_itc[TETHERING_TYPE_BT]);
+ _free_genlist_itc(&mv->dev_itc[TETHERING_TYPE_USB]);
- evas_object_del(client->genlist);
- client->genlist = NULL;
- client->navi_it = NULL;
_stop_update_device_conn_time(ad);
__MOBILE_AP_FUNC_EXIT__;
}
-static void __update_connected_client_view(mh_appdata_t *ad)
+static void __update_connected_clients(mh_appdata_t *ad)
{
__MOBILE_AP_FUNC_ENTER__;
GSList *l = NULL;
tethering_client_h *handle;
int count = 0;
- mh_conn_client_view_t *cli_view = &(ad->connected_device);
+ mh_main_view_t *main_view = &(ad->main);
+ int i = 0;
+ int connected_clients = 0;
- elm_genlist_clear(cli_view->genlist);
+ if (_get_no_of_connected_device(ad, &connected_clients,
+ TETHERING_TYPE_ALL) == EINA_FALSE)
+ ERR("Getting the number of connected device is failed");
+
+ for (i = 0; i < MAX_CONNECTED_STA; i++)
+ _free_genlist_item(&ad->main.station_items[i]);
for (l = ad->client_list; l != NULL; l = g_slist_next(l)) {
handle = (tethering_client_h *)l->data;
tethering_client_get_tethering_type(handle, &connection_type);
- item = elm_genlist_item_append(cli_view->genlist,
- cli_view->dev_itc[connection_type],
+ item = elm_genlist_item_append(main_view->genlist,
+ main_view->dev_itc[connection_type],
(void *)handle,
NULL, ELM_GENLIST_ITEM_NONE,
NULL, NULL);
ERR("elm_genlist_item_append is failed\n");
continue;
}
- cli_view->station_items[count++] = item;
+ main_view->station_items[count++] = item;
elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
}
- cli_view->no_of_clients = count;
+ main_view->no_of_clients = count;
_start_update_device_conn_time(ad);
__MOBILE_AP_FUNC_EXIT__;
return;
ERR("Invalid param\n");
return;
}
- unsigned int no_of_dev = 0;
- no_of_dev = _get_list_clients_count(ad);
-
- if (no_of_dev == 0) {
- __deconstruct_conn_clients_view(ad);
- elm_naviframe_item_pop(ad->naviframe);
- } else {
- __update_connected_client_view(ad);
- }
+ int connected_clients = 0;
+ if (_get_no_of_connected_device(ad, &connected_clients,
+ TETHERING_TYPE_ALL) == EINA_FALSE)
+ ERR("Getting the number of connected device is failed");
+
+ if (connected_clients == 0)
+ __remove_conn_clients(ad);
+ else
+ __update_connected_clients(ad);
+
__MOBILE_AP_FUNC_EXIT__;
return;
}
{
__MOBILE_AP_FUNC_ENTER__;
- ad->connected_device.dev_itc[TETHERING_TYPE_WIFI] = elm_genlist_item_class_new();
- ad->connected_device.dev_itc[TETHERING_TYPE_WIFI]->item_style = MH_GENLIST_2LINE_TOP_TEXT_ICON_STYLE;
- ad->connected_device.dev_itc[TETHERING_TYPE_WIFI]->func.text_get = __gl_get_dev_label;
- ad->connected_device.dev_itc[TETHERING_TYPE_WIFI]->func.content_get = __gl_get_dev_wifi_icon;
- ad->connected_device.dev_itc[TETHERING_TYPE_WIFI]->func.state_get = NULL;
- ad->connected_device.dev_itc[TETHERING_TYPE_WIFI]->func.del = NULL;
-
- ad->connected_device.dev_itc[TETHERING_TYPE_USB] = elm_genlist_item_class_new();
- ad->connected_device.dev_itc[TETHERING_TYPE_USB]->item_style = MH_GENLIST_2LINE_TOP_TEXT_ICON_STYLE;
- ad->connected_device.dev_itc[TETHERING_TYPE_USB]->func.text_get = __gl_get_dev_label;
- ad->connected_device.dev_itc[TETHERING_TYPE_USB]->func.content_get = __gl_get_dev_usb_icon;
- ad->connected_device.dev_itc[TETHERING_TYPE_USB]->func.state_get = NULL;
- ad->connected_device.dev_itc[TETHERING_TYPE_USB]->func.del = NULL;
-
- ad->connected_device.dev_itc[TETHERING_TYPE_BT] = elm_genlist_item_class_new();
- ad->connected_device.dev_itc[TETHERING_TYPE_BT]->item_style = MH_GENLIST_2LINE_TOP_TEXT_ICON_STYLE;
- ad->connected_device.dev_itc[TETHERING_TYPE_BT]->func.text_get = __gl_get_dev_label;
- ad->connected_device.dev_itc[TETHERING_TYPE_BT]->func.content_get = __gl_get_dev_bt_icon;
- ad->connected_device.dev_itc[TETHERING_TYPE_BT]->func.state_get = NULL;
- ad->connected_device.dev_itc[TETHERING_TYPE_BT]->func.del = NULL;
+ ad->main.dev_itc[TETHERING_TYPE_WIFI] = elm_genlist_item_class_new();
+ ad->main.dev_itc[TETHERING_TYPE_WIFI]->item_style = MH_GENLIST_2LINE_TOP_TEXT_ICON_STYLE;
+ 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 = MH_GENLIST_2LINE_TOP_TEXT_ICON_STYLE;
+ 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 = MH_GENLIST_2LINE_TOP_TEXT_ICON_STYLE;
+ 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;
+ ad->main.dev_itc[TETHERING_TYPE_BT]->func.del = NULL;
__MOBILE_AP_FUNC_EXIT__;
}
__MOBILE_AP_FUNC_EXIT__;
}
-static void __create_genlist(mh_appdata_t *ad)
+static void __append_clients_genlist(mh_appdata_t *ad)
{
__MOBILE_AP_FUNC_ENTER__;
return;
}
- Evas_Object *genlist;
Elm_Object_Item *item = NULL;
tethering_type_e connection_type = 0;
GSList *l = NULL;
tethering_client_h *handle;
int count = 0;
- mh_conn_client_view_t *client = &ad->connected_device;
-
- genlist = elm_genlist_add(ad->naviframe);
- if (genlist == NULL) {
- ERR("genlist is NULL\n");
- return;
- }
-
- elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
- client->genlist = genlist;
+ mh_main_view_t *mv = &ad->main;
__set_genlist_itc(ad);
handle = (tethering_client_h *)l->data;
tethering_client_get_tethering_type(handle, &connection_type);
- item = elm_genlist_item_append(client->genlist,
- client->dev_itc[connection_type],
+ item = elm_genlist_item_append(mv->genlist,
+ mv->dev_itc[connection_type],
(void *)handle,
NULL, ELM_GENLIST_ITEM_NONE,
NULL, NULL);
ERR("elm_genlist_item_append is failed\n");
continue;
}
- client->station_items[count++] = item;
+ mv->station_items[count++] = item;
elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
}
- evas_object_smart_callback_add(genlist, "scroll,anim,start",
+ evas_object_smart_callback_add(mv->genlist, "scroll,anim,start",
__scroll_start_cb, ad);
- evas_object_smart_callback_add(genlist, "scroll,drag,start",
+ evas_object_smart_callback_add(mv->genlist, "scroll,drag,start",
__scroll_start_cb, ad);
- evas_object_smart_callback_add(genlist, "scroll,anim,stop",
+ evas_object_smart_callback_add(mv->genlist, "scroll,anim,stop",
__scroll_stop_cb, ad);
- evas_object_smart_callback_add(genlist, "scroll,drag,stop",
+ evas_object_smart_callback_add(mv->genlist, "scroll,drag,stop",
__scroll_stop_cb, ad);
- client->no_of_clients = count;
+ mv->no_of_clients = count;
_start_update_device_conn_time(ad);
__MOBILE_AP_FUNC_EXIT__;
}
-static Eina_Bool __back_btn_cb(void *data, Elm_Object_Item *navi_item)
-{
- DBG("+\n");
-
- if (data == NULL) {
- ERR("The param is NULL\n");
- return EINA_FALSE;
- }
-
- mh_appdata_t *ad = (mh_appdata_t *)data;
-
- __deconstruct_conn_clients_view(ad);
- _ctxpopup_more_button_callback_add(ad);
-
- DBG("-\n");
- return EINA_TRUE;
-}
-
-void _create_connected_client_view(mh_appdata_t *ad)
+void _add_connected_clients(mh_appdata_t *ad)
{
DBG("+\n");
if (ad == NULL) {
return;
}
- mh_conn_client_view_t *client = &ad->connected_device;
-
- if (client->navi_it != NULL) {
- ERR("connected device view already exists\n");
- return;
- }
-
- __create_genlist(ad);
- if (client->genlist == NULL) {
- ERR("__create_genlist failed NULL\n");
- return;
- }
- client->navi_it = elm_naviframe_item_push(ad->naviframe, STR_CONN_DEVICES, NULL, NULL, client->genlist, NULL);
- elm_object_item_domain_text_translatable_set(client->navi_it, PKGNAME, EINA_TRUE);
+ __append_clients_genlist(ad);
- elm_naviframe_item_pop_cb_set(client->navi_it, __back_btn_cb, (void *)ad);
DBG("-\n");
}
#ifdef TETHERING_DATA_USAGE_SUPPORT
_start_update_data_packet_usage(ad);
#endif
- if (ad->connected_device.navi_it)
+ if (ad->navi_item)
_start_update_device_conn_time(ad);
}
#ifdef TETHERING_DATA_USAGE_SUPPORT
_start_update_data_packet_usage(ad);
#endif
- if (ad->connected_device.navi_it)
+ if (ad->navi_item)
_start_update_device_conn_time(ad);
}
DBG("-\n");
#include "mh_string.h"
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 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;
mh_appdata_t *g_ad = NULL;
#define UPDATE_INTERVAL 1
-void _select_connected_dev(void *data, Evas_Object *obj, void *event_info)
+void _list_connected_dev(mh_appdata_t *ap)
{
__MOBILE_AP_FUNC_ENTER__;
- if (data == NULL) {
+ if (ap == NULL) {
ERR("data is NULL\n");
return;
}
- mh_appdata_t *ad = (mh_appdata_t *)data;
-
- elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
- _ctxpopup_more_button_callback_del(ad);
- _create_connected_client_view(ad);
+ _add_connected_clients(ap);
__MOBILE_AP_FUNC_EXIT__;
}
return ECORE_CALLBACK_CANCEL;
}
- while (count < ad->connected_device.no_of_clients) {
- if (ad->connected_device.station_items[count])
- elm_genlist_item_fields_update(ad->connected_device.station_items[count++],
+ while (count < ad->main.no_of_clients) {
+ if (ad->main.station_items[count])
+ elm_genlist_item_fields_update(ad->main.station_items[count++],
"elm.text.sub", ELM_GENLIST_ITEM_FIELD_TEXT);
}
return ECORE_CALLBACK_RENEW;
no_of_dev = _get_list_clients_count(ad);
Elm_Object_Item *item = NULL;
- if (ad->main.device_item) {
- elm_object_item_del(ad->main.device_item);
- ad->main.device_item = NULL;
- if (no_of_dev == 0) {
- item = elm_genlist_item_append(ad->main.genlist,
- ad->main.device0_itc, ad, NULL,
- ELM_GENLIST_ITEM_NONE, NULL, NULL);
- elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ if (no_of_dev == 0) {
+ if (ad->main.device_item) {
+ elm_object_item_del(ad->main.device_item);
+ ad->main.device_item = NULL;
+ _update_conn_clients(ad);
+ }
+ } else {
+ if (ad->main.device_item) {
+ _update_conn_clients(ad);
} else {
item = elm_genlist_item_append(ad->main.genlist,
ad->main.device_itc, ad, NULL,
- ELM_GENLIST_ITEM_NONE, _select_connected_dev, (void *)ad);
- elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ ad->main.device_item = item;
+ _list_connected_dev(ad);
+ }
}
- ad->main.device_item = item;
- }
- if (ad->connected_device.navi_it)
- _update_conn_clients(ad);
__MOBILE_AP_FUNC_EXIT__;
return;
no_of_dev = _get_list_clients_count(ad);
if (ad->main.device_item == NULL) {
- if (no_of_dev == 0) {
- item = elm_genlist_item_append(ad->main.genlist,
- ad->main.device0_itc, ad, NULL,
- ELM_GENLIST_ITEM_NONE, NULL, NULL);
- elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
- } else {
+ if (no_of_dev != 0) {
item = elm_genlist_item_append(ad->main.genlist,
ad->main.device_itc, ad, NULL,
- ELM_GENLIST_ITEM_NONE, _select_connected_dev, (void *)ad);
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ _list_connected_dev(ad);
+ _update_conn_clients(ad);
}
ad->main.device_item = item;
}
return NULL;
}
-static char *__get_no_connected_device_label(void *data, Evas_Object *obj,
- const char *part)
-{
- mh_appdata_t *ad = (mh_appdata_t*)data;
- char buf[MH_LABEL_LENGTH_MAX] = {0, };
- int no_of_dev;
-
- if (data == NULL) {
- ERR("The param is NULL\n");
- return NULL;
- }
-
- if (!strcmp("elm.text.multiline", part)) {
- no_of_dev = _get_list_clients_count(ad);
- snprintf(buf, MH_LABEL_LENGTH_MAX, "<font_size=30>%s<br>%d</font_size>", STR_CONNECTED_DEV, no_of_dev);
- return strdup(buf);
- }
-
- return NULL;
-}
-
-static char *__get_connected_device_label(void *data, Evas_Object *obj,
+static char *__get_device_label(void *data, Evas_Object *obj,
const char *part)
{
- mh_appdata_t *ad = (mh_appdata_t*)data;
char buf[MH_LABEL_LENGTH_MAX] = {0, };
- int no_of_dev;
if (data == NULL) {
ERR("The param is NULL\n");
return NULL;
}
- if (!strcmp("elm.text.sub", part)) {
- g_strlcpy(buf, STR_CONNECTED_DEV, sizeof(buf));
- return strdup(buf);
- } else if (!strcmp("elm.text", part)) {
- no_of_dev = _get_list_clients_count(ad);
- snprintf(buf, MH_LABEL_LENGTH_MAX, "%d", no_of_dev);
+ if (!strcmp("elm.text", part)) {
+ snprintf(buf, MH_LABEL_LENGTH_MAX, "<font_size=30>%s</font_size>", STR_CONNECTED_DEV);
return strdup(buf);
}
/* End of Off view's item class for genlist */
- /* On view's item class for genlist */
- ad->main.device0_itc = elm_genlist_item_class_new();
- if (ad->main.device0_itc == NULL) {
- ERR("elm_genlist_item_class_new failed\n");
- return;
- }
-
- ad->main.device0_itc->item_style = MH_GENLIST_MULTILINE_TEXT_STYLE;
- ad->main.device0_itc->func.text_get = __get_no_connected_device_label;
- ad->main.device0_itc->func.content_get = NULL;
- ad->main.device0_itc->func.state_get = NULL;
- ad->main.device0_itc->func.del = NULL;
ad->main.device_itc = elm_genlist_item_class_new();
if (ad->main.device_itc == NULL) {
return;
}
- ad->main.device_itc->item_style = MH_GENLIST_2LINE_BOTTOM_TEXT_STYLE;
- ad->main.device_itc->func.text_get = __get_connected_device_label;
+ ad->main.device_itc->item_style = MH_GENLIST_GROUP_INDEX_STYLE;
+ ad->main.device_itc->func.text_get = __get_device_label;
ad->main.device_itc->func.content_get = NULL;
ad->main.device_itc->func.state_get = NULL;
ad->main.device_itc->func.del = NULL;
_connected_clients_cb, (void *)ad);
no_of_dev = _get_list_clients_count(ad);
- if (no_of_dev == 0) {
+ if (no_of_dev != 0) {
item = elm_genlist_item_append(ad->main.genlist,
- ad->main.device0_itc, ad, NULL,
+ ad->main.device_itc, ad, NULL,
ELM_GENLIST_ITEM_NONE, NULL, NULL);
elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
- } else {
- item = elm_genlist_item_append(ad->main.genlist,
- ad->main.device_itc, ad, NULL,
- ELM_GENLIST_ITEM_NONE, _select_connected_dev, (void *)ad);
- elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ _list_connected_dev(ad);
+ _update_conn_clients(ad);
}
ad->main.device_item = item;
}