X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=libspi%2Faccessible.c;h=fec72e74909298f643a67772655fecc7b28ff83f;hb=7f36a8614747ac4bdcd66a507fe28839e5533615;hp=276c2c3280638ed832c2d46bec73ca1bc62db36d;hpb=f762b0286cab88a3895df9c84a6e6990ffdbcbd0;p=platform%2Fcore%2Fuifw%2Fat-spi2-atk.git diff --git a/libspi/accessible.c b/libspi/accessible.c index 276c2c3..fec72e7 100644 --- a/libspi/accessible.c +++ b/libspi/accessible.c @@ -74,7 +74,11 @@ impl_accessibility_accessible_get_name (PortableServer_Servant servant, { CORBA_char * retval; Accessible *accessible = ACCESSIBLE (bonobo_object_from_servant (servant)); - retval = CORBA_string_dup (atk_object_get_name (accessible->atko)); + retval = atk_object_get_name (accessible->atko); + if (retval ) + retval = CORBA_string_dup (retval); + else + retval = CORBA_string_dup (""); fprintf (stderr, "Accessible get_name called: %s\n", retval); return retval; } @@ -119,6 +123,52 @@ impl_accessibility_accessible_set_description (PortableServer_Servant servant, printf ("Accessible set_description called: %s\n", name); } +/* + * CORBA Accessibility::Accessible::get_parent method implementation + */ +static Accessibility_Accessible +impl_accessibility_accessible_get_parent (PortableServer_Servant servant, + CORBA_Environment *ev) +{ + Accessibility_Accessible retval; + Accessible *accessible = ACCESSIBLE (bonobo_object_from_servant (servant)); + AtkObject *parent; + parent = atk_object_get_parent (accessible->atko); + retval = bonobo_object_corba_objref (bonobo_object (accessible_new (parent))); + printf ("Accessible get_parent called\n"); + return retval; +} + +/* + * CORBA Accessibility::Accessible::get_childCount method implementation + */ +static CORBA_long +impl_accessibility_accessible_get_child_count (PortableServer_Servant servant, + CORBA_Environment *ev) +{ + CORBA_long retval; + Accessible *accessible = ACCESSIBLE (bonobo_object_from_servant (servant)); + retval = (CORBA_long) atk_object_get_n_accessible_children (accessible->atko); + printf ("Accessible get_childCount called: %d\n", (int) retval); + return retval; +} + +/* + * CORBA Accessibility::Accessible::getChildAtIndex method implementation + */ +static Accessibility_Accessible +impl_accessibility_accessible_get_child_at_index (PortableServer_Servant servant, + const CORBA_long index, + CORBA_Environment *ev) +{ + Accessibility_Accessible retval; + Accessible *accessible = ACCESSIBLE (bonobo_object_from_servant (servant)); + AtkObject *child = atk_object_ref_accessible_child (accessible->atko, (gint) index); + retval = bonobo_object_corba_objref ( bonobo_object (accessible_new (child))); + printf ("Accessible get_child_at_index called.\n"); + return retval; +} + static void accessible_class_init (AccessibleClass *klass) { @@ -133,9 +183,10 @@ accessible_class_init (AccessibleClass *klass) epv->_get_description = impl_accessibility_accessible_get_description; epv->_set_description = impl_accessibility_accessible_set_description; - /* epv->_get_parent = impl_accessibility_accessible_get_parent; */ - /* epv->_get_childCount = impl_accessibility_accessible_get_child_count; */ - /* epv->getChildAtIndex = impl_accessibility_accessible_get_child_at_index; */ + epv->_get_parent = impl_accessibility_accessible_get_parent; + epv->_get_childCount = impl_accessibility_accessible_get_child_count; + epv->getChildAtIndex = impl_accessibility_accessible_get_child_at_index; + /* epv->getIndexInParent = impl_accessibility_accessible_get_index_in_parent; */ /* epv->getRelationSet = impl_accessibility_accessible_get_relation_set; */ /* epv->getState = impl_accessibility_accessible_get_state; */ @@ -187,6 +238,68 @@ accessible_new (AtkObject *o) { Accessible *retval = ACCESSIBLE (g_object_new (accessible_get_type (), NULL)); + g_object_ref (o); retval->atko = ATK_OBJECT (o); + + /* + * TODO: add interface containers/constructors for ACTION, EDITABLE_TEXT, HYPERTEXT, + * IMAGE, SELECTION, TABLE, TEXT, VALUE. + */ + + /* add appropriate ATK interfaces */ + + /* Action: not yet implemented + if (ATK_IS_ACTION (o)) + { + bonobo_object_add_interface (bonobo_object (retval), + bonobo_object (action_interface_new (o))); + } + */ + + if (ATK_IS_COMPONENT (o)) + { + bonobo_object_add_interface (bonobo_object (retval), + bonobo_object (component_interface_new (o))); + } + + /* Others: not yet implemented + if (ATK_IS_EDITABLE_TEXT (o)) + { + bonobo_object_add_interface (bonobo_object (retval), + bonobo_object (editable_text_interface_new (o))); + } + else if (ATK_IS_HYPERTEXT (o)) + { + bonobo_object_add_interface (bonobo_object (retval), + bonobo_object (hypertext_interface_new (o))); + } + else if (ATK_IS_TEXT (o)) + { + bonobo_object_add_interface (bonobo_object (retval), + bonobo_object (text_interface_new (o))); + } + if (ATK_IS_IMAGE (o)) + { + bonobo_object_add_interface (bonobo_object (retval), + bonobo_object (image_interface_new (o))); + } + if (ATK_IS_SELECTION (o)) + { + bonobo_object_add_interface (bonobo_object (retval), + bonobo_object (selection_interface_new (o))); + } + if (ATK_IS_TABLE (o)) + { + bonobo_object_add_interface (bonobo_object (retval), + bonobo_object (table_interface_new (o))); + } + if (ATK_IS_VALUE (o)) + { + bonobo_object_add_interface (bonobo_object (retval), + bonobo_object (value_interface_new (o))); + } + + */ + return retval; }