Change remaining g_error calls to g_warning
[platform/core/uifw/at-spi2-atk.git] / cspi / spi-listener.h
index 364d4e3..19846c4 100644 (file)
 #define _SPI_LISTENER_H_
 
 #include <cspi/spi-impl.h>
+#include <glib-object.h>
+#include "common/spi-types.h"
 
 #ifdef  __cplusplus
 extern "C" {
 #endif
 
+typedef enum
+{
+  EVENT_DATA_STRING,
+  EVENT_DATA_OBJECT,
+  EVENT_DATA_RECT
+} EVENT_DATA_TYPE;
+
 /**
  * AccessibleEvent:
  * @type: a string representing the type of the event, with increasing specificity
@@ -47,8 +56,15 @@ typedef struct {
   Accessible  *source;
   long         detail1;
   long         detail2;
+  EVENT_DATA_TYPE v_type;
+  union
+  {
+    char *text;
+    Accessible *accessible;
+    SPIRect rect;
+  } v;
 } AccessibleEvent;
-  
+
 /**
  *AccessibleDeviceEventType:
  *@SPI_KEY_PRESSED: A device key has been pressed.
@@ -149,6 +165,54 @@ typedef SPIBoolean (*AccessibleKeystrokeListenerCB) (const AccessibleKeystroke *
 typedef SPIBoolean (*AccessibleDeviceListenerCB)    (const AccessibleDeviceEvent *stroke,
                                                     void                      *user_data);
 
+#define CSPI_EVENT_LISTENER_TYPE        (cspi_event_listener_get_type ())
+#define CSPI_EVENT_LISTENER(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), CSPI_EVENT_LISTENER_TYPE, CSpiEventListener))
+#define CSPI_EVENT_LISTENER_CLASS(k)    (G_TYPE_CHECK_CLASS_CAST((k), CSPI_EVENT_LISTENER_TYPE, CSpiEventListenerClass))
+#define CSPI_IS_EVENT_LISTENER(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), CSPI_EVENT_LISTENER_TYPE))
+#define CSPI_IS_EVENT_LISTENER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), CSPI_EVENT_LISTENER_TYPE))
+#define CSPI_EVENT_LISTENER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CSPI_EVENT_LISTENER_TYPE, CSpiEventListenerClass))
+
+typedef struct {
+       GObject parent;
+       GList           *callbacks;
+} CSpiEventListener;
+
+typedef struct {
+  GObjectClass parent_class;
+
+  /* signals */
+  void (*event) (CSpiEventListener    *listener,
+                AccessibleEvent *e);
+} CSpiEventListenerClass;
+
+GType cspi_event_listener_get_type (void);
+
+#define CSPI_DEVICE_LISTENER_TYPE        (cspi_device_listener_get_type ())
+#define CSPI_DEVICE_LISTENER(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), CSPI_DEVICE_LISTENER_TYPE, CSpiDeviceListener))
+#define CSPI_DEVICE_LISTENER_CLASS(k)    (G_TYPE_CHECK_CLASS_CAST((k), CSPI_DEVICE_LISTENER_TYPE, CSpiDeviceListenerClass))
+#define CSPI_IS_DEVICE_LISTENER(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), CSPI_DEVICE_LISTENER_TYPE))
+#define CSPI_IS_DEVICE_LISTENER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), CSPI_DEVICE_LISTENER_TYPE))
+#define CSPI_DEVICE_LISTENER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CSPI_DEVICE_LISTENER_TYPE, CSpiDeviceListenerClass))
+
+typedef struct {
+       GObject parent;
+       guint id;
+       GList            *callbacks;
+} CSpiDeviceListener;
+
+typedef struct {
+       GObjectClass parent_class;
+       gboolean (*device_event) (CSpiDeviceListener *listener, const Accessibility_DeviceEvent *key);
+} CSpiDeviceListenerClass;
+
+GType cspi_device_listener_get_type (void);
+gpointer cspi_device_listener_new (void);
+void cspi_device_listener_add_cb (AccessibleDeviceListener  *al,
+                                  AccessibleDeviceListenerCB callback,
+                                  void                      *user_data);
+void cspi_device_listener_remove_cb (AccessibleDeviceListener  *al,
+                                     AccessibleDeviceListenerCB callback);
+void cspi_device_listener_unref (AccessibleDeviceListener *listener);
 #ifdef  __cplusplus
 }
 #endif