e/bluez4: Update ilist using the eina list of devices

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



SVN revision: 82187
This commit is contained in:
Lucas Joia 2013-01-04 16:12:11 +00:00 committed by Lucas De Marchi
parent 20be2ab9ce
commit edb3fba955
3 changed files with 36 additions and 1 deletions

View File

@ -3,6 +3,8 @@
#include "e_mod_main.h"
#include "ebluez4.h"
#define ILIST_HEADER "Devices Found"
/* Local Variables */
static Eina_List *instances = NULL;
static E_Module *mod = NULL;
@ -61,7 +63,7 @@ _ebluez4_popup_new(Instance *inst)
inst->found_list = e_widget_ilist_add(evas, 0, 0, NULL);
e_widget_list_object_append(list, inst->found_list, 1, 1, 0.5);
e_widget_ilist_header_append(inst->found_list, NULL, "Devices Found");
e_widget_ilist_header_append(inst->found_list, NULL, ILIST_HEADER);
inst->bt = e_widget_button_add(evas, "Search Devices", NULL,
_ebluez4_cb_search, inst, NULL);
@ -245,3 +247,32 @@ ebluez4_append_to_instances(const char *addr, const char *name)
EINA_LIST_FOREACH(instances, iter, inst)
e_widget_ilist_append(inst->found_list, NULL, name, NULL, NULL, addr);
}
void
ebluez4_update_inst(Evas_Object *dest, Eina_List *src)
{
Device *dev;
Eina_List *iter;
e_widget_ilist_freeze(dest);
e_widget_ilist_clear(dest);
e_widget_ilist_header_append(dest, NULL, ILIST_HEADER);
EINA_LIST_FOREACH(src, iter, dev)
e_widget_ilist_append(dest, NULL, dev->name, NULL, NULL,
dev->addr);
e_widget_ilist_thaw(dest);
e_widget_ilist_go(dest);
}
void
ebluez4_update_instances(Eina_List *src)
{
Eina_List *iter;
Instance *inst;
EINA_LIST_FOREACH(instances, iter, inst)
if (inst->found_list)
ebluez4_update_inst(inst->found_list, src);
}

View File

@ -18,5 +18,7 @@ EAPI int e_modapi_save(E_Module *m);
void ebluez4_disabled_set_all_search_buttons(Eina_Bool disabled);
void ebluez4_append_to_instances(const char *addr, const char *name);
void ebluez4_update_inst(Evas_Object *dest, Eina_List *src);
void ebluez4_update_instances(Eina_List *src);
#endif

View File

@ -49,6 +49,7 @@ _unset_adapter()
edbus_object_unref(ctxt->adap_obj);
ctxt->adap_obj = NULL;
ebluez4_disabled_set_all_search_buttons(EINA_TRUE);
ebluez4_update_instances(ctxt->devices);
}
static void
@ -207,6 +208,7 @@ void
ebluez4_start_discovery()
{
_free_dev_list(&ctxt->devices);
ebluez4_update_instances(ctxt->devices);
edbus_proxy_call(ctxt->adap_proxy, "StartDiscovery", NULL, NULL, -1, "");
}