2 * Copyright 2008 Codethink Ltd.
3 * Copyright (c) 2015 Samsung Electronics Co., Ltd.
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the
17 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 * Boston, MA 02110-1301, USA.
26 #include "my-atk-object.h"
27 #include "my-atk-hyperlink.h"
28 #include "my-atk-text.h"
30 typedef struct _MyAtkHyperlinkInfo MyAtkHyperlinkInfo;
32 G_DEFINE_TYPE (MyAtkHyperlink, my_atk_hyperlink, ATK_TYPE_HYPERLINK)
35 my_atk_set_hyperlink (AtkHyperlink *obj, const gchar *uri, gint start, gint end)
37 MyAtkHyperlink *self = MY_ATK_HYPERLINK (obj);
38 g_return_val_if_fail (MY_IS_ATK_HYPERLINK (obj), -1);
40 self->uri = g_strdup (uri);
44 self->selected = FALSE;
50 new_MyAtkHyperlink (void)
52 return g_object_new (MY_TYPE_ATK_HYPERLINK, NULL);
56 my_atk_hyperlink_get_uri (AtkHyperlink *obj, gint i)
58 MyAtkHyperlink *self = MY_ATK_HYPERLINK (obj);
59 g_return_val_if_fail (MY_IS_ATK_HYPERLINK (obj), NULL);
65 my_atk_hyperlink_get_object (AtkHyperlink *obj, gint i)
67 MyAtkHyperlink *self = MY_ATK_HYPERLINK (obj);
69 g_return_val_if_fail (MY_IS_ATK_HYPERLINK (obj), NULL);
71 text = my_atk_text_new ();
72 my_atk_set_text (ATK_TEXT (text),
76 self->end - self->start,
80 return ATK_OBJECT (text);
84 my_atk_hyperlink_get_end_index (AtkHyperlink *obj)
86 MyAtkHyperlink *self = MY_ATK_HYPERLINK (obj);
87 g_return_val_if_fail (MY_IS_ATK_HYPERLINK (obj), -1);
93 my_atk_hyperlink_get_start_index (AtkHyperlink *obj)
95 MyAtkHyperlink *self = MY_ATK_HYPERLINK (obj);
96 g_return_val_if_fail (MY_IS_ATK_HYPERLINK (obj), -1);
102 my_atk_hyperlink_is_valid (AtkHyperlink *obj)
104 g_return_val_if_fail (MY_IS_ATK_HYPERLINK (obj), FALSE);
110 my_atk_hyperlink_get_n_anchors (AtkHyperlink *obj)
112 g_return_val_if_fail (MY_IS_ATK_HYPERLINK (obj), -1);
118 my_atk_hyperlink_link_state (AtkHyperlink *obj)
120 MyAtkHyperlink *self = MY_ATK_HYPERLINK (obj);
121 g_return_val_if_fail (MY_IS_ATK_HYPERLINK (obj), -1);
127 my_atk_hyperlink_is_selected_link (AtkHyperlink *obj)
129 MyAtkHyperlink *self = MY_ATK_HYPERLINK (obj);
130 g_return_val_if_fail (MY_IS_ATK_HYPERLINK (obj), FALSE);
132 return self->selected;
136 my_atk_hyperlink_link_activated (AtkHyperlink *obj)
138 MyAtkHyperlink *self = MY_ATK_HYPERLINK (obj);
139 g_return_if_fail (MY_IS_ATK_HYPERLINK (obj));
141 self->selected = !self->selected;
145 my_atk_hyperlink_init (MyAtkHyperlink *self)
151 self->selected = FALSE;
155 my_atk_hyperlink_set_property (GObject *obj,
168 //G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, id, pspec);
174 my_atk_hyperlink_get_property (GObject *obj,
182 my_atk_hyperlink_class_finalize (GObject *obj)
187 my_atk_hyperlink_class_init (MyAtkHyperlinkClass *my_class)
189 GObjectClass *gobject_class = G_OBJECT_CLASS (my_class);
190 AtkHyperlinkClass *iface = ATK_HYPERLINK_CLASS (my_class);
191 const gchar *inst_tab[] = {"accessible-name", "accessible-description", "accessible-role", NULL};
193 gobject_class->finalize = my_atk_hyperlink_class_finalize;
194 gobject_class->set_property = my_atk_hyperlink_set_property;
195 gobject_class->get_property = my_atk_hyperlink_get_property;
198 for (i = 0; inst_tab[i] != NULL ; i++)
199 g_object_class_install_property (gobject_class,
201 g_param_spec_string (inst_tab[i],
208 iface->get_uri = my_atk_hyperlink_get_uri;
209 iface->get_object = my_atk_hyperlink_get_object;
210 iface->get_end_index = my_atk_hyperlink_get_end_index;
211 iface->get_start_index = my_atk_hyperlink_get_start_index;
212 iface->is_valid = my_atk_hyperlink_is_valid;
213 iface->get_n_anchors = my_atk_hyperlink_get_n_anchors;
214 iface->link_state = my_atk_hyperlink_link_state;
215 iface->is_selected_link = my_atk_hyperlink_is_selected_link;
216 iface->link_activated = my_atk_hyperlink_link_activated;