e/bluez4: Add type to end of found device item
authorLucas Joia <lucasjoia@profusion.mobi>
Fri, 4 Jan 2013 16:13:30 +0000 (16:13 +0000)
committerLucas De Marchi <lucas.demarchi@profusion.mobi>
Fri, 4 Jan 2013 16:13:30 +0000 (16:13 +0000)
Patch by: Lucas Joia <lucasjoia@profusion.mobi>

SVN revision: 82205

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

index 6ed10b5..39a7a41 100644 (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
index 62eb17f..71924f8 100644 (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);
 
index a22bec1..cf29eed 100644 (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;