e/bluez4: Update ilist using the eina list of devices
authorLucas Joia <lucasjoia@profusion.mobi>
Fri, 4 Jan 2013 16:12:11 +0000 (16:12 +0000)
committerLucas De Marchi <lucas.demarchi@profusion.mobi>
Fri, 4 Jan 2013 16:12:11 +0000 (16:12 +0000)
Patch by: Lucas Joia <lucasjoia@profusion.mobi>

SVN revision: 82187

src/modules/bluez4/e_mod_main.c
src/modules/bluez4/e_mod_main.h
src/modules/bluez4/ebluez4.c

index a7bf110..f820e9d 100644 (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);
+}
index 9b00b1f..8936a13 100644 (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
index 2cab054..9e082c1 100644 (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, "");
 }