raster pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=3cb7d8868f80bf805d21ac375c8a2f885a6c70bc

commit 3cb7d8868f80bf805d21ac375c8a2f885a6c70bc
Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com>
Date:   Mon Jul 16 20:14:17 2018 +0900

    bluez5 - finally add signals to show global adapter state
    
    this adds signals that go to the bz5 gadget object so you know if you
    have a bt adatper on at all, if any are powered on, scanning, visible
    etc.
---
 src/modules/bluez5/e_mod_main.c  | 31 +++++++++++++++++++++++++++++++
 src/modules/bluez5/e_mod_main.h  |  2 ++
 src/modules/bluez5/e_mod_popup.c |  9 +++++++++
 3 files changed, 42 insertions(+)

diff --git a/src/modules/bluez5/e_mod_main.c b/src/modules/bluez5/e_mod_main.c
index 20674d497..c86ace144 100644
--- a/src/modules/bluez5/e_mod_main.c
+++ b/src/modules/bluez5/e_mod_main.c
@@ -301,6 +301,37 @@ ebluez5_rfkill_unblock(const char *name)
      }
 }
 
+void
+ebluez5_instances_update(void)
+{
+   const Eina_List *l;
+   Obj *o;
+   Instance *inst;
+   Eina_Bool exist = EINA_FALSE;
+   Eina_Bool on = EINA_FALSE;
+   Eina_Bool visible = EINA_FALSE;
+   Eina_Bool scanning = EINA_FALSE;
+
+   EINA_LIST_FOREACH(ebluez5_popup_adapters_get(), l, o)
+     {
+        exist = EINA_TRUE;
+        if (o->powered) on = EINA_TRUE;
+        if (o->discoverable) visible = EINA_TRUE;
+        if (o->discovering) scanning = EINA_TRUE;
+     }
+   EINA_LIST_FOREACH(instances, l, inst)
+     {
+        if (exist)    edje_object_signal_emit(inst->o_bluez5, "e,state,exist", 
"e");
+        else          edje_object_signal_emit(inst->o_bluez5, 
"e,state,noexist", "e");
+        if (on)       edje_object_signal_emit(inst->o_bluez5, "e,state,on", 
"e");
+        else          edje_object_signal_emit(inst->o_bluez5, "e,state,off", 
"e");
+        if (visible)  edje_object_signal_emit(inst->o_bluez5, 
"e,state,visible", "e");
+        else          edje_object_signal_emit(inst->o_bluez5, 
"e,state,invisible", "e");
+        if (scanning) edje_object_signal_emit(inst->o_bluez5, 
"e,state,scanning", "e");
+        else          edje_object_signal_emit(inst->o_bluez5, 
"e,state,unscanning", "e");
+     }
+}
+
 /////////////////////////////////////////////////////////////////////////////
 
 /* Module Functions */
diff --git a/src/modules/bluez5/e_mod_main.h b/src/modules/bluez5/e_mod_main.h
index a5a1a5dfe..788db7a34 100644
--- a/src/modules/bluez5/e_mod_main.h
+++ b/src/modules/bluez5/e_mod_main.h
@@ -43,6 +43,7 @@ E_API int e_modapi_save(E_Module *m);
 void ebluez5_conf_adapter_add(const char *addr, Eina_Bool powered, Eina_Bool 
pairable);
 void ebluez5_popups_show(void);
 void ebluez5_rfkill_unblock(const char *name);
+void ebluez5_instances_update(void);
 
 void ebluez5_popup_hide(Instance *inst);
 
@@ -56,6 +57,7 @@ void ebluez5_popup_adapter_change(Obj *o);
 void ebluez5_popup_device_add(Obj *o);
 void ebluez5_popup_device_del(Obj *o);
 void ebluez5_popup_device_change(Obj *o);
+const Eina_List *ebluez5_popup_adapters_get(void);
 
 void ebluez5_agent_agent_release(void);
 void ebluez5_agent_agent_cancel(void);
diff --git a/src/modules/bluez5/e_mod_popup.c b/src/modules/bluez5/e_mod_popup.c
index 48b4555be..899b4979d 100644
--- a/src/modules/bluez5/e_mod_popup.c
+++ b/src/modules/bluez5/e_mod_popup.c
@@ -631,6 +631,7 @@ ebluez5_popup_adapter_add(Obj *o)
      {
         _adapter_add(gl, o);
      }
+   ebluez5_instances_update();
 }
 
 void
@@ -653,6 +654,7 @@ ebluez5_popup_adapter_del(Obj *o)
           }
      }
    adapters = eina_list_remove(adapters, o);
+   ebluez5_instances_update();
 }
 
 void
@@ -677,6 +679,7 @@ ebluez5_popup_adapter_change(Obj *o)
                }
           }
      }
+   ebluez5_instances_update();
 }
 
 void
@@ -753,3 +756,9 @@ ebluez5_popup_device_change(Obj *o)
           }
      }
 }
+
+const Eina_List *
+ebluez5_popup_adapters_get(void)
+{
+   return (const Eina_List *)adapters;
+}

-- 


Reply via email to