Add callbacks
authorenglebass <englebass@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sat, 15 Nov 2008 11:31:01 +0000 (11:31 +0000)
committerenglebass <englebass@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sat, 15 Nov 2008 11:31:01 +0000 (11:31 +0000)
e_nm_device_wireless_callback_access_point_added_set
e_nm_device_wireless_callback_access_point_removed_set

git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/e_dbus@37658 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/nm/E_Nm.h
src/lib/nm/e_nm.c
src/lib/nm/e_nm_device.c
src/lib/nm/e_nm_private.h
src/lib/nm/e_nms.c

index 7079db7..17dad46 100644 (file)
@@ -318,8 +318,8 @@ extern "C" {
    EAPI void *e_nm_device_data_get(E_NM_Device *device);
    EAPI void  e_nm_device_callback_state_changed_set(E_NM_Device *device, int (*cb_func)(E_NM_Device *device, E_NM_State new_state, E_NM_State old_state, E_NM_Device_State_Reason reason));
    EAPI void  e_nm_device_callback_properties_changed_set(E_NM_Device *device, int (*cb_func)(E_NM_Device *device));
-   /* TODO: e_nm_device_wireless_callback_access_point_added_set */
-   /* TODO: e_nm_device_wireless_callback_access_point_removed_set */
+   EAPI void  e_nm_device_wireless_callback_access_point_added_set(E_NM_Device *device, int (*cb_func)(E_NM_Device *device, const char *access_point));
+   EAPI void  e_nm_device_wireless_callback_access_point_removed_set(E_NM_Device *device, int (*cb_func)(E_NM_Device *device, const char *access_point));
 
    /* org.freedesktop.NetworkManager.IP4Config api */
    EAPI int   e_nm_ip4_config_get(E_NM *nm, const char *config,
index 4486606..a61e5bd 100644 (file)
@@ -56,7 +56,7 @@ cb_device_added(void *data, DBusMessage *msg)
 
   nmi = data;
   dbus_error_init(&err);
-  dbus_message_get_args(msg, &err, DBUS_TYPE_STRING, &device, DBUS_TYPE_INVALID);
+  dbus_message_get_args(msg, &err, DBUS_TYPE_OBJECT_PATH, &device, DBUS_TYPE_INVALID);
   if (dbus_error_is_set(&err))
   {
     printf("Error: %s - %s\n", err.name, err.message);
@@ -77,7 +77,7 @@ cb_device_removed(void *data, DBusMessage *msg)
 
   nmi = data;
   dbus_error_init(&err);
-  dbus_message_get_args(msg, &err, DBUS_TYPE_STRING, &device, DBUS_TYPE_INVALID);
+  dbus_message_get_args(msg, &err, DBUS_TYPE_OBJECT_PATH, &device, DBUS_TYPE_INVALID);
   if (dbus_error_is_set(&err))
   {
     printf("Error: %s - %s\n", err.name, err.message);
index e5f5734..7dab416 100644 (file)
@@ -93,6 +93,54 @@ cb_wireless_properties_changed(void *data, DBusMessage *msg)
 }
 
 static void
+cb_wireless_access_point_added(void *data, DBusMessage *msg)
+{
+  E_NM_Device_Internal *dev;
+  DBusError err;
+  const char *path;
+  if (!msg || !data) return;
+
+  dev = data;
+  dbus_error_init(&err);
+  dbus_message_get_args(msg, &err,
+                        DBUS_TYPE_OBJECT_PATH, &path,
+                        DBUS_TYPE_INVALID);
+  if (dbus_error_is_set(&err))
+  {
+    printf("Error: %s - %s\n", err.name, err.message);
+    return;
+  }
+
+
+  if (dev->access_point_added)
+    dev->access_point_added(&(dev->dev), path);
+}
+
+static void
+cb_wireless_access_point_removed(void *data, DBusMessage *msg)
+{
+  E_NM_Device_Internal *dev;
+  DBusError err;
+  const char *path;
+  if (!msg || !data) return;
+
+  dev = data;
+  dbus_error_init(&err);
+  dbus_message_get_args(msg, &err,
+                        DBUS_TYPE_OBJECT_PATH, &path,
+                        DBUS_TYPE_INVALID);
+  if (dbus_error_is_set(&err))
+  {
+    printf("Error: %s - %s\n", err.name, err.message);
+    return;
+  }
+
+
+  if (dev->access_point_removed)
+    dev->access_point_removed(&(dev->dev), path);
+}
+
+static void
 cb_properties_changed(void *data, DBusMessage *msg)
 {
   E_NM_Device_Internal *dev;
@@ -124,6 +172,8 @@ property_device_type(Property_Data *data, DBusMessageIter *iter)
     case E_NM_DEVICE_TYPE_WIRELESS:
       data->property = device_wireless_properties;
       ecore_list_append(dev->handlers, e_nm_device_wireless_signal_handler_add(data->nmi->conn, dev->dev.udi, "PropertiesChanged", cb_wireless_properties_changed, dev));
+      ecore_list_append(dev->handlers, e_nm_device_wireless_signal_handler_add(data->nmi->conn, dev->dev.udi, "AccessPointAdded", cb_wireless_access_point_added, dev));
+      ecore_list_append(dev->handlers, e_nm_device_wireless_signal_handler_add(data->nmi->conn, dev->dev.udi, "AccessPointRemoved", cb_wireless_access_point_removed, dev));
       e_nm_device_wireless_properties_get(data->nmi->conn, data->object, data->property->name, property, data);
       break;
     default:
@@ -334,3 +384,24 @@ e_nm_device_callback_properties_changed_set(E_NM_Device *device, int (*cb_func)(
   dev = (E_NM_Device_Internal *)device;
   dev->properties_changed = cb_func;
 }
+
+EAPI void
+e_nm_device_wireless_callback_access_point_added_set(E_NM_Device *device, int (*cb_func)(E_NM_Device *device, const char *access_point))
+{
+  E_NM_Device_Internal *dev;
+
+  if (device->device_type != E_NM_DEVICE_TYPE_WIRELESS) return;
+  dev = (E_NM_Device_Internal *)device;
+  dev->access_point_added = cb_func;
+}
+
+EAPI void
+e_nm_device_wireless_callback_access_point_removed_set(E_NM_Device *device, int (*cb_func)(E_NM_Device *device, const char *access_point))
+{
+  E_NM_Device_Internal *dev;
+
+  if (device->device_type != E_NM_DEVICE_TYPE_WIRELESS) return;
+  dev = (E_NM_Device_Internal *)device;
+  dev->access_point_removed = cb_func;
+}
+
index f569259..5186d75 100644 (file)
@@ -62,6 +62,9 @@ struct E_NM_Device_Internal
 
   int  (*state_changed)(E_NM_Device *device, E_NM_State new_state, E_NM_State old_state, E_NM_Device_State_Reason reason);
   int  (*properties_changed)(E_NM_Device *device);
+  /* TODO: Save some bytes by having internal wired and wireless object */
+  int  (*access_point_added)(E_NM_Device *device, const char *access_point);
+  int  (*access_point_removed)(E_NM_Device *device, const char *access_point);
   Ecore_List *handlers;
 
   void *data;
index b64475e..abd6604 100644 (file)
@@ -124,7 +124,7 @@ new_connection(E_NMS_Context context, void *data, DBusMessage *msg)
 
   nmsi = data;
   dbus_error_init(&err);
-  dbus_message_get_args(msg, &err, DBUS_TYPE_STRING, &conn, DBUS_TYPE_INVALID);
+  dbus_message_get_args(msg, &err, DBUS_TYPE_OBJECT_PATH, &conn, DBUS_TYPE_INVALID);
   if (dbus_error_is_set(&err))
   {
     printf("Error: %s - %s\n", err.name, err.message);