e/bluez4: Add type to end of found device item

Patch by: Lucas Joia <lucasjoia@profusion.mobi>



SVN revision: 82205
This commit is contained in:
Lucas Joia 2013-01-04 16:13:30 +00:00 committed by Lucas De Marchi
parent b91eefb2b8
commit 4061ca75e1
3 changed files with 70 additions and 12 deletions

View File

@ -74,9 +74,9 @@ _ebluez4_cb_search(void *data, E_Menu *m, E_Menu_Item *mi)
evas = e_win_evas_get(dialog->win);
inst->found_list = e_widget_ilist_add(evas, 0, 0, NULL);
inst->found_list = e_widget_ilist_add(evas, 100, 0, NULL);
e_dialog_content_set(dialog, inst->found_list, 250, 220);
e_dialog_content_set(dialog, inst->found_list, 300, 200);
e_dialog_show(dialog);
@ -496,6 +496,7 @@ void
ebluez4_update_inst(Evas_Object *dest, Eina_List *src, Instance *inst)
{
Device *dev;
Evas_Object *o_type;
Adapter *adap;
Eina_List *iter;
@ -506,8 +507,13 @@ ebluez4_update_inst(Evas_Object *dest, Eina_List *src, Instance *inst)
{
EINA_LIST_FOREACH(src, iter, dev)
if (!dev->paired)
e_widget_ilist_append(dest, NULL, dev->name, _ebluez4_cb_pair, inst,
dev->addr);
{
o_type = e_widget_label_add(evas_object_evas_get(dest),
dev->type);
e_widget_ilist_append_full(dest, NULL, o_type, dev->name,
_ebluez4_cb_pair, inst, dev->addr);
}
}
else if (src == ctxt->adapters)
{
@ -516,8 +522,8 @@ ebluez4_update_inst(Evas_Object *dest, Eina_List *src, Instance *inst)
_ebluez4_cb_adap_settings, adap, NULL);
}
e_widget_ilist_thaw(dest);
e_widget_ilist_go(dest);
e_widget_ilist_thaw(dest);
}
void

View File

@ -35,6 +35,36 @@ _adap_path_cmp(const void *d1, const void *d2)
return strcmp(edbus_object_path_get(adap->obj), path);
}
static const char *
_parse_icon_to_type(const char *icon)
{
if (!strcmp(icon, "audio-card"))
return eina_stringshare_add("Audio");
else if (!strcmp(icon, "camera-photo"))
return eina_stringshare_add("Photo Camera");
else if (!strcmp(icon, "camera-video"))
return eina_stringshare_add("Video Camera");
else if (!strcmp(icon, "computer"))
return eina_stringshare_add("Computer");
else if (!strcmp(icon, "input-gaming"))
return eina_stringshare_add("Game Controller");
else if (!strcmp(icon, "input-keyboard"))
return eina_stringshare_add("Keyboard");
else if (!strcmp(icon, "input-mouse"))
return eina_stringshare_add("Mouse");
else if (!strcmp(icon, "input-tablet"))
return eina_stringshare_add("Tablet");
else if (!strcmp(icon, "modem"))
return eina_stringshare_add("Modem");
else if (!strcmp(icon, "network-wireless"))
return eina_stringshare_add("Wireless");
else if (!strcmp(icon, "phone"))
return eina_stringshare_add("Phone");
else if (!strcmp(icon, "printer"))
return eina_stringshare_add("Printer");
return NULL;
}
static void
_free_dev(Device *dev)
{
@ -44,6 +74,8 @@ _free_dev(Device *dev)
dev->addr = NULL;
eina_stringshare_del(dev->name);
dev->name = NULL;
if (dev->type) eina_stringshare_del(dev->type);
dev->type = NULL;
free(dev);
}
@ -117,12 +149,14 @@ _set_dev_services(Device *dev, EDBus_Message_Iter *uuids)
static void
_retrieve_properties(EDBus_Message_Iter *dict, const char **addr,
const char **name, Eina_Bool *paired, Eina_Bool *connected,
EDBus_Message_Iter **uuids)
const char **name, const char **icon, Eina_Bool *paired,
Eina_Bool *connected, EDBus_Message_Iter **uuids)
{
EDBus_Message_Iter *entry, *variant;
const char *key;
*icon = NULL;
while (edbus_message_iter_get_and_next(dict, 'e', &entry))
{
if(!edbus_message_iter_arguments_get(entry, "sv", &key, &variant))
@ -138,6 +172,11 @@ _retrieve_properties(EDBus_Message_Iter *dict, const char **addr,
if(!edbus_message_iter_arguments_get(variant, "s", name))
return;
}
else if (!strcmp(key, "Icon"))
{
if(!edbus_message_iter_arguments_get(variant, "s", icon))
return;
}
else if (!strcmp(key, "Paired"))
{
if(!edbus_message_iter_arguments_get(variant, "b", paired))
@ -159,7 +198,7 @@ _retrieve_properties(EDBus_Message_Iter *dict, const char **addr,
static void
_on_dev_property_changed(void *context, const EDBus_Message *msg)
{
const char *key, *name;
const char *key, *name, *icon;
char err_msg[4096];
Eina_Bool paired, connected;
EDBus_Message_Iter *variant, *uuids;
@ -191,6 +230,17 @@ _on_dev_property_changed(void *context, const EDBus_Message *msg)
ebluez4_update_instances(ctxt->found_devices);
}
}
else if (!strcmp(key, "Icon"))
{
if(!edbus_message_iter_arguments_get(variant, "s", &icon))
return;
if (!found_dev) return;
DBG("'%s' property of %s changed to %s", key, found_dev->name, icon);
if (found_dev->type)
eina_stringshare_del(found_dev->type);
found_dev->type = _parse_icon_to_type(icon);
ebluez4_update_instances(ctxt->found_devices);
}
else if (!strcmp(key, "Paired"))
{
if(!edbus_message_iter_arguments_get(variant, "b", &paired))
@ -279,7 +329,7 @@ static void
_on_dev_properties(void *data, const EDBus_Message *msg, EDBus_Pending *pending)
{
EDBus_Message_Iter *dict, *uuids;
const char *addr, *name;
const char *addr, *name, *icon;
Eina_Bool paired;
Eina_Bool connected;
Device *dev = data;
@ -287,7 +337,7 @@ _on_dev_properties(void *data, const EDBus_Message *msg, EDBus_Pending *pending)
if (!edbus_message_arguments_get(msg, "a{sv}", &dict))
return;
_retrieve_properties(dict, &addr, &name, &paired, &connected, &uuids);
_retrieve_properties(dict, &addr, &name, &icon, &paired, &connected, &uuids);
dev->addr = eina_stringshare_add(addr);
dev->name = eina_stringshare_add(name);
@ -353,7 +403,7 @@ static void
_on_device_found(void *context, const EDBus_Message *msg)
{
EDBus_Message_Iter *dict, *uuids;
const char *addr, *name;
const char *addr, *name, *icon;
Eina_Bool paired, connected;
Device *dev;
@ -366,11 +416,12 @@ _on_device_found(void *context, const EDBus_Message *msg)
if (!edbus_message_arguments_get(msg, "a{sv}", &dict))
return;
_retrieve_properties(dict, &addr, &name, &paired, &connected, &uuids);
_retrieve_properties(dict, &addr, &name, &icon, &paired, &connected, &uuids);
dev = calloc(1, sizeof(Device));
dev->addr = eina_stringshare_add(addr);
dev->name = eina_stringshare_add(name);
if (icon) dev->type = _parse_icon_to_type(icon);
dev->paired = paired;
ctxt->found_devices = eina_list_append(ctxt->found_devices, dev);

View File

@ -31,6 +31,7 @@ typedef struct _Device
{
const char *addr;
const char *name;
const char *type;
Eina_Bool paired;
Eina_Bool connected;
EDBus_Object *obj;