diff options
Diffstat (limited to 'tests/dummyatk/my-atk-hyperlink.c')
-rw-r--r-- | tests/dummyatk/my-atk-hyperlink.c | 217 |
1 files changed, 217 insertions, 0 deletions
diff --git a/tests/dummyatk/my-atk-hyperlink.c b/tests/dummyatk/my-atk-hyperlink.c new file mode 100644 index 0000000..834369d --- /dev/null +++ b/tests/dummyatk/my-atk-hyperlink.c @@ -0,0 +1,217 @@ +/* + * Copyright 2008 Codethink Ltd. + * Copyright (c) 2015 Samsung Electronics Co., Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include <glib.h> +#include <string.h> +#include <atk/atk.h> +#include <stdio.h> + +#include "my-atk-object.h" +#include "my-atk-hyperlink.h" +#include "my-atk-text.h" + +typedef struct _MyAtkHyperlinkInfo MyAtkHyperlinkInfo; + +G_DEFINE_TYPE (MyAtkHyperlink, my_atk_hyperlink, ATK_TYPE_HYPERLINK) + +gint +my_atk_set_hyperlink (AtkHyperlink *obj, const gchar *uri, gint start, gint end) +{ + MyAtkHyperlink *self = MY_ATK_HYPERLINK (obj); + g_return_val_if_fail (MY_IS_ATK_HYPERLINK (obj), -1); + + self->uri = g_strdup (uri); + self->start = start; + self->end = end; + self->state = FALSE; + self->selected = FALSE; + + return 0; +} + +MyAtkHyperlink * +new_MyAtkHyperlink (void) +{ + return g_object_new (MY_TYPE_ATK_HYPERLINK, NULL); +} + +static gchar* +my_atk_hyperlink_get_uri (AtkHyperlink *obj, gint i) +{ + MyAtkHyperlink *self = MY_ATK_HYPERLINK (obj); + g_return_val_if_fail (MY_IS_ATK_HYPERLINK (obj), NULL); + + return self->uri; +} + +static AtkObject * +my_atk_hyperlink_get_object (AtkHyperlink *obj, gint i) +{ + MyAtkHyperlink *self = MY_ATK_HYPERLINK (obj); + MyAtkText *text; + g_return_val_if_fail (MY_IS_ATK_HYPERLINK (obj), NULL); + + text = my_atk_text_new (); + my_atk_set_text (ATK_TEXT (text), + self->uri, + 10, + 50, + self->end - self->start, + 15, + NULL); + + return ATK_OBJECT (text); +} + +static gint +my_atk_hyperlink_get_end_index (AtkHyperlink *obj) +{ + MyAtkHyperlink *self = MY_ATK_HYPERLINK (obj); + g_return_val_if_fail (MY_IS_ATK_HYPERLINK (obj), -1); + + return self->end; +} + +static gint +my_atk_hyperlink_get_start_index (AtkHyperlink *obj) +{ + MyAtkHyperlink *self = MY_ATK_HYPERLINK (obj); + g_return_val_if_fail (MY_IS_ATK_HYPERLINK (obj), -1); + + return self->start; +} + +static gboolean +my_atk_hyperlink_is_valid (AtkHyperlink *obj) +{ + g_return_val_if_fail (MY_IS_ATK_HYPERLINK (obj), FALSE); + + return TRUE; +} + +static gint +my_atk_hyperlink_get_n_anchors (AtkHyperlink *obj) +{ + g_return_val_if_fail (MY_IS_ATK_HYPERLINK (obj), -1); + + return 1; +} + +static guint +my_atk_hyperlink_link_state (AtkHyperlink *obj) +{ + MyAtkHyperlink *self = MY_ATK_HYPERLINK (obj); + g_return_val_if_fail (MY_IS_ATK_HYPERLINK (obj), -1); + + return self->state; +} + +static gboolean +my_atk_hyperlink_is_selected_link (AtkHyperlink *obj) +{ + MyAtkHyperlink *self = MY_ATK_HYPERLINK (obj); + g_return_val_if_fail (MY_IS_ATK_HYPERLINK (obj), FALSE); + + return self->selected; +} + +static void +my_atk_hyperlink_link_activated (AtkHyperlink *obj) +{ + MyAtkHyperlink *self = MY_ATK_HYPERLINK (obj); + g_return_if_fail (MY_IS_ATK_HYPERLINK (obj)); + + self->selected = !self->selected; +} + +static void +my_atk_hyperlink_init (MyAtkHyperlink *self) +{ + self->uri =NULL; + self->start = -1; + self->end = -1; + self->state = FALSE; + self->selected = FALSE; +} + +static void +my_atk_hyperlink_set_property (GObject *obj, + guint id, + const GValue *value, + GParamSpec *spec) +{ + switch (id) { + case 1: + break; + case 2: + break; + case 3: + break; + default: + //G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, id, pspec); + break; + } +} + +static void +my_atk_hyperlink_get_property (GObject *obj, + guint id, + GValue *value, + GParamSpec *pspec) +{ +} + +static void +my_atk_hyperlink_class_finalize (GObject *obj) +{ +} + +static void +my_atk_hyperlink_class_init (MyAtkHyperlinkClass *my_class) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (my_class); + AtkHyperlinkClass *iface = ATK_HYPERLINK_CLASS (my_class); + const gchar *inst_tab[] = {"accessible-name", "accessible-description", "accessible-role", NULL}; + + gobject_class->finalize = my_atk_hyperlink_class_finalize; + gobject_class->set_property = my_atk_hyperlink_set_property; + gobject_class->get_property = my_atk_hyperlink_get_property; + + gint i; + for (i = 0; inst_tab[i] != NULL ; i++) + g_object_class_install_property (gobject_class, + i+1, + g_param_spec_string (inst_tab[i], + inst_tab[i], + inst_tab[i], + NULL, + G_PARAM_READWRITE) + ); + + iface->get_uri = my_atk_hyperlink_get_uri; + iface->get_object = my_atk_hyperlink_get_object; + iface->get_end_index = my_atk_hyperlink_get_end_index; + iface->get_start_index = my_atk_hyperlink_get_start_index; + iface->is_valid = my_atk_hyperlink_is_valid; + iface->get_n_anchors = my_atk_hyperlink_get_n_anchors; + iface->link_state = my_atk_hyperlink_link_state; + iface->is_selected_link = my_atk_hyperlink_is_selected_link; + iface->link_activated = my_atk_hyperlink_link_activated; +} |