e/connman: Add icon to list of services

SVN revision: 76043
This commit is contained in:
Lucas De Marchi 2012-09-03 21:59:16 +00:00
parent 20c53c31ed
commit 6237df554b
3 changed files with 66 additions and 1 deletions

View File

@ -82,4 +82,9 @@ void econnman_mod_manager_update(struct Connman_Manager *cm);
void econnman_mod_manager_inout(struct Connman_Manager *cm);
void econnman_mod_services_changed(struct Connman_Manager *cm);
/* Util */
const char *econnman_state_to_str(enum Connman_State state);
const char *econnman_service_type_to_str(enum Connman_Service_Type type);
#endif /* E_CONNMAN_H */

View File

@ -47,6 +47,25 @@ static enum Connman_State str_to_state(const char *s)
return CONNMAN_STATE_NONE;
}
const char *econnman_state_to_str(enum Connman_State state)
{
switch (state)
{
case CONNMAN_STATE_OFFLINE:
return "offline";
case CONNMAN_STATE_IDLE:
return "idle";
case CONNMAN_STATE_READY:
return "ready";
case CONNMAN_STATE_ONLINE:
return "online";
case CONNMAN_STATE_NONE:
break;
}
return NULL;
}
static enum Connman_Service_Type str_to_type(const char *s)
{
if (strcmp(s, "ethernet") == 0)
@ -58,6 +77,21 @@ static enum Connman_Service_Type str_to_type(const char *s)
return CONNMAN_SERVICE_TYPE_NONE;
}
const char *econnman_service_type_to_str(enum Connman_Service_Type type)
{
switch (type)
{
case CONNMAN_SERVICE_TYPE_ETHERNET:
return "ethernet";
case CONNMAN_SERVICE_TYPE_WIFI:
return "wifi";
case CONNMAN_SERVICE_TYPE_NONE:
break;
}
return "other";
}
/* ---- */
static void _connman_object_init(struct Connman_Object *obj, const char *path)

View File

@ -27,10 +27,33 @@ e_connman_theme_path(void)
#undef TF
}
static Evas_Object * _econnman_service_new_icon(struct Connman_Service *cs,
Evas *evas)
{
const char *type = econnman_service_type_to_str(cs->type);
const char *state = econnman_state_to_str(cs->state);
Evas_Object *icon;
Edje_Message_Int msg;
char buf[128];
snprintf(buf, sizeof(buf), "e/modules/connman/icon/%s", type);
icon = edje_object_add(evas);
e_theme_edje_object_set(icon, "base/theme/modules/connman", buf);
if (state)
{
snprintf(buf, sizeof(buf), "e,state,%s", state);
edje_object_signal_emit(icon, buf, "e");
}
return icon;
}
static void _econnman_popup_update(struct Connman_Manager *cm,
E_Connman_Instance *inst)
{
Evas_Object *list = inst->ui.popup.list;
Evas *evas = evas_object_evas_get(list);
struct Connman_Service *cs;
EINA_SAFETY_ON_NULL_RETURN(cm);
@ -39,7 +62,10 @@ static void _econnman_popup_update(struct Connman_Manager *cm,
e_widget_ilist_clear(list);
EINA_INLIST_FOREACH(cm->services, cs)
e_widget_ilist_append(list, NULL, cs->name, NULL, NULL, cs->obj.path);
{
Evas_Object *icon = _econnman_service_new_icon(cs, evas);
e_widget_ilist_append(list, icon, cs->name, NULL, NULL, cs->obj.path);
}
e_widget_ilist_thaw(list);
e_widget_ilist_go(list);