e/connman: update manager information on UI

SVN revision: 76032
This commit is contained in:
Lucas De Marchi 2012-09-03 21:58:20 +00:00
parent 15dd8a74eb
commit 90d02d48da
3 changed files with 83 additions and 2 deletions

View File

@ -71,4 +71,8 @@ extern int E_CONNMAN_EVENT_MANAGER_OUT;
unsigned int e_connman_system_init(E_DBus_Connection *edbus_conn) EINA_ARG_NONNULL(1);
unsigned int e_connman_system_shutdown(void);
/* UI calls from econnman */
void econnman_mod_manager_update(struct Connman_Manager *cm);
#endif /* E_CONNMAN_H */

View File

@ -239,7 +239,7 @@ static void _manager_get_services_cb(void *data, DBusMessage *reply,
}
}
static void _manager_parse_prop_changed(struct Connman_Manager *cm,
static bool _manager_parse_prop_changed(struct Connman_Manager *cm,
const char *name,
DBusMessageIter *value)
{
@ -253,7 +253,13 @@ static void _manager_parse_prop_changed(struct Connman_Manager *cm,
else if (strcmp(name, "OfflineMode") == 0)
cm->offline_mode = _dbus_bool_get(value);
else
DBG("Unhandled property '%s'", name);
{
DBG("Unhandled property '%s'", name);
return false;
}
econnman_mod_manager_update(cm);
return true;
}
static void _manager_prop_changed(void *data, DBusMessage *msg)

View File

@ -1,6 +1,8 @@
#include "e.h"
#include "e_mod_main.h"
#include "E_Connman.h"
static E_Module *connman_mod;
static char tmpbuf[4096]; /* general purpose buffer, just use immediately */
@ -25,6 +27,75 @@ e_connman_theme_path(void)
#undef TF
}
static void _econnman_mod_manager_update_inst(E_Connman_Module_Context *ctxt,
E_Connman_Instance *inst,
enum Connman_State state,
enum Connman_Service_Type type)
{
Evas_Object *o = inst->ui.gadget;
switch (state)
{
case CONNMAN_STATE_ONLINE:
edje_object_signal_emit(o, "e,changed,connected,yes", "e");
edje_object_signal_emit(o, "e,changed,state,online", "e");
break;
case CONNMAN_STATE_READY:
edje_object_signal_emit(o, "e,changed,connected,yes", "e");
edje_object_signal_emit(o, "e,changed,state,ready", "e");
break;
case CONNMAN_STATE_IDLE:
edje_object_signal_emit(o, "e,changed,connected,no", "e");
edje_object_signal_emit(o, "e,changed,state,idle", "e");
break;
case CONNMAN_STATE_OFFLINE:
edje_object_signal_emit(o, "e,changed,connected,no", "e");
edje_object_signal_emit(o, "e,changed,state,disconnect", "e");
break;
case CONNMAN_STATE_NONE:
edje_object_signal_emit(o, "e,changed,connected,no", "e");
edje_object_signal_emit(o, "e,changed,state,failure", "e");
break;
}
switch (type)
{
case CONNMAN_SERVICE_TYPE_ETHERNET:
edje_object_signal_emit(o, "e,changed,technology,ethernet", "e");
break;
case CONNMAN_SERVICE_TYPE_WIFI:
edje_object_signal_emit(o, "e,changed,technology,wifi", "e");
break;
case CONNMAN_SERVICE_TYPE_NONE:
edje_object_signal_emit(o, "e,changed,technology,none", "e");
break;
}
DBG("state=%d type=%d", state, type);
}
void econnman_mod_manager_update(struct Connman_Manager *cm)
{
enum Connman_Service_Type type;
E_Connman_Module_Context *ctxt = connman_mod->data;
E_Connman_Instance *inst;
Eina_List *l;
DBG("cm->services=%p", cm->services);
if (cm->services)
{
struct Connman_Service *cs = EINA_INLIST_CONTAINER_GET(cm->services,
struct Connman_Service);
type = cs->type;
}
else
type = CONNMAN_SERVICE_TYPE_NONE;
EINA_LIST_FOREACH(ctxt->instances, l, inst)
_econnman_mod_manager_update_inst(ctxt, inst, cm->state, type);
}
static void _econnman_gadget_setup(E_Connman_Instance *inst)
{
E_Connman_Module_Context *ctxt = inst->ctxt;