diff options
Diffstat (limited to 'a11y')
52 files changed, 0 insertions, 10754 deletions
diff --git a/a11y/.cvsignore b/a11y/.cvsignore deleted file mode 100644 index 282522db03..0000000000 --- a/a11y/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -Makefile -Makefile.in diff --git a/a11y/ChangeLog b/a11y/ChangeLog deleted file mode 100644 index f905c5a39a..0000000000 --- a/a11y/ChangeLog +++ /dev/null @@ -1,328 +0,0 @@ -2005-02-01 Harry Lu <harry.lu@sun.com> - - Fix for 71924, 71926, 71932 - Don't split sentences that need translation. - Also remove two useless variables. - - * calendar/ea-cal-view-event.c: (ea_cal_view_event_get_name): - * calendar/ea-day-view.c: (ea_day_view_get_name): - * calendar/ea-week-view.c: (ea_week_view_get_name), - (ea_week_view_get_n_children): - * widgets/ea-calendar-item.c: (ea_calendar_item_get_name), - (e_calendar_item_get_offset_for_date): - -2005-01-31 Rodrigo Moya <rodrigo@novell.com> - - Fixes #71929 - - * calendar/ea-day-view.c (ea_day_view_get_name): - * calendar/ea-week-view.c (ea_week_view_get_name): don't use spaces - before colons. - -2005-01-28 Sivaiah Nallagatla <snallagatla@novell.com> - - * addressbook/ea-minicard-view.c - (ea_minicard_view_get_name) : fix a typo present - in the string too - -2005-01-28 Sivaiah Nallagatla <snallagatla@novell.com> - - * addressbook/ea-minicard-view.c - (ea_minicard_view_get_name) : use ngetext - instead of splitting the the sentence to take care - of different messages for plural vs singular case - Fixes #61060 - -2005-01-15 JP Rosevear <jpr@novell.com> - - * calendar/ea-calendar-helpers.c - (ea_calendar_helpers_get_cal_view_from): use E_CALENDAR_VIEW, not - E_CAL_VIEW - - Fixes #71306 - - * calendar/Makefile.am: no need for any idl in this directory, it - was not used anywhere - -2005-01-04 Harry Lu <harry.lu@sun.com> - - * widgets/Makefile.am: add ea-combo-button.[ch] to Makefile. - * widgets/ea-combo-button.c: - * widgets/ea-combo-button.h: implement a11y object for e-combo-button. - * widgets/ea-widgets.c: (e_combo_button_a11y_init): set a11y factory. - * widgets/ea-widgets.h: add declaration. - -2004-12-09 Harry Lu <harry.lu@sun.com> - - Fix a warning. - - * addressbook/ea-addressbook.c: (ea_addressbook_focus_watcher): - use object instead of ATK_OBJECT (minicard). - -2004-12-1 Hao Sheng <hao.sheng@sun.com> - - * a11y/addressbook/ea-minicard.c: - (atk_action_interface_do_action): Change e_minicard_activiate_editor to - e_minicard_activate_editor. - -2004-11-08 Steven Zhang <steven.zhang@sun.com> - - Implement accessible feature for e-minicard and e-mini-card-view. - Add get_n_children, ref_child, ref_state_set, atk_selection_interface, - and action_interface for ea-minicard-view and ea-minicard - - *ea-minicard-view.c: - (ea_minicard_view_get_n_children), - (ea_minicard_view_ref_child), - (ea_minicard_view_ref_state_set), - (atk_selection_interface_init), - (selection_interface_add_selection), - (selection_interface_clear_selection), - (selection_interface_ref_selection), - (selection_interface_get_selection_count), - (selection_interface_is_child_selected), - (atk_action_interface_init), - (atk_action_interface_do_action), - (atk_action_interface_get_n_action), - (atk_action_interface_get_description), - (atk_action_interface_get_name). - - *ea-minicard.c: - (ea_minicard_get_n_children), - (ea_minicard_ref_child), - (ea_minicard_ref_state_set), - (atk_action_interface_init), - (atk_action_interface_do_action), - (atk_action_interface_get_n_action), - (atk_action_interface_get_description), - (atk_action_interface_get_name). - -2004-11-01 Li Yuan <li.yuan@sun.com> - - * calendar/ea-day-view.c: (ea_day_view_get_name): - use ngettext for n_events. - * calendar/ea-week-view.c: (ea_week_view_get_name): - ditto. - -2004-10-26 Li Yuan <li.yuan@sun.com> - - * calendar/ea-day-view.c: (ea_day_view_get_name): - * calendar/ea-gnome-calendar.c: - (ea_gnome_calendar_get_label_description), - (ea_gcal_dates_change_cb): - * calendar/ea-gnome-calendar.h: - * calendar/ea-week-view.c: (ea_week_view_get_name): - for calendar_get_text_for_folder_bar_label has been removed form - calendar-commands.c, we implement it ourself. - -2004-09-23 Li Yuan <li.yuan@sun.com> - - * calendar/ea-cal-view-event.c: (ea_cal_view_event_get_type), - (ea_cal_view_event_get_name), (ea_cal_view_event_get_description): - Make accessibility name and description translatable. - (atk_action_interface_init), (ea_cal_view_event_do_action), - (ea_cal_view_event_get_n_actions), - (ea_cal_view_event_action_get_name): - Add action interface to ea-cal-view-event so that it can be - UI grabbed by GOK. - * calendar/ea-cal-view.c: - Make accessibility name and description translatable. - * calendar/ea-day-view-cell.c: (ea_day_view_cell_new): - Change atk role of ea-day-view-cell from ATK_ROLE_TABLE_CELL - to ATK_ROLE_UNKNOWN so that it can be UI grabbed by GOK. - (atk_component_interface_init), (component_interface_grab_focus): - Add a component interface function : grab_focus. - When grab focus, present the Evolution GUI to the front. - * calendar/ea-day-view-main-item.c: - (ea_day_view_main_item_get_description): - Make accessibility name and description translatable. - (ea_day_view_main_item_time_change_cb): - Notify the item_cell is selected. - * calendar/ea-day-view.c: (ea_day_view_get_name), - (ea_day_view_get_description): - Make accessibility name and description translatable. - * calendar/ea-gnome-calendar.c: (ea_gnome_calendar_get_name), - (ea_gnome_calendar_get_description), (ea_gnome_calendar_ref_child): - Make accessibility name and description translatable. - * calendar/ea-jump-button.c: (ea_jump_button_get_name), - (ea_jump_button_get_description): - Make accessibility name and description translatable. - * calendar/ea-week-view-cell.c: (ea_week_view_cell_get_name), - (atk_component_interface_init), (component_interface_get_extents), - (component_interface_grab_focus): - Add a component interface function : grab_focus. - Add support for different week start days. - When grab focus, present the Evolutioon GUI to the front. - * calendar/ea-week-view-main-item.c: (ea_week_view_main_item_new): - Set the atk role to ATK_ROLE_TABLE. - (ea_week_view_main_item_get_description): - Make accessibility name and description translatable. - (ea_week_view_main_item_time_change_cb): - Notify the item_cell is selected. - * calendar/ea-week-view.c: (ea_week_view_get_name), - (ea_week_view_get_description): - Make accessibility name and description translatable. - * widgets/ea-calendar-cell.c: (ea_calendar_cell_new): - Change atk role of ea-calendar-cell from ATK_ROLE_TABLE_CELL - to ATK_ROLE_UNKNOWN so that it can be UI grabbed by GOK. - * widgets/ea-calendar-item.c: (ea_calendar_item_class_init), - (ea_calendar_item_get_name), (ea_calendar_item_get_description): - Make accessibility name and description translatable. - (ea_calendar_item_ref_state_set),: - Implement ref_state_set so that ea-calendar-item can be UI - grabbed by GOK. - (ea_calendar_item_destory_cell_data): - Fix a crash here. - -2004-04-29 Rodney Dawes <dobey@ximian.com> - - * calendar/Makefile.am (INCLUDES): Add $(top_srcdir)/widgets/misc - for the e-activity-handler.h stuff - -2004-04-22 Kidd Wang <kidd.wang@sun.com> - - * calendar/ea-week-view.c: (ea_week_view_get_n_children): If the - week view has no spans, there is no visible events in the view. - -2004-03-15 JP Rosevear <jpr@ximian.com> - - * calendar/ea-cal-view.h: fix include - -2003-03-15 Hao Sheng <hao.sheng@sun.com> - - * Contritbuted by Leon Zhang <leon.zhang@sun.com> - * Makefile.am: add directory addressbook. - * implement basic accessbility addressbook's minicard. - add new directory and Files below: - addressbook/ - addressbook/Makefile.am - addressbook/ea-addressbook.c - addressbook/ea-addressbook-view.c - addressbook/ea-minicard.c - addressbook/ea-minicard-view.c - addressbook/ea-addressbook.h - addressbook/ea-addressbook-view.h - addressbook/ea-minicard.h - addressbook/ea-minicard-view.h - -2003-12-10 Bolian Yin <bolian.yin@sun.com> - - * calendar/ea-cal-view-event.c (ea_cal_view_event_get_index_in_parent): corret index error in week view. - * calendar/ea-day-view-cell.c: impl. get_index_in_parent - * calendar/ea-day-view-main-item.c: emit signal "active-descendant-changed", fix error in selection_interface_ref_selection. - * widgets/ea-calendar-cell.c: impl. get_index_in_parent. - * widgets/ea-calendar-item.c: change signature of e_calendar_item_get_offset_for_date, emit signal "active-descendant-changed". - -2003-12-09 Andrew Wu <Yang.Wu@sun.com> - - * calendar/Makefile.am: add entries for new source files - * calendar/ea-calendar-helpers.c: add cases for jump button. - * calendar/ea-calendar.c: add cases for week view and week view main item. - * calendar/ea-jump-button.c: new impl. - * calendar/ea-week-view-cell.c: new impl. - * calendar/ea-week-view-main-item.c: new impl. - * calendar/ea-week-view.c: add main item as first child. - -2003-12-05 Bolian Yin <bolian.yin@sun.com> - - * calendar/ea-cal-view-event.c (ea_cal_view_event_new): shortcut when cal_view is NULL. - * calendar/ea-cal-view.c: Change an action name. - * calendar/ea-calendar.c (ea_calendar_focus_watcher): add check for event atk object. - * calendar/ea-week-view.c (ea_week_view_get_n_children): correct impl. - (get_visible_text_item_count): removed. - -2003-12-06 JP Rosevear <jpr@ximian.com> - - * */Makefile.am: Remove hard coded disable deprecated flags - -2003-12-03 Ettore Perazzoli <ettore@ximian.com> - - * calendar/Makefile.am (SHELL_IDLS): Only get Evolution.idl. - -2003-11-11 Bolian Yin <bolian.yin@sun.com> - - Fixes #50538 - - * new files: - widgets/ea-calendar-cell.[hc] - - * widgets/ea-calendar-item: impl. atk selection and atk table interface. - - * widgets/Makefile.am : use shared object library (.so) - -2003-11-07 JP Rosevear <jpr@ximian.com> - - * calendar/Makefile.am (INCLUDES): don't include toplevel libical - -2003-11-07 JP Rosevear <jpr@ximian.com> - - * Handle some more renaming - -2003-11-07 JP Rosevear <jpr@ximian.com> - - * Reflect renaming of ECalView to ECalendarView - -2003-11-04 Bolian Yin <bolian.yin@sun.com> - - Fixes # 48509 - - * new files: - ea-cell-table.h ea-cell-table.c - * calendar/Makefile.am: add entries for new files - * calendar/New files added: - ea-day-view-main-item.c ea-day-view-main-item.h - ea-day-view-cell.c ea-day-view-cell.h - * Add debug info and remove some non-C99 compilers warnings. - * calendar/ea-cal-view: add action interface. - -2003-10-09 Jeffrey Stedfast <fejj@ximian.com> - - * calendar/Makefile.am: INCLUDE path fixes for changes made to - libical build. - -2003-08-27 Bolian Yin <bolian.yin@sun.com> - - * Makefile.am: add widgets directory; move calendar idl stuff to - calendar directory; stop make a single shared lib for whole a11y - stuff. - - * ea-factory.h: make factory macros available to GOBJECT - - * calendar/Makefile.am: add calendar idl stuff - - * calendar/ea-cal-view-event.c: add atkcomponent interface. - - * calendar/ea-gnome-calendar.c (ea_gcal_switch_view_cb): add - details for "children_changed". - - * new widgets directory for widgets a11y stuff, new files are: - widgets/Makefile.am, widgets/ea-calendar-item.c, - widgets/ea-calendar-item.h, widgets/ea-widgets.c, - widgets/ea-widgets.h - -2003-08-20 Rodrigo Moya <rodrigo@ximian.com> - - * calendar/ea-cal-view-event.c (ea_cal_view_event_get_name): - adapted to changes in ECalViewEvent. - -2003-08-20 Bolian Yin <bolian.yin@sun.com> - setup the a11y directory for evolution accessibility work - New files are: - ChangeLog - ea-factory.h - Makefile.am - calendar/ea-calendar.c - calendar/ea-calendar.h - calendar/ea-calendar-helpers.c - calendar/ea-calendar-helpers.h - calendar/ea-cal-view.c - calendar/ea-cal-view.h - calendar/ea-cal-view-event.c - calendar/ea-cal-view-event.h - calendar/ea-day-view.c - calendar/ea-day-view.h - calendar/ea-week-view.c - calendar/ea-week-view.h - calendar/ea-gnome-calendar.c - calendar/ea-gnome-calendar.h - calendar/Makefile.am diff --git a/a11y/Makefile.am b/a11y/Makefile.am deleted file mode 100644 index c98e486e7f..0000000000 --- a/a11y/Makefile.am +++ /dev/null @@ -1,16 +0,0 @@ -SUBDIRS = . calendar widgets addressbook - -# for debug -#A11Y_CFLAGS += -pedantic -ansi -DACC_DEBUG -Werror - -privlib_LTLIBRARIES = libevolution-a11y.la - -INCLUDES = \ - -I$(top_srcdir)/a11y \ - $(A11Y_CFLAGS) - -libevolution_a11y_la_SOURCES = \ - ea-factory.h \ - ea-cell-table.h \ - ea-cell-table.c - diff --git a/a11y/addressbook/.cvsignore b/a11y/addressbook/.cvsignore deleted file mode 100644 index 282522db03..0000000000 --- a/a11y/addressbook/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -Makefile -Makefile.in diff --git a/a11y/addressbook/Makefile.am b/a11y/addressbook/Makefile.am deleted file mode 100644 index dfabdf27ba..0000000000 --- a/a11y/addressbook/Makefile.am +++ /dev/null @@ -1,34 +0,0 @@ -privlib_LTLIBRARIES = libevolution-addressbook-a11y.la - -INCLUDES = \ - -DG_LOG_DOMAIN=\"evolution-a11y\" \ - -I$(top_srcdir) \ - -I$(top_srcdir)/a11y \ - -I$(top_srcdir)/a11y/addressbook \ - -I$(top_srcdir)/shell \ - -I$(top_srcdir)/addressbook \ - -I$(top_srcdir)/addressbook/gui \ - -I$(top_srcdir)/addressbook/gui/widgets \ - -I$(top_srcdir)/addressbook/gui/contact-editor \ - -I$(top_srcdir)/addressbook/backend \ - -I$(top_srcdir)/addressbook/backend/ebook \ - -DEVOLUTION_DATADIR=\""$(datadir)"\" \ - -DEVOLUTION_GLADEDIR=\""$(gladedir)"\" \ - -DEVOLUTION_ETSPECDIR=\""$(etspecdir)"\" \ - -DEVOLUTION_IMAGESDIR=\""$(imagesdir)"\" \ - -DEVOLUTION_GALVIEWSDIR=\""$(viewsdir)"\" \ - -DEVOLUTION_UIDIR=\""$(evolutionuidir)"\" \ - -DG_DISABLE_DEPRECATED \ - -DPREFIX=\""$(prefix)"\" \ - $(A11Y_CFLAGS) \ - $(EVOLUTION_ADDRESSBOOK_CFLAGS) - -libevolution_addressbook_a11y_la_SOURCES = \ - ea-minicard.c \ - ea-minicard.h \ - ea-minicard-view.c \ - ea-minicard-view.h \ - ea-addressbook-view.c \ - ea-addressbook-view.h \ - ea-addressbook.c \ - ea-addressbook.h diff --git a/a11y/addressbook/ea-addressbook-view.c b/a11y/addressbook/ea-addressbook-view.c deleted file mode 100644 index 1d26767a79..0000000000 --- a/a11y/addressbook/ea-addressbook-view.c +++ /dev/null @@ -1,122 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* - * ea-addressbook-view.c - * Copyright (C) 2000 Ximian, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU 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. - * - * Author: Leon Zhang <leon.zhang@sun.com> Sun Microsystem Inc., 2003 - */ - -#include <config.h> - -#include <libgnome/gnome-i18n.h> -#include "ea-addressbook-view.h" - -static G_CONST_RETURN gchar* ea_ab_view_get_name (AtkObject *accessible); -static G_CONST_RETURN gchar* ea_ab_view_get_description (AtkObject *accessible); - -static void ea_ab_view_class_init (EABViewClass *klass); - -static gpointer parent_class = NULL; - -GType -ea_ab_view_get_type (void) -{ - static GType type = 0; - AtkObjectFactory *factory; - GTypeQuery query; - GType derived_atk_type; - - if (!type) { - static GTypeInfo tinfo = { - sizeof (EABViewClass), - (GBaseInitFunc) NULL, /* base_init */ - (GBaseFinalizeFunc) NULL, /* base_finalize */ - (GClassInitFunc) ea_ab_view_class_init, - (GClassFinalizeFunc) NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof (EaABView), - 0, /* n_preallocs */ - (GInstanceInitFunc) NULL, /* instance init */ - NULL /* value table */ - }; - - /* - * Figure out the size of the class and instance - * we are run-time deriving from (GailWidget, in this case) */ - - factory = atk_registry_get_factory (atk_get_default_registry (), - GTK_TYPE_EVENT_BOX); - derived_atk_type = atk_object_factory_get_accessible_type (factory); - g_type_query (derived_atk_type, &query); - - tinfo.class_size = query.class_size; - tinfo.instance_size = query.instance_size; - - type = g_type_register_static (derived_atk_type, - "EaABView", &tinfo, 0); - } - - return type; -} - -static void -ea_ab_view_class_init (EABViewClass *klass) -{ - AtkObjectClass *class = ATK_OBJECT_CLASS (klass); - - parent_class = g_type_class_peek_parent (klass); - - class->get_name = ea_ab_view_get_name; - class->get_description = ea_ab_view_get_description; -} - -static G_CONST_RETURN gchar* -ea_ab_view_get_name (AtkObject *accessible) -{ - g_return_val_if_fail (EA_IS_AB_VIEW(accessible), NULL); - if (accessible->name) - return accessible->name; - - return _("evolution addressbook"); -} - -static G_CONST_RETURN gchar* -ea_ab_view_get_description (AtkObject *accessible) -{ - if (accessible->description) - return accessible->description; - - return _("evolution addressbook"); -} - -AtkObject* -ea_ab_view_new (GObject *obj) -{ - GObject *object; - AtkObject *accessible; - - g_return_val_if_fail(obj != NULL, NULL); - g_return_val_if_fail (E_IS_ADDRESSBOOK_VIEW(obj), NULL); - - object = g_object_new (EA_TYPE_AB_VIEW, NULL); - - accessible = ATK_OBJECT (object); - atk_object_initialize (accessible, obj); - accessible->role = ATK_ROLE_CANVAS; - - return accessible; -} diff --git a/a11y/addressbook/ea-addressbook-view.h b/a11y/addressbook/ea-addressbook-view.h deleted file mode 100644 index 94f6b2b452..0000000000 --- a/a11y/addressbook/ea-addressbook-view.h +++ /dev/null @@ -1,61 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* - * ea-addressbook_view.h - * Copyright (C) 2000 Ximian, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU 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. - * - * Author: Leon Zhang <leon.zhang@sun.com> Sun Microsystem Inc., 2003 - */ -#ifndef __EA_ADDRESSBOOK_VIEW_H__ -#define __EA_ADDRESSBOOK_VIEW_H__ - -#include <gtk/gtkaccessible.h> -#include "e-addressbook-view.h" - -#ifdef __cplusplus -extern "C" { -#pragma } -#endif /* __cplusplus */ - -#define EA_TYPE_AB_VIEW (ea_ab_view_get_type ()) -#define EA_AB_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EA_TYPE_AB_VIEW, EaABView)) -#define EA_AB_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EA_TYPE_AB_VIEW, EaABViewClass)) -#define EA_IS_AB_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EA_TYPE_AB_VIEW)) -#define EA_IS_AB_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), EA_TYPE_AB_VIEW)) - -typedef struct _EaABView EaABView; -typedef struct _EaABViewClass EaABViewClass; - -struct _EaABView -{ - GtkAccessible parent; -}; - - -struct _EaABViewClass -{ - GtkAccessibleClass parent_class; -}; - -GType ea_ab_view_get_type (void); -AtkObject* ea_ab_view_new(GObject *obj); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - - -#endif /* __EA_ADDRESSBOOK_VIEW_H__ */ diff --git a/a11y/addressbook/ea-addressbook.c b/a11y/addressbook/ea-addressbook.c deleted file mode 100644 index 1abe1f2a4d..0000000000 --- a/a11y/addressbook/ea-addressbook.c +++ /dev/null @@ -1,87 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* vim:expandtab:shiftwidth=8:tabstop=8: - */ -/* Evolution Accessibility: ea-addressbook.c - * - * Copyright (C) 2003 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Leon Zhang <leon.zhang@sun.com> Sun Microsystem Inc., 2003 - * - */ - -#include <gal/e-text/e-text.h> -#include "ea-factory.h" -#include "ea-addressbook.h" -#include "addressbook/ea-minicard.h" -#include "addressbook/ea-minicard-view.h" -#include "addressbook/ea-addressbook-view.h" - -EA_FACTORY_GOBJECT (EA_TYPE_MINICARD, ea_minicard, ea_minicard_new); -EA_FACTORY_GOBJECT (EA_TYPE_MINICARD_VIEW, ea_minicard_view, ea_minicard_view_new); -EA_FACTORY_GOBJECT (EA_TYPE_AB_VIEW, ea_ab_view, ea_ab_view_new); - -static gboolean ea_addressbook_focus_watcher (GSignalInvocationHint *ihint, - guint n_param_values, - const GValue *param_values, - gpointer data); - -void e_minicard_a11y_init (void) -{ - EA_SET_FACTORY (e_minicard_get_type (), ea_minicard); -} - -void e_minicard_view_a11y_init (void) -{ - EA_SET_FACTORY (e_minicard_view_get_type (), ea_minicard_view); - - if (atk_get_root ()) { - g_signal_add_emission_hook (g_signal_lookup ("event", - e_minicard_get_type()), - 0, ea_addressbook_focus_watcher, - NULL, (GDestroyNotify) NULL); - } -} - -void eab_view_a11y_init (void) -{ - EA_SET_FACTORY (eab_view_get_type (), ea_ab_view); -} - -gboolean -ea_addressbook_focus_watcher (GSignalInvocationHint *ihint, - guint n_param_values, - const GValue *param_values, - gpointer data) -{ - GObject *object; - GdkEvent *event; - AtkObject *ea_event = NULL; - - object = g_value_get_object (param_values + 0); - event = g_value_get_boxed (param_values + 1); - - if (E_IS_MINICARD (object)) { - GnomeCanvasItem *item = GNOME_CANVAS_ITEM (object); - ea_event = atk_gobject_accessible_for_object (object); - if (event->type == GDK_FOCUS_CHANGE) { - if ((event->focus_change.in) && (E_IS_MINICARD (item->canvas->focused_item))) - atk_focus_tracker_notify (ea_event); - } - } - - return TRUE; -} diff --git a/a11y/addressbook/ea-addressbook.h b/a11y/addressbook/ea-addressbook.h deleted file mode 100644 index 437d34f1cc..0000000000 --- a/a11y/addressbook/ea-addressbook.h +++ /dev/null @@ -1,36 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* vim:expandtab:shiftwidth=8:tabstop=8: - */ -/* Evolution Accessibility: ea-addressbook.h - * - * Copyright (C) 2003 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Leon Zhang <leon.zhang@sun.com> Sun Microsystem Inc., 2003 - * - */ - -/* Evolution Accessibility -*/ - -#ifndef _EA_ADDRESSBOOK_H__ -#define _EA_ADDRESSBOOK_H__ - -void eab_view_a11y_init (void); -void e_minicard_view_a11y_init (void); -void e_minicard_a11y_init (void); - -#endif /* _EA_ADDRESSBOOK_H__ */ diff --git a/a11y/addressbook/ea-minicard-view.c b/a11y/addressbook/ea-minicard-view.c deleted file mode 100644 index a2d87d967f..0000000000 --- a/a11y/addressbook/ea-minicard-view.c +++ /dev/null @@ -1,406 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* - * ea-minicard-view.c - * Copyright (C) 2000 Ximian, Inc. - * Author: Leon Zhang < leon.zhang@sun.com> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU 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 <config.h> -#include <libgnome/gnome-i18n.h> -#include <string.h> -#include <gtk/gtkaccessible.h> -#include <glib/gstrfuncs.h> -#include <libgnome/gnome-i18n.h> -#include "ea-minicard.h" -#include "ea-minicard-view.h" -#include "eab-gui-util.h" -#include "e-addressbook-view.h" - -static const char * action_name[] = { - N_("New Contact"), - N_("New Contact List") -}; - - -static G_CONST_RETURN gchar* ea_minicard_view_get_name (AtkObject *accessible); -static G_CONST_RETURN gchar* ea_minicard_view_get_description (AtkObject *accessible); - -static void ea_minicard_view_class_init (EaMinicardViewClass *klass); - -static gint ea_minicard_view_get_n_children (AtkObject *obj); -static AtkObject *ea_minicard_view_ref_child (AtkObject *obj, gint i); - -static AtkStateSet *ea_minicard_view_ref_state_set(AtkObject *obj); - -static void atk_selection_interface_init (AtkSelectionIface *iface); -static gboolean selection_interface_add_selection (AtkSelection *selection, - gint i); -static gboolean selection_interface_clear_selection (AtkSelection *selection); -static AtkObject* selection_interface_ref_selection (AtkSelection *selection, - gint i); -static gint selection_interface_get_selection_count (AtkSelection *selection); -static gboolean selection_interface_is_child_selected (AtkSelection *selection, - gint i); - -static void atk_action_interface_init (AtkActionIface *iface); -static gboolean atk_action_interface_do_action (AtkAction *iface, gint i); -static gint atk_action_interface_get_n_action (AtkAction *iface); -static G_CONST_RETURN gchar* atk_action_interface_get_description (AtkAction *iface, gint i); -static G_CONST_RETURN gchar* atk_action_interface_get_name (AtkAction *iface, gint i); - -static gpointer parent_class = NULL; - -GType -ea_minicard_view_get_type (void) -{ - static GType type = 0; - AtkObjectFactory *factory; - GTypeQuery query; - GType derived_atk_type; - - if (!type) { - static GTypeInfo tinfo = { - sizeof (EaMinicardViewClass), - (GBaseInitFunc) NULL, /* base_init */ - (GBaseFinalizeFunc) NULL, /* base_finalize */ - (GClassInitFunc) ea_minicard_view_class_init, - (GClassFinalizeFunc) NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof (EaMinicardView), - 0, /* n_preallocs */ - (GInstanceInitFunc) NULL, /* instance init */ - NULL /* value table */ - }; - - static const GInterfaceInfo atk_selection_info = { - (GInterfaceInitFunc) atk_selection_interface_init, - (GInterfaceFinalizeFunc) NULL, - NULL - }; - - static const GInterfaceInfo atk_action_info = { - (GInterfaceInitFunc) atk_action_interface_init, - (GInterfaceFinalizeFunc) NULL, - NULL - }; - - /* - * Figure out the size of the class and instance - * we are run-time deriving from (GailWidget, in this case) */ - - factory = atk_registry_get_factory (atk_get_default_registry (), - GNOME_TYPE_CANVAS_GROUP); - derived_atk_type = atk_object_factory_get_accessible_type (factory); - g_type_query (derived_atk_type, &query); - - tinfo.class_size = query.class_size; - tinfo.instance_size = query.instance_size; - - type = g_type_register_static (derived_atk_type, - "EaMinicardView", &tinfo, 0); - g_type_add_interface_static (type, ATK_TYPE_SELECTION, - &atk_selection_info); - g_type_add_interface_static (type, ATK_TYPE_ACTION, - &atk_action_info); - - } - - return type; -} - -static void -ea_minicard_view_class_init (EaMinicardViewClass *klass) -{ - AtkObjectClass *class = ATK_OBJECT_CLASS (klass); - - parent_class = g_type_class_peek_parent (klass); - - class->get_name = ea_minicard_view_get_name; - class->get_description = ea_minicard_view_get_description; - class->ref_state_set = ea_minicard_view_ref_state_set; - class->get_n_children = ea_minicard_view_get_n_children; - class->ref_child = ea_minicard_view_ref_child; -} - -static G_CONST_RETURN gchar* -ea_minicard_view_get_name (AtkObject *accessible) -{ - EReflow *reflow; - gchar *string; - - g_return_val_if_fail (EA_IS_MINICARD_VIEW (accessible), NULL); - - reflow = E_REFLOW(atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE (accessible))); - - string = g_strdup_printf (ngettext ("current addressbook folder has %d card", - "current addressbook folder has %d cards", - reflow->count), reflow->count); - - - ATK_OBJECT_CLASS (parent_class)->set_name (accessible, string); - g_free (string); - return accessible->name; -} - -static G_CONST_RETURN gchar* -ea_minicard_view_get_description (AtkObject *accessible) -{ - g_return_val_if_fail (EA_IS_MINICARD_VIEW(accessible), NULL); - if (accessible->description) - return accessible->description; - - return _("evolution addressbook"); -} - -AtkObject* -ea_minicard_view_new (GObject *obj) -{ - GObject *object; - AtkObject *accessible; - - g_return_val_if_fail (E_IS_MINICARD_VIEW(obj), NULL); - object = g_object_new (EA_TYPE_MINICARD_VIEW, NULL); - accessible = ATK_OBJECT (object); - atk_object_initialize (accessible, obj); - accessible->role = ATK_ROLE_UNKNOWN; - return accessible; -} - -static gint -ea_minicard_view_get_n_children (AtkObject *accessible) -{ - EReflow *reflow; - - gint child_num = 0; - - g_return_val_if_fail (EA_IS_MINICARD_VIEW (accessible), -1); - - reflow = E_REFLOW (atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE(accessible))); - - if (!reflow) - return -1; - - child_num = reflow->count; - - return child_num; -} - -static AtkStateSet *ea_minicard_view_ref_state_set (AtkObject *obj) -{ - AtkStateSet *state_set = NULL; - GObject *gobj = NULL; - - state_set = ATK_OBJECT_CLASS (parent_class)->ref_state_set (obj); - if( !state_set ) - return NULL; - gobj = atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE (obj)); - if( !gobj ) - return NULL; - - atk_state_set_add_state (state_set, ATK_STATE_ENABLED); - atk_state_set_add_state (state_set, ATK_STATE_SENSITIVE); - atk_state_set_add_state (state_set, ATK_STATE_SHOWING); - - return state_set; -} - -static AtkObject * -ea_minicard_view_ref_child (AtkObject *accessible, gint index) -{ - EReflow *reflow; - gint child_num; - AtkObject *atk_object = NULL; - EMinicard *card = NULL; - - g_return_val_if_fail (EA_IS_MINICARD_VIEW (accessible), NULL); - - child_num = atk_object_get_n_accessible_children (accessible); - if (child_num <= 0 || index < 0 || index >= child_num) - return NULL; - - reflow = E_REFLOW (atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE (accessible))); - if (!reflow) - return NULL; - if (!reflow->items ) - return NULL; - /* a minicard */ - if (index < child_num) { - card = E_MINICARD (reflow->items[index]); - atk_object = atk_gobject_accessible_for_object (G_OBJECT (card)); - } else { - return NULL; - } - - g_object_ref (atk_object); - return atk_object; -} - -/* atkselection interface */ - -static void -atk_selection_interface_init (AtkSelectionIface *iface) -{ - g_return_if_fail (iface != NULL); - - iface->add_selection = selection_interface_add_selection; - iface->clear_selection = selection_interface_clear_selection; - iface->ref_selection = selection_interface_ref_selection; - iface->get_selection_count = selection_interface_get_selection_count; - iface->is_child_selected = selection_interface_is_child_selected; -} - -static gboolean -selection_interface_add_selection (AtkSelection *selection, gint i) -{ - AtkGObjectAccessible *atk_gobj= NULL; - EReflow *reflow = NULL; - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (selection); - reflow = E_REFLOW (atk_gobject_accessible_get_object (atk_gobj)); - - if (!reflow) - return FALSE; - - selection_interface_clear_selection (selection); - e_selection_model_select_single_row (reflow->selection, i); - - return TRUE; -} - -static gboolean -selection_interface_clear_selection (AtkSelection *selection) -{ - AtkGObjectAccessible *atk_gobj = NULL; - EReflow *reflow = NULL; - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (selection); - reflow = E_REFLOW(atk_gobject_accessible_get_object (atk_gobj)); - - if( !reflow ) - return FALSE; - - e_selection_model_clear (reflow->selection); - - return TRUE; -} - -static AtkObject* -selection_interface_ref_selection (AtkSelection *selection, gint i) -{ - return ea_minicard_view_ref_child (ATK_OBJECT (selection), i); -} - -static gint -selection_interface_get_selection_count (AtkSelection *selection) -{ - AtkGObjectAccessible *atk_gobj = NULL; - EReflow *reflow = NULL; - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (selection); - reflow = E_REFLOW (atk_gobject_accessible_get_object (atk_gobj)); - - if (!reflow ) - return FALSE; - - return e_selection_model_selected_count (reflow->selection); -} - -static gboolean -selection_interface_is_child_selected (AtkSelection *selection, gint i) -{ - AtkGObjectAccessible *atk_gobj = NULL; - EReflow *reflow = NULL; - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (selection); - reflow = E_REFLOW(atk_gobject_accessible_get_object (atk_gobj)); - - if( !reflow ) - return FALSE; - - return e_selection_model_is_row_selected (reflow->selection, i); -} - -static void atk_action_interface_init (AtkActionIface *iface) -{ - g_return_if_fail (iface != NULL); - - iface->do_action = atk_action_interface_do_action; - iface->get_n_actions = atk_action_interface_get_n_action; - iface->get_description = atk_action_interface_get_description; - iface->get_name = atk_action_interface_get_name; -} - -static gboolean atk_action_interface_do_action (AtkAction *action, gint i) -{ - gboolean return_value = TRUE; - EMinicardView *card_view; - EContact *contact = e_contact_new(); - - AtkGObjectAccessible *atk_gobj= NULL; - EReflow *reflow = NULL; - EBook *book; - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (action); - reflow = E_REFLOW (atk_gobject_accessible_get_object (atk_gobj)); - - if (reflow == NULL) - return FALSE; - - card_view = E_MINICARD_VIEW (reflow); - g_object_get(card_view, - "book", &book, - NULL); - g_assert (E_IS_BOOK (book)); - - switch (i) { - case 0: - /* New Contact */ - eab_show_contact_editor (book, contact, TRUE, TRUE); - break; - case 1: - /* New Contact List */ - eab_show_contact_list_editor (book, contact, TRUE, TRUE); - break; - default: - return_value = FALSE; - break; - } - g_object_unref (book); - g_object_unref (contact); - return return_value; -} - -static gint atk_action_interface_get_n_action (AtkAction *iface) -{ - return G_N_ELEMENTS (action_name); -} - -static G_CONST_RETURN gchar* -atk_action_interface_get_description (AtkAction *iface, gint i) -{ - return atk_action_interface_get_name (iface, i); -} - -static G_CONST_RETURN gchar* -atk_action_interface_get_name (AtkAction *iface, gint i) -{ - if( i >= G_N_ELEMENTS (action_name) || i < 0) - return NULL; - - return action_name[i]; -} - diff --git a/a11y/addressbook/ea-minicard-view.h b/a11y/addressbook/ea-minicard-view.h deleted file mode 100644 index e983ae5229..0000000000 --- a/a11y/addressbook/ea-minicard-view.h +++ /dev/null @@ -1,62 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* - * ea-minicard-view.h - * Copyright (C) 2000 Ximian, Inc. - * Author: Leon Zhang <leon.zhang@sun.com> Sun Microsystem Inc., 2003 - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU 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. - */ -#ifndef __EA_MINICARD_VIEW_H__ -#define __EA_MINICARD_VIEW_H__ - -#include <atk/atkgobjectaccessible.h> -#include "e-minicard-view.h" - -#ifdef __cplusplus -extern "C" { -#pragma } -#endif /* __cplusplus */ - -#define EA_TYPE_MINICARD_VIEW (ea_minicard_view_get_type ()) -#define EA_MINICARD_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EA_TYPE_MINICARD_VIEW, EaMinicardView)) -#define EA_MINICARD_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EA_TYPE_MINICARD_VIEW, EaMiniCardViewClass)) -#define EA_IS_MINICARD_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EA_TYPE_MINICARD_VIEW)) -#define EA_IS_MINICARD_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), EA_TYPE_MINICARD_VIEW)) - - -typedef struct _EaMinicardView EaMinicardView; -typedef struct _EaMinicardViewClass EaMinicardViewClass; - -struct _EaMinicardView -{ - AtkGObjectAccessible parent; -}; - - -struct _EaMinicardViewClass -{ - AtkGObjectAccessibleClass parent_class; -}; - -GType ea_minicard_view_get_type (void); - -AtkObject* ea_minicard_view_new(GObject *obj); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - - -#endif /* __EA_MINICARD_VIEW_H__ */ diff --git a/a11y/addressbook/ea-minicard.c b/a11y/addressbook/ea-minicard.c deleted file mode 100644 index 728ac88e8d..0000000000 --- a/a11y/addressbook/ea-minicard.c +++ /dev/null @@ -1,269 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* - * ea-minicard.c - * Copyright (C) 2000 Ximian, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU 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. - * - * Author: Leon Zhang <leon.zhang@sun.com> Sun Microsystem Inc., 2003 - */ - -#include <config.h> -#include <string.h> -#include <libgnome/gnome-i18n.h> -#include "ea-minicard.h" -#include "ea-minicard-view.h" -#include "e-minicard.h" - -static const char * action_name[] = { - N_("Open") -}; - -static G_CONST_RETURN gchar* ea_minicard_get_name (AtkObject *accessible); -static G_CONST_RETURN gchar* ea_minicard_get_description (AtkObject *accessible); - -static void ea_minicard_class_init (EaMinicardClass *klass); - -static gint ea_minicard_get_n_children (AtkObject *obj); -static AtkObject* ea_minicard_ref_child(AtkObject *obj, gint i); - -static AtkStateSet *ea_minicard_ref_state_set (AtkObject *obj); - -static void atk_action_interface_init (AtkActionIface *iface); -static gboolean atk_action_interface_do_action (AtkAction *iface, gint i); -static gint atk_action_interface_get_n_action (AtkAction *iface); -static G_CONST_RETURN gchar* atk_action_interface_get_description (AtkAction *iface, gint i); -static G_CONST_RETURN gchar* atk_action_interface_get_name (AtkAction *iface, gint i); - -static gpointer parent_class = NULL; - -GType -ea_minicard_get_type (void) -{ - static GType type = 0; - AtkObjectFactory *factory; - GTypeQuery query; - GType derived_atk_type; - - if (!type) { - static GTypeInfo tinfo = { - sizeof (EaMinicardClass), - (GBaseInitFunc) NULL, /* base_init */ - (GBaseFinalizeFunc) NULL, /* base_finalize */ - (GClassInitFunc) ea_minicard_class_init, - (GClassFinalizeFunc) NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof (EaMinicard), - 0, /* n_preallocs */ - (GInstanceInitFunc) NULL, /* instance init */ - NULL /* value table */ - }; - - static const GInterfaceInfo atk_action_info = { - (GInterfaceInitFunc) atk_action_interface_init, - (GInterfaceFinalizeFunc) NULL, - NULL - }; - - /* - * Figure out the size of the class and instance - * we are run-time deriving from (GailWidget, in this case) - */ - - factory = atk_registry_get_factory (atk_get_default_registry (), - GNOME_TYPE_CANVAS_GROUP); - derived_atk_type = atk_object_factory_get_accessible_type (factory); - g_type_query (derived_atk_type, &query); - - tinfo.class_size = query.class_size; - tinfo.instance_size = query.instance_size; - - type = g_type_register_static ( derived_atk_type, - "EaMinicard", &tinfo, 0); - g_type_add_interface_static (type, ATK_TYPE_ACTION, - &atk_action_info); - } - - return type; -} - -static void -ea_minicard_class_init (EaMinicardClass *klass) -{ - AtkObjectClass *class = ATK_OBJECT_CLASS (klass); - - parent_class = g_type_class_peek_parent (klass); - - class->get_name = ea_minicard_get_name; - class->get_description = ea_minicard_get_description; - class->ref_state_set = ea_minicard_ref_state_set; - class->get_n_children = ea_minicard_get_n_children; - class->ref_child = ea_minicard_ref_child; -} - -/* - * we access the main content of current minicard, including - * header text, label(field, field name) - */ -static G_CONST_RETURN gchar* -ea_minicard_get_name (AtkObject *accessible) -{ -#define BUFFERSIZE 500 - - static gchar name[BUFFERSIZE]; - GString *new_str = g_string_new (NULL); - gchar *string; - EMinicard *card; - - g_return_val_if_fail (EA_IS_MINICARD(accessible), NULL); - memset (name, '\0', BUFFERSIZE); - - card = E_MINICARD(atk_gobject_accessible_get_object - (ATK_GOBJECT_ACCESSIBLE(accessible))); - g_object_get (card->header_text, "text", &string, NULL); - - if (e_contact_get (card->contact, E_CONTACT_IS_LIST)) - g_string_append (new_str, _("Contact List: ")); - else g_string_append (new_str, _("Contact: ")); - - /* get header of current card */ - g_string_append (new_str, string); - g_free (string); - - /* if there exist no enough space for remain info, return */ - if (new_str->len >= BUFFERSIZE) { - strncpy (name, new_str->str, BUFFERSIZE); - return name; - } - - strcpy (name, new_str->str); - g_string_free (new_str, TRUE); - - ATK_OBJECT_CLASS (parent_class)->set_name (accessible, name); - - return accessible->name; -} - -static G_CONST_RETURN gchar* -ea_minicard_get_description (AtkObject *accessible) -{ - if (accessible->description) - return accessible->description; - - return _("evolution minicard"); -} - -AtkObject* -ea_minicard_new (GObject *obj) -{ - GObject *object; - AtkObject *accessible; - - g_return_val_if_fail(obj != NULL, NULL); - g_return_val_if_fail (E_IS_MINICARD(obj), NULL); - - object = g_object_new (EA_TYPE_MINICARD, NULL); - accessible = ATK_OBJECT (object); - atk_object_initialize (accessible, obj); - - accessible->role = ATK_ROLE_UNKNOWN; - return accessible; -} - -static AtkStateSet *ea_minicard_ref_state_set (AtkObject *obj) -{ - AtkStateSet *state_set = NULL; - GObject *gobj = NULL; - - state_set = ATK_OBJECT_CLASS (parent_class)->ref_state_set (obj); - if( !state_set ) - return NULL; - gobj = atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE (obj)); - if( !gobj ) - return NULL; - - atk_state_set_add_state (state_set, ATK_STATE_SELECTABLE); - atk_state_set_add_state (state_set, ATK_STATE_ENABLED); - atk_state_set_add_state (state_set, ATK_STATE_SENSITIVE); - atk_state_set_add_state (state_set, ATK_STATE_SHOWING); - - return state_set; -} - -static gint -ea_minicard_get_n_children (AtkObject *accessible) -{ - return 0; -} - -static AtkObject * -ea_minicard_ref_child (AtkObject *accessible, gint index) -{ - return NULL; -} - -static void atk_action_interface_init (AtkActionIface *iface) -{ - g_return_if_fail (iface != NULL); - - iface->do_action = atk_action_interface_do_action; - iface->get_n_actions = atk_action_interface_get_n_action; - iface->get_description = atk_action_interface_get_description; - iface->get_name = atk_action_interface_get_name; -} - -static gboolean atk_action_interface_do_action (AtkAction *iface, gint i) -{ - EMinicard *minicard = NULL; - - minicard = E_MINICARD (atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE (iface))); - if( minicard == NULL ) - return FALSE; - - if( i >= G_N_ELEMENTS (action_name) || i < 0 ) - return FALSE; - - switch (i) { - // open card - case 0: - e_minicard_activate_editor (minicard); - break; - default: - return FALSE; - } - - return TRUE; -} - -static gint atk_action_interface_get_n_action (AtkAction *iface) -{ - return G_N_ELEMENTS (action_name); -} - -static G_CONST_RETURN gchar* -atk_action_interface_get_description (AtkAction *iface, gint i) -{ - return atk_action_interface_get_name (iface, i); -} - -static G_CONST_RETURN gchar* -atk_action_interface_get_name (AtkAction *iface, gint i) -{ - if( i >= G_N_ELEMENTS (action_name) || i < 0) - return NULL; - - return action_name[i]; -} - diff --git a/a11y/addressbook/ea-minicard.h b/a11y/addressbook/ea-minicard.h deleted file mode 100644 index 1b09ec6839..0000000000 --- a/a11y/addressbook/ea-minicard.h +++ /dev/null @@ -1,62 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* - * ea-minicard.h - * Copyright (C) 2000 Ximian, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU 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. - * - * Author: Leon Zhang <leon.zhang@sun.com> Sun Microsystem Inc., 2003 - */ -#ifndef __EA_MINICARD_H__ -#define __EA_MINICARD_H__ - -#include <atk/atkgobjectaccessible.h> -#include "e-minicard.h" -#include "e-minicard-label.h" - -#ifdef __cplusplus -extern "C" { -#pragma } -#endif /* __cplusplus */ - -#define EA_TYPE_MINICARD (ea_minicard_get_type ()) -#define EA_MINICARD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EA_TYPE_MINICARD, EaMinicard)) -#define EA_MINICARD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EA_TYPE_MINICARD, EaMiniCardClass)) -#define EA_IS_MINICARD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EA_TYPE_MINICARD)) -#define EA_IS_MINICARD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), EA_TYPE_MINICARD)) - -typedef struct _EaMinicard EaMinicard; -typedef struct _EaMinicardClass EaMinicardClass; - -struct _EaMinicard -{ - AtkGObjectAccessible parent; -}; - - -struct _EaMinicardClass -{ - AtkGObjectAccessibleClass parent_class; -}; - -GType ea_minicard_get_type (void); -AtkObject* ea_minicard_new(GObject *obj); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - - -#endif /* __EA_MINICARD_H__ */ diff --git a/a11y/calendar/.cvsignore b/a11y/calendar/.cvsignore deleted file mode 100644 index 0e1e389af7..0000000000 --- a/a11y/calendar/.cvsignore +++ /dev/null @@ -1,6 +0,0 @@ -Makefile -Makefile.in -Evolution-*.c -Evolution.h -evolution-calendar-*.c -evolution-calendar.h diff --git a/a11y/calendar/Makefile.am b/a11y/calendar/Makefile.am deleted file mode 100644 index 9688fc7ead..0000000000 --- a/a11y/calendar/Makefile.am +++ /dev/null @@ -1,55 +0,0 @@ -# Calendar IDL files - -# for debug -#A11Y_CFLAGS += -pedantic -ansi -DACC_DEBUG -Werror - -privlib_LTLIBRARIES = libevolution-calendar-a11y.la - -INCLUDES = \ - -DG_LOG_DOMAIN=\"evolution-a11y\" \ - -I$(top_srcdir) \ - -I$(top_srcdir)/shell \ - -I$(top_srcdir)/calendar \ - -I$(top_srcdir)/calendar/cal-client \ - -I$(top_srcdir)/calendar/gui \ - -I$(top_srcdir)/widgets \ - -I$(top_srcdir)/widgets/misc \ - -I$(top_srcdir)/a11y \ - -DEVOLUTION_DATADIR=\""$(datadir)"\" \ - -DEVOLUTION_GLADEDIR=\""$(gladedir)"\" \ - -DEVOLUTION_ETSPECDIR=\""$(etspecdir)"\" \ - -DEVOLUTION_IMAGESDIR=\""$(imagesdir)"\" \ - -DEVOLUTION_GALVIEWSDIR=\""$(viewsdir)"\" \ - -DEVOLUTION_UIDIR=\""$(evolutionuidir)"\" \ - -DPREFIX=\""$(prefix)"\" \ - $(A11Y_CFLAGS) \ - $(EVOLUTION_CALENDAR_CFLAGS) - -libevolution_calendar_a11y_la_SOURCES = \ - ea-calendar.c \ - ea-calendar.h \ - ea-calendar-helpers.c \ - ea-calendar-helpers.h \ - ea-cal-view.c \ - ea-cal-view.h \ - ea-cal-view-event.c \ - ea-cal-view-event.h \ - ea-day-view.c \ - ea-day-view.h \ - ea-day-view-main-item.c \ - ea-day-view-main-item.h \ - ea-day-view-cell.c \ - ea-day-view-cell.h \ - ea-week-view.c \ - ea-week-view.h \ - ea-week-view-main-item.c \ - ea-week-view-main-item.h \ - ea-week-view-cell.c \ - ea-week-view-cell.h \ - ea-jump-button.c \ - ea-jump-button.h \ - ea-gnome-calendar.c \ - ea-gnome-calendar.h - -libevolution_calendar_a11y_la_LIBADD = \ - $(top_builddir)/a11y/libevolution-a11y.la diff --git a/a11y/calendar/ea-cal-view-event.c b/a11y/calendar/ea-cal-view-event.c deleted file mode 100644 index cbd53f4ebd..0000000000 --- a/a11y/calendar/ea-cal-view-event.c +++ /dev/null @@ -1,528 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* vim:expandtab:shiftwidth=8:tabstop=8: - */ -/* Evolution Accessibility: ea-cal-view-event.c - * - * Copyright (C) 2003 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003 - * - */ - -#include "ea-cal-view-event.h" -#include "ea-calendar-helpers.h" -#include "ea-day-view.h" -#include "ea-week-view.h" -#include <gal/e-text/e-text.h> -#include <libgnome/gnome-i18n.h> - -static void ea_cal_view_event_class_init (EaCalViewEventClass *klass); - -static G_CONST_RETURN gchar* ea_cal_view_event_get_name (AtkObject *accessible); -static G_CONST_RETURN gchar* ea_cal_view_event_get_description (AtkObject *accessible); -static AtkObject* ea_cal_view_event_get_parent (AtkObject *accessible); -static gint ea_cal_view_event_get_index_in_parent (AtkObject *accessible); - -/* component interface */ -static void atk_component_interface_init (AtkComponentIface *iface); -static void ea_cal_view_get_extents (AtkComponent *component, - gint *x, gint *y, gint *width, gint *height, - AtkCoordType coord_type); -/* action interface */ -static void atk_action_interface_init (AtkActionIface *iface); -static gboolean ea_cal_view_event_do_action (AtkAction *action, gint i); -static gint ea_cal_view_event_get_n_actions (AtkAction *action); -static G_CONST_RETURN gchar* ea_cal_view_event_action_get_name (AtkAction *action, gint i); - - -#ifdef ACC_DEBUG -static gint n_ea_cal_view_event_created = 0, n_ea_cal_view_event_destroyed = 0; -static void ea_cal_view_finalize (GObject *object); -#endif - -static gpointer parent_class = NULL; - -GType -ea_cal_view_event_get_type (void) -{ - static GType type = 0; - AtkObjectFactory *factory; - GTypeQuery query; - GType derived_atk_type; - - - if (!type) { - static GTypeInfo tinfo = { - sizeof (EaCalViewEventClass), - (GBaseInitFunc) NULL, /* base init */ - (GBaseFinalizeFunc) NULL, /* base finalize */ - (GClassInitFunc) ea_cal_view_event_class_init, /* class init */ - (GClassFinalizeFunc) NULL, /* class finalize */ - NULL, /* class data */ - sizeof (EaCalViewEvent), /* instance size */ - 0, /* nb preallocs */ - (GInstanceInitFunc) NULL, /* instance init */ - NULL /* value table */ - }; - - static const GInterfaceInfo atk_component_info = { - (GInterfaceInitFunc) atk_component_interface_init, - (GInterfaceFinalizeFunc) NULL, - NULL - }; - - static const GInterfaceInfo atk_action_info = { - (GInterfaceInitFunc) atk_action_interface_init, - (GInterfaceFinalizeFunc) NULL, - NULL - }; - - - /* - * Figure out the size of the class and instance - * we are run-time deriving from (atk object for E_TEXT, in this case) - */ - - factory = atk_registry_get_factory (atk_get_default_registry (), - E_TYPE_TEXT); - derived_atk_type = atk_object_factory_get_accessible_type (factory); - g_type_query (derived_atk_type, &query); - - tinfo.class_size = query.class_size; - tinfo.instance_size = query.instance_size; - - /* we inherit the component, text and other interfaces from E_TEXT */ - type = g_type_register_static (derived_atk_type, - "EaCalViewEvent", &tinfo, 0); - g_type_add_interface_static (type, ATK_TYPE_COMPONENT, - &atk_component_info); - g_type_add_interface_static (type, ATK_TYPE_ACTION, - &atk_action_info); - - - } - - return type; -} - -static void -ea_cal_view_event_class_init (EaCalViewEventClass *klass) -{ - AtkObjectClass *class = ATK_OBJECT_CLASS (klass); -#ifdef ACC_DEBUG - GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - gobject_class->finalize = ea_cal_view_finalize; -#endif - - parent_class = g_type_class_peek_parent (klass); - - - class->get_name = ea_cal_view_event_get_name; - class->get_description = ea_cal_view_event_get_description; - class->get_parent = ea_cal_view_event_get_parent; - class->get_index_in_parent = ea_cal_view_event_get_index_in_parent; - -} - -#ifdef ACC_DEBUG -static void ea_cal_view_finalize (GObject *object) -{ - ++n_ea_cal_view_event_destroyed; - printf ("ACC_DEBUG: n_ea_cal_view_event_destroyed = %d\n", - n_ea_cal_view_event_destroyed); -} -#endif - -AtkObject* -ea_cal_view_event_new (GObject *obj) -{ - AtkObject *atk_obj = NULL; - GObject *target_obj; - ECalendarView *cal_view; - - g_return_val_if_fail (E_IS_TEXT (obj), NULL); - cal_view = ea_calendar_helpers_get_cal_view_from (GNOME_CANVAS_ITEM (obj)); - if (!cal_view) - return NULL; - - if (E_IS_WEEK_VIEW (cal_view)) { - gint event_num, span_num; - EWeekViewEvent *week_view_event; - EWeekViewEventSpan *event_span; - EWeekView *week_view = E_WEEK_VIEW (cal_view); - - /* for week view, we need to check if a atkobject exists for - * the first span of the same event - */ - if (!e_week_view_find_event_from_item (week_view, - GNOME_CANVAS_ITEM (obj), - &event_num, - &span_num)) - return NULL; - week_view_event = &g_array_index (week_view->events, - EWeekViewEvent, - event_num); - /* get the first span */ - event_span = &g_array_index (week_view->spans, - EWeekViewEventSpan, - week_view_event->spans_index); - target_obj = G_OBJECT (event_span->text_item); - atk_obj = g_object_get_data (target_obj, "accessible-object"); - - } - else - target_obj = obj; - - if (!atk_obj) { - static AtkRole event_role = ATK_ROLE_INVALID; - atk_obj = ATK_OBJECT (g_object_new (EA_TYPE_CAL_VIEW_EVENT, - NULL)); - atk_object_initialize (atk_obj, target_obj); - if (event_role == ATK_ROLE_INVALID) - event_role = atk_role_register ("Calendar Event"); - atk_obj->role = event_role; -#ifdef ACC_DEBUG - ++n_ea_cal_view_event_created; - printf ("ACC_DEBUG: n_ea_cal_view_event_created = %d\n", - n_ea_cal_view_event_created); -#endif - } - - /* the registered factory for E_TEXT is cannot create a EaCalViewEvent, - * we should save the EaCalViewEvent object in it. - */ - g_object_set_data (obj, "accessible-object", atk_obj); - - return atk_obj; -} - -static G_CONST_RETURN gchar* -ea_cal_view_event_get_name (AtkObject *accessible) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - ECalendarViewEvent *event; - gchar *name_string; - gchar *alarm_string, *recur_string, *meeting_string, *summary_string; - const char *summary; - - - g_return_val_if_fail (EA_IS_CAL_VIEW_EVENT (accessible), NULL); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (accessible); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj || !E_IS_TEXT (g_obj)) - return NULL; - event = ea_calendar_helpers_get_cal_view_event_from (GNOME_CANVAS_ITEM(g_obj)); - - alarm_string = recur_string = meeting_string = ""; - if (event && event->comp_data) { - if (e_cal_util_component_has_alarms (event->comp_data->icalcomp)) - alarm_string = _("It has alarms."); - - if (e_cal_util_component_has_recurrences (event->comp_data->icalcomp)) - recur_string = _("It has recurrences."); - - if (e_cal_util_component_has_organizer (event->comp_data->icalcomp)) - meeting_string = _("It is a meeting."); - - } - - summary = icalcomponent_get_summary (event->comp_data->icalcomp); - if (summary) - summary_string = g_strdup_printf (_("Calendar Event: Summary is %s."), summary); - else - summary_string = g_strdup (_("Calendar Event: It has no summary.")); - - name_string = g_strdup_printf ("%s %s %s %s", summary_string, alarm_string, recur_string, meeting_string); - - ATK_OBJECT_CLASS (parent_class)->set_name (accessible, name_string); -#ifdef ACC_DEBUG - printf("EvoAcc: name for event accobj=%p, is %s\n", - (void *)accessible, new_name); -#endif - g_free (name_string); - return accessible->name; -} - -static G_CONST_RETURN gchar* -ea_cal_view_event_get_description (AtkObject *accessible) -{ - if (accessible->description) - return accessible->description; - - return _("calendar view event"); -} - -static AtkObject * -ea_cal_view_event_get_parent (AtkObject *accessible) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - GnomeCanvasItem *canvas_item; - ECalendarView *cal_view; - - g_return_val_if_fail (EA_IS_CAL_VIEW_EVENT (accessible), NULL); - atk_gobj = ATK_GOBJECT_ACCESSIBLE (accessible); - - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (g_obj == NULL) - /* Object is defunct */ - return NULL; - canvas_item = GNOME_CANVAS_ITEM (g_obj); - - cal_view = ea_calendar_helpers_get_cal_view_from (canvas_item); - - if (!cal_view) - return NULL; - - return gtk_widget_get_accessible (GTK_WIDGET (cal_view)); -} - -static gint -ea_cal_view_event_get_index_in_parent (AtkObject *accessible) -{ - GObject *g_obj; - GnomeCanvasItem *canvas_item; - ECalendarView *cal_view; - ECalendarViewEvent *cal_view_event; - - g_return_val_if_fail (EA_IS_CAL_VIEW_EVENT (accessible), -1); - g_obj = atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE(accessible)); - if (!g_obj) - /* defunct object*/ - return -1; - - canvas_item = GNOME_CANVAS_ITEM (g_obj); - cal_view = ea_calendar_helpers_get_cal_view_from (canvas_item); - if (!cal_view) - return -1; - - cal_view_event = ea_calendar_helpers_get_cal_view_event_from (canvas_item); - if (!cal_view_event) - return -1; - - if (E_IS_DAY_VIEW (cal_view)) { - gint day, event_num, num_before; - EDayViewEvent *day_view_event; - EDayView *day_view = E_DAY_VIEW (cal_view); - - /* the long event comes first in the order */ - for (event_num = day_view->long_events->len - 1; event_num >= 0; - --event_num) { - day_view_event = &g_array_index (day_view->long_events, - EDayViewEvent, event_num); - if (cal_view_event == (ECalendarViewEvent*)day_view_event) - return event_num; - - } - num_before = day_view->long_events->len; - - for (day = 0; day < day_view->days_shown; ++day) { - for (event_num = day_view->events[day]->len - 1; event_num >= 0; - --event_num) { - day_view_event = &g_array_index (day_view->events[day], - EDayViewEvent, event_num); - if (cal_view_event == (ECalendarViewEvent*)day_view_event) - return num_before + event_num; - } - num_before += day_view->events[day]->len; - } - } - else if (E_IS_WEEK_VIEW (cal_view)) { - AtkObject *atk_parent, *atk_child; - gint index = 0; - - atk_parent = atk_object_get_parent (accessible); - while ((atk_child = atk_object_ref_accessible_child (atk_parent, - index)) != NULL) { - if (atk_child == accessible) { - g_object_unref (atk_child); - return index; - } - g_object_unref (atk_child); - ++index; - } - } - else { - g_assert_not_reached (); - return -1; - } - return -1; -} - -/* Atk Component Interface */ - -static void -atk_component_interface_init (AtkComponentIface *iface) -{ - g_return_if_fail (iface != NULL); - - iface->get_extents = ea_cal_view_get_extents; -} - -static void -ea_cal_view_get_extents (AtkComponent *component, - gint *x, - gint *y, - gint *width, - gint *height, - AtkCoordType coord_type) -{ - GObject *g_obj; - GnomeCanvasItem *canvas_item; - gint x_window, y_window; - gint scroll_x, scroll_y; - ECalendarView *cal_view; - gint item_x, item_y, item_w, item_h; - GtkWidget *canvas = NULL; - - g_return_if_fail (EA_IS_CAL_VIEW_EVENT (component)); - - g_obj = atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE(component)); - if (!g_obj) - /* defunct object*/ - return; - g_return_if_fail (E_IS_TEXT (g_obj)); - - canvas_item = GNOME_CANVAS_ITEM (g_obj); - cal_view = ea_calendar_helpers_get_cal_view_from (canvas_item); - if (!cal_view) - return; - - if (E_IS_DAY_VIEW (cal_view)) { - gint day, event_num; - - if (!e_day_view_find_event_from_item (E_DAY_VIEW (cal_view), - canvas_item, - &day, &event_num)) - return; - if (day == E_DAY_VIEW_LONG_EVENT) { - gint start_day, end_day; - if (!e_day_view_get_long_event_position (E_DAY_VIEW (cal_view), - event_num, - &start_day, - &end_day, - &item_x, - &item_y, - &item_w, - &item_h)) - return; - canvas = E_DAY_VIEW (cal_view)->top_canvas; - } - else { - if (!e_day_view_get_event_position (E_DAY_VIEW (cal_view), day, - event_num, - &item_x, &item_y, - &item_w, &item_h)) - - return; - canvas = E_DAY_VIEW (cal_view)->main_canvas; - } - } - else if (E_IS_WEEK_VIEW (cal_view)) { - gint event_num, span_num; - if (!e_week_view_find_event_from_item (E_WEEK_VIEW (cal_view), - canvas_item, &event_num, - &span_num)) - return; - - if (!e_week_view_get_span_position (E_WEEK_VIEW (cal_view), - event_num, span_num, - &item_x, &item_y, &item_w)) - return; - item_h = E_WEEK_VIEW_ICON_HEIGHT; - canvas = E_WEEK_VIEW (cal_view)->main_canvas; - } - else - return; - - if (!canvas) - return; - - gdk_window_get_origin (canvas->window, - &x_window, &y_window); - gnome_canvas_get_scroll_offsets (GNOME_CANVAS (canvas), &scroll_x, &scroll_y); - - *x = item_x + x_window - scroll_x; - *y = item_y + y_window - scroll_y; - *width = item_w; - *height = item_h; - - if (coord_type == ATK_XY_WINDOW) { - GdkWindow *window; - gint x_toplevel, y_toplevel; - - window = gdk_window_get_toplevel (GTK_WIDGET (cal_view)->window); - gdk_window_get_origin (window, &x_toplevel, &y_toplevel); - - *x -= x_toplevel; - *y -= y_toplevel; - } - -#ifdef ACC_DEBUG - printf ("Event Bounds (%d, %d, %d, %d)\n", *x, *y, *width, *height); -#endif -} - -#define CAL_VIEW_EVENT_ACTION_NUM 1 - -static const char * action_name [CAL_VIEW_EVENT_ACTION_NUM] = { - N_("Grab Focus") -}; - -static void -atk_action_interface_init (AtkActionIface *iface) -{ - g_return_if_fail (iface != NULL); - - iface->do_action = ea_cal_view_event_do_action; - iface->get_n_actions = ea_cal_view_event_get_n_actions; - iface->get_name = ea_cal_view_event_action_get_name; -} - -static gboolean -ea_cal_view_event_do_action (AtkAction *action, gint i) -{ - AtkGObjectAccessible *atk_gobj; - AtkComponent *atk_comp; - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (action); - - if (i == 0) { - atk_comp = (AtkComponent *)atk_gobj; - return atk_component_grab_focus (atk_comp); - } - - return FALSE; - -} - -static gint -ea_cal_view_event_get_n_actions (AtkAction *action) -{ - return CAL_VIEW_EVENT_ACTION_NUM; -} - -static G_CONST_RETURN gchar* -ea_cal_view_event_action_get_name (AtkAction *action, gint i) -{ - if (i >= 0 && i < CAL_VIEW_EVENT_ACTION_NUM) - return action_name [i]; - return NULL; -} - diff --git a/a11y/calendar/ea-cal-view-event.h b/a11y/calendar/ea-cal-view-event.h deleted file mode 100644 index f139dde9fb..0000000000 --- a/a11y/calendar/ea-cal-view-event.h +++ /dev/null @@ -1,64 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* vim:expandtab:shiftwidth=8:tabstop=8: - */ -/* Evolution Accessibility: ea-cal-view-event.h - * - * Copyright (C) 2003 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003 - * - */ - -#ifndef __EA_CAL_VIEW_EVENT_H__ -#define __EA_CAL_VIEW_EVENT_H__ - -#include <atk/atkgobjectaccessible.h> - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -#define EA_TYPE_CAL_VIEW_EVENT (ea_cal_view_event_get_type ()) -#define EA_CAL_VIEW_EVENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EA_TYPE_CAL_VIEW_EVENT, EaCalViewEvent)) -#define EA_CAL_VIEW_EVENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EA_TYPE_CAL_VIEW_EVENT, EaCalViewEventClass)) -#define EA_IS_CAL_VIEW_EVENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EA_TYPE_CAL_VIEW_EVENT)) -#define EA_IS_CAL_VIEW_EVENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EA_TYPE_CAL_VIEW_EVENT)) -#define EA_CAL_VIEW_EVENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EA_TYPE_CAL_VIEW_EVENT, EaCalViewEventClass)) - -typedef struct _EaCalViewEvent EaCalViewEvent; -typedef struct _EaCalViewEventClass EaCalViewEventClass; - -struct _EaCalViewEvent -{ - AtkGObjectAccessible parent; -}; - -GType ea_cal_view_event_get_type (void); - -struct _EaCalViewEventClass -{ - AtkGObjectAccessibleClass parent_class; -}; - -AtkObject *ea_cal_view_event_new (GObject *obj); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - - -#endif /* __EA_CAL_VIEW_EVENT_H__ */ diff --git a/a11y/calendar/ea-cal-view.c b/a11y/calendar/ea-cal-view.c deleted file mode 100644 index 31400ca2da..0000000000 --- a/a11y/calendar/ea-cal-view.c +++ /dev/null @@ -1,441 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* vim:expandtab:shiftwidth=8:tabstop=8: - */ -/* Evolution Accessibility: ea-cal-view.c - * - * Copyright (C) 2003 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003 - * - */ - -#include "ea-cal-view.h" -#include "ea-calendar-helpers.h" -#include "e-day-view.h" -#include "e-week-view.h" -#include "calendar-commands.h" -#include "goto.h" -#include <glib/gstrfuncs.h> -#include <libgnome/gnome-i18n.h> - -static void ea_cal_view_class_init (EaCalViewClass *klass); - -static AtkObject* ea_cal_view_get_parent (AtkObject *accessible); -static void ea_cal_view_real_initialize (AtkObject *accessible, gpointer data); - -static void ea_cal_view_event_changed_cb (ECalendarView *cal_view, - ECalendarViewEvent *event, gpointer data); -static void ea_cal_view_event_added_cb (ECalendarView *cal_view, - ECalendarViewEvent *event, gpointer data); - -static gboolean idle_dates_changed (gpointer data); -static void ea_cal_view_dates_change_cb (GnomeCalendar *gcal, gpointer data); - -static void atk_action_interface_init (AtkActionIface *iface); -static gboolean action_interface_do_action (AtkAction *action, gint i); -static gint action_interface_get_n_actions (AtkAction *action); -static G_CONST_RETURN gchar* -action_interface_get_description(AtkAction *action, gint i); -static G_CONST_RETURN gchar* -action_interface_get_keybinding (AtkAction *action, gint i); -static G_CONST_RETURN gchar* -action_interface_action_get_name(AtkAction *action, gint i); - -static gpointer parent_class = NULL; - -GType -ea_cal_view_get_type (void) -{ - static GType type = 0; - AtkObjectFactory *factory; - GTypeQuery query; - GType derived_atk_type; - - if (!type) { - static GTypeInfo tinfo = { - sizeof (EaCalViewClass), - (GBaseInitFunc) NULL, /* base init */ - (GBaseFinalizeFunc) NULL, /* base finalize */ - (GClassInitFunc) ea_cal_view_class_init, /* class init */ - (GClassFinalizeFunc) NULL, /* class finalize */ - NULL, /* class data */ - sizeof (EaCalView), /* instance size */ - 0, /* nb preallocs */ - (GInstanceInitFunc) NULL, /* instance init */ - NULL /* value table */ - }; - - static const GInterfaceInfo atk_action_info = { - (GInterfaceInitFunc) atk_action_interface_init, - (GInterfaceFinalizeFunc) NULL, - NULL - }; - - /* - * Figure out the size of the class and instance - * we are run-time deriving from (GailWidget, in this case) - */ - - factory = atk_registry_get_factory (atk_get_default_registry (), - GTK_TYPE_WIDGET); - derived_atk_type = atk_object_factory_get_accessible_type (factory); - g_type_query (derived_atk_type, &query); - - tinfo.class_size = query.class_size; - tinfo.instance_size = query.instance_size; - - type = g_type_register_static (derived_atk_type, - "EaCalView", &tinfo, 0); - g_type_add_interface_static (type, ATK_TYPE_ACTION, - &atk_action_info); - } - - return type; -} - -static void -ea_cal_view_class_init (EaCalViewClass *klass) -{ - AtkObjectClass *class = ATK_OBJECT_CLASS (klass); - - parent_class = g_type_class_peek_parent (klass); - - class->get_parent = ea_cal_view_get_parent; - class->initialize = ea_cal_view_real_initialize; -} - -AtkObject* -ea_cal_view_new (GtkWidget *widget) -{ - GObject *object; - AtkObject *accessible; - - g_return_val_if_fail (E_IS_CALENDAR_VIEW (widget), NULL); - - object = g_object_new (EA_TYPE_CAL_VIEW, NULL); - - accessible = ATK_OBJECT (object); - atk_object_initialize (accessible, widget); - - return accessible; -} - -static void -ea_cal_view_real_initialize (AtkObject *accessible, gpointer data) -{ - ECalendarView *cal_view; - GnomeCalendar *gcal; - static AtkRole role = ATK_ROLE_INVALID; - - g_return_if_fail (EA_IS_CAL_VIEW (accessible)); - g_return_if_fail (E_IS_CALENDAR_VIEW (data)); - - ATK_OBJECT_CLASS (parent_class)->initialize (accessible, data); - if (role == ATK_ROLE_INVALID) - role = atk_role_register ("Calendar View"); - accessible->role = role; - cal_view = E_CALENDAR_VIEW (data); - - /* add listener for event_changed, event_added - * we don't need to listen on event_removed. When the e_text - * of the event is removed, the cal_view_event will go to the state - * of "defunct" (changed by weak ref callback of atkgobjectaccessible - */ - g_signal_connect (G_OBJECT(cal_view), "event_changed", - G_CALLBACK (ea_cal_view_event_changed_cb), NULL); - g_signal_connect (G_OBJECT(cal_view), "event_added", - G_CALLBACK (ea_cal_view_event_added_cb), NULL); - - /* listen for date changes of calendar */ - gcal = e_calendar_view_get_calendar (cal_view); - - if (gcal) - g_signal_connect (gcal, "dates_shown_changed", - G_CALLBACK (ea_cal_view_dates_change_cb), - accessible); -} - -static AtkObject* -ea_cal_view_get_parent (AtkObject *accessible) -{ - ECalendarView *cal_view; - GnomeCalendar *gnomeCalendar; - - g_return_val_if_fail (EA_IS_CAL_VIEW (accessible), NULL); - - if (!GTK_ACCESSIBLE (accessible)->widget) - return NULL; - cal_view = E_CALENDAR_VIEW (GTK_ACCESSIBLE (accessible)->widget); - - gnomeCalendar = e_calendar_view_get_calendar (cal_view); - - return gtk_widget_get_accessible (GTK_WIDGET(gnomeCalendar)); -} - -static void -ea_cal_view_event_changed_cb (ECalendarView *cal_view, ECalendarViewEvent *event, - gpointer data) -{ - AtkObject *atk_obj; - EaCalView *ea_cal_view; - AtkObject *event_atk_obj = NULL; - - g_return_if_fail (E_IS_CALENDAR_VIEW (cal_view)); - - atk_obj = gtk_widget_get_accessible (GTK_WIDGET(cal_view)); - if (!EA_IS_CAL_VIEW (atk_obj)) - return; - ea_cal_view = EA_CAL_VIEW (atk_obj); - - if ((E_IS_DAY_VIEW (cal_view)) && event && event->canvas_item) { - event_atk_obj = - ea_calendar_helpers_get_accessible_for (event->canvas_item); - } - else if ((E_IS_WEEK_VIEW (cal_view)) && event) { - EWeekViewEventSpan *span; - EWeekViewEvent *week_view_event = (EWeekViewEvent *)event; - EWeekView *week_view = E_WEEK_VIEW (cal_view); - /* get the first span of the event */ - span = &g_array_index (week_view->spans, EWeekViewEventSpan, - week_view_event->spans_index); - if (span && span->text_item) - event_atk_obj = ea_calendar_helpers_get_accessible_for (span->text_item); - } - if (event_atk_obj) { -#ifdef ACC_DEBUG - printf ("AccDebug: event=%p changed\n", (void *)event); -#endif - g_object_notify (G_OBJECT(event_atk_obj), "accessible-name"); - g_signal_emit_by_name (event_atk_obj, "visible_data_changed"); - } - -} - -static void -ea_cal_view_event_added_cb (ECalendarView *cal_view, ECalendarViewEvent *event, - gpointer data) -{ - AtkObject *atk_obj; - EaCalView *ea_cal_view; - AtkObject *event_atk_obj = NULL; - gint index; - - g_return_if_fail (E_IS_CALENDAR_VIEW (cal_view)); - - atk_obj = gtk_widget_get_accessible (GTK_WIDGET(cal_view)); - if (!EA_IS_CAL_VIEW (atk_obj)) - return; - ea_cal_view = EA_CAL_VIEW (atk_obj); - - if ((E_IS_DAY_VIEW (cal_view)) && event && event->canvas_item) { - event_atk_obj = - ea_calendar_helpers_get_accessible_for (event->canvas_item); - } - else if ((E_IS_WEEK_VIEW (cal_view)) && event) { - EWeekViewEventSpan *span; - EWeekViewEvent *week_view_event = (EWeekViewEvent *)event; - EWeekView *week_view = E_WEEK_VIEW (cal_view); - /* get the first span of the event */ - span = &g_array_index (week_view->spans, EWeekViewEventSpan, - week_view_event->spans_index); - if (span && span->text_item) - event_atk_obj = ea_calendar_helpers_get_accessible_for (span->text_item); - - } - if (event_atk_obj) { - index = atk_object_get_index_in_parent (event_atk_obj); - if (index < 0) - return; -#ifdef ACC_DEBUG - printf ("AccDebug: event=%p added\n", (void *)event); -#endif - g_signal_emit_by_name (atk_obj, "children_changed::add", - index, event_atk_obj, NULL); - } -} - -static gboolean -idle_dates_changed (gpointer data) -{ - AtkObject *ea_cal_view; - - g_return_val_if_fail (data, FALSE); - g_return_val_if_fail (EA_IS_CAL_VIEW (data), FALSE); - - ea_cal_view = ATK_OBJECT(data); - - if (ea_cal_view->name) { - g_free (ea_cal_view->name); - ea_cal_view->name = NULL; - } - g_object_notify (G_OBJECT (ea_cal_view), "accessible-name"); - g_signal_emit_by_name (ea_cal_view, "visible_data_changed"); - g_signal_emit_by_name (ea_cal_view, "children_changed", NULL); -#ifdef ACC_DEBUG - printf ("AccDebug: cal view date changed\n"); -#endif - - return FALSE; -} - -static void -ea_cal_view_dates_change_cb (GnomeCalendar *gcal, gpointer data) -{ - g_idle_add (idle_dates_changed, data); -} - -/* atk action interface */ - -#define CAL_VIEW_ACTION_NUM 5 - -static const char * action_name [CAL_VIEW_ACTION_NUM] = { - N_("New Appointment"), - N_("New All Day Event"), - N_("New Meeting"), - N_("Go to Today"), - N_("Go to Date") -}; - -static void -atk_action_interface_init (AtkActionIface *iface) -{ - g_return_if_fail (iface != NULL); - - iface->do_action = action_interface_do_action; - iface->get_n_actions = action_interface_get_n_actions; - iface->get_description = action_interface_get_description; - iface->get_keybinding = action_interface_get_keybinding; - iface->get_name = action_interface_action_get_name; -} - -static gboolean -action_interface_do_action (AtkAction *action, gint index) -{ - GtkWidget *widget; - gboolean return_value = TRUE; - time_t dtstart, dtend; - ECalendarView *cal_view; - - widget = GTK_ACCESSIBLE (action)->widget; - if (widget == NULL) - /* - * State is defunct - */ - return FALSE; - - if (!GTK_WIDGET_IS_SENSITIVE (widget) || !GTK_WIDGET_VISIBLE (widget)) - return FALSE; - - cal_view = E_CALENDAR_VIEW (widget); - switch (index) { - case 0: - /* New Appointment */ - e_calendar_view_new_appointment (cal_view); - break; - case 1: - /* New All Day Event */ - e_calendar_view_get_selected_time_range (cal_view, - &dtstart, &dtend); - e_calendar_view_new_appointment_for (cal_view, - dtstart, dtend, TRUE, FALSE); - break; - case 2: - /* New Meeting */ - e_calendar_view_get_selected_time_range (cal_view, - &dtstart, &dtend); - e_calendar_view_new_appointment_for (cal_view, - dtstart, dtend, FALSE, TRUE); - break; - case 3: - /* Go to today */ - break; - calendar_goto_today (e_calendar_view_get_calendar (cal_view)); - case 4: - /* Go to date */ - goto_dialog (e_calendar_view_get_calendar (cal_view)); - break; - default: - return_value = FALSE; - break; - } - return return_value; -} - -static gint -action_interface_get_n_actions (AtkAction *action) -{ - return CAL_VIEW_ACTION_NUM; -} - -static G_CONST_RETURN gchar* -action_interface_get_description(AtkAction *action, gint index) -{ - return action_interface_action_get_name (action, index); -} - -static G_CONST_RETURN gchar* -action_interface_get_keybinding (AtkAction *action, gint index) -{ - GtkWidget *widget; - EaCalView *ea_cal_view; - - widget = GTK_ACCESSIBLE (action)->widget; - if (widget == NULL) - /* - * State is defunct - */ - return NULL; - - if (!GTK_WIDGET_IS_SENSITIVE (widget) || !GTK_WIDGET_VISIBLE (widget)) - return FALSE; - - ea_cal_view = EA_CAL_VIEW (action); - - switch (index) { - case 0: - /* New Appointment */ - return "<Alt>fna;<Control>n"; - break; - case 1: - /* New Event */ - return "<Alt>fnd;<Shift><Control>d"; - break; - case 2: - /* New Meeting */ - return "<Alt>fne;<Shift><Control>e"; - break; - case 3: - /* Go to today */ - return "<Alt>vt;<Alt><Control>t"; - break; - case 4: - /* Go to date */ - return "<Alt>vd;<Alt><Control>g"; - break; - default: - break; - } - return NULL; -} - -static G_CONST_RETURN gchar* -action_interface_action_get_name(AtkAction *action, gint i) -{ - if (i >= 0 && i < CAL_VIEW_ACTION_NUM) - return action_name [i]; - return NULL; -} diff --git a/a11y/calendar/ea-cal-view.h b/a11y/calendar/ea-cal-view.h deleted file mode 100644 index 193bb3a3cb..0000000000 --- a/a11y/calendar/ea-cal-view.h +++ /dev/null @@ -1,64 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* vim:expandtab:shiftwidth=8:tabstop=8: - */ -/* Evolution Accessibility: ea-cal-view.h - * - * Copyright (C) 2003 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003 - * - */ - -#ifndef __EA_CAL_VIEW_H__ -#define __EA_CAL_VIEW_H__ - -#include <gtk/gtkaccessible.h> -#include "e-calendar-view.h" - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -#define EA_TYPE_CAL_VIEW (ea_cal_view_get_type ()) -#define EA_CAL_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EA_TYPE_CAL_VIEW, EaCalView)) -#define EA_CAL_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EA_TYPE_CAL_VIEW, EaCalViewClass)) -#define EA_IS_CAL_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EA_TYPE_CAL_VIEW)) -#define EA_IS_CAL_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EA_TYPE_CAL_VIEW)) -#define EA_CAL_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EA_TYPE_CAL_VIEW, EaCalViewClass)) - -typedef struct _EaCalView EaCalView; -typedef struct _EaCalViewClass EaCalViewClass; - -struct _EaCalView -{ - GtkAccessible parent; -}; - -GType ea_cal_view_get_type (void); - -struct _EaCalViewClass -{ - GtkAccessibleClass parent_class; -}; - -AtkObject* ea_cal_view_new (GtkWidget *widget); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __EA_CAL_VIEW_H__ */ diff --git a/a11y/calendar/ea-calendar-helpers.c b/a11y/calendar/ea-calendar-helpers.c deleted file mode 100644 index ff3a502a67..0000000000 --- a/a11y/calendar/ea-calendar-helpers.c +++ /dev/null @@ -1,159 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* vim:expandtab:shiftwidth=8:tabstop=8: - */ -/* Evolution Accessibility: ea-calendar-helpers.c - * - * Copyright (C) 2003 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003 - * - */ - -#include "ea-calendar-helpers.h" -#include "ea-cal-view-event.h" -#include "ea-jump-button.h" -#include "e-day-view.h" -#include "e-week-view.h" - -#include <gal/e-text/e-text.h> -#include <libgnomecanvas/gnome-canvas-pixbuf.h> - -/** - * ea_calendar_helpers_get_accessible_for - * @canvas_item: the canvas item for a event or a jump button - * @returns: the atk object for the canvas_item - * - **/ -AtkObject * -ea_calendar_helpers_get_accessible_for (GnomeCanvasItem *canvas_item) -{ - AtkObject *atk_obj = NULL; - GObject *g_obj; - - g_return_val_if_fail ((E_IS_TEXT (canvas_item)) || (GNOME_IS_CANVAS_ITEM (canvas_item)), NULL);; - - g_obj = G_OBJECT (canvas_item); - /* we cannot use atk_gobject_accessible_for_object here, - * EaDayViewEvent/EaWeekViewEvent cannot be created by the - * registered facotry of E_TEXT - */ - atk_obj = g_object_get_data (g_obj, "accessible-object"); - if (!atk_obj) { - if (E_IS_TEXT (canvas_item)) { - atk_obj = ea_cal_view_event_new (g_obj); - } - else if (GNOME_IS_CANVAS_PIXBUF(canvas_item)) { - atk_obj = ea_jump_button_new (g_obj); - } - else - return NULL; - } - return atk_obj; -} - -/** - * ea_calendar_helpers_get_view_widget_from: - * @canvas_item: the canvas item for a event or a jump button - * @returns: the cal view widget if exists - * - * Get the cal view widget contains the canvas_item. - * - **/ -ECalendarView * -ea_calendar_helpers_get_cal_view_from (GnomeCanvasItem *canvas_item) -{ - GnomeCanvas *canvas; - GtkWidget *view_widget = NULL; - - g_return_val_if_fail (canvas_item, NULL); - g_return_val_if_fail ((E_IS_TEXT (canvas_item)) || (GNOME_IS_CANVAS_ITEM (canvas_item)), NULL); - - /* canvas_item is the e_text for the event */ - /* canvas_item->canvas is the ECanvas for day view */ - /* parent of canvas_item->canvas is the EDayView or EWeekView widget */ - canvas = canvas_item->canvas; - view_widget = gtk_widget_get_parent (GTK_WIDGET(canvas)); - if (!view_widget || !E_IS_CALENDAR_VIEW (view_widget)) - return NULL; - - return E_CALENDAR_VIEW (view_widget); -} - -/** - * ea_calendar_helpers_get_cal_view_event_from - * @canvas_item: the cavas_item (e_text) for the event - * @returns: the ECalendarViewEvent - * - * Get the ECalendarViewEvent for the canvas_item. - * - **/ -ECalendarViewEvent * -ea_calendar_helpers_get_cal_view_event_from (GnomeCanvasItem *canvas_item) -{ - ECalendarView *cal_view; - gboolean event_found; - ECalendarViewEvent *cal_view_event; - - g_return_val_if_fail (E_IS_TEXT (canvas_item), NULL); - - cal_view = ea_calendar_helpers_get_cal_view_from (canvas_item); - - if (!cal_view) - return NULL; - - if (E_IS_DAY_VIEW (cal_view)) { - gint event_day, event_num; - EDayViewEvent *day_view_event; - EDayView *day_view = E_DAY_VIEW (cal_view); - event_found = e_day_view_find_event_from_item (day_view, canvas_item, - &event_day, &event_num); - if (!event_found) - return NULL; - if (event_day == E_DAY_VIEW_LONG_EVENT) { - /* a long event */ - day_view_event = &g_array_index (day_view->long_events, - EDayViewEvent, event_num); - } - else { - /* a main canvas event */ - day_view_event = &g_array_index (day_view->events[event_day], - EDayViewEvent, event_num); - } - cal_view_event = (ECalendarViewEvent *) day_view_event; - } - else if (E_IS_WEEK_VIEW (cal_view)) { - gint event_num, span_num; - EWeekViewEvent *week_view_event; - EWeekView *week_view = E_WEEK_VIEW (cal_view); - event_found = e_week_view_find_event_from_item (week_view, - canvas_item, - &event_num, - &span_num); - if (!event_found) - return NULL; - - week_view_event = &g_array_index (week_view->events, EWeekViewEvent, - event_num); - - cal_view_event = (ECalendarViewEvent *)week_view_event; - } - else { - g_assert_not_reached (); - return NULL; - } - return cal_view_event; -} diff --git a/a11y/calendar/ea-calendar-helpers.h b/a11y/calendar/ea-calendar-helpers.h deleted file mode 100644 index 50d997d91d..0000000000 --- a/a11y/calendar/ea-calendar-helpers.h +++ /dev/null @@ -1,43 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* vim:expandtab:shiftwidth=8:tabstop=8: - */ -/* Evolution Accessibility: ea-calendar-helpers.h - * - * Copyright (C) 2003 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003 - * - */ - -/* Evolution Accessibility - */ - -#ifndef _EA_CALENDAR_HELPERS_H__ -#define _EA_CALENDAR_HELPERS_H__ - -#include "ea-cal-view.h" - -AtkObject * -ea_calendar_helpers_get_accessible_for (GnomeCanvasItem *canvas_item); - -ECalendarView * -ea_calendar_helpers_get_cal_view_from (GnomeCanvasItem *canvas_item); - -ECalendarViewEvent * -ea_calendar_helpers_get_cal_view_event_from (GnomeCanvasItem *canvas_item); - -#endif /* _EA_CALENDAR_HELPERS_H__ */ diff --git a/a11y/calendar/ea-calendar.c b/a11y/calendar/ea-calendar.c deleted file mode 100644 index f2510bbcf9..0000000000 --- a/a11y/calendar/ea-calendar.c +++ /dev/null @@ -1,195 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* vim:expandtab:shiftwidth=8:tabstop=8: - */ -/* Evolution Accessibility: ea-calendar.c - * - * Copyright (C) 2003 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003 - * - */ - -#include <gal/e-text/e-text.h> -#include <libgnomecanvas/gnome-canvas-pixbuf.h> -#include "ea-calendar-helpers.h" -#include "ea-factory.h" -#include "ea-calendar.h" - -#include "calendar/ea-cal-view.h" -#include "calendar/ea-cal-view-event.h" -#include "calendar/ea-day-view.h" -#include "calendar/ea-day-view-main-item.h" -#include "calendar/ea-week-view.h" -#include "calendar/ea-week-view-main-item.h" -#include "calendar/ea-gnome-calendar.h" - - -EA_FACTORY (EA_TYPE_CAL_VIEW, ea_cal_view, ea_cal_view_new) -EA_FACTORY (EA_TYPE_DAY_VIEW, ea_day_view, ea_day_view_new) -EA_FACTORY_GOBJECT (EA_TYPE_DAY_VIEW_MAIN_ITEM, ea_day_view_main_item, ea_day_view_main_item_new) -EA_FACTORY (EA_TYPE_WEEK_VIEW, ea_week_view, ea_week_view_new) -EA_FACTORY_GOBJECT (EA_TYPE_WEEK_VIEW_MAIN_ITEM, ea_week_view_main_item, ea_week_view_main_item_new) -EA_FACTORY (EA_TYPE_GNOME_CALENDAR, ea_gnome_calendar, ea_gnome_calendar_new) - -static gboolean ea_calendar_focus_watcher (GSignalInvocationHint *ihint, - guint n_param_values, - const GValue *param_values, - gpointer data); - -void -gnome_calendar_a11y_init (void) -{ - EA_SET_FACTORY (gnome_calendar_get_type(), ea_gnome_calendar); - /* we only add focus watcher when accessibility is enabled - */ - if (atk_get_root ()) { - g_signal_add_emission_hook (g_signal_lookup ("event", E_TYPE_TEXT), - 0, ea_calendar_focus_watcher, - NULL, (GDestroyNotify) NULL); - g_signal_add_emission_hook (g_signal_lookup ("event", GNOME_TYPE_CANVAS_PIXBUF), - 0, ea_calendar_focus_watcher, - NULL, (GDestroyNotify) NULL); - g_signal_add_emission_hook (g_signal_lookup ("event-after", - e_day_view_get_type()), - 0, ea_calendar_focus_watcher, - NULL, (GDestroyNotify) NULL); - g_signal_add_emission_hook (g_signal_lookup ("event", - e_day_view_main_item_get_type()), - 0, ea_calendar_focus_watcher, - NULL, (GDestroyNotify) NULL); - g_signal_add_emission_hook (g_signal_lookup ("event-after", - e_week_view_get_type()), - 0, ea_calendar_focus_watcher, - NULL, (GDestroyNotify) NULL); - g_signal_add_emission_hook (g_signal_lookup ("event", - e_week_view_main_item_get_type()), - 0, ea_calendar_focus_watcher, - NULL, (GDestroyNotify) NULL); - - } -} - -void -e_cal_view_a11y_init (void) -{ - EA_SET_FACTORY (e_cal_view_get_type(), ea_cal_view); -} - -void -e_day_view_a11y_init (void) -{ - EA_SET_FACTORY (e_day_view_get_type(), ea_day_view); -} - -void -e_day_view_main_item_a11y_init (void) -{ - EA_SET_FACTORY (e_day_view_main_item_get_type (), ea_day_view_main_item); -} - -void -e_week_view_a11y_init (void) -{ - EA_SET_FACTORY (e_week_view_get_type(), ea_week_view); -} - -void -e_week_view_main_item_a11y_init (void) -{ - EA_SET_FACTORY (e_week_view_main_item_get_type (), ea_week_view_main_item); -} - -gboolean -ea_calendar_focus_watcher (GSignalInvocationHint *ihint, - guint n_param_values, - const GValue *param_values, - gpointer data) -{ - GObject *object; - GdkEvent *event; - AtkObject *ea_event = NULL; - - object = g_value_get_object (param_values + 0); - event = g_value_get_boxed (param_values + 1); - - if ((E_IS_TEXT (object)) || (GNOME_IS_CANVAS_PIXBUF (object))) { - /* "event" signal on canvas item - */ - GnomeCanvasItem *canvas_item; - - canvas_item = GNOME_CANVAS_ITEM (object); - if (event->type == GDK_FOCUS_CHANGE) { - if (event->focus_change.in) { - ea_event = - ea_calendar_helpers_get_accessible_for (canvas_item); - if (!ea_event) - /* not canvas item we want */ - return TRUE; - - } - atk_focus_tracker_notify (ea_event); - } - } - else if (E_IS_DAY_VIEW (object)) { - EDayView *day_view = E_DAY_VIEW (object); - if (event->type == GDK_FOCUS_CHANGE) { - if (event->focus_change.in) { - /* give main item chance to emit focus */ - gnome_canvas_item_grab_focus (day_view->main_canvas_item); - } - } - } - else if (E_IS_DAY_VIEW_MAIN_ITEM (object)) { - if (event->type == GDK_FOCUS_CHANGE) { - if (event->focus_change.in) { - /* we should emit focus on main item */ - ea_event = atk_gobject_accessible_for_object (object); - } - else - /* focus out */ - ea_event = NULL; -#ifdef ACC_DEBUG - printf ("EvoAcc: focus notify on day main item %p\n", (void *)object); -#endif - atk_focus_tracker_notify (ea_event); - } - } else if (E_IS_WEEK_VIEW (object)) { - EWeekView *week_view = E_WEEK_VIEW (object); - if (event->type == GDK_FOCUS_CHANGE) { - if (event->focus_change.in) { - /* give main item chance to emit focus */ - gnome_canvas_item_grab_focus (week_view->main_canvas_item); - } - } - } - else if (E_IS_WEEK_VIEW_MAIN_ITEM (object)) { - if (event->type == GDK_FOCUS_CHANGE) { - if (event->focus_change.in) { - /* we should emit focus on main item */ - ea_event = atk_gobject_accessible_for_object (object); - } - else - /* focus out */ - ea_event = NULL; -#ifdef ACC_DEBUG - printf ("EvoAcc: focus notify on week main item %p\n", (void *)object); -#endif - atk_focus_tracker_notify (ea_event); - } - } - return TRUE; -} diff --git a/a11y/calendar/ea-calendar.h b/a11y/calendar/ea-calendar.h deleted file mode 100644 index 92bb80a962..0000000000 --- a/a11y/calendar/ea-calendar.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* vim:expandtab:shiftwidth=8:tabstop=8: - */ -/* Evolution Accessibility: ea-calendar.h - * - * Copyright (C) 2003 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003 - * - */ - -/* Evolution Accessibility -*/ - -#ifndef _EA_CALENDAR_H__ -#define _EA_CALENDAR_H__ - -void gnome_calendar_a11y_init (void); -void e_cal_view_a11y_init (void); -void e_day_view_a11y_init (void); -void e_day_view_main_item_a11y_init (void); -void e_week_view_a11y_init (void); -void e_week_view_main_item_a11y_init (void); - -#endif /* _EA_CALENDAR_H__ */ diff --git a/a11y/calendar/ea-day-view-cell.c b/a11y/calendar/ea-day-view-cell.c deleted file mode 100644 index 5b1f81ae1a..0000000000 --- a/a11y/calendar/ea-day-view-cell.c +++ /dev/null @@ -1,396 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* vim:expandtab:shiftwidth=8:tabstop=8: - */ -/* Evolution Accessibility: ea-day-view-cell.c - * - * Copyright (C) 2003 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003 - * - */ - -#include "ea-day-view-cell.h" -#include "ea-day-view-main-item.h" -#include "ea-day-view.h" -#include "ea-factory.h" - -/* EDayViewCell */ - -static void e_day_view_cell_class_init (EDayViewCellClass *class); - -EA_FACTORY_GOBJECT (EA_TYPE_DAY_VIEW_CELL, ea_day_view_cell, ea_day_view_cell_new) - -GType -e_day_view_cell_get_type (void) -{ - static GType type = 0; - - if (!type) { - static GTypeInfo tinfo = { - sizeof (EDayViewCellClass), - (GBaseInitFunc) NULL, /* base init */ - (GBaseFinalizeFunc) NULL, /* base finalize */ - (GClassInitFunc) e_day_view_cell_class_init, /* class init */ - (GClassFinalizeFunc) NULL, /* class finalize */ - NULL, /* class data */ - sizeof (EDayViewCell), /* instance size */ - 0, /* nb preallocs */ - (GInstanceInitFunc) NULL, /* instance init */ - NULL /* value table */ - }; - - type = g_type_register_static (G_TYPE_OBJECT, - "EDayViewCell", &tinfo, 0); - } - - return type; -} - -static void -e_day_view_cell_class_init (EDayViewCellClass *class) -{ - EA_SET_FACTORY (e_day_view_cell_get_type (), ea_day_view_cell); -} - -EDayViewCell * -e_day_view_cell_new (EDayView *day_view, gint row, gint column) -{ - GObject *object; - EDayViewCell *cell; - - g_return_val_if_fail (E_IS_DAY_VIEW (day_view), NULL); - - object = g_object_new (E_TYPE_DAY_VIEW_CELL, NULL); - cell = E_DAY_VIEW_CELL (object); - cell->day_view = day_view; - cell->row = row; - cell->column = column; - -#ifdef ACC_DEBUG - printf ("EvoAcc: e_day_view_cell created %p\n", (void *)cell); -#endif - - return cell; -} - -/* EaDayViewCell */ - -static void ea_day_view_cell_class_init (EaDayViewCellClass *klass); - -static G_CONST_RETURN gchar* ea_day_view_cell_get_name (AtkObject *accessible); -static G_CONST_RETURN gchar* ea_day_view_cell_get_description (AtkObject *accessible); -static AtkStateSet* ea_day_view_cell_ref_state_set (AtkObject *obj); -static AtkObject * ea_day_view_cell_get_parent (AtkObject *accessible); -static gint ea_day_view_cell_get_index_in_parent (AtkObject *accessible); - -/* component interface */ -static void atk_component_interface_init (AtkComponentIface *iface); -static void component_interface_get_extents (AtkComponent *component, - gint *x, gint *y, - gint *width, gint *height, - AtkCoordType coord_type); -static gboolean component_interface_grab_focus (AtkComponent *component); - -static gpointer parent_class = NULL; - -#ifdef ACC_DEBUG -static gint n_ea_day_view_cell_created = 0, n_ea_day_view_cell_destroyed = 0; -static void ea_day_view_cell_finalize (GObject *object); -#endif - -GType -ea_day_view_cell_get_type (void) -{ - static GType type = 0; - - if (!type) { - static GTypeInfo tinfo = { - sizeof (EaDayViewCellClass), - (GBaseInitFunc) NULL, /* base init */ - (GBaseFinalizeFunc) NULL, /* base finalize */ - (GClassInitFunc) ea_day_view_cell_class_init, /* class init */ - (GClassFinalizeFunc) NULL, /* class finalize */ - NULL, /* class data */ - sizeof (EaDayViewCell), /* instance size */ - 0, /* nb preallocs */ - (GInstanceInitFunc) NULL, /* instance init */ - NULL /* value table */ - }; - - static const GInterfaceInfo atk_component_info = { - (GInterfaceInitFunc) atk_component_interface_init, - (GInterfaceFinalizeFunc) NULL, - NULL - }; - - type = g_type_register_static (ATK_TYPE_GOBJECT_ACCESSIBLE, - "EaDayViewCell", &tinfo, 0); - g_type_add_interface_static (type, ATK_TYPE_COMPONENT, - &atk_component_info); - } - - return type; -} - -static void -ea_day_view_cell_class_init (EaDayViewCellClass *klass) -{ - AtkObjectClass *class = ATK_OBJECT_CLASS (klass); - -#ifdef ACC_DEBUG - GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - gobject_class->finalize = ea_day_view_cell_finalize; -#endif - - parent_class = g_type_class_peek_parent (klass); - - class->get_name = ea_day_view_cell_get_name; - class->get_description = ea_day_view_cell_get_description; - class->ref_state_set = ea_day_view_cell_ref_state_set; - - class->get_parent = ea_day_view_cell_get_parent; - class->get_index_in_parent = ea_day_view_cell_get_index_in_parent; -} - -AtkObject* -ea_day_view_cell_new (GObject *obj) -{ - gpointer object; - AtkObject *atk_object; - - g_return_val_if_fail (E_IS_DAY_VIEW_CELL (obj), NULL); - - object = g_object_new (EA_TYPE_DAY_VIEW_CELL, NULL); - atk_object = ATK_OBJECT (object); - atk_object_initialize (atk_object, obj); - atk_object->role = ATK_ROLE_UNKNOWN; - -#ifdef ACC_DEBUG - ++n_ea_day_view_cell_created; - printf ("ACC_DEBUG: n_ea_day_view_cell_created = %d\n", - n_ea_day_view_cell_created); -#endif - return atk_object; -} - -#ifdef ACC_DEBUG -static void ea_day_view_cell_finalize (GObject *object) -{ - ++n_ea_day_view_cell_destroyed; - printf ("ACC_DEBUG: n_ea_day_view_cell_destroyed = %d\n", - n_ea_day_view_cell_destroyed); -} -#endif - -static G_CONST_RETURN gchar* -ea_day_view_cell_get_name (AtkObject *accessible) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EDayViewCell *cell; - - g_return_val_if_fail (EA_IS_DAY_VIEW_CELL (accessible), NULL); - - if (!accessible->name) { - AtkObject *ea_main_item; - GnomeCanvasItem *main_item; - gchar *new_name = g_strdup (""); - const gchar *row_label, *column_label; - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (accessible); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return NULL; - - cell = E_DAY_VIEW_CELL (g_obj); - main_item = cell->day_view->main_canvas_item; - ea_main_item = atk_gobject_accessible_for_object (G_OBJECT (main_item)); - column_label = atk_table_get_column_description (ATK_TABLE (ea_main_item), - cell->column); - row_label = atk_table_get_row_description (ATK_TABLE (ea_main_item), - cell->row); - new_name = g_strconcat (column_label, " ", row_label, NULL); - ATK_OBJECT_CLASS (parent_class)->set_name (accessible, new_name); - g_free (new_name); - } - return accessible->name; -} - -static G_CONST_RETURN gchar* -ea_day_view_cell_get_description (AtkObject *accessible) -{ - return ea_day_view_cell_get_name (accessible); -} - -static AtkStateSet* -ea_day_view_cell_ref_state_set (AtkObject *obj) -{ - AtkStateSet *state_set; - GObject *g_obj; - AtkObject *parent; - gint x, y, width, height; - gint parent_x, parent_y, parent_width, parent_height; - - state_set = ATK_OBJECT_CLASS (parent_class)->ref_state_set (obj); - g_obj = atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE(obj)); - if (!g_obj) - return state_set; - - atk_state_set_add_state (state_set, ATK_STATE_SELECTABLE); - - parent = atk_object_get_parent (obj); - atk_component_get_extents (ATK_COMPONENT (obj), &x, &y, - &width, &height, ATK_XY_WINDOW); - atk_component_get_extents (ATK_COMPONENT (parent), &parent_x, &parent_y, - &parent_width, &parent_height, ATK_XY_WINDOW); - - - if (x + width < parent_x || x > parent_x + parent_width || - y + height < parent_y || y > parent_y + parent_height) - /* the cell is out of the main canvas */ - ; - else - atk_state_set_add_state (state_set, ATK_STATE_VISIBLE); - - return state_set; -} - -static AtkObject * -ea_day_view_cell_get_parent (AtkObject *accessible) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EDayViewCell *cell; - - g_return_val_if_fail (EA_IS_DAY_VIEW_CELL (accessible), NULL); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (accessible); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return NULL; - - cell = E_DAY_VIEW_CELL (g_obj); - return atk_gobject_accessible_for_object (G_OBJECT (cell->day_view->main_canvas_item)); -} - -static gint -ea_day_view_cell_get_index_in_parent (AtkObject *accessible) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EDayViewCell *cell; - AtkObject *parent; - - g_return_val_if_fail (EA_IS_DAY_VIEW_CELL (accessible), -1); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (accessible); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return -1; - - cell = E_DAY_VIEW_CELL (g_obj); - parent = atk_object_get_parent (accessible); - return atk_table_get_index_at (ATK_TABLE (parent), - cell->row, cell->column); -} - -/* Atk Component Interface */ - -static void -atk_component_interface_init (AtkComponentIface *iface) -{ - g_return_if_fail (iface != NULL); - - iface->get_extents = component_interface_get_extents; - iface->grab_focus = component_interface_grab_focus; -} - -static void -component_interface_get_extents (AtkComponent *component, - gint *x, gint *y, gint *width, gint *height, - AtkCoordType coord_type) -{ - GObject *g_obj; - AtkObject *atk_obj; - EDayViewCell *cell; - EDayView *day_view; - GtkWidget *main_canvas; - gint day_view_width, day_view_height; - gint scroll_x, scroll_y; - - *x = *y = *width = *height = 0; - - g_return_if_fail (EA_IS_DAY_VIEW_CELL (component)); - - g_obj = atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE(component)); - if (!g_obj) - /* defunct object*/ - return; - - cell = E_DAY_VIEW_CELL (g_obj); - day_view = cell->day_view; - main_canvas = cell->day_view->main_canvas; - - atk_obj = atk_gobject_accessible_for_object (G_OBJECT (main_canvas)); - atk_component_get_extents (ATK_COMPONENT (atk_obj), - x, y, - &day_view_width, &day_view_height, - coord_type); - gnome_canvas_get_scroll_offsets (GNOME_CANVAS (day_view->main_canvas), - &scroll_x, &scroll_y); - *x += day_view->day_offsets[cell->column] - scroll_x; - *y += day_view->row_height * cell->row - - scroll_y; - *width = day_view->day_widths[cell->column]; - *height = day_view->row_height; -} - -static gboolean -component_interface_grab_focus (AtkComponent *comp) -{ - GObject *g_obj; - EDayViewCell *cell; - EDayView *day_view; - GtkWidget *toplevel; - - g_return_val_if_fail (EA_IS_DAY_VIEW_CELL (comp), FALSE); - - g_obj = atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE (comp)); - if (!g_obj) - return FALSE; - - cell = E_DAY_VIEW_CELL (g_obj); - day_view = cell->day_view; - - day_view->selection_start_day = cell->column; - day_view->selection_end_day = cell->column; - day_view->selection_start_row = cell->row; - day_view->selection_end_row = cell->row; - - e_day_view_ensure_rows_visible (day_view, - day_view->selection_start_row, - day_view->selection_end_row); - e_day_view_update_calendar_selection_time (day_view); - gtk_widget_queue_draw (day_view->main_canvas); - - toplevel = gtk_widget_get_toplevel (GTK_WIDGET (day_view)); - if (GTK_WIDGET_TOPLEVEL (toplevel)) - gtk_window_present (GTK_WINDOW (toplevel)); - - return TRUE; -} - diff --git a/a11y/calendar/ea-day-view-cell.h b/a11y/calendar/ea-day-view-cell.h deleted file mode 100644 index cba2fec15b..0000000000 --- a/a11y/calendar/ea-day-view-cell.h +++ /dev/null @@ -1,91 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* vim:expandtab:shiftwidth=8:tabstop=8: - */ -/* Evolution Accessibility: ea-day-view-cell.h - * - * Copyright (C) 2003 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003 - * - */ - -#ifndef __EA_DAY_VIEW_CELL_H__ -#define __EA_DAY_VIEW_CELL_H__ - -#include <atk/atkgobjectaccessible.h> -#include "e-day-view.h" - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -#define E_TYPE_DAY_VIEW_CELL (e_day_view_cell_get_type ()) -#define E_DAY_VIEW_CELL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), E_TYPE_DAY_VIEW_CELL, EDayViewCell)) -#define E_DAY_VIEW_CELL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), E_TYPE_DAY_VIEW_CELL, EDayViewCellClass)) -#define E_IS_DAY_VIEW_CELL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), E_TYPE_DAY_VIEW_CELL)) -#define E_IS_DAY_VIEW_CELL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), E_TYPE_DAY_VIEW_CELL)) -#define E_DAY_VIEW_CELL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), E_TYPE_DAY_VIEW_CELL, EDayViewCellClass)) - -typedef struct _EDayViewCell EDayViewCell; -typedef struct _EDayViewCellClass EDayViewCellClass; - -struct _EDayViewCell -{ - GObject parent; - EDayView *day_view; - gint row; - gint column; -}; - -GType e_day_view_cell_get_type (void); - -struct _EDayViewCellClass -{ - GObjectClass parent_class; -}; - -EDayViewCell * e_day_view_cell_new (EDayView *day_view, gint row, gint column); - -#define EA_TYPE_DAY_VIEW_CELL (ea_day_view_cell_get_type ()) -#define EA_DAY_VIEW_CELL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EA_TYPE_DAY_VIEW_CELL, EaDayViewCell)) -#define EA_DAY_VIEW_CELL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EA_TYPE_DAY_VIEW_CELL, EaDayViewCellClass)) -#define EA_IS_DAY_VIEW_CELL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EA_TYPE_DAY_VIEW_CELL)) -#define EA_IS_DAY_VIEW_CELL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EA_TYPE_DAY_VIEW_CELL)) -#define EA_DAY_VIEW_CELL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EA_TYPE_DAY_VIEW_CELL, EaDayViewCellClass)) - -typedef struct _EaDayViewCell EaDayViewCell; -typedef struct _EaDayViewCellClass EaDayViewCellClass; - -struct _EaDayViewCell -{ - AtkGObjectAccessible parent; -}; - -GType ea_day_view_cell_get_type (void); - -struct _EaDayViewCellClass -{ - AtkGObjectAccessibleClass parent_class; -}; - -AtkObject* ea_day_view_cell_new (GObject *gobj); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __EA_DAY_VIEW_CELL_H__ */ diff --git a/a11y/calendar/ea-day-view-main-item.c b/a11y/calendar/ea-day-view-main-item.c deleted file mode 100644 index b65ad63957..0000000000 --- a/a11y/calendar/ea-day-view-main-item.c +++ /dev/null @@ -1,1292 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* vim:expandtab:shiftwidth=8:tabstop=8: - */ -/* Evolution Accessibility: ea-day-view-main-item.c - * - * Copyright (C) 2003 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003 - * - */ - -#include "ea-day-view-main-item.h" -#include "e-day-view-top-item.h" -#include "ea-day-view.h" -#include "ea-day-view-cell.h" -#include "ea-cell-table.h" -#include <libgnome/gnome-i18n.h> - -/* EaDayViewMainItem */ -static void ea_day_view_main_item_class_init (EaDayViewMainItemClass *klass); - -static void ea_day_view_main_item_finalize (GObject *object); -static G_CONST_RETURN gchar* ea_day_view_main_item_get_name (AtkObject *accessible); -static G_CONST_RETURN gchar* ea_day_view_main_item_get_description (AtkObject *accessible); - -static gint ea_day_view_main_item_get_n_children (AtkObject *obj); -static AtkObject* ea_day_view_main_item_ref_child (AtkObject *obj, - gint i); -static AtkObject * ea_day_view_main_item_get_parent (AtkObject *accessible); -static gint ea_day_view_main_item_get_index_in_parent (AtkObject *accessible); - -/* callbacks */ -static void ea_day_view_main_item_dates_change_cb (GnomeCalendar *gcal, gpointer data); -static void ea_day_view_main_item_time_change_cb (EDayView *day_view, gpointer data); - -/* component interface */ -static void atk_component_interface_init (AtkComponentIface *iface); -static void component_interface_get_extents (AtkComponent *component, - gint *x, gint *y, - gint *width, gint *height, - AtkCoordType coord_type); -/* atk table interface */ -static void atk_table_interface_init (AtkTableIface *iface); -static gint table_interface_get_index_at (AtkTable *table, - gint row, - gint column); -static gint table_interface_get_column_at_index (AtkTable *table, - gint index); -static gint table_interface_get_row_at_index (AtkTable *table, - gint index); -static AtkObject* table_interface_ref_at (AtkTable *table, - gint row, - gint column); -static gint table_interface_get_n_rows (AtkTable *table); -static gint table_interface_get_n_columns (AtkTable *table); -static gint table_interface_get_column_extent_at (AtkTable *table, - gint row, - gint column); -static gint table_interface_get_row_extent_at (AtkTable *table, - gint row, - gint column); - -static gboolean table_interface_is_row_selected (AtkTable *table, - gint row); -static gboolean table_interface_is_column_selected (AtkTable *table, - gint row); -static gboolean table_interface_is_selected (AtkTable *table, - gint row, - gint column); -static gint table_interface_get_selected_rows (AtkTable *table, - gint **rows_selected); -static gint table_interface_get_selected_columns (AtkTable *table, - gint **columns_selected); -static gboolean table_interface_add_row_selection (AtkTable *table, gint row); -static gboolean table_interface_remove_row_selection (AtkTable *table, - gint row); -static gboolean table_interface_add_column_selection (AtkTable *table, - gint column); -static gboolean table_interface_remove_column_selection (AtkTable *table, - gint column); -static AtkObject* table_interface_get_row_header (AtkTable *table, gint row); -static AtkObject* table_interface_get_column_header (AtkTable *table, - gint in_col); -static AtkObject* table_interface_get_caption (AtkTable *table); - -static G_CONST_RETURN gchar* -table_interface_get_column_description (AtkTable *table, gint in_col); - -static G_CONST_RETURN gchar* -table_interface_get_row_description (AtkTable *table, gint row); - -static AtkObject* table_interface_get_summary (AtkTable *table); - -/* atk selection interface */ -static void atk_selection_interface_init (AtkSelectionIface *iface); -static gboolean selection_interface_add_selection (AtkSelection *selection, - gint i); -static gboolean selection_interface_clear_selection (AtkSelection *selection); -static AtkObject* selection_interface_ref_selection (AtkSelection *selection, - gint i); -static gint selection_interface_get_selection_count (AtkSelection *selection); -static gboolean selection_interface_is_child_selected (AtkSelection *selection, - gint i); - -/* helpers */ -static EaCellTable * -ea_day_view_main_item_get_cell_data (EaDayViewMainItem *ea_main_item); - -static void -ea_day_view_main_item_destory_cell_data (EaDayViewMainItem *ea_main_item); - -static gint -ea_day_view_main_item_get_child_index_at (EaDayViewMainItem *ea_main_item, - gint row, gint column); -static gint -ea_day_view_main_item_get_row_at_index (EaDayViewMainItem *ea_main_item, - gint index); -static gint -ea_day_view_main_item_get_column_at_index (EaDayViewMainItem *ea_main_item, - gint index); -static gint -ea_day_view_main_item_get_row_label (EaDayViewMainItem *ea_main_item, - gint row, gchar *buffer, - gint buffer_size); - -#ifdef ACC_DEBUG -static gint n_ea_day_view_main_item_created = 0; -static gint n_ea_day_view_main_item_destroyed = 0; -#endif - -static gpointer parent_class = NULL; - -GType -ea_day_view_main_item_get_type (void) -{ - static GType type = 0; - AtkObjectFactory *factory; - GTypeQuery query; - GType derived_atk_type; - - if (!type) { - static GTypeInfo tinfo = { - sizeof (EaDayViewMainItemClass), - (GBaseInitFunc) NULL, /* base init */ - (GBaseFinalizeFunc) NULL, /* base finalize */ - (GClassInitFunc) ea_day_view_main_item_class_init, - (GClassFinalizeFunc) NULL, /* class finalize */ - NULL, /* class data */ - sizeof (EaDayViewMainItem), /* instance size */ - 0, /* nb preallocs */ - (GInstanceInitFunc) NULL, /* instance init */ - NULL /* value table */ - }; - - static const GInterfaceInfo atk_component_info = { - (GInterfaceInitFunc) atk_component_interface_init, - (GInterfaceFinalizeFunc) NULL, - NULL - }; - - static const GInterfaceInfo atk_table_info = { - (GInterfaceInitFunc) atk_table_interface_init, - (GInterfaceFinalizeFunc) NULL, - NULL - }; - static const GInterfaceInfo atk_selection_info = { - (GInterfaceInitFunc) atk_selection_interface_init, - (GInterfaceFinalizeFunc) NULL, - NULL - }; - - - /* - * Figure out the size of the class and instance - * we are run-time deriving from (GailCanvasItem, in this case) - * - */ - - factory = atk_registry_get_factory (atk_get_default_registry (), - e_day_view_main_item_get_type()); - derived_atk_type = atk_object_factory_get_accessible_type (factory); - g_type_query (derived_atk_type, &query); - - tinfo.class_size = query.class_size; - tinfo.instance_size = query.instance_size; - - type = g_type_register_static (derived_atk_type, - "EaDayViewMainItem", &tinfo, 0); - g_type_add_interface_static (type, ATK_TYPE_COMPONENT, - &atk_component_info); - g_type_add_interface_static (type, ATK_TYPE_TABLE, - &atk_table_info); - g_type_add_interface_static (type, ATK_TYPE_SELECTION, - &atk_selection_info); - } - - return type; -} - -static void -ea_day_view_main_item_class_init (EaDayViewMainItemClass *klass) -{ - GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - AtkObjectClass *class = ATK_OBJECT_CLASS (klass); - - gobject_class->finalize = ea_day_view_main_item_finalize; - parent_class = g_type_class_peek_parent (klass); - - class->get_name = ea_day_view_main_item_get_name; - class->get_description = ea_day_view_main_item_get_description; - - class->get_n_children = ea_day_view_main_item_get_n_children; - class->ref_child = ea_day_view_main_item_ref_child; - class->get_parent = ea_day_view_main_item_get_parent; - class->get_index_in_parent = ea_day_view_main_item_get_index_in_parent; -} - -AtkObject* -ea_day_view_main_item_new (GObject *obj) -{ - AtkObject *accessible; - GnomeCalendar *gcal; - EDayViewMainItem *main_item; - - g_return_val_if_fail (E_IS_DAY_VIEW_MAIN_ITEM (obj), NULL); - - accessible = ATK_OBJECT (g_object_new (EA_TYPE_DAY_VIEW_MAIN_ITEM, - NULL)); - - atk_object_initialize (accessible, obj); - accessible->role = ATK_ROLE_TABLE; - -#ifdef ACC_DEBUG - ++n_ea_day_view_main_item_created; - printf ("ACC_DEBUG: n_ea_day_view_main_item_created = %d\n", - n_ea_day_view_main_item_created); -#endif - main_item = E_DAY_VIEW_MAIN_ITEM (obj); - g_signal_connect (main_item->day_view, "selected_time_changed", - G_CALLBACK (ea_day_view_main_item_time_change_cb), - accessible); - - /* listen for date changes of calendar */ - gcal = e_calendar_view_get_calendar (E_CALENDAR_VIEW (main_item->day_view)); - if (gcal) - g_signal_connect (gcal, "dates_shown_changed", - G_CALLBACK (ea_day_view_main_item_dates_change_cb), - accessible); - - return accessible; -} - -static void -ea_day_view_main_item_finalize (GObject *object) -{ - EaDayViewMainItem *ea_main_item; - - g_return_if_fail (EA_IS_DAY_VIEW_MAIN_ITEM (object)); - - ea_main_item = EA_DAY_VIEW_MAIN_ITEM (object); - - /* Free the allocated cell data */ - ea_day_view_main_item_destory_cell_data (ea_main_item); - - G_OBJECT_CLASS (parent_class)->finalize (object); -#ifdef ACC_DEBUG - ++n_ea_day_view_main_item_destroyed; - printf ("ACC_DEBUG: n_ea_day_view_main_item_destroyed = %d\n", - n_ea_day_view_main_item_destroyed); -#endif -} - -static G_CONST_RETURN gchar* -ea_day_view_main_item_get_name (AtkObject *accessible) -{ - AtkObject *parent; - g_return_val_if_fail (EA_IS_DAY_VIEW_MAIN_ITEM (accessible), NULL); - parent = atk_object_get_parent (accessible); - return atk_object_get_name (parent); -} - -static G_CONST_RETURN gchar* -ea_day_view_main_item_get_description (AtkObject *accessible) -{ - return _("a table to view and select the current time range"); -} - -static gint -ea_day_view_main_item_get_n_children (AtkObject *accessible) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EDayViewMainItem *main_item; - EDayView *day_view; - - g_return_val_if_fail (EA_IS_DAY_VIEW_MAIN_ITEM (accessible), -1); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (accessible); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return -1; - - main_item = E_DAY_VIEW_MAIN_ITEM (g_obj); - day_view = main_item->day_view; - - return day_view->rows * day_view->days_shown; -} - -static AtkObject * -ea_day_view_main_item_ref_child (AtkObject *accessible, gint index) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EDayViewMainItem *main_item; - EDayView *day_view; - gint n_children; - EDayViewCell *cell; - EaCellTable *cell_data; - EaDayViewMainItem *ea_main_item; - - g_return_val_if_fail (EA_IS_DAY_VIEW_MAIN_ITEM (accessible), NULL); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (accessible); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return NULL; - - main_item = E_DAY_VIEW_MAIN_ITEM (g_obj); - day_view = main_item->day_view; - - n_children = ea_day_view_main_item_get_n_children (accessible); - if (index < 0 || index >= n_children) - return NULL; - - ea_main_item = EA_DAY_VIEW_MAIN_ITEM (accessible); - cell_data = ea_day_view_main_item_get_cell_data (ea_main_item); - if (!cell_data) - return NULL; - - cell = ea_cell_table_get_cell_at_index (cell_data, index); - if (!cell) { - gint row, column; - - row = ea_day_view_main_item_get_row_at_index (ea_main_item, index); - column = ea_day_view_main_item_get_column_at_index (ea_main_item, index); - cell = e_day_view_cell_new (day_view, row, column); - ea_cell_table_set_cell_at_index (cell_data, index, cell); - g_object_unref (cell); - } - return g_object_ref (atk_gobject_accessible_for_object (G_OBJECT(cell))); -} - -static AtkObject * -ea_day_view_main_item_get_parent (AtkObject *accessible) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EDayViewMainItem *main_item; - - g_return_val_if_fail (EA_IS_DAY_VIEW_MAIN_ITEM (accessible), NULL); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (accessible); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return NULL; - - main_item = E_DAY_VIEW_MAIN_ITEM (g_obj); - return gtk_widget_get_accessible (GTK_WIDGET (main_item->day_view)); -} - -static gint -ea_day_view_main_item_get_index_in_parent (AtkObject *accessible) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - - g_return_val_if_fail (EA_IS_DAY_VIEW_MAIN_ITEM (accessible), -1); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (accessible); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return -1; - - /* always the first child of ea-day-view */ - return 0; -} - -/* callbacks */ - -static void -ea_day_view_main_item_dates_change_cb (GnomeCalendar *gcal, gpointer data) -{ - EaDayViewMainItem *ea_main_item; - - g_return_if_fail (GNOME_IS_CALENDAR (gcal)); - g_return_if_fail (data); - g_return_if_fail (EA_IS_DAY_VIEW_MAIN_ITEM (data)); - - ea_main_item = EA_DAY_VIEW_MAIN_ITEM (data); - -#ifdef ACC_DEBUG - printf ("EvoAcc: ea_day_view_main_item update cb\n"); -#endif - - ea_day_view_main_item_destory_cell_data (ea_main_item); -} - -static void -ea_day_view_main_item_time_change_cb (EDayView *day_view, gpointer data) -{ - EaDayViewMainItem *ea_main_item; - AtkObject *item_cell = NULL; - - g_return_if_fail (E_IS_DAY_VIEW (day_view)); - g_return_if_fail (data); - g_return_if_fail (EA_IS_DAY_VIEW_MAIN_ITEM (data)); - - ea_main_item = EA_DAY_VIEW_MAIN_ITEM (data); - -#ifdef ACC_DEBUG - printf ("EvoAcc: ea_day_view_main_item time changed cb\n"); -#endif - /* only deal with the first selected child, for now */ - item_cell = atk_selection_ref_selection (ATK_SELECTION (ea_main_item), - 0); - if (item_cell) { - AtkStateSet *state_set; - state_set = atk_object_ref_state_set (item_cell); - atk_state_set_add_state (state_set, ATK_STATE_FOCUSED); - g_object_unref (state_set); - - g_signal_emit_by_name (ea_main_item, - "active-descendant-changed", - item_cell); - g_signal_emit_by_name (data, "selection_changed"); - - atk_focus_tracker_notify (item_cell); - g_object_unref (item_cell); - } - -} - -/* helpers */ - -static gint -ea_day_view_main_item_get_child_index_at (EaDayViewMainItem *ea_main_item, - gint row, gint column) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EDayViewMainItem *main_item; - EDayView *day_view; - - g_return_val_if_fail (ea_main_item, -1); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_main_item); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return -1; - - main_item = E_DAY_VIEW_MAIN_ITEM (g_obj); - day_view = main_item->day_view; - - if (row >= 0 && row < day_view->rows && - column >= 0 && column < day_view->days_shown) - return column * day_view->rows + row; - return -1; -} - -static gint -ea_day_view_main_item_get_row_at_index (EaDayViewMainItem *ea_main_item, - gint index) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EDayViewMainItem *main_item; - EDayView *day_view; - gint n_children; - - g_return_val_if_fail (ea_main_item, -1); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_main_item); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return -1; - - main_item = E_DAY_VIEW_MAIN_ITEM (g_obj); - day_view = main_item->day_view; - - n_children = ea_day_view_main_item_get_n_children (ATK_OBJECT (ea_main_item)); - if (index >= 0 && index < n_children) - return index % day_view->rows; - return -1; -} - -static gint -ea_day_view_main_item_get_column_at_index (EaDayViewMainItem *ea_main_item, - gint index) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EDayViewMainItem *main_item; - EDayView *day_view; - gint n_children; - - g_return_val_if_fail (ea_main_item, -1); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_main_item); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return -1; - - main_item = E_DAY_VIEW_MAIN_ITEM (g_obj); - day_view = main_item->day_view; - - n_children = ea_day_view_main_item_get_n_children (ATK_OBJECT (ea_main_item)); - if (index >= 0 && index < n_children) - return index / day_view->rows; - return -1; -} - -static gint -ea_day_view_main_item_get_row_label (EaDayViewMainItem *ea_main_item, - gint row, gchar *buffer, gint buffer_size) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EDayViewMainItem *main_item; - EDayView *day_view; - gchar *suffix; - gint hour, minute, suffix_width; - - g_return_val_if_fail (ea_main_item, 0); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_main_item); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return 0 ; - - main_item = E_DAY_VIEW_MAIN_ITEM (g_obj); - day_view = main_item->day_view; - - hour = day_view->first_hour_shown; - minute = day_view->first_minute_shown; - minute += row * day_view->mins_per_row; - hour = (hour + minute / 60) % 24; - minute %= 60; - - e_day_view_convert_time_to_display (day_view, hour, &hour, - &suffix, &suffix_width); - return g_snprintf (buffer, buffer_size, "%i:%02i %s", - hour, minute, suffix); -} - -static EaCellTable * -ea_day_view_main_item_get_cell_data (EaDayViewMainItem *ea_main_item) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EDayViewMainItem *main_item; - EDayView *day_view; - EaCellTable *cell_data; - - g_return_val_if_fail (ea_main_item, NULL); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_main_item); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return NULL; - - main_item = E_DAY_VIEW_MAIN_ITEM (g_obj); - day_view = main_item->day_view; - - cell_data = g_object_get_data (G_OBJECT(ea_main_item), - "ea-day-view-cell-table"); - if (!cell_data) { - cell_data = ea_cell_table_create (day_view->rows, - day_view->days_shown, TRUE); - g_object_set_data (G_OBJECT(ea_main_item), - "ea-day-view-cell-table", cell_data); - } - return cell_data; -} - -static void -ea_day_view_main_item_destory_cell_data (EaDayViewMainItem *ea_main_item) -{ - EaCellTable *cell_data; - - g_return_if_fail (ea_main_item); - - cell_data = g_object_get_data (G_OBJECT(ea_main_item), - "ea-day-view-cell-table"); - if (cell_data) { - ea_cell_table_destroy (cell_data); - g_object_set_data (G_OBJECT(ea_main_item), - "ea-day-view-cell-table", NULL); - } -} - -/* Atk Component Interface */ - -static void -atk_component_interface_init (AtkComponentIface *iface) -{ - g_return_if_fail (iface != NULL); - - iface->get_extents = component_interface_get_extents; -} - -static void -component_interface_get_extents (AtkComponent *component, - gint *x, gint *y, gint *width, gint *height, - AtkCoordType coord_type) -{ - GObject *g_obj; - AtkObject *ea_canvas; - EDayViewMainItem *main_item; - EDayView *day_view; - - *x = *y = *width = *height = 0; - - g_return_if_fail (EA_IS_DAY_VIEW_MAIN_ITEM (component)); - - g_obj = atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE(component)); - if (!g_obj) - /* defunct object*/ - return; - main_item = E_DAY_VIEW_MAIN_ITEM (g_obj); - day_view = main_item->day_view; - - ea_canvas = gtk_widget_get_accessible (day_view->main_canvas); - atk_component_get_extents (ATK_COMPONENT (ea_canvas), x, y, - width, height, coord_type); -} - -/* atk table interface */ - -static void -atk_table_interface_init (AtkTableIface *iface) -{ - g_return_if_fail (iface != NULL); - - iface->ref_at = table_interface_ref_at; - - iface->get_n_rows = table_interface_get_n_rows; - iface->get_n_columns = table_interface_get_n_columns; - iface->get_index_at = table_interface_get_index_at; - iface->get_column_at_index = table_interface_get_column_at_index; - iface->get_row_at_index = table_interface_get_row_at_index; - iface->get_column_extent_at = table_interface_get_column_extent_at; - iface->get_row_extent_at = table_interface_get_row_extent_at; - - iface->is_selected = table_interface_is_selected; - iface->get_selected_rows = table_interface_get_selected_rows; - iface->get_selected_columns = table_interface_get_selected_columns; - iface->is_row_selected = table_interface_is_row_selected; - iface->is_column_selected = table_interface_is_column_selected; - iface->add_row_selection = table_interface_add_row_selection; - iface->remove_row_selection = table_interface_remove_row_selection; - iface->add_column_selection = table_interface_add_column_selection; - iface->remove_column_selection = table_interface_remove_column_selection; - - iface->get_row_header = table_interface_get_row_header; - iface->get_column_header = table_interface_get_column_header; - iface->get_caption = table_interface_get_caption; - iface->get_summary = table_interface_get_summary; - iface->get_row_description = table_interface_get_row_description; - iface->get_column_description = table_interface_get_column_description; -} - -static AtkObject* -table_interface_ref_at (AtkTable *table, - gint row, - gint column) -{ - gint index; - - EaDayViewMainItem* ea_main_item = EA_DAY_VIEW_MAIN_ITEM (table); - index = ea_day_view_main_item_get_child_index_at (ea_main_item, - row, column); - return ea_day_view_main_item_ref_child (ATK_OBJECT (ea_main_item), index); -} - -static gint -table_interface_get_n_rows (AtkTable *table) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EDayViewMainItem *main_item; - EDayView *day_view; - EaDayViewMainItem* ea_main_item = EA_DAY_VIEW_MAIN_ITEM (table); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_main_item); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return -1; - - main_item = E_DAY_VIEW_MAIN_ITEM (g_obj); - day_view = main_item->day_view; - - return day_view->rows; -} - -static gint -table_interface_get_n_columns (AtkTable *table) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EDayViewMainItem *main_item; - EDayView *day_view; - EaDayViewMainItem* ea_main_item = EA_DAY_VIEW_MAIN_ITEM (table); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_main_item); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return -1; - - main_item = E_DAY_VIEW_MAIN_ITEM (g_obj); - day_view = main_item->day_view; - - return day_view->days_shown; -} - -static gint -table_interface_get_index_at (AtkTable *table, - gint row, - gint column) -{ - EaDayViewMainItem* ea_main_item = EA_DAY_VIEW_MAIN_ITEM (table); - return ea_day_view_main_item_get_child_index_at (ea_main_item, - row, column); -} - -static gint -table_interface_get_column_at_index (AtkTable *table, - gint index) -{ - EaDayViewMainItem* ea_main_item = EA_DAY_VIEW_MAIN_ITEM (table); - return ea_day_view_main_item_get_column_at_index (ea_main_item, index); -} - -static gint -table_interface_get_row_at_index (AtkTable *table, - gint index) -{ - EaDayViewMainItem* ea_main_item = EA_DAY_VIEW_MAIN_ITEM (table); - return ea_day_view_main_item_get_row_at_index (ea_main_item, index); -} - -static gint -table_interface_get_column_extent_at (AtkTable *table, - gint row, - gint column) -{ - gint index; - gint width = 0, height = 0; - AtkObject *child; - EaDayViewMainItem* ea_main_item = EA_DAY_VIEW_MAIN_ITEM (table); - - index = ea_day_view_main_item_get_child_index_at (ea_main_item, - row, column); - child = atk_object_ref_accessible_child (ATK_OBJECT (ea_main_item), - index); - if (child) - atk_component_get_size (ATK_COMPONENT (child), - &width, &height); - - return width; -} - -static gint -table_interface_get_row_extent_at (AtkTable *table, - gint row, - gint column) -{ - gint index; - gint width = 0, height = 0; - AtkObject *child; - EaDayViewMainItem* ea_main_item = EA_DAY_VIEW_MAIN_ITEM (table); - - index = ea_day_view_main_item_get_child_index_at (ea_main_item, - row, column); - child = atk_object_ref_accessible_child (ATK_OBJECT (ea_main_item), - index); - if (child) - atk_component_get_size (ATK_COMPONENT (child), - &width, &height); - - return height; -} - -static gboolean -table_interface_is_row_selected (AtkTable *table, - gint row) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EDayViewMainItem *main_item; - EDayView *day_view; - EaDayViewMainItem* ea_main_item = EA_DAY_VIEW_MAIN_ITEM (table); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_main_item); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return FALSE; - - main_item = E_DAY_VIEW_MAIN_ITEM (g_obj); - day_view = main_item->day_view; - - if (day_view->selection_start_day == -1) - /* no selection */ - return FALSE; - if (day_view->selection_start_day != day_view->selection_end_day) - /* all row is selected */ - return TRUE; - if (row >= day_view->selection_start_row && - row <= day_view->selection_end_row) - return TRUE; - return FALSE; -} - -static gboolean -table_interface_is_selected (AtkTable *table, - gint row, - gint column) -{ - return table_interface_is_row_selected (table, row) && - table_interface_is_column_selected (table, column); -} - -static gboolean -table_interface_is_column_selected (AtkTable *table, - gint column) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EDayViewMainItem *main_item; - EDayView *day_view; - EaDayViewMainItem* ea_main_item = EA_DAY_VIEW_MAIN_ITEM (table); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_main_item); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return FALSE; - - main_item = E_DAY_VIEW_MAIN_ITEM (g_obj); - day_view = main_item->day_view; - - if (column >= day_view->selection_start_day && - column <= day_view->selection_end_day) - return TRUE; - return FALSE; -} - -static gint -table_interface_get_selected_rows (AtkTable *table, - gint **rows_selected) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EDayViewMainItem *main_item; - EDayView *day_view; - EaDayViewMainItem* ea_main_item = EA_DAY_VIEW_MAIN_ITEM (table); - gint start_row = -1, n_rows = 0; - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_main_item); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return -1; - - main_item = E_DAY_VIEW_MAIN_ITEM (g_obj); - day_view = main_item->day_view; - - if (day_view->selection_start_day == -1) - return 0; - - if (day_view->selection_start_day != day_view->selection_end_day) { - /* all the rows should be selected */ - n_rows = day_view->rows; - start_row = 0; - } - else if (day_view->selection_start_row != -1) { - start_row = day_view->selection_start_row; - n_rows = day_view->selection_end_row - start_row + 1; - } - if (n_rows > 0 && start_row != -1 && rows_selected) { - gint index; - - *rows_selected = (gint *) g_malloc (n_rows * sizeof (gint)); - for (index = 0; index < n_rows; ++index) - (*rows_selected)[index] = start_row + index; - } - return n_rows; -} - -static gint -table_interface_get_selected_columns (AtkTable *table, - gint **columns_selected) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EDayViewMainItem *main_item; - EDayView *day_view; - EaDayViewMainItem* ea_main_item = EA_DAY_VIEW_MAIN_ITEM (table); - gint start_column = -1, n_columns = 0; - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_main_item); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return -1; - - main_item = E_DAY_VIEW_MAIN_ITEM (g_obj); - day_view = main_item->day_view; - - if (day_view->selection_start_day == -1) - return 0; - - start_column = day_view->selection_start_day; - n_columns = day_view->selection_end_day - start_column + 1; - if (n_columns > 0 && start_column != -1 && columns_selected) { - gint index; - - *columns_selected = (gint *) g_malloc (n_columns * sizeof (gint)); - for (index = 0; index < n_columns; ++index) - (*columns_selected)[index] = start_column + index; - } - return n_columns; -} - -static gboolean -table_interface_add_row_selection (AtkTable *table, - gint row) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EDayViewMainItem *main_item; - EDayView *day_view; - EaDayViewMainItem* ea_main_item = EA_DAY_VIEW_MAIN_ITEM (table); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_main_item); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return FALSE; - - main_item = E_DAY_VIEW_MAIN_ITEM (g_obj); - day_view = main_item->day_view; - - /* FIXME: we need multi-selection */ - - day_view->selection_start_day = 0; - day_view->selection_end_day = 0; - day_view->selection_start_row = row; - day_view->selection_end_row = row; - - e_day_view_ensure_rows_visible (day_view, - day_view->selection_start_row, - day_view->selection_end_row); - e_day_view_update_calendar_selection_time (day_view); - gtk_widget_queue_draw (day_view->main_canvas); - return TRUE; -} - -static gboolean -table_interface_remove_row_selection (AtkTable *table, - gint row) -{ - return FALSE; -} - -static gboolean -table_interface_add_column_selection (AtkTable *table, - gint column) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EDayViewMainItem *main_item; - EDayView *day_view; - EaDayViewMainItem* ea_main_item = EA_DAY_VIEW_MAIN_ITEM (table); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_main_item); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return FALSE; - - main_item = E_DAY_VIEW_MAIN_ITEM (g_obj); - day_view = main_item->day_view; - - /* FIXME: we need multi-selection */ - - day_view->selection_start_day = column; - day_view->selection_end_day = column; - day_view->selection_start_row = 0; - day_view->selection_end_row = day_view->rows; - - e_day_view_update_calendar_selection_time (day_view); - gtk_widget_queue_draw (day_view->main_canvas); - return TRUE; -} - -static gboolean -table_interface_remove_column_selection (AtkTable *table, - gint column) -{ - /* FIXME: NOT IMPLEMENTED */ - return FALSE; -} - -static AtkObject* -table_interface_get_row_header (AtkTable *table, - gint row) -{ - /* FIXME: NOT IMPLEMENTED */ - return NULL; -} - -static AtkObject* -table_interface_get_column_header (AtkTable *table, - gint in_col) -{ - /* FIXME: NOT IMPLEMENTED */ - return NULL; -} - -static AtkObject* -table_interface_get_caption (AtkTable *table) -{ - /* FIXME: NOT IMPLEMENTED */ - return NULL; -} - -static G_CONST_RETURN gchar* -table_interface_get_column_description (AtkTable *table, - gint in_col) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EDayViewMainItem *main_item; - EDayView *day_view; - EaDayViewMainItem* ea_main_item = EA_DAY_VIEW_MAIN_ITEM (table); - const gchar *description; - EaCellTable *cell_data; - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_main_item); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return NULL; - - main_item = E_DAY_VIEW_MAIN_ITEM (g_obj); - day_view = main_item->day_view; - - if (in_col < 0 || in_col >= day_view->days_shown) - return NULL; - cell_data = ea_day_view_main_item_get_cell_data (ea_main_item); - if (!cell_data) - return NULL; - - description = ea_cell_table_get_column_label (cell_data, in_col); - if (!description) { - gchar buffer[128]; - e_day_view_top_item_get_day_label (day_view, in_col, buffer, 128); - ea_cell_table_set_column_label (cell_data, in_col, buffer); - description = ea_cell_table_get_column_label (cell_data, in_col); - } - return description; -} - -static G_CONST_RETURN gchar* -table_interface_get_row_description (AtkTable *table, - gint row) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EDayViewMainItem *main_item; - EDayView *day_view; - EaDayViewMainItem* ea_main_item = EA_DAY_VIEW_MAIN_ITEM (table); - const gchar *description; - EaCellTable *cell_data; - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_main_item); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return NULL; - - main_item = E_DAY_VIEW_MAIN_ITEM (g_obj); - day_view = main_item->day_view; - - if (row < 0 || row >= 12 * 24) - return NULL; - cell_data = ea_day_view_main_item_get_cell_data (ea_main_item); - if (!cell_data) - return NULL; - - description = ea_cell_table_get_row_label (cell_data, row); - if (!description) { - gchar buffer[128]; - ea_day_view_main_item_get_row_label (ea_main_item, row, buffer, sizeof (buffer)); - ea_cell_table_set_row_label (cell_data, row, buffer); - description = ea_cell_table_get_row_label (cell_data, - row); - } - return description; -} - -static AtkObject* -table_interface_get_summary (AtkTable *table) -{ - /* FIXME: NOT IMPLEMENTED */ - return NULL; -} - -/* atkselection interface */ - -static void -atk_selection_interface_init (AtkSelectionIface *iface) -{ - g_return_if_fail (iface != NULL); - - iface->add_selection = selection_interface_add_selection; - iface->clear_selection = selection_interface_clear_selection; - iface->ref_selection = selection_interface_ref_selection; - iface->get_selection_count = selection_interface_get_selection_count; - iface->is_child_selected = selection_interface_is_child_selected; -} - -static gboolean -selection_interface_add_selection (AtkSelection *selection, gint i) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EDayViewMainItem *main_item; - EDayView *day_view; - EaDayViewMainItem* ea_main_item = EA_DAY_VIEW_MAIN_ITEM (selection); - gint column, row; - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_main_item); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return FALSE; - - main_item = E_DAY_VIEW_MAIN_ITEM (g_obj); - day_view = main_item->day_view; - - row = ea_day_view_main_item_get_row_at_index (ea_main_item, i); - column = ea_day_view_main_item_get_column_at_index (ea_main_item, i); - - if (row == -1 || column == -1) - return FALSE; - - /*FIXME: multi-selection is needed */ - day_view->selection_start_day = column; - day_view->selection_end_day = column; - day_view->selection_start_row = row; - day_view->selection_end_row = row; - - e_day_view_ensure_rows_visible (day_view, - day_view->selection_start_row, - day_view->selection_end_row); - e_day_view_update_calendar_selection_time (day_view); - gtk_widget_queue_draw (day_view->main_canvas); - return TRUE; -} - -static gboolean -selection_interface_clear_selection (AtkSelection *selection) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EDayViewMainItem *main_item; - EDayView *day_view; - EaDayViewMainItem* ea_main_item = EA_DAY_VIEW_MAIN_ITEM (selection); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_main_item); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return FALSE; - - main_item = E_DAY_VIEW_MAIN_ITEM (g_obj); - day_view = main_item->day_view; - - day_view->selection_start_row = -1; - day_view->selection_start_day = -1; - day_view->selection_end_row = -1; - day_view->selection_end_day = -1; - - e_day_view_update_calendar_selection_time (day_view); - gtk_widget_queue_draw (day_view->main_canvas); - - return TRUE; -} - -static AtkObject* -selection_interface_ref_selection (AtkSelection *selection, gint i) -{ - gint count; - GObject *g_obj; - EDayView *day_view; - EaDayViewMainItem* ea_main_item = EA_DAY_VIEW_MAIN_ITEM (selection); - gint start_index; - - count = selection_interface_get_selection_count (selection); - if (i < 0 || i >=count) - return NULL; - - g_obj = atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE (ea_main_item)); - day_view = E_DAY_VIEW_MAIN_ITEM (g_obj)->day_view; - start_index = ea_day_view_main_item_get_child_index_at (ea_main_item, - day_view->selection_start_row, - day_view->selection_start_day); - - return ea_day_view_main_item_ref_child (ATK_OBJECT (selection), start_index + i); -} - -static gint -selection_interface_get_selection_count (AtkSelection *selection) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EDayViewMainItem *main_item; - EDayView *day_view; - EaDayViewMainItem* ea_main_item = EA_DAY_VIEW_MAIN_ITEM (selection); - gint start_index, end_index; - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_main_item); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return 0; - - main_item = E_DAY_VIEW_MAIN_ITEM (g_obj); - day_view = main_item->day_view; - - if (day_view->selection_start_day == -1 || - day_view->selection_start_row == -1) - return 0; - start_index = ea_day_view_main_item_get_child_index_at (ea_main_item, - day_view->selection_start_row, - day_view->selection_start_day); - end_index = ea_day_view_main_item_get_child_index_at (ea_main_item, - day_view->selection_end_row, - day_view->selection_end_day); - - return end_index - start_index + 1; -} - -static gboolean -selection_interface_is_child_selected (AtkSelection *selection, gint i) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EDayViewMainItem *main_item; - EDayView *day_view; - EaDayViewMainItem* ea_main_item = EA_DAY_VIEW_MAIN_ITEM (selection); - gint column, row; - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_main_item); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return FALSE; - - main_item = E_DAY_VIEW_MAIN_ITEM (g_obj); - day_view = main_item->day_view; - - row = ea_day_view_main_item_get_row_at_index (ea_main_item, i); - column = ea_day_view_main_item_get_column_at_index (ea_main_item, i); - - if (column < day_view->selection_start_day || - column > day_view->selection_end_day) - return FALSE; - - if ((column == day_view->selection_start_day || - column == day_view->selection_end_day) && - (row < day_view->selection_start_row || - row > day_view->selection_end_row)) - return FALSE; - - /* if comes here, the cell is selected */ - return TRUE; -} diff --git a/a11y/calendar/ea-day-view-main-item.h b/a11y/calendar/ea-day-view-main-item.h deleted file mode 100644 index d22372d064..0000000000 --- a/a11y/calendar/ea-day-view-main-item.h +++ /dev/null @@ -1,64 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* vim:expandtab:shiftwidth=8:tabstop=8: - */ -/* Evolution Accessibility: ea-day-view-main-item.h - * - * Copyright (C) 2003 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003 - * - */ - -#ifndef __EA_DAY_VIEW_MAIN_ITEM_H__ -#define __EA_DAY_VIEW_MAIN_ITEM_H__ - -#include <atk/atkgobjectaccessible.h> -#include "e-day-view-main-item.h" - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -#define EA_TYPE_DAY_VIEW_MAIN_ITEM (ea_day_view_main_item_get_type ()) -#define EA_DAY_VIEW_MAIN_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EA_TYPE_DAY_VIEW_MAIN_ITEM, EaDayViewMainItem)) -#define EA_DAY_VIEW_MAIN_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EA_TYPE_DAY_VIEW_MAIN_ITEM, EaDayViewMainItemClass)) -#define EA_IS_DAY_VIEW_MAIN_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EA_TYPE_DAY_VIEW_MAIN_ITEM)) -#define EA_IS_DAY_VIEW_MAIN_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EA_TYPE_DAY_VIEW_MAIN_ITEM)) -#define EA_DAY_VIEW_MAIN_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EA_TYPE_DAY_VIEW_MAIN_ITEM, EaDayViewMainItemClass)) - -typedef struct _EaDayViewMainItem EaDayViewMainItem; -typedef struct _EaDayViewMainItemClass EaDayViewMainItemClass; - -struct _EaDayViewMainItem -{ - AtkGObjectAccessible parent; -}; - -GType ea_day_view_main_item_get_type (void); - -struct _EaDayViewMainItemClass -{ - AtkGObjectAccessibleClass parent_class; -}; - -AtkObject* ea_day_view_main_item_new (GObject *obj); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __EA_DAY_VIEW_MAIN_ITEM_H__ */ diff --git a/a11y/calendar/ea-day-view.c b/a11y/calendar/ea-day-view.c deleted file mode 100644 index cfe96634ba..0000000000 --- a/a11y/calendar/ea-day-view.c +++ /dev/null @@ -1,267 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* vim:expandtab:shiftwidth=8:tabstop=8: - */ -/* Evolution Accessibility: ea-day-view.c - * - * Copyright (C) 2003 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003 - * - */ - -#include "ea-day-view.h" -#include "ea-cal-view-event.h" - -#include "ea-calendar-helpers.h" -#include "ea-gnome-calendar.h" -#include "calendar-commands.h" -#include <glib/gstrfuncs.h> -#include <libgnome/gnome-i18n.h> - -static void ea_day_view_class_init (EaDayViewClass *klass); - -static G_CONST_RETURN gchar* ea_day_view_get_name (AtkObject *accessible); -static G_CONST_RETURN gchar* ea_day_view_get_description (AtkObject *accessible); -static gint ea_day_view_get_n_children (AtkObject *obj); -static AtkObject* ea_day_view_ref_child (AtkObject *obj, - gint i); -static gpointer parent_class = NULL; - -GType -ea_day_view_get_type (void) -{ - static GType type = 0; - AtkObjectFactory *factory; - GTypeQuery query; - GType derived_atk_type; - - if (!type) { - static GTypeInfo tinfo = { - sizeof (EaDayViewClass), - (GBaseInitFunc) NULL, /* base init */ - (GBaseFinalizeFunc) NULL, /* base finalize */ - (GClassInitFunc) ea_day_view_class_init, /* class init */ - (GClassFinalizeFunc) NULL, /* class finalize */ - NULL, /* class data */ - sizeof (EaDayView), /* instance size */ - 0, /* nb preallocs */ - (GInstanceInitFunc) NULL, /* instance init */ - NULL /* value table */ - }; - - /* - * Figure out the size of the class and instance - * we are run-time deriving from (EaCalView, in this case) - * - * Note: we must still use run-time deriving here, because - * our parent class EaCalView is run-time deriving. - */ - - factory = atk_registry_get_factory (atk_get_default_registry (), - e_cal_view_get_type()); - derived_atk_type = atk_object_factory_get_accessible_type (factory); - g_type_query (derived_atk_type, &query); - - tinfo.class_size = query.class_size; - tinfo.instance_size = query.instance_size; - - type = g_type_register_static (derived_atk_type, - "EaDayView", &tinfo, 0); - } - - return type; -} - -static void -ea_day_view_class_init (EaDayViewClass *klass) -{ - AtkObjectClass *class = ATK_OBJECT_CLASS (klass); - - parent_class = g_type_class_peek_parent (klass); - - class->get_name = ea_day_view_get_name; - class->get_description = ea_day_view_get_description; - - class->get_n_children = ea_day_view_get_n_children; - class->ref_child = ea_day_view_ref_child; -} - -AtkObject* -ea_day_view_new (GtkWidget *widget) -{ - GObject *object; - AtkObject *accessible; - - g_return_val_if_fail (E_IS_DAY_VIEW (widget), NULL); - - object = g_object_new (EA_TYPE_DAY_VIEW, NULL); - - accessible = ATK_OBJECT (object); - atk_object_initialize (accessible, widget); - -#ifdef ACC_DEBUG - printf ("EvoAcc: ea_day_view created %p\n", (void *)accessible); -#endif - - return accessible; -} - -static G_CONST_RETURN gchar* -ea_day_view_get_name (AtkObject *accessible) -{ - EDayView *day_view; - GnomeCalendar *gcal; - const gchar *label_text; - GnomeCalendarViewType view_type; - gint n_events; - gchar *event_str, *name_str; - - g_return_val_if_fail (EA_IS_DAY_VIEW (accessible), NULL); - - if (!GTK_ACCESSIBLE (accessible)->widget) - return NULL; - - day_view = E_DAY_VIEW (GTK_ACCESSIBLE (accessible)->widget); - gcal = e_calendar_view_get_calendar (E_CALENDAR_VIEW (day_view)); - label_text = ea_gnome_calendar_get_label_description (gcal); - - n_events = atk_object_get_n_accessible_children (accessible); - /* the child main item is always there */ - --n_events; - if (n_events >= 1) - event_str = g_strdup_printf (ngettext ("It has %d event.", "It has %d events.", n_events), n_events); - else - event_str = g_strdup (_("It has no events.")); - - view_type = gnome_calendar_get_view (gcal); - if (view_type == GNOME_CAL_WORK_WEEK_VIEW) - name_str = g_strdup_printf (_("Work Week View: %s. %s"), - label_text, event_str); - else - name_str = g_strdup_printf (_("Day View: %s. %s"), - label_text, event_str); - - ATK_OBJECT_CLASS (parent_class)->set_name (accessible, name_str); - g_free (name_str); - g_free (event_str); - - return accessible->name; -} - -static G_CONST_RETURN gchar* -ea_day_view_get_description (AtkObject *accessible) -{ - EDayView *day_view; - - g_return_val_if_fail (EA_IS_DAY_VIEW (accessible), NULL); - - if (!GTK_ACCESSIBLE (accessible)->widget) - return NULL; - day_view = E_DAY_VIEW (GTK_ACCESSIBLE (accessible)->widget); - - if (accessible->description) - return accessible->description; - else { - GnomeCalendar *gcal; - GnomeCalendarViewType view_type; - - gcal = e_calendar_view_get_calendar (E_CALENDAR_VIEW (day_view)); - view_type = gnome_calendar_get_view (gcal); - - if (view_type == GNOME_CAL_WORK_WEEK_VIEW) - return _("calendar view for a work week"); - else - return _("calendar view for one or more days"); - } -} - -static gint -ea_day_view_get_n_children (AtkObject *accessible) -{ - EDayView *day_view; - gint day; - gint child_num = 0; - - g_return_val_if_fail (EA_IS_DAY_VIEW (accessible), -1); - - if (!GTK_ACCESSIBLE (accessible)->widget) - return -1; - - day_view = E_DAY_VIEW (GTK_ACCESSIBLE (accessible)->widget); - - child_num += day_view->long_events->len; - - for (day = 0; day < day_view->days_shown; day++) { - child_num += day_view->events[day]->len; - } - - /* "+1" for the main item */ - return child_num + 1; -} - -static AtkObject * -ea_day_view_ref_child (AtkObject *accessible, gint index) -{ - EDayView *day_view; - gint child_num; - gint day; - AtkObject *atk_object = NULL; - EDayViewEvent *event = NULL; - - g_return_val_if_fail (EA_IS_DAY_VIEW (accessible), NULL); - - child_num = atk_object_get_n_accessible_children (accessible); - if (child_num <= 0 || index < 0 || index >= child_num) - return NULL; - - if (!GTK_ACCESSIBLE (accessible)->widget) - return NULL; - day_view = E_DAY_VIEW (GTK_ACCESSIBLE (accessible)->widget); - - if (index == 0) { - /* index == 0 is the main item */ - atk_object = atk_gobject_accessible_for_object (G_OBJECT (day_view->main_canvas_item)); - g_object_ref (atk_object); - } - else { - --index; - /* a long event */ - if (index < day_view->long_events->len) { - event = &g_array_index (day_view->long_events, - EDayViewEvent, index); - } - else { - index -= day_view->long_events->len; - day = 0; - while (index >= day_view->events[day]->len) { - index -= day_view->events[day]->len; - ++day; - } - - event = &g_array_index (day_view->events[day], - EDayViewEvent, index); - } - if (event && event->canvas_item) { - /* Not use atk_gobject_accessible_for_object here, - * we need to do special thing here - */ - atk_object = ea_calendar_helpers_get_accessible_for (event->canvas_item); - g_object_ref (atk_object); - } - } - return atk_object; -} diff --git a/a11y/calendar/ea-day-view.h b/a11y/calendar/ea-day-view.h deleted file mode 100644 index 5ca4614f03..0000000000 --- a/a11y/calendar/ea-day-view.h +++ /dev/null @@ -1,64 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* vim:expandtab:shiftwidth=8:tabstop=8: - */ -/* Evolution Accessibility: ea-day-view.h - * - * Copyright (C) 2003 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003 - * - */ - -#ifndef __EA_DAY_VIEW_H__ -#define __EA_DAY_VIEW_H__ - -#include "ea-cal-view.h" -#include "e-day-view.h" - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -#define EA_TYPE_DAY_VIEW (ea_day_view_get_type ()) -#define EA_DAY_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EA_TYPE_DAY_VIEW, EaDayView)) -#define EA_DAY_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EA_TYPE_DAY_VIEW, EaDayViewClass)) -#define EA_IS_DAY_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EA_TYPE_DAY_VIEW)) -#define EA_IS_DAY_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EA_TYPE_DAY_VIEW)) -#define EA_DAY_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EA_TYPE_DAY_VIEW, EaDayViewClass)) - -typedef struct _EaDayView EaDayView; -typedef struct _EaDayViewClass EaDayViewClass; - -struct _EaDayView -{ - EaCalView parent; -}; - -GType ea_day_view_get_type (void); - -struct _EaDayViewClass -{ - EaCalViewClass parent_class; -}; - -AtkObject* ea_day_view_new (GtkWidget *widget); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __EA_DAY_VIEW_H__ */ diff --git a/a11y/calendar/ea-gnome-calendar.c b/a11y/calendar/ea-gnome-calendar.c deleted file mode 100644 index fc0027008f..0000000000 --- a/a11y/calendar/ea-gnome-calendar.c +++ /dev/null @@ -1,353 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* vim:expandtab:shiftwidth=8:tabstop=8: - */ -/* Evolution Accessibility: ea-gnome-calendar.c - * - * Copyright (C) 2003 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003 - * - */ - -#include "ea-gnome-calendar.h" -#include "calendar-commands.h" -#include <string.h> -#include <gtk/gtknotebook.h> -#include <libecal/e-cal-time-util.h> -#include <libgnome/gnome-i18n.h> - -static void ea_gnome_calendar_class_init (EaGnomeCalendarClass *klass); - -static G_CONST_RETURN gchar* ea_gnome_calendar_get_name (AtkObject *accessible); -static G_CONST_RETURN gchar* ea_gnome_calendar_get_description (AtkObject *accessible); -static gint ea_gnome_calendar_get_n_children (AtkObject* obj); -static AtkObject * ea_gnome_calendar_ref_child (AtkObject *obj, gint i); - -static void ea_gcal_switch_view_cb (GtkNotebook *widget, GtkNotebookPage *page, - guint index, gpointer data); -static void ea_gcal_dates_change_cb (GnomeCalendar *gcal, gpointer data); - -static gpointer parent_class = NULL; - -GType -ea_gnome_calendar_get_type (void) -{ - static GType type = 0; - AtkObjectFactory *factory; - GTypeQuery query; - GType derived_atk_type; - - if (!type) { - static GTypeInfo tinfo = { - sizeof (EaGnomeCalendarClass), - (GBaseInitFunc) NULL, /* base init */ - (GBaseFinalizeFunc) NULL, /* base finalize */ - (GClassInitFunc) ea_gnome_calendar_class_init, /* class init */ - (GClassFinalizeFunc) NULL, /* class finalize */ - NULL, /* class data */ - sizeof (EaGnomeCalendar), /* instance size */ - 0, /* nb preallocs */ - (GInstanceInitFunc) NULL, /* instance init */ - NULL /* value table */ - }; - - /* - * Figure out the size of the class and instance - * we are run-time deriving from (GailWidget, in this case) - */ - - factory = atk_registry_get_factory (atk_get_default_registry (), - GTK_TYPE_WIDGET); - derived_atk_type = atk_object_factory_get_accessible_type (factory); - g_type_query (derived_atk_type, &query); - tinfo.class_size = query.class_size; - tinfo.instance_size = query.instance_size; - - type = g_type_register_static (derived_atk_type, - "EaGnomeCalendar", &tinfo, 0); - - } - - return type; -} - -static void -ea_gnome_calendar_class_init (EaGnomeCalendarClass *klass) -{ - AtkObjectClass *class = ATK_OBJECT_CLASS (klass); - - parent_class = g_type_class_peek_parent (klass); - - class->get_name = ea_gnome_calendar_get_name; - class->get_description = ea_gnome_calendar_get_description; - - class->get_n_children = ea_gnome_calendar_get_n_children; - class->ref_child = ea_gnome_calendar_ref_child; -} - -AtkObject* -ea_gnome_calendar_new (GtkWidget *widget) -{ - GObject *object; - AtkObject *accessible; - GnomeCalendar *gcal; - GtkWidget *notebook; - - g_return_val_if_fail (GNOME_IS_CALENDAR (widget), NULL); - - object = g_object_new (EA_TYPE_GNOME_CALENDAR, NULL); - - accessible = ATK_OBJECT (object); - atk_object_initialize (accessible, widget); - - accessible->role = ATK_ROLE_FILLER; - - gcal = GNOME_CALENDAR (widget); - - /* listen on view type change - */ - g_signal_connect (widget, "dates_shown_changed", - G_CALLBACK (ea_gcal_dates_change_cb), - accessible); - notebook = gnome_calendar_get_view_notebook_widget (gcal); - if (notebook) { - g_signal_connect (notebook, "switch_page", - G_CALLBACK (ea_gcal_switch_view_cb), - accessible); - } - -#ifdef ACC_DEBUG - printf ("EvoAcc: ea-gnome-calendar created: %p\n", (void *)accessible); -#endif - - return accessible; -} - -const gchar * -ea_gnome_calendar_get_label_description (GnomeCalendar *gcal) -{ - icaltimezone *zone; - struct icaltimetype start_tt, end_tt; - time_t start_time, end_time; - struct tm start_tm, end_tm; - static char buffer[512]; - char end_buffer[256]; - GnomeCalendarViewType view; - - gnome_calendar_get_visible_time_range (gcal, &start_time, &end_time); - zone = gnome_calendar_get_timezone (gcal); - - start_tt = icaltime_from_timet_with_zone (start_time, FALSE, zone); - start_tm.tm_year = start_tt.year - 1900; - start_tm.tm_mon = start_tt.month - 1; - start_tm.tm_mday = start_tt.day; - start_tm.tm_hour = start_tt.hour; - start_tm.tm_min = start_tt.minute; - start_tm.tm_sec = start_tt.second; - start_tm.tm_isdst = -1; - start_tm.tm_wday = time_day_of_week (start_tt.day, start_tt.month - 1, - start_tt.year); - - /* Take one off end_time so we don't get an extra day. */ - end_tt = icaltime_from_timet_with_zone (end_time - 1, FALSE, zone); - end_tm.tm_year = end_tt.year - 1900; - end_tm.tm_mon = end_tt.month - 1; - end_tm.tm_mday = end_tt.day; - end_tm.tm_hour = end_tt.hour; - end_tm.tm_min = end_tt.minute; - end_tm.tm_sec = end_tt.second; - end_tm.tm_isdst = -1; - end_tm.tm_wday = time_day_of_week (end_tt.day, end_tt.month - 1, - end_tt.year); - - view = gnome_calendar_get_view (gcal); - - switch (view) { - case GNOME_CAL_DAY_VIEW: - case GNOME_CAL_WORK_WEEK_VIEW: - case GNOME_CAL_WEEK_VIEW: - if (start_tm.tm_year == end_tm.tm_year - && start_tm.tm_mon == end_tm.tm_mon - && start_tm.tm_mday == end_tm.tm_mday) { - e_utf8_strftime (buffer, sizeof (buffer), - _("%A %d %b %Y"), &start_tm); - } else if (start_tm.tm_year == end_tm.tm_year) { - e_utf8_strftime (buffer, sizeof (buffer), - _("%a %d %b"), &start_tm); - e_utf8_strftime (end_buffer, sizeof (end_buffer), - _("%a %d %b %Y"), &end_tm); - strcat (buffer, " - "); - strcat (buffer, end_buffer); - } else { - e_utf8_strftime (buffer, sizeof (buffer), - _("%a %d %b %Y"), &start_tm); - e_utf8_strftime (end_buffer, sizeof (end_buffer), - _("%a %d %b %Y"), &end_tm); - strcat (buffer, " - "); - strcat (buffer, end_buffer); - } - break; - case GNOME_CAL_MONTH_VIEW: - case GNOME_CAL_LIST_VIEW: - if (start_tm.tm_year == end_tm.tm_year) { - if (start_tm.tm_mon == end_tm.tm_mon) { - if (start_tm.tm_mday == end_tm.tm_mday) { - buffer [0] = '\0'; - } else { - e_utf8_strftime (buffer, sizeof (buffer), - "%d", &start_tm); - strcat (buffer, " - "); - } - e_utf8_strftime (end_buffer, sizeof (end_buffer), - _("%d %b %Y"), &end_tm); - strcat (buffer, end_buffer); - } else { - e_utf8_strftime (buffer, sizeof (buffer), - _("%d %b"), &start_tm); - e_utf8_strftime (end_buffer, sizeof (end_buffer), - _("%d %b %Y"), &end_tm); - strcat (buffer, " - "); - strcat (buffer, end_buffer); - } - } else { - e_utf8_strftime (buffer, sizeof (buffer), - _("%d %b %Y"), &start_tm); - e_utf8_strftime (end_buffer, sizeof (end_buffer), - _("%d %b %Y"), &end_tm); - strcat (buffer, " - "); - strcat (buffer, end_buffer); - } - break; - default: - g_assert_not_reached (); - return NULL; - } - return buffer; -} - -static G_CONST_RETURN gchar* -ea_gnome_calendar_get_name (AtkObject *accessible) -{ - if (accessible->name) - return accessible->name; - return _("Gnome Calendar"); -} - -static G_CONST_RETURN gchar* -ea_gnome_calendar_get_description (AtkObject *accessible) -{ - if (accessible->description) - return accessible->description; - return _("Gnome Calendar"); -} - -static gint -ea_gnome_calendar_get_n_children (AtkObject* obj) -{ - g_return_val_if_fail (EA_IS_GNOME_CALENDAR (obj), 0); - - if (!GTK_ACCESSIBLE (obj)->widget) - return -1; - return 4; -} - -static AtkObject * -ea_gnome_calendar_ref_child (AtkObject *obj, gint i) -{ - AtkObject * child = NULL; - GnomeCalendar * calendarWidget; - GtkWidget *childWidget; - - g_return_val_if_fail (EA_IS_GNOME_CALENDAR (obj), NULL); - /* valid child index range is [0-3] */ - if (i < 0 || i >3 ) - return NULL; - - if (!GTK_ACCESSIBLE (obj)->widget) - return NULL; - calendarWidget = GNOME_CALENDAR (GTK_ACCESSIBLE (obj)->widget); - - switch (i) { - case 0: - /* for the search bar */ - childWidget = gnome_calendar_get_search_bar_widget (calendarWidget); - child = gtk_widget_get_accessible (childWidget); - atk_object_set_parent (child, obj); - atk_object_set_name (child, _("search bar")); - atk_object_set_description (child, _("evolution calendar search bar")); - break; - case 1: - /* for the day/week view */ - childWidget = gnome_calendar_get_current_view_widget (calendarWidget); - child = gtk_widget_get_accessible (childWidget); - atk_object_set_parent (child, obj); - break; - case 2: - /* for calendar */ - childWidget = gnome_calendar_get_e_calendar_widget (calendarWidget); - child = gtk_widget_get_accessible (childWidget); - break; - case 3: - /* for todo list */ - childWidget = GTK_WIDGET (gnome_calendar_get_task_pad (calendarWidget)); - child = gtk_widget_get_accessible (childWidget); - break; - default: - break; - } - if (child) - g_object_ref(child); - return child; -} - -static void -ea_gcal_switch_view_cb (GtkNotebook *widget, GtkNotebookPage *page, - guint index, gpointer data) -{ - GtkWidget *new_widget; - - new_widget = gtk_notebook_get_nth_page (widget, index); - - /* views are always the second child in gnome calendar - */ - if (new_widget) - g_signal_emit_by_name (G_OBJECT(data), "children_changed::add", - 1, gtk_widget_get_accessible (new_widget), NULL); - -#ifdef ACC_DEBUG - printf ("AccDebug: view switch to widget %p (index=%d) \n", - (void *)new_widget, index); -#endif -} - -static void -ea_gcal_dates_change_cb (GnomeCalendar *gcal, gpointer data) -{ - const gchar *new_name; - - g_return_if_fail (GNOME_IS_CALENDAR (gcal)); - g_return_if_fail (data); - g_return_if_fail (EA_IS_GNOME_CALENDAR (data)); - - new_name = ea_gnome_calendar_get_label_description (gcal); - atk_object_set_name (ATK_OBJECT(data), new_name); - g_signal_emit_by_name (data, "visible_data_changed"); - -#ifdef ACC_DEBUG - printf ("AccDebug: calendar dates changed, label=%s\n", new_name); -#endif -} diff --git a/a11y/calendar/ea-gnome-calendar.h b/a11y/calendar/ea-gnome-calendar.h deleted file mode 100644 index 130466add3..0000000000 --- a/a11y/calendar/ea-gnome-calendar.h +++ /dev/null @@ -1,67 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* vim:expandtab:shiftwidth=8:tabstop=8: - */ -/* Evolution Accessibility: ea-gnome-calendar.h - * - * Copyright (C) 2003 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003 - * - */ - -#ifndef __EA_GNOME_CALENDAR_H__ -#define __EA_GNOME_CALENDAR_H__ - -#include <gtk/gtkaccessible.h> -#include "gnome-cal.h" - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -#define EA_TYPE_GNOME_CALENDAR (ea_gnome_calendar_get_type ()) -#define EA_GNOME_CALENDAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EA_TYPE_GNOME_CALENDAR, EaGnomeCalendar)) -#define EA_GNOME_CALENDAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EA_TYPE_GNOME_CALENDAR, EaGnomeCalendarClass)) -#define EA_IS_GNOME_CALENDAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EA_TYPE_GNOME_CALENDAR)) -#define EA_IS_GNOME_CALENDAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EA_TYPE_GNOME_CALENDAR)) -#define EA_GNOME_CALENDAR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EA_TYPE_GNOME_CALENDAR, EaGnomeCalendarClass)) - -typedef struct _EaGnomeCalendar EaGnomeCalendar; -typedef struct _EaGnomeCalendarClass EaGnomeCalendarClass; - -struct _EaGnomeCalendar -{ - GtkAccessible parent; -}; - -GType ea_gnome_calendar_get_type (void); - -struct _EaGnomeCalendarClass -{ - GtkAccessibleClass parent_class; -}; - -AtkObject* ea_gnome_calendar_new (GtkWidget *widget); - -const gchar * ea_gnome_calendar_get_label_description (GnomeCalendar *gcal); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - - -#endif /* __EA_GNOME_CALENDAR_H__ */ diff --git a/a11y/calendar/ea-jump-button.c b/a11y/calendar/ea-jump-button.c deleted file mode 100644 index d9bab31943..0000000000 --- a/a11y/calendar/ea-jump-button.c +++ /dev/null @@ -1,226 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* vim:expandtab:shiftwidth=8:tabstop=8: - */ -/* Evolution Accessibility: ea-jump-button.c - * - * Copyright (C) 2003 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Yang Wu <yang.wu@sun.com> Sun Microsystem Inc., 2003 - * - */ - -#include "ea-jump-button.h" -#include "ea-calendar-helpers.h" -#include "ea-week-view.h" -#include "e-week-view.h" -#include <libgnomecanvas/gnome-canvas.h> -#include <libgnome/gnome-i18n.h> - -static void ea_jump_button_class_init (EaJumpButtonClass *klass); - -static G_CONST_RETURN gchar* ea_jump_button_get_name (AtkObject *accessible); -static G_CONST_RETURN gchar* ea_jump_button_get_description (AtkObject *accessible); - -/* action interface */ -static void atk_action_interface_init (AtkActionIface *iface); -static gboolean jump_button_do_action (AtkAction *action, - gint i); -static gint jump_button_get_n_actions (AtkAction *action); -static G_CONST_RETURN gchar* jump_button_get_keybinding (AtkAction *action, - gint i); - -static gpointer parent_class = NULL; - -GType -ea_jump_button_get_type (void) -{ - static GType type = 0; - AtkObjectFactory *factory; - GTypeQuery query; - GType derived_atk_type; - - - if (!type) { - static GTypeInfo tinfo = { - sizeof (EaJumpButtonClass), - (GBaseInitFunc) NULL, /* base init */ - (GBaseFinalizeFunc) NULL, /* base finalize */ - (GClassInitFunc) ea_jump_button_class_init, /* class init */ - (GClassFinalizeFunc) NULL, /* class finalize */ - NULL, /* class data */ - sizeof (EaJumpButton), /* instance size */ - 0, /* nb preallocs */ - (GInstanceInitFunc) NULL, /* instance init */ - NULL /* value table */ - }; - - static const GInterfaceInfo atk_action_info = - { - (GInterfaceInitFunc) atk_action_interface_init, - (GInterfaceFinalizeFunc) NULL, - NULL - }; - - /* - * Figure out the size of the class and instance - * we are run-time deriving from (atk object for GNOME_TYPE_CANVAS_ITEM, in this case) - */ - - factory = atk_registry_get_factory (atk_get_default_registry (), - GNOME_TYPE_CANVAS_ITEM); - derived_atk_type = atk_object_factory_get_accessible_type (factory); - g_type_query (derived_atk_type, &query); - - tinfo.class_size = query.class_size; - tinfo.instance_size = query.instance_size; - - /* we inherit the component and other interfaces from GNOME_TYPE_CANVAS_ITEM */ - type = g_type_register_static (derived_atk_type, - "EaJumpButton", &tinfo, 0); - - g_type_add_interface_static (type, ATK_TYPE_ACTION, - &atk_action_info); - } - - return type; -} - -static void -ea_jump_button_class_init (EaJumpButtonClass *klass) -{ - AtkObjectClass *class = ATK_OBJECT_CLASS (klass); - - parent_class = g_type_class_peek_parent (klass); - - class->get_name = ea_jump_button_get_name; - class->get_description = ea_jump_button_get_description; -} - -AtkObject* -ea_jump_button_new (GObject *obj) -{ - AtkObject *atk_obj = NULL; - GObject *target_obj; - - g_return_val_if_fail (GNOME_IS_CANVAS_ITEM (obj), NULL); - - target_obj = obj; - atk_obj = g_object_get_data (target_obj, "accessible-object"); - - if (!atk_obj) { - static AtkRole event_role = ATK_ROLE_INVALID; - atk_obj = ATK_OBJECT (g_object_new (EA_TYPE_JUMP_BUTTON, - NULL)); - atk_object_initialize (atk_obj, target_obj); - if (event_role == ATK_ROLE_INVALID) - event_role = atk_role_register ("Jump Button"); - atk_obj->role = event_role; - } - - /* the registered factory for GNOME_TYPE_CANVAS_ITEM is cannot create a EaJumpbutton, - * we should save the EaJumpbutton object in it. - */ - g_object_set_data (obj, "accessible-object", atk_obj); - - return atk_obj; -} - -static G_CONST_RETURN gchar* -ea_jump_button_get_name (AtkObject *accessible) -{ - g_return_val_if_fail (EA_IS_JUMP_BUTTON (accessible), NULL); - - if (accessible->name) - return accessible->name; - return _("Jump button"); -} - -static G_CONST_RETURN gchar* -ea_jump_button_get_description (AtkObject *accessible) -{ - if (accessible->description) - return accessible->description; - - return _("Click here, you can find more events."); -} - -static void -atk_action_interface_init (AtkActionIface *iface) -{ - g_return_if_fail (iface != NULL); - - iface->do_action = jump_button_do_action; - iface->get_n_actions = jump_button_get_n_actions; - iface->get_keybinding = jump_button_get_keybinding; -} - -static gboolean -jump_button_do_action (AtkAction *action, - gint i) -{ - gboolean return_value = TRUE; - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - GnomeCanvasItem *item; - ECalendarView *cal_view; - EWeekView *week_view; - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (action); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return FALSE; - - item = GNOME_CANVAS_ITEM (g_obj); - cal_view = ea_calendar_helpers_get_cal_view_from (GNOME_CANVAS_ITEM (item)); - week_view = E_WEEK_VIEW (cal_view); - - switch (i) - { - case 0: - e_week_view_jump_to_button_item (week_view, GNOME_CANVAS_ITEM (item)); - break; - default: - return_value = FALSE; - break; - } - return return_value; -} - -static gint -jump_button_get_n_actions (AtkAction *action) -{ - return 1; -} - -static G_CONST_RETURN gchar* -jump_button_get_keybinding (AtkAction *action, - gint i) -{ - gchar *return_value = NULL; - - switch (i) - { - case 0: - { - return_value = "space or enter"; - break; - } - default: - break; - } - return return_value; -} diff --git a/a11y/calendar/ea-jump-button.h b/a11y/calendar/ea-jump-button.h deleted file mode 100644 index ef1f1efb35..0000000000 --- a/a11y/calendar/ea-jump-button.h +++ /dev/null @@ -1,64 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* vim:expandtab:shiftwidth=8:tabstop=8: - */ -/* Evolution Accessibility: ea-jump-button.h - * - * Copyright (C) 2003 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Yang Wu <yang.wu@sun.com> Sun Microsystem Inc., 2003 - * - */ - -#ifndef __EA_JUMP_BUTTON_H__ -#define __EA_JUMP_BUTTON_H__ - -#include <atk/atkgobjectaccessible.h> - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -#define EA_TYPE_JUMP_BUTTON (ea_jump_button_get_type ()) -#define EA_JUMP_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EA_TYPE_JUMP_BUTTON, EaJumpButton)) -#define EA_JUMP_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EA_TYPE_JUMP_BUTTON, EaJumpButtonClass)) -#define EA_IS_JUMP_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EA_TYPE_JUMP_BUTTON)) -#define EA_IS_JUMP_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EA_TYPE_JUMP_BUTTON)) -#define EA_JUMP_BUTTON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EA_TYPE_JUMP_BUTTON, EaJumpButtonClass)) - -typedef struct _EaJumpButton EaJumpButton; -typedef struct _EaJumpButtonClass EaJumpButtonClass; - -struct _EaJumpButton -{ - AtkGObjectAccessible parent; -}; - -GType ea_jump_button_get_type (void); - -struct _EaJumpButtonClass -{ - AtkGObjectAccessibleClass parent_class; -}; - -AtkObject *ea_jump_button_new (GObject *obj); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - - -#endif /* __EA_JUMP_BUTTON_H__ */ diff --git a/a11y/calendar/ea-week-view-cell.c b/a11y/calendar/ea-week-view-cell.c deleted file mode 100644 index 543b26794a..0000000000 --- a/a11y/calendar/ea-week-view-cell.c +++ /dev/null @@ -1,478 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* vim:expandtab:shiftwidth=8:tabstop=8: - */ -/* Evolution Accessibility: ea-week-view-cell.c - * - * Copyright (C) 2003 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003 - * Author: Yang Wu <Yang.Wu@sun.com> Sun Microsystem Inc., 2003 - * - */ - -#include "ea-week-view-cell.h" -#include "ea-week-view-main-item.h" -#include "ea-factory.h" - -/* EWeekViewCell */ - -static void e_week_view_cell_class_init (EWeekViewCellClass *class); - -EA_FACTORY_GOBJECT (EA_TYPE_WEEK_VIEW_CELL, ea_week_view_cell, ea_week_view_cell_new) - -GType -e_week_view_cell_get_type (void) -{ - static GType type = 0; - - if (!type) { - static GTypeInfo tinfo = { - sizeof (EWeekViewCellClass), - (GBaseInitFunc) NULL, /* base init */ - (GBaseFinalizeFunc) NULL, /* base finalize */ - (GClassInitFunc) e_week_view_cell_class_init, /* class init */ - (GClassFinalizeFunc) NULL, /* class finalize */ - NULL, /* class data */ - sizeof (EWeekViewCell), /* instance size */ - 0, /* nb preallocs */ - (GInstanceInitFunc) NULL, /* instance init */ - NULL /* value table */ - }; - - type = g_type_register_static (G_TYPE_OBJECT, - "EWeekViewCell", &tinfo, 0); - } - - return type; -} - -static void -e_week_view_cell_class_init (EWeekViewCellClass *class) -{ - EA_SET_FACTORY (e_week_view_cell_get_type (), ea_week_view_cell); -} - -EWeekViewCell * -e_week_view_cell_new (EWeekView *week_view, gint row, gint column) -{ - GObject *object; - EWeekViewCell *cell; - - g_return_val_if_fail (E_IS_WEEK_VIEW (week_view), NULL); - - object = g_object_new (E_TYPE_WEEK_VIEW_CELL, NULL); - cell = E_WEEK_VIEW_CELL (object); - cell->week_view = week_view; - cell->row = row; - cell->column = column; - -#ifdef ACC_DEBUG - printf ("EvoAcc: e_week_view_cell created %p\n", (void *)cell); -#endif - - return cell; -} - -/* EaWeekViewCell */ - -static void ea_week_view_cell_class_init (EaWeekViewCellClass *klass); - -static G_CONST_RETURN gchar* ea_week_view_cell_get_name (AtkObject *accessible); -static G_CONST_RETURN gchar* ea_week_view_cell_get_description (AtkObject *accessible); -static AtkStateSet* ea_week_view_cell_ref_state_set (AtkObject *obj); -static AtkObject * ea_week_view_cell_get_parent (AtkObject *accessible); -static gint ea_week_view_cell_get_index_in_parent (AtkObject *accessible); - -/* component interface */ -static void atk_component_interface_init (AtkComponentIface *iface); -static void component_interface_get_extents (AtkComponent *component, - gint *x, gint *y, - gint *width, gint *height, - AtkCoordType coord_type); -static gboolean component_interface_grab_focus (AtkComponent *component); - -static gpointer parent_class = NULL; - -#ifdef ACC_DEBUG -static gint n_ea_week_view_cell_created = 0, n_ea_week_view_cell_destroyed = 0; -static void ea_week_view_cell_finalize (GObject *object); -#endif - -GType -ea_week_view_cell_get_type (void) -{ - static GType type = 0; - - if (!type) { - static GTypeInfo tinfo = { - sizeof (EaWeekViewCellClass), - (GBaseInitFunc) NULL, /* base init */ - (GBaseFinalizeFunc) NULL, /* base finalize */ - (GClassInitFunc) ea_week_view_cell_class_init, /* class init */ - (GClassFinalizeFunc) NULL, /* class finalize */ - NULL, /* class data */ - sizeof (EaWeekViewCell), /* instance size */ - 0, /* nb preallocs */ - (GInstanceInitFunc) NULL, /* instance init */ - NULL /* value table */ - }; - - static const GInterfaceInfo atk_component_info = { - (GInterfaceInitFunc) atk_component_interface_init, - (GInterfaceFinalizeFunc) NULL, - NULL - }; - type = g_type_register_static (ATK_TYPE_GOBJECT_ACCESSIBLE, - "EaWeekViewCell", &tinfo, 0); - g_type_add_interface_static (type, ATK_TYPE_COMPONENT, - &atk_component_info); - - } - - return type; -} - -static void -ea_week_view_cell_class_init (EaWeekViewCellClass *klass) -{ - AtkObjectClass *class = ATK_OBJECT_CLASS (klass); - -#ifdef ACC_DEBUG - GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - gobject_class->finalize = ea_week_view_cell_finalize; -#endif - - parent_class = g_type_class_peek_parent (klass); - - class->get_name = ea_week_view_cell_get_name; - class->get_description = ea_week_view_cell_get_description; - class->ref_state_set = ea_week_view_cell_ref_state_set; - - class->get_parent = ea_week_view_cell_get_parent; - class->get_index_in_parent = ea_week_view_cell_get_index_in_parent; - -} - -AtkObject* -ea_week_view_cell_new (GObject *obj) -{ - gpointer object; - AtkObject *atk_object; - - g_return_val_if_fail (E_IS_WEEK_VIEW_CELL (obj), NULL); - object = g_object_new (EA_TYPE_WEEK_VIEW_CELL, NULL); - atk_object = ATK_OBJECT (object); - atk_object_initialize (atk_object, obj); - atk_object->role = ATK_ROLE_UNKNOWN; - -#ifdef ACC_DEBUG - ++n_ea_week_view_cell_created; - printf ("ACC_DEBUG: n_ea_week_view_cell_created = %d\n", - n_ea_week_view_cell_created); -#endif - return atk_object; -} - -#ifdef ACC_DEBUG -static void ea_week_view_cell_finalize (GObject *object) -{ - ++n_ea_week_view_cell_destroyed; - printf ("ACC_DEBUG: n_ea_week_view_cell_destroyed = %d\n", - n_ea_week_view_cell_destroyed); -} -#endif - -static G_CONST_RETURN gchar* -ea_week_view_cell_get_name (AtkObject *accessible) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EWeekViewCell *cell; - - g_return_val_if_fail (EA_IS_WEEK_VIEW_CELL (accessible), NULL); - - if (!accessible->name) { - AtkObject *ea_main_item; - GnomeCanvasItem *main_item; - gchar *new_name = g_strdup (""); - const gchar *row_label, *column_label; - gint new_column, new_row; - gint start_day; - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (accessible); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return NULL; - - cell = E_WEEK_VIEW_CELL (g_obj); - main_item = cell->week_view->main_canvas_item; - ea_main_item = atk_gobject_accessible_for_object (G_OBJECT (main_item)); - - start_day = cell->week_view->display_start_day; - if (cell->column + start_day >= 7) { - new_column = cell->column + start_day - 7; - new_row = cell->row + 1; - } else { - new_column = cell->column + start_day; - new_row = cell->row; - } - - column_label = atk_table_get_column_description (ATK_TABLE (ea_main_item), - new_column); - row_label = atk_table_get_row_description (ATK_TABLE (ea_main_item), - new_row); - new_name = g_strconcat (column_label, " ", row_label, NULL); - ATK_OBJECT_CLASS (parent_class)->set_name (accessible, new_name); - g_free (new_name); - } - return accessible->name; -} - -static G_CONST_RETURN gchar* -ea_week_view_cell_get_description (AtkObject *accessible) -{ - return ea_week_view_cell_get_name (accessible); -} - -static AtkStateSet* -ea_week_view_cell_ref_state_set (AtkObject *obj) -{ - AtkStateSet *state_set; - GObject *g_obj; - AtkObject *parent; - gint x, y, width, height; - gint parent_x, parent_y, parent_width, parent_height; - - state_set = ATK_OBJECT_CLASS (parent_class)->ref_state_set (obj); - g_obj = atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE(obj)); - if (!g_obj) - return state_set; - - atk_state_set_add_state (state_set, ATK_STATE_SELECTABLE); - - parent = atk_object_get_parent (obj); - atk_component_get_extents (ATK_COMPONENT (obj), &x, &y, - &width, &height, ATK_XY_WINDOW); - atk_component_get_extents (ATK_COMPONENT (parent), &parent_x, &parent_y, - &parent_width, &parent_height, ATK_XY_WINDOW); - - - if (x + width < parent_x || x > parent_x + parent_width || - y + height < parent_y || y > parent_y + parent_height) - /* the cell is out of the main canvas */ - ; - else - atk_state_set_add_state (state_set, ATK_STATE_VISIBLE); - - return state_set; -} - -static AtkObject * -ea_week_view_cell_get_parent (AtkObject *accessible) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EWeekViewCell *cell; - - g_return_val_if_fail (EA_IS_WEEK_VIEW_CELL (accessible), NULL); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (accessible); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return NULL; - - cell = E_WEEK_VIEW_CELL (g_obj); - return atk_gobject_accessible_for_object (G_OBJECT (cell->week_view->main_canvas_item)); -} - -static gint -ea_week_view_cell_get_index_in_parent (AtkObject *accessible) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EWeekViewCell *cell; - AtkObject *parent; - - g_return_val_if_fail (EA_IS_WEEK_VIEW_CELL (accessible), -1); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (accessible); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return -1; - - cell = E_WEEK_VIEW_CELL (g_obj); - parent = atk_object_get_parent (accessible); - return atk_table_get_index_at (ATK_TABLE (parent), - cell->row, cell->column); -} - -/* Atk Component Interface */ - -static void -atk_component_interface_init (AtkComponentIface *iface) -{ - g_return_if_fail (iface != NULL); - - iface->get_extents = component_interface_get_extents; - iface->grab_focus = component_interface_grab_focus; -} - -static void -component_interface_get_extents (AtkComponent *component, - gint *x, gint *y, gint *width, gint *height, - AtkCoordType coord_type) -{ - GObject *g_obj; - AtkObject *atk_obj; - EWeekViewCell *cell; - EWeekView *week_view; - GtkWidget *main_canvas; - gint week_view_width, week_view_height; - gint scroll_x, scroll_y; - gint start_day; - - *x = *y = *width = *height = 0; - - g_return_if_fail (EA_IS_WEEK_VIEW_CELL (component)); - - g_obj = atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE(component)); - if (!g_obj) - /* defunct object*/ - return; - - cell = E_WEEK_VIEW_CELL (g_obj); - week_view = cell->week_view; - main_canvas = cell->week_view->main_canvas; - - atk_obj = atk_gobject_accessible_for_object (G_OBJECT (main_canvas)); - atk_component_get_extents (ATK_COMPONENT (atk_obj), - x, y, - &week_view_width, &week_view_height, - coord_type); - gnome_canvas_get_scroll_offsets (GNOME_CANVAS (week_view->main_canvas), - &scroll_x, &scroll_y); - start_day = week_view->display_start_day; - if (week_view->multi_week_view) { - if (week_view->compress_weekend && (cell->column == (5 - start_day))) { - *height = week_view->row_heights[cell->row*2]; - *width = week_view->col_widths[cell->column]; - *x += week_view->col_offsets[cell->column] - scroll_x; - *y += week_view->row_offsets[cell->row*2]- scroll_y; - } else if (week_view->compress_weekend && (cell->column == (6 - start_day))) { - *height = week_view->row_heights[cell->row*2]; - *width = week_view->col_widths[cell->column - 1]; - *x += week_view->col_offsets[cell->column - 1]- scroll_x; - *y += week_view->row_offsets[cell->row*2 + 1]- scroll_y; - } else if (week_view->compress_weekend && (cell->column > (6 - start_day))){ - *height = week_view->row_heights[cell->row*2]*2; - *width = week_view->col_widths[cell->column - 1]; - *x += week_view->col_offsets[cell->column - 1] - scroll_x; - *y += week_view->row_offsets[cell->row*2]- scroll_y; - } else { - *height = week_view->row_heights[cell->row*2]*2; - *width = week_view->col_widths[cell->column]; - *x += week_view->col_offsets[cell->column] - scroll_x; - *y += week_view->row_offsets[cell->row*2]- scroll_y; - } - } else { - if (start_day < 3) { - if (cell->column < 3) { - *height = week_view->row_heights[cell->column*2]*2; - *width = week_view->col_widths[0]; - *x += week_view->col_offsets[0] - scroll_x; - *y += week_view->row_offsets[cell->column*2]- scroll_y; - } else { - if (cell->column == 5 - start_day) { - *height = week_view->row_heights[(cell->column - 3)*2]; - *width = week_view->col_widths[1]; - *x += week_view->col_offsets[1] - scroll_x; - *y += week_view->row_offsets[(cell->column - 3)*2]- scroll_y; - } else if (cell->column == 6 - start_day) { - *height = week_view->row_heights[(cell->column - 4)*2]; - *width = week_view->col_widths[1]; - *x += week_view->col_offsets[1] - scroll_x; - *y += week_view->row_offsets[(cell->column - 3)*2 - 1]- scroll_y; - } else if (cell->column > 6 - start_day) { - *height = week_view->row_heights[(cell->column - 4)*2]*2; - *width = week_view->col_widths[1]; - *x += week_view->col_offsets[1] - scroll_x; - *y += week_view->row_offsets[(cell->column - 4)*2]- scroll_y; - } else { - *height = week_view->row_heights[(cell->column - 3)*2]*2; - *width = week_view->col_widths[1]; - *x += week_view->col_offsets[1] - scroll_x; - *y += week_view->row_offsets[(cell->column - 3)*2]- scroll_y; - } - } - } else if (cell->column < 4) { - if (cell->column == 5 - start_day) { - *height = week_view->row_heights[cell->column*2]; - *width = week_view->col_widths[0]; - *x += week_view->col_offsets[0] - scroll_x; - *y += week_view->row_offsets[cell->column*2]- scroll_y; - } else if (cell->column == 6 - start_day) { - *height = week_view->row_heights[(cell->column - 1)*2]; - *width = week_view->col_widths[0]; - *x += week_view->col_offsets[0] - scroll_x; - *y += week_view->row_offsets[cell->column*2 - 1]- scroll_y; - } else if (cell->column > 6 - start_day) { - *height = week_view->row_heights[(cell->column - 1)*2]*2; - *width = week_view->col_widths[0]; - *x += week_view->col_offsets[0] - scroll_x; - *y += week_view->row_offsets[(cell->column - 1)*2]- scroll_y; - } else { - *height = week_view->row_heights[(cell->column)*2]*2; - *width = week_view->col_widths[0]; - *x += week_view->col_offsets[0] - scroll_x; - *y += week_view->row_offsets[cell->column*2]- scroll_y; - } - } else { - *height = week_view->row_heights[(cell->column - 4)*2]*2; - *width = week_view->col_widths[1]; - *x += week_view->col_offsets[1] - scroll_x; - *y += week_view->row_offsets[(cell->column - 4)*2]- scroll_y; - } - } -} - -static gboolean -component_interface_grab_focus (AtkComponent *comp) -{ - GObject *g_obj; - EWeekViewCell *cell; - EWeekView *week_view; - GtkWidget *toplevel; - - g_return_val_if_fail (EA_IS_WEEK_VIEW_CELL (comp), FALSE); - - g_obj = atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE (comp)); - if (!g_obj) - return FALSE; - - cell = E_WEEK_VIEW_CELL (g_obj); - week_view = cell->week_view; - - week_view->selection_start_day = cell->row * 7 + cell->column; - week_view->selection_end_day = cell->row * 7 + cell->column; - gtk_widget_queue_draw (week_view->main_canvas); - - toplevel = gtk_widget_get_toplevel (GTK_WIDGET (week_view)); - if (GTK_WIDGET_TOPLEVEL (toplevel)) - gtk_window_present (GTK_WINDOW (toplevel)); - - return TRUE; -} diff --git a/a11y/calendar/ea-week-view-cell.h b/a11y/calendar/ea-week-view-cell.h deleted file mode 100644 index 4fcb0d0890..0000000000 --- a/a11y/calendar/ea-week-view-cell.h +++ /dev/null @@ -1,92 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* vim:expandtab:shiftwidth=8:tabstop=8: - */ -/* Evolution Accessibility: ea-week-view-cell.h - * - * Copyright (C) 2003 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003 - * Author: Yang Wu <yang.wu@sun.com> Sun Microsystem Inc., 2003 - * - */ - -#ifndef __EA_WEEK_VIEW_CELL_H__ -#define __EA_WEEK_VIEW_CELL_H__ - -#include <atk/atkgobjectaccessible.h> -#include "e-week-view.h" - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -#define E_TYPE_WEEK_VIEW_CELL (e_week_view_cell_get_type ()) -#define E_WEEK_VIEW_CELL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), E_TYPE_WEEK_VIEW_CELL, EWeekViewCell)) -#define E_WEEK_VIEW_CELL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), E_TYPE_WEEK_VIEW_CELL, EWeekViewCellClass)) -#define E_IS_WEEK_VIEW_CELL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), E_TYPE_WEEK_VIEW_CELL)) -#define E_IS_WEEK_VIEW_CELL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), E_TYPE_WEEK_VIEW_CELL)) -#define E_WEEK_VIEW_CELL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), E_TYPE_WEEK_VIEW_CELL, EWeekViewCellClass)) - -typedef struct _EWeekViewCell EWeekViewCell; -typedef struct _EWeekViewCellClass EWeekViewCellClass; - -struct _EWeekViewCell -{ - GObject parent; - EWeekView *week_view; - gint row; - gint column; -}; - -GType e_week_view_cell_get_type (void); - -struct _EWeekViewCellClass -{ - GObjectClass parent_class; -}; - -EWeekViewCell * e_week_view_cell_new (EWeekView *week_view, gint row, gint column); - -#define EA_TYPE_WEEK_VIEW_CELL (ea_week_view_cell_get_type ()) -#define EA_WEEK_VIEW_CELL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EA_TYPE_WEEK_VIEW_CELL, EaWeekViewCell)) -#define EA_WEEK_VIEW_CELL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EA_TYPE_WEEK_VIEW_CELL, EaWeekViewCellClass)) -#define EA_IS_WEEK_VIEW_CELL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EA_TYPE_WEEK_VIEW_CELL)) -#define EA_IS_WEEK_VIEW_CELL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EA_TYPE_WEEK_VIEW_CELL)) -#define EA_WEEK_VIEW_CELL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EA_TYPE_WEEK_VIEW_CELL, EaWeekViewCellClass)) - -typedef struct _EaWeekViewCell EaWeekViewCell; -typedef struct _EaWeekViewCellClass EaWeekViewCellClass; - -struct _EaWeekViewCell -{ - AtkGObjectAccessible parent; -}; - -GType ea_week_view_cell_get_type (void); - -struct _EaWeekViewCellClass -{ - AtkGObjectAccessibleClass parent_class; -}; - -AtkObject* ea_week_view_cell_new (GObject *gobj); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __EA_WEEK_VIEW_CELL_H__ */ diff --git a/a11y/calendar/ea-week-view-main-item.c b/a11y/calendar/ea-week-view-main-item.c deleted file mode 100644 index 2d013dc802..0000000000 --- a/a11y/calendar/ea-week-view-main-item.c +++ /dev/null @@ -1,1275 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* vim:expandtab:shiftwidth=8:tabstop=8: - */ -/* Evolution Accessibility: ea-week-view-main-item.c - * - * Copyright (C) 2003 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003 - * Author: Yang Wu <Yang.Wu@sun.com> Sun Microsystem Inc., 2003 - * - */ - -#include "ea-week-view-main-item.h" -#include "ea-week-view.h" -#include "ea-week-view-cell.h" -#include "ea-cell-table.h" -#include <libgnome/gnome-i18n.h> - -/* EaWeekViewMainItem */ -static void ea_week_view_main_item_class_init (EaWeekViewMainItemClass *klass); - -static void ea_week_view_main_item_finalize (GObject *object); -static G_CONST_RETURN gchar* ea_week_view_main_item_get_name (AtkObject *accessible); -static G_CONST_RETURN gchar* ea_week_view_main_item_get_description (AtkObject *accessible); - -static gint ea_week_view_main_item_get_n_children (AtkObject *obj); -static AtkObject* ea_week_view_main_item_ref_child (AtkObject *obj, - gint i); -static AtkObject * ea_week_view_main_item_get_parent (AtkObject *accessible); -static gint ea_week_view_main_item_get_index_in_parent (AtkObject *accessible); - -/* callbacks */ -static void ea_week_view_main_item_dates_change_cb (GnomeCalendar *gcal, gpointer data); -static void ea_week_view_main_item_time_change_cb (EWeekView *week_view, gpointer data); - -/* component interface */ -static void atk_component_interface_init (AtkComponentIface *iface); -static void component_interface_get_extents (AtkComponent *component, - gint *x, gint *y, - gint *width, gint *height, - AtkCoordType coord_type); - -/* atk table interface */ -static void atk_table_interface_init (AtkTableIface *iface); -static gint table_interface_get_index_at (AtkTable *table, - gint row, - gint column); -static gint table_interface_get_column_at_index (AtkTable *table, - gint index); -static gint table_interface_get_row_at_index (AtkTable *table, - gint index); -static AtkObject* table_interface_ref_at (AtkTable *table, - gint row, - gint column); -static gint table_interface_get_n_rows (AtkTable *table); -static gint table_interface_get_n_columns (AtkTable *table); -static gint table_interface_get_column_extent_at (AtkTable *table, - gint row, - gint column); -static gint table_interface_get_row_extent_at (AtkTable *table, - gint row, - gint column); - -static gboolean table_interface_is_row_selected (AtkTable *table, - gint row); -static gboolean table_interface_is_column_selected (AtkTable *table, - gint row); -static gboolean table_interface_is_selected (AtkTable *table, - gint row, - gint column); -static gint table_interface_get_selected_rows (AtkTable *table, - gint **rows_selected); -static gint table_interface_get_selected_columns (AtkTable *table, - gint **columns_selected); -static gboolean table_interface_add_row_selection (AtkTable *table, gint row); -static gboolean table_interface_remove_row_selection (AtkTable *table, - gint row); -static gboolean table_interface_add_column_selection (AtkTable *table, - gint column); -static gboolean table_interface_remove_column_selection (AtkTable *table, - gint column); -static AtkObject* table_interface_get_row_header (AtkTable *table, gint row); -static AtkObject* table_interface_get_column_header (AtkTable *table, - gint in_col); -static AtkObject* table_interface_get_caption (AtkTable *table); - -static G_CONST_RETURN gchar* -table_interface_get_column_description (AtkTable *table, gint in_col); - -static G_CONST_RETURN gchar* -table_interface_get_row_description (AtkTable *table, gint row); - -static AtkObject* table_interface_get_summary (AtkTable *table); - -/* atk selection interface */ -static void atk_selection_interface_init (AtkSelectionIface *iface); -static gboolean selection_interface_add_selection (AtkSelection *selection, - gint i); -static gboolean selection_interface_clear_selection (AtkSelection *selection); -static AtkObject* selection_interface_ref_selection (AtkSelection *selection, - gint i); -static gint selection_interface_get_selection_count (AtkSelection *selection); -static gboolean selection_interface_is_child_selected (AtkSelection *selection, - gint i); - -/* helpers */ -static EaCellTable * -ea_week_view_main_item_get_cell_data (EaWeekViewMainItem *ea_main_item); - -static void -ea_week_view_main_item_destory_cell_data (EaWeekViewMainItem *ea_main_item); - -static gint -ea_week_view_main_item_get_child_index_at (EaWeekViewMainItem *ea_main_item, - gint row, gint column); -static gint -ea_week_view_main_item_get_row_at_index (EaWeekViewMainItem *ea_main_item, - gint index); -static gint -ea_week_view_main_item_get_column_at_index (EaWeekViewMainItem *ea_main_item, - gint index); -static gint -ea_week_view_main_item_get_row_label (EaWeekViewMainItem *ea_main_item, - gint row, gchar *buffer, - gint buffer_size); - -#ifdef ACC_DEBUG -static gint n_ea_week_view_main_item_created = 0; -static gint n_ea_week_view_main_item_destroyed = 0; -#endif - -static gpointer parent_class = NULL; - -GType -ea_week_view_main_item_get_type (void) -{ - static GType type = 0; - AtkObjectFactory *factory; - GTypeQuery query; - GType derived_atk_type; - - if (!type) { - static GTypeInfo tinfo = { - sizeof (EaWeekViewMainItemClass), - (GBaseInitFunc) NULL, /* base init */ - (GBaseFinalizeFunc) NULL, /* base finalize */ - (GClassInitFunc) ea_week_view_main_item_class_init, - (GClassFinalizeFunc) NULL, /* class finalize */ - NULL, /* class data */ - sizeof (EaWeekViewMainItem), /* instance size */ - 0, /* nb preallocs */ - (GInstanceInitFunc) NULL, /* instance init */ - NULL /* value table */ - }; - - static const GInterfaceInfo atk_component_info = { - (GInterfaceInitFunc) atk_component_interface_init, - (GInterfaceFinalizeFunc) NULL, - NULL - }; - - static const GInterfaceInfo atk_table_info = { - (GInterfaceInitFunc) atk_table_interface_init, - (GInterfaceFinalizeFunc) NULL, - NULL - }; - static const GInterfaceInfo atk_selection_info = { - (GInterfaceInitFunc) atk_selection_interface_init, - (GInterfaceFinalizeFunc) NULL, - NULL - }; - - - /* - * Figure out the size of the class and instance - * we are run-time deriving from (GailCanvasItem, in this case) - * - */ - - factory = atk_registry_get_factory (atk_get_default_registry (), - e_week_view_main_item_get_type()); - derived_atk_type = atk_object_factory_get_accessible_type (factory); - g_type_query (derived_atk_type, &query); - - tinfo.class_size = query.class_size; - tinfo.instance_size = query.instance_size; - - type = g_type_register_static (derived_atk_type, - "EaWeekViewMainItem", &tinfo, 0); - g_type_add_interface_static (type, ATK_TYPE_COMPONENT, - &atk_component_info); - g_type_add_interface_static (type, ATK_TYPE_TABLE, - &atk_table_info); - g_type_add_interface_static (type, ATK_TYPE_SELECTION, - &atk_selection_info); - } - - return type; -} - -static void -ea_week_view_main_item_class_init (EaWeekViewMainItemClass *klass) -{ - GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - AtkObjectClass *class = ATK_OBJECT_CLASS (klass); - - gobject_class->finalize = ea_week_view_main_item_finalize; - parent_class = g_type_class_peek_parent (klass); - - class->get_name = ea_week_view_main_item_get_name; - class->get_description = ea_week_view_main_item_get_description; - - class->get_n_children = ea_week_view_main_item_get_n_children; - class->ref_child = ea_week_view_main_item_ref_child; - class->get_parent = ea_week_view_main_item_get_parent; - class->get_index_in_parent = ea_week_view_main_item_get_index_in_parent; -} - -AtkObject* -ea_week_view_main_item_new (GObject *obj) -{ - AtkObject *accessible; - GnomeCalendar *gcal; - EWeekViewMainItem *main_item; - - g_return_val_if_fail (E_IS_WEEK_VIEW_MAIN_ITEM (obj), NULL); - - accessible = ATK_OBJECT (g_object_new (EA_TYPE_WEEK_VIEW_MAIN_ITEM, - NULL)); - - atk_object_initialize (accessible, obj); - accessible->role = ATK_ROLE_TABLE; - -#ifdef ACC_DEBUG - ++n_ea_week_view_main_item_created; - printf ("ACC_DEBUG: n_ea_week_view_main_item_created = %d\n", - n_ea_week_view_main_item_created); -#endif - main_item = E_WEEK_VIEW_MAIN_ITEM (obj); - g_signal_connect (main_item->week_view, "selected_time_changed", - G_CALLBACK (ea_week_view_main_item_time_change_cb), - accessible); - - /* listen for date changes of calendar */ - gcal = e_calendar_view_get_calendar (E_CALENDAR_VIEW (main_item->week_view)); - if (gcal) - g_signal_connect (gcal, "dates_shown_changed", - G_CALLBACK (ea_week_view_main_item_dates_change_cb), - accessible); - - return accessible; -} - -static void -ea_week_view_main_item_finalize (GObject *object) -{ - EaWeekViewMainItem *ea_main_item; - - g_return_if_fail (EA_IS_WEEK_VIEW_MAIN_ITEM (object)); - - ea_main_item = EA_WEEK_VIEW_MAIN_ITEM (object); - - /* Free the allocated cell data */ - ea_week_view_main_item_destory_cell_data (ea_main_item); - - G_OBJECT_CLASS (parent_class)->finalize (object); -#ifdef ACC_DEBUG - ++n_ea_week_view_main_item_destroyed; - printf ("ACC_DEBUG: n_ea_week_view_main_item_destroyed = %d\n", - n_ea_week_view_main_item_destroyed); -#endif -} - -static G_CONST_RETURN gchar* -ea_week_view_main_item_get_name (AtkObject *accessible) -{ - AtkObject *parent; - g_return_val_if_fail (EA_IS_WEEK_VIEW_MAIN_ITEM (accessible), NULL); - parent = atk_object_get_parent (accessible); - return atk_object_get_name (parent); - -} - -static G_CONST_RETURN gchar* -ea_week_view_main_item_get_description (AtkObject *accessible) -{ - return _("a table to view and select the current time range"); -} - -static gint -ea_week_view_main_item_get_n_children (AtkObject *accessible) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EWeekViewMainItem *main_item; - EWeekView *week_view; - - g_return_val_if_fail (EA_IS_WEEK_VIEW_MAIN_ITEM (accessible), -1); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (accessible); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return -1; - - main_item = E_WEEK_VIEW_MAIN_ITEM (g_obj); - week_view = main_item->week_view; - - if (week_view->multi_week_view) - return 7 * week_view->weeks_shown; - else - return 7; -} - -static AtkObject * -ea_week_view_main_item_ref_child (AtkObject *accessible, gint index) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EWeekViewMainItem *main_item; - EWeekView *week_view; - gint n_children; - EWeekViewCell *cell; - EaCellTable *cell_data; - EaWeekViewMainItem *ea_main_item; - - g_return_val_if_fail (EA_IS_WEEK_VIEW_MAIN_ITEM (accessible), NULL); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (accessible); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return NULL; - - main_item = E_WEEK_VIEW_MAIN_ITEM (g_obj); - week_view = main_item->week_view; - - n_children = ea_week_view_main_item_get_n_children (accessible); - if (index < 0 || index >= n_children) - return NULL; - - ea_main_item = EA_WEEK_VIEW_MAIN_ITEM (accessible); - cell_data = ea_week_view_main_item_get_cell_data (ea_main_item); - if (!cell_data) - return NULL; - cell = ea_cell_table_get_cell_at_index (cell_data, index); - if (!cell) { - gint row, column; - - row = ea_week_view_main_item_get_row_at_index (ea_main_item, index); - column = ea_week_view_main_item_get_column_at_index (ea_main_item, index); - cell = e_week_view_cell_new (week_view, row, column); - ea_cell_table_set_cell_at_index (cell_data, index, cell); - g_object_unref (cell); - } - - return g_object_ref (atk_gobject_accessible_for_object (G_OBJECT(cell))); -} - -static AtkObject * -ea_week_view_main_item_get_parent (AtkObject *accessible) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EWeekViewMainItem *main_item; - - g_return_val_if_fail (EA_IS_WEEK_VIEW_MAIN_ITEM (accessible), NULL); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (accessible); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return NULL; - - main_item = E_WEEK_VIEW_MAIN_ITEM (g_obj); - return gtk_widget_get_accessible (GTK_WIDGET (main_item->week_view)); -} - -static gint -ea_week_view_main_item_get_index_in_parent (AtkObject *accessible) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - - g_return_val_if_fail (EA_IS_WEEK_VIEW_MAIN_ITEM (accessible), -1); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (accessible); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return -1; - - /* always the first child of ea-week-view */ - return 0; -} - -/* callbacks */ - -static void -ea_week_view_main_item_dates_change_cb (GnomeCalendar *gcal, gpointer data) -{ - EaWeekViewMainItem *ea_main_item; - - g_return_if_fail (GNOME_IS_CALENDAR (gcal)); - g_return_if_fail (data); - g_return_if_fail (EA_IS_WEEK_VIEW_MAIN_ITEM (data)); - - ea_main_item = EA_WEEK_VIEW_MAIN_ITEM (data); - -#ifdef ACC_DEBUG - printf ("EvoAcc: ea_week_view_main_item update cb\n"); -#endif - - ea_week_view_main_item_destory_cell_data (ea_main_item); -} - -static void -ea_week_view_main_item_time_change_cb (EWeekView *week_view, gpointer data) -{ - EaWeekViewMainItem *ea_main_item; - AtkObject *item_cell = NULL; - - g_return_if_fail (E_IS_WEEK_VIEW (week_view)); - g_return_if_fail (data); - g_return_if_fail (EA_IS_WEEK_VIEW_MAIN_ITEM (data)); - - ea_main_item = EA_WEEK_VIEW_MAIN_ITEM (data); - -#ifdef ACC_DEBUG - printf ("EvoAcc: ea_week_view_main_item time changed cb\n"); -#endif - /* only deal with the first selected child, for now */ - item_cell = atk_selection_ref_selection (ATK_SELECTION (ea_main_item), - 0); - if (item_cell) { - AtkStateSet *state_set; - state_set = atk_object_ref_state_set (item_cell); - atk_state_set_add_state (state_set, ATK_STATE_FOCUSED); - g_object_unref (state_set); - - g_signal_emit_by_name (ea_main_item, - "active-descendant-changed", - item_cell); - g_signal_emit_by_name (data, "selection_changed"); - atk_focus_tracker_notify (item_cell); - g_object_unref (item_cell); - } -} - -/* helpers */ - -static gint -ea_week_view_main_item_get_child_index_at (EaWeekViewMainItem *ea_main_item, - gint row, gint column) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EWeekViewMainItem *main_item; - EWeekView *week_view; - - g_return_val_if_fail (ea_main_item, -1); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_main_item); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return -1; - - main_item = E_WEEK_VIEW_MAIN_ITEM (g_obj); - week_view = main_item->week_view; - - if (row >= 0 && row < week_view->weeks_shown && - column >= 0 && column < 7) - return row * 7 + column; - - return -1; -} - -static gint -ea_week_view_main_item_get_row_at_index (EaWeekViewMainItem *ea_main_item, - gint index) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EWeekViewMainItem *main_item; - EWeekView *week_view; - gint n_children; - - g_return_val_if_fail (ea_main_item, -1); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_main_item); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return -1; - - main_item = E_WEEK_VIEW_MAIN_ITEM (g_obj); - week_view = main_item->week_view; - - n_children = ea_week_view_main_item_get_n_children (ATK_OBJECT (ea_main_item)); - if (index >= 0 && index < n_children) - return index / 7; - return -1; -} - -static gint -ea_week_view_main_item_get_column_at_index (EaWeekViewMainItem *ea_main_item, - gint index) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EWeekViewMainItem *main_item; - EWeekView *week_view; - gint n_children; - - g_return_val_if_fail (ea_main_item, -1); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_main_item); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return -1; - - main_item = E_WEEK_VIEW_MAIN_ITEM (g_obj); - week_view = main_item->week_view; - - n_children = ea_week_view_main_item_get_n_children (ATK_OBJECT (ea_main_item)); - if (index >= 0 && index < n_children) - return index % 7; - return -1; -} - -static gint -ea_week_view_main_item_get_row_label (EaWeekViewMainItem *ea_main_item, - gint row, gchar *buffer, gint buffer_size) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EWeekViewMainItem *main_item; - EWeekView *week_view; - - g_return_val_if_fail (ea_main_item, 0); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_main_item); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return 0 ; - - main_item = E_WEEK_VIEW_MAIN_ITEM (g_obj); - week_view = main_item->week_view; - - return g_snprintf (buffer, buffer_size, "the %i week", - row + 1); - -} - -static EaCellTable * -ea_week_view_main_item_get_cell_data (EaWeekViewMainItem *ea_main_item) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EWeekViewMainItem *main_item; - EWeekView *week_view; - EaCellTable *cell_data; - - g_return_val_if_fail (ea_main_item, NULL); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_main_item); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return NULL; - - main_item = E_WEEK_VIEW_MAIN_ITEM (g_obj); - week_view = main_item->week_view; - - cell_data = g_object_get_data (G_OBJECT(ea_main_item), - "ea-week-view-cell-table"); - if (!cell_data) { - cell_data = ea_cell_table_create (week_view->weeks_shown, 7, TRUE); - g_object_set_data (G_OBJECT(ea_main_item), - "ea-week-view-cell-table", cell_data); - } - return cell_data; -} - -static void -ea_week_view_main_item_destory_cell_data (EaWeekViewMainItem *ea_main_item) -{ - EaCellTable *cell_data; - - g_return_if_fail (ea_main_item); - - cell_data = g_object_get_data (G_OBJECT(ea_main_item), - "ea-week-view-cell-table"); - if (cell_data) { - ea_cell_table_destroy (cell_data); - g_object_set_data (G_OBJECT(ea_main_item), - "ea-week-view-cell-table", NULL); - } -} - -/* Atk Component Interface */ - -static void -atk_component_interface_init (AtkComponentIface *iface) -{ - g_return_if_fail (iface != NULL); - - iface->get_extents = component_interface_get_extents; -} - -static void -component_interface_get_extents (AtkComponent *component, - gint *x, gint *y, gint *width, gint *height, - AtkCoordType coord_type) -{ - GObject *g_obj; - AtkObject *ea_canvas; - EWeekViewMainItem *main_item; - EWeekView *week_view; - - *x = *y = *width = *height = 0; - - g_return_if_fail (EA_IS_WEEK_VIEW_MAIN_ITEM (component)); - - g_obj = atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE(component)); - if (!g_obj) - /* defunct object*/ - return; - main_item = E_WEEK_VIEW_MAIN_ITEM (g_obj); - week_view = main_item->week_view; - - ea_canvas = gtk_widget_get_accessible (week_view->main_canvas); - atk_component_get_extents (ATK_COMPONENT (ea_canvas), x, y, - width, height, coord_type); -} - -/* atk table interface */ - -static void -atk_table_interface_init (AtkTableIface *iface) -{ - g_return_if_fail (iface != NULL); - - iface->ref_at = table_interface_ref_at; - - iface->get_n_rows = table_interface_get_n_rows; - iface->get_n_columns = table_interface_get_n_columns; - iface->get_index_at = table_interface_get_index_at; - iface->get_column_at_index = table_interface_get_column_at_index; - iface->get_row_at_index = table_interface_get_row_at_index; - iface->get_column_extent_at = table_interface_get_column_extent_at; - iface->get_row_extent_at = table_interface_get_row_extent_at; - - iface->is_selected = table_interface_is_selected; - iface->get_selected_rows = table_interface_get_selected_rows; - iface->get_selected_columns = table_interface_get_selected_columns; - iface->is_row_selected = table_interface_is_row_selected; - iface->is_column_selected = table_interface_is_column_selected; - iface->add_row_selection = table_interface_add_row_selection; - iface->remove_row_selection = table_interface_remove_row_selection; - iface->add_column_selection = table_interface_add_column_selection; - iface->remove_column_selection = table_interface_remove_column_selection; - - iface->get_row_header = table_interface_get_row_header; - iface->get_column_header = table_interface_get_column_header; - iface->get_caption = table_interface_get_caption; - iface->get_summary = table_interface_get_summary; - iface->get_row_description = table_interface_get_row_description; - iface->get_column_description = table_interface_get_column_description; -} - -static AtkObject* -table_interface_ref_at (AtkTable *table, - gint row, - gint column) -{ - gint index; - - EaWeekViewMainItem* ea_main_item = EA_WEEK_VIEW_MAIN_ITEM (table); - index = ea_week_view_main_item_get_child_index_at (ea_main_item, - row, column); - return ea_week_view_main_item_ref_child (ATK_OBJECT (ea_main_item), index); -} - -static gint -table_interface_get_n_rows (AtkTable *table) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EWeekViewMainItem *main_item; - EWeekView *week_view; - EaWeekViewMainItem* ea_main_item = EA_WEEK_VIEW_MAIN_ITEM (table); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_main_item); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return -1; - - main_item = E_WEEK_VIEW_MAIN_ITEM (g_obj); - week_view = main_item->week_view; - - return week_view->weeks_shown; -} - -static gint -table_interface_get_n_columns (AtkTable *table) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EWeekViewMainItem *main_item; - EWeekView *week_view; - EaWeekViewMainItem* ea_main_item = EA_WEEK_VIEW_MAIN_ITEM (table); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_main_item); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return -1; - - main_item = E_WEEK_VIEW_MAIN_ITEM (g_obj); - week_view = main_item->week_view; - - return 7; -} - -static gint -table_interface_get_index_at (AtkTable *table, - gint row, - gint column) -{ - EaWeekViewMainItem* ea_main_item = EA_WEEK_VIEW_MAIN_ITEM (table); - return ea_week_view_main_item_get_child_index_at (ea_main_item, - row, column); -} - -static gint -table_interface_get_column_at_index (AtkTable *table, - gint index) -{ - EaWeekViewMainItem* ea_main_item = EA_WEEK_VIEW_MAIN_ITEM (table); - return ea_week_view_main_item_get_column_at_index (ea_main_item, index); -} - -static gint -table_interface_get_row_at_index (AtkTable *table, - gint index) -{ - EaWeekViewMainItem* ea_main_item = EA_WEEK_VIEW_MAIN_ITEM (table); - return ea_week_view_main_item_get_row_at_index (ea_main_item, index); -} - -static gint -table_interface_get_column_extent_at (AtkTable *table, - gint row, - gint column) -{ - gint index; - gint width = 0, height = 0; - AtkObject *child; - EaWeekViewMainItem* ea_main_item = EA_WEEK_VIEW_MAIN_ITEM (table); - - index = ea_week_view_main_item_get_child_index_at (ea_main_item, - row, column); - child = atk_object_ref_accessible_child (ATK_OBJECT (ea_main_item), - index); - if (child) - atk_component_get_size (ATK_COMPONENT (child), - &width, &height); - - return width; -} - -static gint -table_interface_get_row_extent_at (AtkTable *table, - gint row, - gint column) -{ - gint index; - gint width = 0, height = 0; - AtkObject *child; - EaWeekViewMainItem* ea_main_item = EA_WEEK_VIEW_MAIN_ITEM (table); - - index = ea_week_view_main_item_get_child_index_at (ea_main_item, - row, column); - child = atk_object_ref_accessible_child (ATK_OBJECT (ea_main_item), - index); - if (child) - atk_component_get_size (ATK_COMPONENT (child), - &width, &height); - - return height; -} - -static gboolean -table_interface_is_row_selected (AtkTable *table, - gint row) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EWeekViewMainItem *main_item; - EWeekView *week_view; - EaWeekViewMainItem* ea_main_item = EA_WEEK_VIEW_MAIN_ITEM (table); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_main_item); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return FALSE; - - main_item = E_WEEK_VIEW_MAIN_ITEM (g_obj); - week_view = main_item->week_view; - - if (week_view->selection_start_day == -1) - /* no selection */ - return FALSE; - if ((row < 0)&&(row + 1 > week_view->weeks_shown )) - return FALSE; - if (((week_view->selection_start_day < row*7)&&(week_view->selection_end_day<row*7)) - ||((week_view->selection_start_day > row*7+6)&&(week_view->selection_end_day > row*7+6))) - return FALSE; - else - return TRUE; -} - -static gboolean -table_interface_is_selected (AtkTable *table, - gint row, - gint column) -{ - return table_interface_is_row_selected (table, row) && table_interface_is_column_selected(table, column); -} - -static gboolean -table_interface_is_column_selected (AtkTable *table, - gint column) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EWeekViewMainItem *main_item; - EWeekView *week_view; - EaWeekViewMainItem* ea_main_item = EA_WEEK_VIEW_MAIN_ITEM (table); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_main_item); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return FALSE; - - main_item = E_WEEK_VIEW_MAIN_ITEM (g_obj); - week_view = main_item->week_view; - - if ((column <0)||(column >6)) - return FALSE; - else { - gint i; - for (i=0;i<week_view->weeks_shown;i++) - if ((column + i*7>= week_view->selection_start_day ) && - (column + i*7<= week_view->selection_end_day)) - return TRUE; - return FALSE; - } -} - -static gint -table_interface_get_selected_rows (AtkTable *table, - gint **rows_selected) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EWeekViewMainItem *main_item; - EWeekView *week_view; - EaWeekViewMainItem* ea_main_item = EA_WEEK_VIEW_MAIN_ITEM (table); - gint start_row = -1, n_rows = 0; - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_main_item); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return -1; - - main_item = E_WEEK_VIEW_MAIN_ITEM (g_obj); - week_view = main_item->week_view; - - if (week_view->selection_start_day == -1) - return 0; - - start_row = week_view->selection_start_day; - n_rows = week_view->selection_end_day - start_row + 1; - - if (n_rows > 0 && start_row != -1 && rows_selected) { - gint index; - - *rows_selected = (gint *) g_malloc (n_rows * sizeof (gint)); - for (index = 0; index < n_rows; ++index) - (*rows_selected)[index] = start_row + index; - } - return n_rows; -} - -static gint -table_interface_get_selected_columns (AtkTable *table, - gint **columns_selected) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EWeekViewMainItem *main_item; - EWeekView *week_view; - EaWeekViewMainItem* ea_main_item = EA_WEEK_VIEW_MAIN_ITEM (table); - gint start_column = -1, n_columns = 0; - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_main_item); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return -1; - - main_item = E_WEEK_VIEW_MAIN_ITEM (g_obj); - week_view = main_item->week_view; - - if (week_view->selection_start_day == -1) - return 0; - if (week_view->selection_end_day - week_view->selection_start_day >= 6 ) { - start_column = 0; - n_columns =7; - } else { - start_column = week_view->selection_start_day % 7; - n_columns = (week_view->selection_end_day % 7) - start_column + 1; - } - if (n_columns > 0 && start_column != -1 && columns_selected) { - gint index; - - *columns_selected = (gint *) g_malloc (n_columns * sizeof (gint)); - for (index = 0; index < n_columns; ++index) - (*columns_selected)[index] = start_column + index; - } - return n_columns; -} - -static gboolean -table_interface_add_row_selection (AtkTable *table, - gint row) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EWeekViewMainItem *main_item; - EWeekView *week_view; - EaWeekViewMainItem* ea_main_item = EA_WEEK_VIEW_MAIN_ITEM (table); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_main_item); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return FALSE; - - main_item = E_WEEK_VIEW_MAIN_ITEM (g_obj); - week_view = main_item->week_view; - - /* FIXME: we need multi-selection */ - - week_view->selection_start_day = row * 7; - week_view->selection_end_day = row *7 + 6; - - gtk_widget_queue_draw (week_view->main_canvas); - return TRUE; -} - -static gboolean -table_interface_remove_row_selection (AtkTable *table, - gint row) -{ - return FALSE; -} - -static gboolean -table_interface_add_column_selection (AtkTable *table, - gint column) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EWeekViewMainItem *main_item; - EWeekView *week_view; - EaWeekViewMainItem* ea_main_item = EA_WEEK_VIEW_MAIN_ITEM (table); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_main_item); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return FALSE; - - main_item = E_WEEK_VIEW_MAIN_ITEM (g_obj); - week_view = main_item->week_view; - - /* FIXME: we need multi-selection */ - - week_view->selection_start_day = column; - week_view->selection_end_day = (week_view->weeks_shown - 1)*7+column; - - gtk_widget_queue_draw (week_view->main_canvas); - return TRUE; -} - -static gboolean -table_interface_remove_column_selection (AtkTable *table, - gint column) -{ - /* FIXME: NOT IMPLEMENTED */ - return FALSE; -} - -static AtkObject* -table_interface_get_row_header (AtkTable *table, - gint row) -{ - /* FIXME: NOT IMPLEMENTED */ - return NULL; -} - -static AtkObject* -table_interface_get_column_header (AtkTable *table, - gint in_col) -{ - /* FIXME: NOT IMPLEMENTED */ - return NULL; -} - -static AtkObject* -table_interface_get_caption (AtkTable *table) -{ - /* FIXME: NOT IMPLEMENTED */ - return NULL; -} - -static G_CONST_RETURN gchar* -table_interface_get_column_description (AtkTable *table, - gint in_col) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EWeekViewMainItem *main_item; - EWeekView *week_view; - EaWeekViewMainItem* ea_main_item = EA_WEEK_VIEW_MAIN_ITEM (table); - const gchar *description; - EaCellTable *cell_data; - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_main_item); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return NULL; - - main_item = E_WEEK_VIEW_MAIN_ITEM (g_obj); - week_view = main_item->week_view; - - if (in_col < 0 || in_col > 6) - return NULL; - cell_data = ea_week_view_main_item_get_cell_data (ea_main_item); - if (!cell_data) - return NULL; - - description = ea_cell_table_get_column_label (cell_data, in_col); - if (!description) { - gchar buffer[128]; - - switch (in_col) { - case 0: - g_snprintf(buffer,128,"Monday"); - break; - case 1: - g_snprintf(buffer,128,"Tuesday"); - break; - case 2: - g_snprintf(buffer,128,"Wednesday"); - break; - case 3: - g_snprintf(buffer,128,"Thursday"); - break; - case 4: - g_snprintf(buffer,128,"Friday"); - break; - case 5: - g_snprintf(buffer,128,"Saturday"); - break; - case 6: - g_snprintf(buffer,128,"Sunday"); - break; - default: - break; - } - - ea_cell_table_set_column_label (cell_data, in_col, buffer); - description = ea_cell_table_get_column_label (cell_data, in_col); - } - return description; -} - -static G_CONST_RETURN gchar* -table_interface_get_row_description (AtkTable *table, - gint row) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EWeekViewMainItem *main_item; - EWeekView *week_view; - EaWeekViewMainItem* ea_main_item = EA_WEEK_VIEW_MAIN_ITEM (table); - const gchar *description; - EaCellTable *cell_data; - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_main_item); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return NULL; - - main_item = E_WEEK_VIEW_MAIN_ITEM (g_obj); - week_view = main_item->week_view; - - if (row < 0 || row >= week_view->weeks_shown) - return NULL; - cell_data = ea_week_view_main_item_get_cell_data (ea_main_item); - if (!cell_data) - return NULL; - - description = ea_cell_table_get_row_label (cell_data, row); - if (!description) { - gchar buffer[128]; - ea_week_view_main_item_get_row_label (ea_main_item, row, buffer, sizeof (buffer)); - ea_cell_table_set_row_label (cell_data, row, buffer); - description = ea_cell_table_get_row_label (cell_data, - row); - } - return description; -} - -static AtkObject* -table_interface_get_summary (AtkTable *table) -{ - /* FIXME: NOT IMPLEMENTED */ - return NULL; -} - -/* atkselection interface */ - -static void -atk_selection_interface_init (AtkSelectionIface *iface) -{ - g_return_if_fail (iface != NULL); - - iface->add_selection = selection_interface_add_selection; - iface->clear_selection = selection_interface_clear_selection; - iface->ref_selection = selection_interface_ref_selection; - iface->get_selection_count = selection_interface_get_selection_count; - iface->is_child_selected = selection_interface_is_child_selected; -} - -static gboolean -selection_interface_add_selection (AtkSelection *selection, gint i) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EWeekViewMainItem *main_item; - EWeekView *week_view; - EaWeekViewMainItem* ea_main_item = EA_WEEK_VIEW_MAIN_ITEM (selection); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_main_item); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return FALSE; - - main_item = E_WEEK_VIEW_MAIN_ITEM (g_obj); - week_view = main_item->week_view; - - if (i < 0 || i > week_view->weeks_shown * 7 -1) - return FALSE; - - /*FIXME: multi-selection is needed */ - week_view->selection_start_day = i; - week_view->selection_end_day = i; - - gtk_widget_queue_draw (week_view->main_canvas); - return TRUE; -} - -static gboolean -selection_interface_clear_selection (AtkSelection *selection) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EWeekViewMainItem *main_item; - EWeekView *week_view; - EaWeekViewMainItem* ea_main_item = EA_WEEK_VIEW_MAIN_ITEM (selection); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_main_item); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return -1; - - main_item = E_WEEK_VIEW_MAIN_ITEM (g_obj); - week_view = main_item->week_view; - - week_view->selection_start_day = -1; - week_view->selection_end_day = -1; - - gtk_widget_queue_draw (week_view->main_canvas); - - return TRUE; -} - -static AtkObject* -selection_interface_ref_selection (AtkSelection *selection, gint i) -{ - gint count; - GObject *g_obj; - EWeekView *week_view; - EaWeekViewMainItem* ea_main_item = EA_WEEK_VIEW_MAIN_ITEM (selection); - gint start_index; - - count = selection_interface_get_selection_count (selection); - if (i < 0 || i >=count) - return NULL; - - g_obj = atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE (ea_main_item)); - week_view = E_WEEK_VIEW_MAIN_ITEM (g_obj)->week_view; - start_index = ea_week_view_main_item_get_child_index_at (ea_main_item, - week_view->selection_start_day / 7, - week_view->selection_start_day % 7); - - return ea_week_view_main_item_ref_child (ATK_OBJECT (selection), start_index + i); -} - -static gint -selection_interface_get_selection_count (AtkSelection *selection) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EWeekViewMainItem *main_item; - EWeekView *week_view; - EaWeekViewMainItem* ea_main_item = EA_WEEK_VIEW_MAIN_ITEM (selection); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_main_item); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return 0; - - main_item = E_WEEK_VIEW_MAIN_ITEM (g_obj); - week_view = main_item->week_view; - - if (week_view->selection_start_day == -1 || - week_view->selection_end_day == -1) - return 0; - - return week_view->selection_end_day - week_view->selection_start_day + 1; -} - -static gboolean -selection_interface_is_child_selected (AtkSelection *selection, gint i) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EWeekViewMainItem *main_item; - EWeekView *week_view; - EaWeekViewMainItem* ea_main_item = EA_WEEK_VIEW_MAIN_ITEM (selection); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_main_item); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return FALSE; - - main_item = E_WEEK_VIEW_MAIN_ITEM (g_obj); - week_view = main_item->week_view; - - if ((week_view->selection_start_day <= i)&&(week_view->selection_end_day >= i)) - return TRUE; - else - return FALSE; -} - diff --git a/a11y/calendar/ea-week-view-main-item.h b/a11y/calendar/ea-week-view-main-item.h deleted file mode 100644 index fcf8b45fc8..0000000000 --- a/a11y/calendar/ea-week-view-main-item.h +++ /dev/null @@ -1,65 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* vim:expandtab:shiftwidth=8:tabstop=8: - */ -/* Evolution Accessibility: ea-week-view-main-item.h - * - * Copyright (C) 2003 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003 - * Author: Yang Wu <Yang.Wu@sun.com> Sun Microsystem Inc., 2003 - * - */ - -#ifndef __EA_WEEK_VIEW_MAIN_ITEM_H__ -#define __EA_WEEK_VIEW_MAIN_ITEM_H__ - -#include <atk/atkgobjectaccessible.h> -#include "e-week-view-main-item.h" - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -#define EA_TYPE_WEEK_VIEW_MAIN_ITEM (ea_week_view_main_item_get_type ()) -#define EA_WEEK_VIEW_MAIN_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EA_TYPE_WEEK_VIEW_MAIN_ITEM, EaWeekViewMainItem)) -#define EA_WEEK_VIEW_MAIN_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EA_TYPE_WEEK_VIEW_MAIN_ITEM, EaWeekViewMainItemClass)) -#define EA_IS_WEEK_VIEW_MAIN_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EA_TYPE_WEEK_VIEW_MAIN_ITEM)) -#define EA_IS_WEEK_VIEW_MAIN_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EA_TYPE_WEEK_VIEW_MAIN_ITEM)) -#define EA_WEEK_VIEW_MAIN_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EA_TYPE_WEEK_VIEW_MAIN_ITEM, EaWeekViewMainItemClass)) - -typedef struct _EaWeekViewMainItem EaWeekViewMainItem; -typedef struct _EaWeekViewMainItemClass EaWeekViewMainItemClass; - -struct _EaWeekViewMainItem -{ - AtkGObjectAccessible parent; -}; - -GType ea_week_view_main_item_get_type (void); - -struct _EaWeekViewMainItemClass -{ - AtkGObjectAccessibleClass parent_class; -}; - -AtkObject* ea_week_view_main_item_new (GObject *obj); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __EA_WEEK_VIEW_MAIN_ITEM_H__ */ diff --git a/a11y/calendar/ea-week-view.c b/a11y/calendar/ea-week-view.c deleted file mode 100644 index 3b36ac246d..0000000000 --- a/a11y/calendar/ea-week-view.c +++ /dev/null @@ -1,322 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* vim:expandtab:shiftwidth=8:tabstop=8: - */ -/* Evolution Accessibility: ea-week-view.c - * - * Copyright (C) 2003 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003 - * - */ - -#include "ea-week-view.h" -#include "ea-cal-view.h" -#include "ea-cal-view-event.h" -#include "ea-calendar-helpers.h" -#include "ea-gnome-calendar.h" -#include "calendar-commands.h" -#include <gal/e-text/e-text.h> -#include <libgnome/gnome-i18n.h> - -static void ea_week_view_class_init (EaWeekViewClass *klass); - -static G_CONST_RETURN gchar* ea_week_view_get_name (AtkObject *accessible); -static G_CONST_RETURN gchar* ea_week_view_get_description (AtkObject *accessible); -static gint ea_week_view_get_n_children (AtkObject *obj); -static AtkObject* ea_week_view_ref_child (AtkObject *obj, - gint i); - -static gpointer parent_class = NULL; - -GType -ea_week_view_get_type (void) -{ - static GType type = 0; - AtkObjectFactory *factory; - GTypeQuery query; - GType derived_atk_type; - - if (!type) { - static GTypeInfo tinfo = { - sizeof (EaWeekViewClass), - (GBaseInitFunc) NULL, /* base init */ - (GBaseFinalizeFunc) NULL, /* base finalize */ - (GClassInitFunc) ea_week_view_class_init, /* class init */ - (GClassFinalizeFunc) NULL, /* class finalize */ - NULL, /* class data */ - sizeof (EaWeekView), /* instance size */ - 0, /* nb preallocs */ - (GInstanceInitFunc) NULL, /* instance init */ - NULL /* value table */ - }; - - /* - * Figure out the size of the class and instance - * we are run-time deriving from (EaCalView, in this case) - * - * Note: we must still use run-time deriving here, because - * our parent class EaCalView is run-time deriving. - */ - - factory = atk_registry_get_factory (atk_get_default_registry (), - e_calendar_view_get_type()); - derived_atk_type = atk_object_factory_get_accessible_type (factory); - g_type_query (derived_atk_type, &query); - - tinfo.class_size = query.class_size; - tinfo.instance_size = query.instance_size; - - type = g_type_register_static (derived_atk_type, - "EaWeekView", &tinfo, 0); - - } - - return type; -} - -static void -ea_week_view_class_init (EaWeekViewClass *klass) -{ - AtkObjectClass *class = ATK_OBJECT_CLASS (klass); - - parent_class = g_type_class_peek_parent (klass); - - class->get_name = ea_week_view_get_name; - class->get_description = ea_week_view_get_description; - - class->get_n_children = ea_week_view_get_n_children; - class->ref_child = ea_week_view_ref_child; -} - -AtkObject* -ea_week_view_new (GtkWidget *widget) -{ - GObject *object; - AtkObject *accessible; - - g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL); - - object = g_object_new (EA_TYPE_WEEK_VIEW, NULL); - - accessible = ATK_OBJECT (object); - atk_object_initialize (accessible, widget); - -#ifdef ACC_DEBUG - printf ("EvoAcc: ea_week_view created %p\n", (void *)accessible); -#endif - - return accessible; -} - -static G_CONST_RETURN gchar* -ea_week_view_get_name (AtkObject *accessible) -{ - EWeekView *week_view; - GnomeCalendar *gcal; - const gchar *label_text; - GnomeCalendarViewType view_type; - gint n_events; - gchar *event_str, *name_str; - - g_return_val_if_fail (EA_IS_WEEK_VIEW (accessible), NULL); - - if (!GTK_ACCESSIBLE (accessible)->widget) - return NULL; - - week_view = E_WEEK_VIEW (GTK_ACCESSIBLE (accessible)->widget); - gcal = e_calendar_view_get_calendar (E_CALENDAR_VIEW (week_view)); - label_text = ea_gnome_calendar_get_label_description (gcal); - - n_events = atk_object_get_n_accessible_children (accessible); - /* the child main item is always there */ - --n_events; - if (n_events >= 1) - event_str = g_strdup_printf (ngettext ("It has %d event.", "It has %d events.", n_events), n_events); - else - event_str = g_strdup (_("It has no events.")); - - view_type = gnome_calendar_get_view (gcal); - - if (view_type == GNOME_CAL_MONTH_VIEW) - name_str = g_strdup_printf (_("Month View: %s. %s"), - label_text, event_str); - - else - name_str = g_strdup_printf (_("Week View: %s. %s"), - label_text, event_str); - - ATK_OBJECT_CLASS (parent_class)->set_name (accessible, name_str); - g_free (name_str); - g_free (event_str); - - return accessible->name; -} - -static G_CONST_RETURN gchar* -ea_week_view_get_description (AtkObject *accessible) -{ - EWeekView *week_view; - - g_return_val_if_fail (EA_IS_WEEK_VIEW (accessible), NULL); - - if (!GTK_ACCESSIBLE (accessible)->widget) - return NULL; - week_view = E_WEEK_VIEW (GTK_ACCESSIBLE (accessible)->widget); - - if (accessible->description) - return accessible->description; - else { - GnomeCalendar *gcal; - GnomeCalendarViewType view_type; - - gcal = e_calendar_view_get_calendar (E_CALENDAR_VIEW (week_view)); - view_type = gnome_calendar_get_view (gcal); - - if (view_type == GNOME_CAL_MONTH_VIEW) - return _("calendar view for a month"); - else - return _("calendar view for one or more weeks"); - } -} - -static gint -ea_week_view_get_n_children (AtkObject *accessible) -{ - EWeekView *week_view; - gint i, count = 0; - gint event_index; - - g_return_val_if_fail (EA_IS_WEEK_VIEW (accessible), -1); - - if (!GTK_ACCESSIBLE (accessible)->widget) - return -1; - week_view = E_WEEK_VIEW (GTK_ACCESSIBLE (accessible)->widget); - - for (event_index = 0; event_index < week_view->events->len; - ++event_index) { - EWeekViewEvent *event; - EWeekViewEventSpan *span; - - /* If week_view->spans == NULL, there is no visible events. */ - if (!week_view->spans) - break; - - event = &g_array_index (week_view->events, - EWeekViewEvent, event_index); - if (!event) - continue; - span = &g_array_index (week_view->spans, EWeekViewEventSpan, - event->spans_index + 0); - - if (!span) - continue; - - /* at least one of the event spans is visible, count it */ - if (span->text_item) - ++count; - } - - /* add the number of visible jump buttons */ - for (i = 0; i < E_WEEK_VIEW_MAX_WEEKS * 7; i++) { - if (week_view->jump_buttons[i]->object.flags & GNOME_CANVAS_ITEM_VISIBLE) - ++count; - } - - /* "+1" for the main item */ - count++; - -#ifdef ACC_DEBUG - printf("AccDebug: week view %p has %d children\n", (void *)week_view, count); -#endif - return count; -} - -static AtkObject * -ea_week_view_ref_child (AtkObject *accessible, gint index) -{ - EWeekView *week_view; - gint child_num, max_count; - AtkObject *atk_object = NULL; - gint event_index; - gint jump_button = -1; - gint span_num = 0; - gint count = 0; - - g_return_val_if_fail (EA_IS_WEEK_VIEW (accessible), NULL); - - child_num = atk_object_get_n_accessible_children (accessible); - if (child_num <= 0 || index < 0 || index >= child_num) - return NULL; - - if (!GTK_ACCESSIBLE (accessible)->widget) - return NULL; - week_view = E_WEEK_VIEW (GTK_ACCESSIBLE (accessible)->widget); - max_count = week_view->events->len; - - if (index == 0) { - /* index == 0 is the main item */ - atk_object = atk_gobject_accessible_for_object (G_OBJECT (week_view->main_canvas_item)); - g_object_ref (atk_object); - } else - for (event_index = 0; event_index < max_count; ++event_index) { - EWeekViewEvent *event; - EWeekViewEventSpan *span; - gint current_day; - - event = &g_array_index (week_view->events, - EWeekViewEvent, event_index); - if (!event) - continue; - - span = &g_array_index (week_view->spans, EWeekViewEventSpan, - event->spans_index + span_num); - - if (!span) - continue; - - current_day = span->start_day; - if (span->text_item) - ++count; - else if (current_day != jump_button) { - /* we should go to the jump button */ - jump_button = current_day; - ++count; - } - else - continue; - - if (count == index) { - if (span->text_item) { - /* Not use atk_gobject_accessible_for_object for event - * text_item we need to do special thing here - */ - atk_object = ea_calendar_helpers_get_accessible_for (span->text_item); - } - else { - atk_object = ea_calendar_helpers_get_accessible_for (week_view->jump_buttons[current_day == -1 ? 0 : current_day]); - } - g_object_ref (atk_object); - break; - } - } - -#ifdef ACC_DEBUG - printf ("EvoAcc: ea_week_view_ref_child [%d]=%p\n", - index, (void *)atk_object); -#endif - return atk_object; -} diff --git a/a11y/calendar/ea-week-view.h b/a11y/calendar/ea-week-view.h deleted file mode 100644 index f0ed117375..0000000000 --- a/a11y/calendar/ea-week-view.h +++ /dev/null @@ -1,65 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* vim:expandtab:shiftwidth=8:tabstop=8: - */ -/* Evolution Accessibility: ea-week-view.h - * - * Copyright (C) 2003 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003 - * - */ - -#ifndef __EA_WEEK_VIEW_H__ -#define __EA_WEEK_VIEW_H__ - -#include <gtk/gtkaccessible.h> -#include "e-week-view.h" - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -#define EA_TYPE_WEEK_VIEW (ea_week_view_get_type ()) -#define EA_WEEK_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EA_TYPE_WEEK_VIEW, EaWeekView)) -#define EA_WEEK_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EA_TYPE_WEEK_VIEW, EaWeekViewClass)) -#define EA_IS_WEEK_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EA_TYPE_WEEK_VIEW)) -#define EA_IS_WEEK_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EA_TYPE_WEEK_VIEW)) -#define EA_WEEK_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EA_TYPE_WEEK_VIEW, EaWeekViewClass)) - -typedef struct _EaWeekView EaWeekView; -typedef struct _EaWeekViewClass EaWeekViewClass; - -struct _EaWeekView -{ - GtkAccessible parent; -}; - -GType ea_week_view_get_type (void); - -struct _EaWeekViewClass -{ - GtkAccessibleClass parent_class; -}; - -AtkObject* ea_week_view_new (GtkWidget *widget); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - - -#endif /* __EA_WEEK_VIEW_H__ */ diff --git a/a11y/ea-cell-table.c b/a11y/ea-cell-table.c deleted file mode 100644 index 80f5ecbaaa..0000000000 --- a/a11y/ea-cell-table.c +++ /dev/null @@ -1,207 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* vim:expandtab:shiftwidth=8:tabstop=8: - */ -/* Evolution Accessibility: ea-cell-table.c - * - * Copyright (C) 2003 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003 - * - */ - -#include "ea-cell-table.h" - -EaCellTable * -ea_cell_table_create (gint rows, gint columns, gboolean column_first) -{ - EaCellTable * cell_data; - gint index; - - g_return_val_if_fail (((columns > 0) && (rows > 0)), NULL); - - cell_data = g_new0 (EaCellTable, 1); - - cell_data->column_first = column_first; - cell_data->columns = columns; - cell_data->rows = rows; - - cell_data->column_labels = g_new0 (gchar*, columns); - for (index = columns -1; index >= 0; --index) - cell_data->column_labels [index] = NULL; - - cell_data->row_labels = g_new0 (gchar*, rows); - for (index = rows -1; index >= 0; --index) - cell_data->row_labels [index] = NULL; - - cell_data->cells = g_new0(gpointer, (columns * rows)); - for (index = (columns * rows) -1; index >= 0; --index) - cell_data->cells [index] = NULL; - return cell_data; -} - -void -ea_cell_table_destroy (EaCellTable * cell_data) -{ - gint index; - g_return_if_fail (cell_data); - - g_print ("destroy cell table (%d, %d)\n", cell_data->rows, - cell_data->columns); - for (index = 0; index < cell_data->columns; ++index) - if (cell_data->column_labels [index]) - g_free (cell_data->column_labels [index]); - g_free (cell_data->column_labels); - - for (index = 0; index < cell_data->rows; ++index) - if (cell_data->row_labels [index]) - g_free (cell_data->row_labels [index]); - g_free (cell_data->row_labels); - - for (index = (cell_data->columns * cell_data->rows) -1; - index >= 0; --index) - if (cell_data->cells[index] && - G_IS_OBJECT (cell_data->cells[index])) - g_object_unref (cell_data->cells[index]); - - g_free (cell_data->cells); -} - -gpointer -ea_cell_table_get_cell (EaCellTable * cell_data, - gint row, gint column) -{ - gint index; - - g_return_val_if_fail (cell_data, NULL); - - index = ea_cell_table_get_index (cell_data, column, row); - if (index == -1) - return NULL; - - return cell_data->cells[index]; -} - -gboolean -ea_cell_table_set_cell (EaCellTable * cell_data, - gint row, gint column, gpointer cell) -{ - gint index; - - g_return_val_if_fail (cell_data, FALSE); - - index = ea_cell_table_get_index (cell_data, column, row); - if (index == -1) - return FALSE; - - if (cell && G_IS_OBJECT(cell)) - g_object_ref (cell); - if (cell_data->cells[index] && - G_IS_OBJECT (cell_data->cells[index])) - g_object_unref (cell_data->cells[index]); - cell_data->cells[index] = cell; - - return TRUE; -} - -gpointer -ea_cell_table_get_cell_at_index (EaCellTable * cell_data, - gint index) -{ - g_return_val_if_fail (cell_data, NULL); - - if (index >=0 && index < (cell_data->columns * cell_data->rows)) - return cell_data->cells [index]; - return NULL; -} - -gboolean -ea_cell_table_set_cell_at_index (EaCellTable * cell_data, - gint index, gpointer cell) -{ - g_return_val_if_fail (cell_data, FALSE); - - if (index < 0 || index >=cell_data->columns * cell_data->rows) - return FALSE; - - if (cell && G_IS_OBJECT(cell)) - g_object_ref (cell); - if (cell_data->cells[index] && - G_IS_OBJECT (cell_data->cells[index])) - g_object_unref (cell_data->cells[index]); - cell_data->cells[index] = cell; - - return TRUE; -} - -G_CONST_RETURN gchar* -ea_cell_table_get_column_label (EaCellTable * cell_data, - gint column) -{ - g_return_val_if_fail (cell_data, NULL); - g_return_val_if_fail ((column >= 0 && column < cell_data->columns), NULL); - - return cell_data->column_labels[column]; -} - -void -ea_cell_table_set_column_label (EaCellTable * cell_data, - gint column, const gchar *label) -{ - g_return_if_fail (cell_data); - g_return_if_fail ((column >= 0 && column < cell_data->columns)); - - if (cell_data->column_labels[column]) - g_free (cell_data->column_labels[column]); - cell_data->column_labels[column] = g_strdup(label); -} - -G_CONST_RETURN gchar* -ea_cell_table_get_row_label (EaCellTable * cell_data, - gint row) -{ - g_return_val_if_fail (cell_data, NULL); - g_return_val_if_fail ((row >= 0 && row < cell_data->rows), NULL); - - return cell_data->row_labels[row]; -} - -void -ea_cell_table_set_row_label (EaCellTable * cell_data, - gint row, const gchar *label) -{ - g_return_if_fail (cell_data); - g_return_if_fail ((row >= 0 && row < cell_data->rows)); - - if (cell_data->row_labels[row]) - g_free (cell_data->row_labels[row]); - cell_data->row_labels[row] = g_strdup(label); -} - -gint -ea_cell_table_get_index (EaCellTable *cell_data, - gint row, gint column) -{ - g_return_val_if_fail (cell_data, -1); - if (row < 0 || row >= cell_data->rows || - column < 0 || column >= cell_data->columns) - return -1; - - if (cell_data->column_first) - return column * cell_data->rows + row; - else - return row * cell_data->columns + column; -} diff --git a/a11y/ea-cell-table.h b/a11y/ea-cell-table.h deleted file mode 100644 index 932fe8b4fd..0000000000 --- a/a11y/ea-cell-table.h +++ /dev/null @@ -1,63 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* vim:expandtab:shiftwidth=8:tabstop=8: - */ -/* Evolution Accessibility: ea-table-cell.c - * - * Copyright (C) 2003 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003 - * - */ - -/* EaCellTable */ - -#include <glib.h> -#include <glib-object.h> - -struct _EaCellTable { - gint columns; - gint rows; - gboolean column_first; /* index order */ - gchar **column_labels; - gchar **row_labels; - gpointer *cells; -}; - -typedef struct _EaCellTable EaCellTable; - -EaCellTable * ea_cell_table_create (gint rows, gint columns, - gboolean column_first); -void ea_cell_table_destroy (EaCellTable * cell_data); -gpointer ea_cell_table_get_cell (EaCellTable * cell_data, - gint row, gint column); -gboolean ea_cell_table_set_cell (EaCellTable * cell_data, - gint row, gint column, gpointer cell); -gpointer ea_cell_table_get_cell_at_index (EaCellTable * cell_data, - gint index); -gboolean ea_cell_table_set_cell_at_index (EaCellTable * cell_data, - gint index, gpointer cell); - -G_CONST_RETURN gchar* -ea_cell_table_get_column_label (EaCellTable * cell_data, gint column); -void ea_cell_table_set_column_label (EaCellTable * cell_data, - gint column, const gchar *label); -G_CONST_RETURN gchar* -ea_cell_table_get_row_label (EaCellTable * cell_data, gint row); -void ea_cell_table_set_row_label (EaCellTable * cell_data, - gint row, const gchar *label); -gint ea_cell_table_get_index (EaCellTable *cell_data, - gint row, gint column); diff --git a/a11y/ea-factory.h b/a11y/ea-factory.h deleted file mode 100644 index 06ae612d6f..0000000000 --- a/a11y/ea-factory.h +++ /dev/null @@ -1,113 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* vim:expandtab:shiftwidth=8:tabstop=8: - */ -/* Evolution Accessibility: ea-factory.h - * - * Copyright (C) 2003 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003 - * - */ - -/* Evolution Accessibility -*/ - -#ifndef _EA_FACTORY_H__ -#define _EA_FACTORY_H__ - -#include <glib-object.h> -#include <atk/atkobject.h> - -#define EA_FACTORY_PARTA_GOBJECT(type, type_as_function, opt_create_accessible) \ -static AtkObject* \ -type_as_function ## _factory_create_accessible (GObject *obj) \ -{ \ - AtkObject *accessible; \ - g_return_val_if_fail (G_IS_OBJECT (obj), NULL); \ - accessible = opt_create_accessible (G_OBJECT (obj)); \ - return accessible; \ -} - -#define EA_FACTORY_PARTA(type, type_as_function, opt_create_accessible) \ -static AtkObject* \ -type_as_function ## _factory_create_accessible (GObject *obj) \ -{ \ - GtkWidget *widget; \ - AtkObject *accessible; \ - \ - g_return_val_if_fail (GTK_IS_WIDGET (obj), NULL); \ - \ - widget = GTK_WIDGET (obj); \ - \ - accessible = opt_create_accessible (widget); \ - return accessible; \ -} - -#define EA_FACTORY_PARTB(type, type_as_function, opt_create_accessible) \ - \ -static GType \ -type_as_function ## _factory_get_accessible_type (void) \ -{ \ - return type; \ -} \ - \ - \ -static void \ -type_as_function ## _factory_class_init (AtkObjectFactoryClass *klass) \ -{ \ - klass->create_accessible = type_as_function ## _factory_create_accessible; \ - klass->get_accessible_type = type_as_function ## _factory_get_accessible_type;\ -} \ - \ -static GType \ -type_as_function ## _factory_get_type (void) \ -{ \ - static GType t = 0; \ - \ - if (!t) \ - { \ - char *name; \ - static const GTypeInfo tinfo = \ - { \ - sizeof (AtkObjectFactoryClass), \ - NULL, NULL, (GClassInitFunc) type_as_function ## _factory_class_init, \ - NULL, NULL, sizeof (AtkObjectFactory), 0, NULL, NULL \ - }; \ - \ - name = g_strconcat (g_type_name (type), "Factory", NULL); \ - t = g_type_register_static ( \ - ATK_TYPE_OBJECT_FACTORY, name, &tinfo, 0); \ - g_free (name); \ - } \ - \ - return t; \ -} - -#define EA_FACTORY(type, type_as_function, opt_create_accessible) \ - EA_FACTORY_PARTA(type, type_as_function, opt_create_accessible) \ - EA_FACTORY_PARTB(type, type_as_function, opt_create_accessible) - -#define EA_FACTORY_GOBJECT(type, type_as_function, opt_create_accessible) \ - EA_FACTORY_PARTA_GOBJECT(type, type_as_function, opt_create_accessible) \ - EA_FACTORY_PARTB(type, type_as_function, opt_create_accessible) - -#define EA_SET_FACTORY(obj_type, type_as_function) \ - atk_registry_set_factory_type (atk_get_default_registry (), \ - obj_type, \ - type_as_function ## _factory_get_type ()) - -#endif /* _EA_FACTORY_H__ */ diff --git a/a11y/widgets/.cvsignore b/a11y/widgets/.cvsignore deleted file mode 100644 index 282522db03..0000000000 --- a/a11y/widgets/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -Makefile -Makefile.in diff --git a/a11y/widgets/Makefile.am b/a11y/widgets/Makefile.am deleted file mode 100644 index 6e8e0e4a1d..0000000000 --- a/a11y/widgets/Makefile.am +++ /dev/null @@ -1,33 +0,0 @@ - -# for debug -#A11Y_CFLAGS += -pedantic -ansi -DACC_DEBUG -Werror - -privlib_LTLIBRARIES = libevolution-widgets-a11y.la - -INCLUDES = \ - -DG_LOG_DOMAIN=\"evolution-a11y\" \ - -I$(top_srcdir)/widgets \ - -I$(top_srcdir)/a11y \ - -DEVOLUTION_DATADIR=\""$(datadir)"\" \ - -DEVOLUTION_GLADEDIR=\""$(gladedir)"\" \ - -DEVOLUTION_ETSPECDIR=\""$(etspecdir)"\" \ - -DEVOLUTION_IMAGESDIR=\""$(imagesdir)"\" \ - -DEVOLUTION_GALVIEWSDIR=\""$(viewsdir)"\" \ - -DEVOLUTION_UIDIR=\""$(evolutionuidir)"\" \ - -DPREFIX=\""$(prefix)"\" \ - $(A11Y_CFLAGS) \ - $(EVOLUTION_CALENDAR_CFLAGS) - -libevolution_widgets_a11y_la_SOURCES = \ - ea-calendar-item.c \ - ea-calendar-item.h \ - ea-calendar-cell.c \ - ea-calendar-cell.h \ - ea-combo-button.c \ - ea-combo-button.h \ - ea-widgets.c \ - ea-widgets.h - -libevolution_widgets_a11y_la_LIBADD = \ - $(top_builddir)/a11y/libevolution-a11y.la - diff --git a/a11y/widgets/ea-calendar-cell.c b/a11y/widgets/ea-calendar-cell.c deleted file mode 100644 index 682485605f..0000000000 --- a/a11y/widgets/ea-calendar-cell.c +++ /dev/null @@ -1,325 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* vim:expandtab:shiftwidth=8:tabstop=8: - */ -/* Evolution Accessibility: ea-calendar-cell.c - * - * Copyright (C) 2003 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003 - * - */ - -#include "ea-calendar-cell.h" -#include "ea-calendar-item.h" -#include "ea-factory.h" - -/* ECalendarCell */ - -static void e_calendar_cell_class_init (ECalendarCellClass *class); - -EA_FACTORY_GOBJECT (EA_TYPE_CALENDAR_CELL, ea_calendar_cell, ea_calendar_cell_new) - -GType -e_calendar_cell_get_type (void) -{ - static GType type = 0; - - if (!type) { - static GTypeInfo tinfo = { - sizeof (ECalendarCellClass), - (GBaseInitFunc) NULL, /* base init */ - (GBaseFinalizeFunc) NULL, /* base finalize */ - (GClassInitFunc) e_calendar_cell_class_init, /* class init */ - (GClassFinalizeFunc) NULL, /* class finalize */ - NULL, /* class data */ - sizeof (ECalendarCell), /* instance size */ - 0, /* nb preallocs */ - (GInstanceInitFunc) NULL, /* instance init */ - NULL /* value table */ - }; - - type = g_type_register_static (G_TYPE_OBJECT, - "ECalendarCell", &tinfo, 0); - } - - return type; -} - -static void -e_calendar_cell_class_init (ECalendarCellClass *class) -{ - EA_SET_FACTORY (e_calendar_cell_get_type (), ea_calendar_cell); -} - -ECalendarCell * -e_calendar_cell_new (ECalendarItem *calitem, gint row, gint column) -{ - GObject *object; - ECalendarCell *cell; - - g_return_val_if_fail (E_IS_CALENDAR_ITEM (calitem), NULL); - - object = g_object_new (E_TYPE_CALENDAR_CELL, NULL); - cell = E_CALENDAR_CELL (object); - cell->calitem = calitem; - cell->row = row; - cell->column = column; - -#ifdef ACC_DEBUG - g_print ("EvoAcc: e_calendar_cell created %p\n", (void *)cell); -#endif - - return cell; -} - -/* EaCalendarCell */ - -static void ea_calendar_cell_class_init (EaCalendarCellClass *klass); - -static G_CONST_RETURN gchar* ea_calendar_cell_get_name (AtkObject *accessible); -static G_CONST_RETURN gchar* ea_calendar_cell_get_description (AtkObject *accessible); -static AtkObject * ea_calendar_cell_get_parent (AtkObject *accessible); -static gint ea_calendar_cell_get_index_in_parent (AtkObject *accessible); - -/* component interface */ -static void atk_component_interface_init (AtkComponentIface *iface); -static void component_interface_get_extents (AtkComponent *component, - gint *x, gint *y, - gint *width, gint *height, - AtkCoordType coord_type); - -static gpointer parent_class = NULL; - -#ifdef ACC_DEBUG -static gint n_ea_calendar_cell_created = 0, n_ea_calendar_cell_destroyed = 0; -static void ea_calendar_cell_finalize (GObject *object); -#endif - -GType -ea_calendar_cell_get_type (void) -{ - static GType type = 0; - - if (!type) { - static GTypeInfo tinfo = { - sizeof (EaCalendarCellClass), - (GBaseInitFunc) NULL, /* base init */ - (GBaseFinalizeFunc) NULL, /* base finalize */ - (GClassInitFunc) ea_calendar_cell_class_init, /* class init */ - (GClassFinalizeFunc) NULL, /* class finalize */ - NULL, /* class data */ - sizeof (EaCalendarCell), /* instance size */ - 0, /* nb preallocs */ - (GInstanceInitFunc) NULL, /* instance init */ - NULL /* value table */ - }; - - static const GInterfaceInfo atk_component_info = { - (GInterfaceInitFunc) atk_component_interface_init, - (GInterfaceFinalizeFunc) NULL, - NULL - }; - - type = g_type_register_static (ATK_TYPE_GOBJECT_ACCESSIBLE, - "EaCalendarCell", &tinfo, 0); - g_type_add_interface_static (type, ATK_TYPE_COMPONENT, - &atk_component_info); - } - - return type; -} - -static void -ea_calendar_cell_class_init (EaCalendarCellClass *klass) -{ - AtkObjectClass *class = ATK_OBJECT_CLASS (klass); - -#ifdef ACC_DEBUG - GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - gobject_class->finalize = ea_calendar_cell_finalize; -#endif - - parent_class = g_type_class_peek_parent (klass); - - class->get_name = ea_calendar_cell_get_name; - class->get_description = ea_calendar_cell_get_description; - - class->get_parent = ea_calendar_cell_get_parent; - class->get_index_in_parent = ea_calendar_cell_get_index_in_parent; -} - -AtkObject* -ea_calendar_cell_new (GObject *obj) -{ - gpointer object; - AtkObject *atk_object; - - g_return_val_if_fail (E_IS_CALENDAR_CELL (obj), NULL); - object = g_object_new (EA_TYPE_CALENDAR_CELL, NULL); - atk_object = ATK_OBJECT (object); - atk_object_initialize (atk_object, obj); - atk_object->role = ATK_ROLE_UNKNOWN; - -#ifdef ACC_DEBUG - ++n_ea_calendar_cell_created; - g_print ("ACC_DEBUG: n_ea_calendar_cell_created = %d\n", - n_ea_calendar_cell_created); -#endif - return atk_object; -} - -#ifdef ACC_DEBUG -static void ea_calendar_cell_finalize (GObject *object) -{ - ++n_ea_calendar_cell_destroyed; - g_print ("ACC_DEBUG: n_ea_calendar_cell_destroyed = %d\n", - n_ea_calendar_cell_destroyed); -} -#endif - -static G_CONST_RETURN gchar* -ea_calendar_cell_get_name (AtkObject *accessible) -{ - GObject *g_obj; - - g_return_val_if_fail (EA_IS_CALENDAR_CELL (accessible), NULL); - - g_obj = atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE(accessible)); - if (!g_obj) - /* defunct object*/ - return NULL; - - if (!accessible->name) { - AtkObject *atk_obj; - EaCalendarItem *ea_calitem; - ECalendarCell *cell; - gint day_index; - gint year, month, day; - gchar buffer[128]; - - cell = E_CALENDAR_CELL (g_obj); - atk_obj = ea_calendar_cell_get_parent (accessible); - ea_calitem = EA_CALENDAR_ITEM (atk_obj); - day_index = atk_table_get_index_at (ATK_TABLE (ea_calitem), - cell->row, cell->column); - e_calendar_item_get_date_for_offset (cell->calitem, day_index, - &year, &month, &day); - - g_snprintf (buffer, 128, "%d-%d-%d", year, month + 1, day); - ATK_OBJECT_CLASS (parent_class)->set_name (accessible, buffer); - } - return accessible->name; -} - -static G_CONST_RETURN gchar* -ea_calendar_cell_get_description (AtkObject *accessible) -{ - return ea_calendar_cell_get_name (accessible); -} - -static AtkObject * -ea_calendar_cell_get_parent (AtkObject *accessible) -{ - GObject *g_obj; - ECalendarCell *cell; - ECalendarItem *calitem; - - g_return_val_if_fail (EA_IS_CALENDAR_CELL (accessible), NULL); - - g_obj = atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE(accessible)); - if (!g_obj) - /* defunct object*/ - return NULL; - - cell = E_CALENDAR_CELL (g_obj); - calitem = cell->calitem; - return atk_gobject_accessible_for_object (G_OBJECT (calitem)); -} - -static gint -ea_calendar_cell_get_index_in_parent (AtkObject *accessible) -{ - GObject *g_obj; - ECalendarCell *cell; - AtkObject *parent; - - g_return_val_if_fail (EA_IS_CALENDAR_CELL (accessible), -1); - - g_obj = atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE(accessible)); - if (!g_obj) - return -1; - cell = E_CALENDAR_CELL (g_obj); - parent = atk_object_get_parent (accessible); - return atk_table_get_index_at (ATK_TABLE (parent), - cell->row, cell->column); -} - -/* Atk Component Interface */ - -static void -atk_component_interface_init (AtkComponentIface *iface) -{ - g_return_if_fail (iface != NULL); - - iface->get_extents = component_interface_get_extents; -} - -static void -component_interface_get_extents (AtkComponent *component, - gint *x, gint *y, gint *width, gint *height, - AtkCoordType coord_type) -{ - GObject *g_obj; - AtkObject *atk_obj, *atk_canvas; - ECalendarCell *cell; - ECalendarItem *calitem; - EaCalendarItem *ea_calitem; - gint day_index; - gint year, month, day; - gint canvas_x, canvas_y, canvas_width, canvas_height; - - *x = *y = *width = *height = 0; - - g_return_if_fail (EA_IS_CALENDAR_CELL (component)); - - - g_obj = atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE(component)); - if (!g_obj) - /* defunct object*/ - return; - - cell = E_CALENDAR_CELL (g_obj); - calitem = cell->calitem; - atk_obj = atk_gobject_accessible_for_object (G_OBJECT (calitem)); - ea_calitem = EA_CALENDAR_ITEM (atk_obj); - day_index = atk_table_get_index_at (ATK_TABLE (ea_calitem), - cell->row, cell->column); - e_calendar_item_get_date_for_offset (calitem, day_index, - &year, &month, &day); - - if (!e_calendar_item_get_day_extents (calitem, - year, month, day, - x, y, width, height)) - return; - atk_canvas = atk_object_get_parent (ATK_OBJECT (ea_calitem)); - atk_component_get_extents (ATK_COMPONENT (atk_canvas), - &canvas_x, &canvas_y, - &canvas_width, &canvas_height, - coord_type); - *x += canvas_x; - *y += canvas_y; -} diff --git a/a11y/widgets/ea-calendar-cell.h b/a11y/widgets/ea-calendar-cell.h deleted file mode 100644 index f87ede90a7..0000000000 --- a/a11y/widgets/ea-calendar-cell.h +++ /dev/null @@ -1,92 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* vim:expandtab:shiftwidth=8:tabstop=8: - */ -/* Evolution Accessibility: ea-calendar-cell.h - * - * Copyright (C) 2003 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003 - * - */ - -#ifndef __EA_CALENDAR_CELL_H__ -#define __EA_CALENDAR_CELL_H__ - -#include <atk/atkgobjectaccessible.h> -#include "misc/e-calendar-item.h" - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -#define E_TYPE_CALENDAR_CELL (e_calendar_cell_get_type ()) -#define E_CALENDAR_CELL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), E_TYPE_CALENDAR_CELL, ECalendarCell)) -#define E_CALENDAR_CELL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), E_TYPE_CALENDAR_CELL, ECalendarCellClass)) -#define E_IS_CALENDAR_CELL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), E_TYPE_CALENDAR_CELL)) -#define E_IS_CALENDAR_CELL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), E_TYPE_CALENDAR_CELL)) -#define E_CALENDAR_CELL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), E_TYPE_CALENDAR_CELL, ECalendarCellClass)) - -typedef struct _ECalendarCell ECalendarCell; -typedef struct _ECalendarCellClass ECalendarCellClass; - -struct _ECalendarCell -{ - GObject parent; - ECalendarItem *calitem; - gint row; - gint column; -}; - -GType e_calendar_cell_get_type (void); - -struct _ECalendarCellClass -{ - GObjectClass parent_class; -}; - -ECalendarCell * e_calendar_cell_new (ECalendarItem *calitem, - gint row, gint column); - -#define EA_TYPE_CALENDAR_CELL (ea_calendar_cell_get_type ()) -#define EA_CALENDAR_CELL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EA_TYPE_CALENDAR_CELL, EaCalendarCell)) -#define EA_CALENDAR_CELL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EA_TYPE_CALENDAR_CELL, EaCalendarCellClass)) -#define EA_IS_CALENDAR_CELL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EA_TYPE_CALENDAR_CELL)) -#define EA_IS_CALENDAR_CELL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EA_TYPE_CALENDAR_CELL)) -#define EA_CALENDAR_CELL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EA_TYPE_CALENDAR_CELL, EaCalendarCellClass)) - -typedef struct _EaCalendarCell EaCalendarCell; -typedef struct _EaCalendarCellClass EaCalendarCellClass; - -struct _EaCalendarCell -{ - AtkGObjectAccessible parent; -}; - -GType ea_calendar_cell_get_type (void); - -struct _EaCalendarCellClass -{ - AtkGObjectAccessibleClass parent_class; -}; - -AtkObject* ea_calendar_cell_new (GObject *gobj); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __EA_CALENDAR_CELL_H__ */ diff --git a/a11y/widgets/ea-calendar-item.c b/a11y/widgets/ea-calendar-item.c deleted file mode 100644 index b80bbdcb77..0000000000 --- a/a11y/widgets/ea-calendar-item.c +++ /dev/null @@ -1,1300 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* vim:expandtab:shiftwidth=8:tabstop=8: - */ -/* Evolution Accessibility: ea-calendar-item.c - * - * Copyright (C) 2003 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003 - * - */ - -#include <stdio.h> -#include <time.h> -#include <string.h> -#include <libgnomecanvas/gnome-canvas.h> -#include <glib/gdate.h> -#include <gal/util/e-util.h> -#include <libgnome/gnome-i18n.h> -#include "ea-calendar-item.h" -#include "ea-calendar-cell.h" -#include "ea-cell-table.h" - -#define EA_CALENDAR_COLUMN_NUM E_CALENDAR_COLS_PER_MONTH - -/* EaCalendarItem */ -static void ea_calendar_item_class_init (EaCalendarItemClass *klass); -static void ea_calendar_item_finalize (GObject *object); - -static G_CONST_RETURN gchar* ea_calendar_item_get_name (AtkObject *accessible); -static G_CONST_RETURN gchar* ea_calendar_item_get_description (AtkObject *accessible); -static gint ea_calendar_item_get_n_children (AtkObject *accessible); -static AtkObject *ea_calendar_item_ref_child (AtkObject *accessible, gint index); -static AtkStateSet* ea_calendar_item_ref_state_set (AtkObject *accessible); - -/* atk table interface */ -static void atk_table_interface_init (AtkTableIface *iface); -static gint table_interface_get_index_at (AtkTable *table, - gint row, - gint column); -static gint table_interface_get_column_at_index (AtkTable *table, - gint index); -static gint table_interface_get_row_at_index (AtkTable *table, - gint index); -static AtkObject* table_interface_ref_at (AtkTable *table, - gint row, - gint column); -static gint table_interface_get_n_rows (AtkTable *table); -static gint table_interface_get_n_columns (AtkTable *table); -static gint table_interface_get_column_extent_at (AtkTable *table, - gint row, - gint column); -static gint table_interface_get_row_extent_at (AtkTable *table, - gint row, - gint column); - -static gboolean table_interface_is_row_selected (AtkTable *table, - gint row); -static gboolean table_interface_is_column_selected (AtkTable *table, - gint row); -static gboolean table_interface_is_selected (AtkTable *table, - gint row, - gint column); -static gint table_interface_get_selected_rows (AtkTable *table, - gint **rows_selected); -static gint table_interface_get_selected_columns (AtkTable *table, - gint **columns_selected); -static gboolean table_interface_add_row_selection (AtkTable *table, gint row); -static gboolean table_interface_remove_row_selection (AtkTable *table, - gint row); -static gboolean table_interface_add_column_selection (AtkTable *table, - gint column); -static gboolean table_interface_remove_column_selection (AtkTable *table, - gint column); -static AtkObject* table_interface_get_row_header (AtkTable *table, gint row); -static AtkObject* table_interface_get_column_header (AtkTable *table, - gint in_col); -static AtkObject* table_interface_get_caption (AtkTable *table); - -static G_CONST_RETURN gchar* -table_interface_get_column_description (AtkTable *table, gint in_col); - -static G_CONST_RETURN gchar* -table_interface_get_row_description (AtkTable *table, gint row); - -static AtkObject* table_interface_get_summary (AtkTable *table); - -/* atk selection interface */ -static void atk_selection_interface_init (AtkSelectionIface *iface); -static gboolean selection_interface_add_selection (AtkSelection *selection, - gint i); -static gboolean selection_interface_clear_selection (AtkSelection *selection); -static AtkObject* selection_interface_ref_selection (AtkSelection *selection, - gint i); -static gint selection_interface_get_selection_count (AtkSelection *selection); -static gboolean selection_interface_is_child_selected (AtkSelection *selection, - gint i); - -/* callbacks */ -static void selection_preview_change_cb (ECalendarItem *calitem); -static void date_range_changed_cb (ECalendarItem *calitem); -static void selection_changed_cb (ECalendarItem *calitem); - -/* helpers */ -static EaCellTable *ea_calendar_item_get_cell_data (EaCalendarItem *ea_calitem); -static void ea_calendar_item_destory_cell_data (EaCalendarItem *ea_calitem); -static gboolean ea_calendar_item_get_column_label (EaCalendarItem *ea_calitem, - gint column, - gchar *buffer, - gint buffer_size); -static gboolean ea_calendar_item_get_row_label (EaCalendarItem *ea_calitem, - gint row, - gchar *buffer, - gint buffer_size); -static gboolean e_calendar_item_get_offset_for_date (ECalendarItem *calitem, - gint year, gint month, gint day, - gint *offset); - -#ifdef ACC_DEBUG -static gint n_ea_calendar_item_created = 0; -static gint n_ea_calendar_item_destroyed = 0; -#endif - -static gpointer parent_class = NULL; - -GType -ea_calendar_item_get_type (void) -{ - static GType type = 0; - AtkObjectFactory *factory; - GTypeQuery query; - GType derived_atk_type; - - if (!type) { - static GTypeInfo tinfo = { - sizeof (EaCalendarItemClass), - (GBaseInitFunc) NULL, /* base init */ - (GBaseFinalizeFunc) NULL, /* base finalize */ - (GClassInitFunc) ea_calendar_item_class_init, /* class init */ - (GClassFinalizeFunc) NULL, /* class finalize */ - NULL, /* class data */ - sizeof (EaCalendarItem), /* instance size */ - 0, /* nb preallocs */ - (GInstanceInitFunc) NULL, /* instance init */ - NULL /* value table */ - }; - - static const GInterfaceInfo atk_table_info = { - (GInterfaceInitFunc) atk_table_interface_init, - (GInterfaceFinalizeFunc) NULL, - NULL - }; - static const GInterfaceInfo atk_selection_info = { - (GInterfaceInitFunc) atk_selection_interface_init, - (GInterfaceFinalizeFunc) NULL, - NULL - }; - - /* - * Figure out the size of the class and instance - * we are run-time deriving from (GailCanvasItem, in this case) - */ - - factory = atk_registry_get_factory (atk_get_default_registry (), - GNOME_TYPE_CANVAS_ITEM); - derived_atk_type = atk_object_factory_get_accessible_type (factory); - g_type_query (derived_atk_type, &query); - - tinfo.class_size = query.class_size; - tinfo.instance_size = query.instance_size; - - type = g_type_register_static (derived_atk_type, - "EaCalendarItem", &tinfo, 0); - g_type_add_interface_static (type, ATK_TYPE_TABLE, - &atk_table_info); - g_type_add_interface_static (type, ATK_TYPE_SELECTION, - &atk_selection_info); - } - - return type; -} - -static void -ea_calendar_item_class_init (EaCalendarItemClass *klass) -{ - GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - AtkObjectClass *class = ATK_OBJECT_CLASS (klass); - - gobject_class->finalize = ea_calendar_item_finalize; - parent_class = g_type_class_peek_parent (klass); - - class->get_name = ea_calendar_item_get_name; - class->get_description = ea_calendar_item_get_description; - class->ref_state_set = ea_calendar_item_ref_state_set; - - class->get_n_children = ea_calendar_item_get_n_children; - class->ref_child = ea_calendar_item_ref_child; -} - -AtkObject* -ea_calendar_item_new (GObject *obj) -{ - gpointer object; - AtkObject *atk_object; - - g_return_val_if_fail (E_IS_CALENDAR_ITEM (obj), NULL); - object = g_object_new (EA_TYPE_CALENDAR_ITEM, NULL); - atk_object = ATK_OBJECT (object); - atk_object_initialize (atk_object, obj); - atk_object->role = ATK_ROLE_TABLE; -#ifdef ACC_DEBUG - ++n_ea_calendar_item_created; - g_print ("ACC_DEBUG: n_ea_calendar_item_created = %d\n", - n_ea_calendar_item_created); -#endif - /* connect signal handlers */ - g_signal_connect (obj, "selection_preview_changed", - G_CALLBACK (selection_preview_change_cb), - atk_object); - g_signal_connect (obj, "date_range_changed", - G_CALLBACK (date_range_changed_cb), - atk_object); - g_signal_connect (obj, "selection_preview_changed", - G_CALLBACK (selection_changed_cb), - atk_object); - - return atk_object; -} - -static void -ea_calendar_item_finalize (GObject *object) -{ - EaCalendarItem *ea_calitem; - - g_return_if_fail (EA_IS_CALENDAR_ITEM (object)); - - ea_calitem = EA_CALENDAR_ITEM (object); - - /* Free the allocated cell data */ - ea_calendar_item_destory_cell_data (ea_calitem); - - G_OBJECT_CLASS (parent_class)->finalize (object); -#ifdef ACC_DEBUG - ++n_ea_calendar_item_destroyed; - printf ("ACC_DEBUG: n_ea_calendar_item_destroyed = %d\n", - n_ea_calendar_item_destroyed); -#endif -} - -static G_CONST_RETURN gchar* -ea_calendar_item_get_name (AtkObject *accessible) -{ - GObject *g_obj; - ECalendarItem *calitem; - gint start_year, start_month, start_day; - gint end_year, end_month, end_day; - gchar *name_str = NULL; - gchar buffer_start[128] = ""; - gchar buffer_end[128] = ""; - struct tm day_start = { 0 }; - struct tm day_end = { 0 }; - - g_return_val_if_fail (EA_IS_CALENDAR_ITEM (accessible), NULL); - - g_obj = atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE(accessible)); - g_return_val_if_fail (E_IS_CALENDAR_ITEM (g_obj), NULL); - - calitem = E_CALENDAR_ITEM (g_obj); - if (e_calendar_item_get_date_range (calitem, - &start_year, &start_month, &start_day, - &end_year, &end_month, &end_day)) { - - day_start.tm_year = start_year - 1900; - day_start.tm_mon = start_month; - day_start.tm_mday = start_day; - day_start.tm_isdst = -1; - e_utf8_strftime (buffer_start, sizeof (buffer_start), _("%d %B %Y"), &day_start); - - day_end.tm_year = end_year - 1900; - day_end.tm_mon = end_month; - day_end.tm_mday = end_day; - day_end.tm_isdst = -1; - e_utf8_strftime (buffer_end, sizeof (buffer_end), _("%d %B %Y"), &day_end); - - name_str = g_strdup_printf (_("Calendar: from %s to %s"), buffer_start, buffer_end); - } - -#if 0 - if (e_calendar_item_get_selection (calitem, &select_start, &select_end)) { - GDate select_start, select_end; - gint year1, year2, month1, month2, day1, day2; - - year1 = g_date_get_year (&select_start); - month1 = g_date_get_month (&select_start); - day1 = g_date_get_day (&select_start); - - year2 = g_date_get_year (&select_end); - month2 = g_date_get_month (&select_end); - day2 = g_date_get_day (&select_end); - - sprintf (new_name + strlen (new_name), - " : current selection: from %d-%d-%d to %d-%d-%d.", - year1, month1, day1, - year2, month2, day2); - } -#endif - - ATK_OBJECT_CLASS (parent_class)->set_name (accessible, name_str); - g_free (name_str); - - return accessible->name; -} - -static G_CONST_RETURN gchar* -ea_calendar_item_get_description (AtkObject *accessible) -{ - if (accessible->description) - return accessible->description; - - return _("evolution calendar item"); -} - -static AtkStateSet* -ea_calendar_item_ref_state_set (AtkObject *accessible) -{ - AtkStateSet *state_set; - GObject *g_obj; - - state_set = ATK_OBJECT_CLASS (parent_class)->ref_state_set (accessible); - g_obj = atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE(accessible)); - if (!g_obj) - return state_set; - - atk_state_set_add_state (state_set, ATK_STATE_ENABLED); - atk_state_set_add_state (state_set, ATK_STATE_SENSITIVE); - - return state_set; -} - -static gint -ea_calendar_item_get_n_children (AtkObject *accessible) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - ECalendarItem *calitem; - gint n_children = 0; - gint start_year, start_month, start_day; - gint end_year, end_month, end_day; - GDate *start_date, *end_date; - - g_return_val_if_fail (EA_IS_CALENDAR_ITEM (accessible), -1); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (accessible); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return -1; - - calitem = E_CALENDAR_ITEM (g_obj); - if (!e_calendar_item_get_date_range (calitem, &start_year, - &start_month, &start_day, - &end_year, &end_month, - &end_day)) - return 0; - - start_date = g_date_new_dmy (start_day, start_month + 1, start_year); - end_date = g_date_new_dmy (end_day, end_month + 1, end_year); - - n_children = g_date_days_between (start_date, end_date) + 1; - g_free (start_date); - g_free (end_date); - return n_children; -} - -static AtkObject * -ea_calendar_item_ref_child (AtkObject *accessible, gint index) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - ECalendarItem *calitem; - gint n_children; - ECalendarCell *cell; - EaCellTable *cell_data; - EaCalendarItem *ea_calitem; - - g_return_val_if_fail (EA_IS_CALENDAR_ITEM (accessible), NULL); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (accessible); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return NULL; - - calitem = E_CALENDAR_ITEM (g_obj); - - n_children = ea_calendar_item_get_n_children (accessible); - if (index < 0 || index >= n_children) - return NULL; - - ea_calitem = EA_CALENDAR_ITEM (accessible); - cell_data = ea_calendar_item_get_cell_data (ea_calitem); - if (!cell_data) - return NULL; - - cell = ea_cell_table_get_cell_at_index (cell_data, index); - if (!cell) { - cell = e_calendar_cell_new (calitem, - index / EA_CALENDAR_COLUMN_NUM, - index % EA_CALENDAR_COLUMN_NUM); - ea_cell_table_set_cell_at_index (cell_data, index, cell); - g_object_unref (cell); - } - -#ifdef ACC_DEBUG - g_print ("AccDebug: ea_calendar_item children[%d]=%p\n", index, - (gpointer)cell); -#endif - return g_object_ref (atk_gobject_accessible_for_object (G_OBJECT(cell))); -} - -/* atk table interface */ - -static void -atk_table_interface_init (AtkTableIface *iface) -{ - g_return_if_fail (iface != NULL); - - iface->ref_at = table_interface_ref_at; - - iface->get_n_rows = table_interface_get_n_rows; - iface->get_n_columns = table_interface_get_n_columns; - iface->get_index_at = table_interface_get_index_at; - iface->get_column_at_index = table_interface_get_column_at_index; - iface->get_row_at_index = table_interface_get_row_at_index; - iface->get_column_extent_at = table_interface_get_column_extent_at; - iface->get_row_extent_at = table_interface_get_row_extent_at; - - iface->is_selected = table_interface_is_selected; - iface->get_selected_rows = table_interface_get_selected_rows; - iface->get_selected_columns = table_interface_get_selected_columns; - iface->is_row_selected = table_interface_is_row_selected; - iface->is_column_selected = table_interface_is_column_selected; - iface->add_row_selection = table_interface_add_row_selection; - iface->remove_row_selection = table_interface_remove_row_selection; - iface->add_column_selection = table_interface_add_column_selection; - iface->remove_column_selection = table_interface_remove_column_selection; - - iface->get_row_header = table_interface_get_row_header; - iface->get_column_header = table_interface_get_column_header; - iface->get_caption = table_interface_get_caption; - iface->get_summary = table_interface_get_summary; - iface->get_row_description = table_interface_get_row_description; - iface->get_column_description = table_interface_get_column_description; -} - -static AtkObject* -table_interface_ref_at (AtkTable *table, - gint row, - gint column) -{ - gint index; - - EaCalendarItem* ea_calitem = EA_CALENDAR_ITEM (table); - index = EA_CALENDAR_COLUMN_NUM * row + column; - return ea_calendar_item_ref_child (ATK_OBJECT (ea_calitem), index); -} - -static gint -table_interface_get_n_rows (AtkTable *table) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EaCalendarItem* ea_calitem = EA_CALENDAR_ITEM (table); - gint n_children; - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_calitem); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return -1; - - n_children = ea_calendar_item_get_n_children (ATK_OBJECT (ea_calitem)); - return (n_children - 1) / EA_CALENDAR_COLUMN_NUM + 1; -} - -static gint -table_interface_get_n_columns (AtkTable *table) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EaCalendarItem* ea_calitem = EA_CALENDAR_ITEM (table); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_calitem); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return -1; - - return EA_CALENDAR_COLUMN_NUM; -} - -static gint -table_interface_get_index_at (AtkTable *table, - gint row, - gint column) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EaCalendarItem* ea_calitem = EA_CALENDAR_ITEM (table); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_calitem); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return -1; - - return row * EA_CALENDAR_COLUMN_NUM + column; -} - -static gint -table_interface_get_column_at_index (AtkTable *table, - gint index) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EaCalendarItem* ea_calitem = EA_CALENDAR_ITEM (table); - gint n_children; - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_calitem); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return -1; - - n_children = ea_calendar_item_get_n_children (ATK_OBJECT (ea_calitem)); - if (index >= 0 && index < n_children) - return index % EA_CALENDAR_COLUMN_NUM; - return -1; -} - -static gint -table_interface_get_row_at_index (AtkTable *table, - gint index) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - EaCalendarItem* ea_calitem = EA_CALENDAR_ITEM (table); - gint n_children; - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_calitem); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return -1; - - n_children = ea_calendar_item_get_n_children (ATK_OBJECT (ea_calitem)); - if (index >= 0 && index < n_children) - return index / EA_CALENDAR_COLUMN_NUM; - return -1; -} - -static gint -table_interface_get_column_extent_at (AtkTable *table, - gint row, - gint column) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - ECalendarItem *calitem; - EaCalendarItem* ea_calitem = EA_CALENDAR_ITEM (table); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_calitem); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return FALSE; - - calitem = E_CALENDAR_ITEM (g_obj); - return calitem->cell_width; -} - -static gint -table_interface_get_row_extent_at (AtkTable *table, - gint row, gint column) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - ECalendarItem *calitem; - EaCalendarItem* ea_calitem = EA_CALENDAR_ITEM (table); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_calitem); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return FALSE; - - calitem = E_CALENDAR_ITEM (g_obj); - return calitem->cell_height; -} - -/* any day in the row is selected, the row is selected */ -static gboolean -table_interface_is_row_selected (AtkTable *table, - gint row) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - gint n_rows; - ECalendarItem *calitem; - gint row_index_start, row_index_end; - gint sel_index_start, sel_index_end; - - GDate start_date, end_date; - - g_return_val_if_fail (EA_IS_CALENDAR_ITEM (table), FALSE); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (table); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return FALSE; - - n_rows = table_interface_get_n_rows (table); - if (row < 0 || row >= n_rows) - return FALSE; - - row_index_start = row * EA_CALENDAR_COLUMN_NUM; - row_index_end = row_index_start + EA_CALENDAR_COLUMN_NUM - 1; - - calitem = E_CALENDAR_ITEM (g_obj); - e_calendar_item_get_selection (calitem, &start_date, &end_date); - - e_calendar_item_get_offset_for_date (calitem, - g_date_get_year (&start_date), - g_date_get_month (&start_date), - g_date_get_day (&start_date), - &sel_index_start); - e_calendar_item_get_offset_for_date (calitem, - g_date_get_year (&end_date), - g_date_get_month (&end_date), - g_date_get_day (&end_date), - &sel_index_end); - - if ((sel_index_start < row_index_start && - sel_index_end >= row_index_start) || - (sel_index_start >= row_index_start && - sel_index_start <= row_index_end)) - return TRUE; - return FALSE; -} - -static gboolean -table_interface_is_selected (AtkTable *table, - gint row, - gint column) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - gint n_rows, n_columns; - ECalendarItem *calitem; - gint index; - gint sel_index_start, sel_index_end; - - GDate start_date, end_date; - - g_return_val_if_fail (EA_IS_CALENDAR_ITEM (table), FALSE); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (table); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return FALSE; - - n_rows = table_interface_get_n_rows (table); - if (row < 0 || row >= n_rows) - return FALSE; - n_columns = table_interface_get_n_columns (table); - if (column < 0 || column >= n_columns) - return FALSE; - - index = table_interface_get_index_at (table, row, column); - - calitem = E_CALENDAR_ITEM (g_obj); - e_calendar_item_get_selection (calitem, &start_date, &end_date); - - e_calendar_item_get_offset_for_date (calitem, - g_date_get_year (&start_date), - g_date_get_month (&start_date), - g_date_get_day (&start_date), - &sel_index_start); - e_calendar_item_get_offset_for_date (calitem, - g_date_get_year (&end_date), - g_date_get_month (&end_date), - g_date_get_day (&end_date), &sel_index_end); - - if (sel_index_start <= index && sel_index_end >= index) - return TRUE; - return FALSE; -} - -static gboolean -table_interface_is_column_selected (AtkTable *table, - gint column) -{ - return FALSE; -} - -static gint -table_interface_get_selected_rows (AtkTable *table, - gint **rows_selected) -{ - *rows_selected = NULL; - return -1; -} - -static gint -table_interface_get_selected_columns (AtkTable *table, - gint **columns_selected) -{ - *columns_selected = NULL; - return -1; -} - -static gboolean -table_interface_add_row_selection (AtkTable *table, - gint row) -{ - return FALSE; -} - -static gboolean -table_interface_remove_row_selection (AtkTable *table, - gint row) -{ - return FALSE; -} - -static gboolean -table_interface_add_column_selection (AtkTable *table, - gint column) -{ - return FALSE; -} - -static gboolean -table_interface_remove_column_selection (AtkTable *table, - gint column) -{ - /* FIXME: NOT IMPLEMENTED */ - return FALSE; -} - -static AtkObject* -table_interface_get_row_header (AtkTable *table, - gint row) -{ - /* FIXME: NOT IMPLEMENTED */ - return NULL; -} - -static AtkObject* -table_interface_get_column_header (AtkTable *table, - gint in_col) -{ - /* FIXME: NOT IMPLEMENTED */ - return NULL; -} - -static AtkObject* -table_interface_get_caption (AtkTable *table) -{ - /* FIXME: NOT IMPLEMENTED */ - return NULL; -} - -static G_CONST_RETURN gchar* -table_interface_get_column_description (AtkTable *table, gint in_col) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - ECalendarItem *calitem; - EaCalendarItem* ea_calitem = EA_CALENDAR_ITEM (table); - const gchar *description = NULL; - EaCellTable *cell_data; - gint n_columns; - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_calitem); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return NULL; - - calitem = E_CALENDAR_ITEM (g_obj); - n_columns = table_interface_get_n_columns (table); - if (in_col < 0 || in_col >= n_columns) - return NULL; - cell_data = ea_calendar_item_get_cell_data (ea_calitem); - if (!cell_data) - return NULL; - - description = ea_cell_table_get_column_label (cell_data, in_col); - if (!description) { - gchar buffer[128] = "column description"; - ea_calendar_item_get_column_label (ea_calitem, in_col, - buffer, sizeof (buffer)); - ea_cell_table_set_column_label (cell_data, in_col, buffer); - description = ea_cell_table_get_column_label (cell_data, - in_col); - } - return description; -} - -static G_CONST_RETURN gchar* -table_interface_get_row_description (AtkTable *table, gint row) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - ECalendarItem *calitem; - EaCalendarItem* ea_calitem = EA_CALENDAR_ITEM (table); - const gchar *description = NULL; - EaCellTable *cell_data; - gint n_rows; - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_calitem); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return NULL; - - calitem = E_CALENDAR_ITEM (g_obj); - n_rows = table_interface_get_n_rows (table); - if (row < 0 || row >= n_rows) - return NULL; - cell_data = ea_calendar_item_get_cell_data (ea_calitem); - if (!cell_data) - return NULL; - - description = ea_cell_table_get_row_label (cell_data, row); - if (!description) { - gchar buffer[128] = "row description"; - ea_calendar_item_get_row_label (ea_calitem, row, - buffer, sizeof (buffer)); - ea_cell_table_set_row_label (cell_data, row, buffer); - description = ea_cell_table_get_row_label (cell_data, - row); - } - return description; -} - -static AtkObject* -table_interface_get_summary (AtkTable *table) -{ - /* FIXME: NOT IMPLEMENTED */ - return NULL; -} - -/* atkselection interface */ - -static void -atk_selection_interface_init (AtkSelectionIface *iface) -{ - g_return_if_fail (iface != NULL); - - iface->add_selection = selection_interface_add_selection; - iface->clear_selection = selection_interface_clear_selection; - iface->ref_selection = selection_interface_ref_selection; - iface->get_selection_count = selection_interface_get_selection_count; - iface->is_child_selected = selection_interface_is_child_selected; -} - -static gboolean -selection_interface_add_selection (AtkSelection *selection, gint index) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - ECalendarItem *calitem; - EaCalendarItem* ea_calitem = EA_CALENDAR_ITEM (selection); - gint year, month, day; - GDate start_date, end_date; - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_calitem); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return FALSE; - - calitem = E_CALENDAR_ITEM (g_obj); - if (!e_calendar_item_get_date_for_offset (calitem, index, - &year, &month, &day)) - return FALSE; - - /* FIXME: not support mulit-selection */ - g_date_set_dmy (&start_date, day, month + 1, year); - end_date = start_date; - e_calendar_item_set_selection (calitem, &start_date, &end_date); - return TRUE; -} - -static gboolean -selection_interface_clear_selection (AtkSelection *selection) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - ECalendarItem *calitem; - EaCalendarItem* ea_calitem = EA_CALENDAR_ITEM (selection); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_calitem); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return FALSE; - - calitem = E_CALENDAR_ITEM (g_obj); - e_calendar_item_set_selection (calitem, NULL, NULL); - - return TRUE; -} - -static AtkObject* -selection_interface_ref_selection (AtkSelection *selection, gint i) -{ - GObject *g_obj; - ECalendarItem *calitem; - EaCalendarItem* ea_calitem = EA_CALENDAR_ITEM (selection); - gint count, sel_offset; - GDate start_date, end_date; - - count = selection_interface_get_selection_count (selection); - if (i < 0 || i >= count) - return NULL; - - g_obj = atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE (ea_calitem)); - - calitem = E_CALENDAR_ITEM (g_obj); - e_calendar_item_get_selection (calitem, &start_date, &end_date); - if (!e_calendar_item_get_offset_for_date (calitem, - g_date_get_year (&start_date), - g_date_get_month (&start_date) - 1, - g_date_get_day (&start_date), - &sel_offset)) - return NULL; - - return ea_calendar_item_ref_child (ATK_OBJECT (selection), sel_offset + i); -} - -static gint -selection_interface_get_selection_count (AtkSelection *selection) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - ECalendarItem *calitem; - EaCalendarItem* ea_calitem = EA_CALENDAR_ITEM (selection); - GDate start_date, end_date; - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_calitem); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return 0; - - calitem = E_CALENDAR_ITEM (g_obj); - e_calendar_item_get_selection (calitem, &start_date, &end_date); - - return g_date_days_between (&start_date, &end_date) + 1; -} - -static gboolean -selection_interface_is_child_selected (AtkSelection *selection, gint index) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - ECalendarItem *calitem; - EaCalendarItem* ea_calitem = EA_CALENDAR_ITEM (selection); - gint row, column, n_children; - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_calitem); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return FALSE; - - calitem = E_CALENDAR_ITEM (g_obj); - n_children = atk_object_get_n_accessible_children (ATK_OBJECT (selection)); - if (index < 0 || index >= n_children) - return FALSE; - - row = index / EA_CALENDAR_COLUMN_NUM; - column = index % EA_CALENDAR_COLUMN_NUM; - - return table_interface_is_selected (ATK_TABLE (selection), row, column); -} - -/* callbacks */ - -static void -selection_preview_change_cb (ECalendarItem *calitem) -{ - AtkObject *atk_obj; - AtkObject *item_cell = NULL; - - g_return_if_fail (E_IS_CALENDAR_ITEM (calitem)); - atk_obj = atk_gobject_accessible_for_object (G_OBJECT (calitem)); - - /* only deal with the first selected child, for now */ - item_cell = atk_selection_ref_selection (ATK_SELECTION (atk_obj), - 0); - if (item_cell) { - AtkStateSet *state_set; - state_set = atk_object_ref_state_set (item_cell); - atk_state_set_add_state (state_set, ATK_STATE_FOCUSED); - g_object_unref (state_set); - } - g_signal_emit_by_name (atk_obj, - "active-descendant-changed", - item_cell); - g_signal_emit_by_name (atk_obj, "selection_changed"); -} - -static void -date_range_changed_cb (ECalendarItem *calitem) -{ - AtkObject *atk_obj; - - g_return_if_fail (E_IS_CALENDAR_ITEM (calitem)); - atk_obj = atk_gobject_accessible_for_object (G_OBJECT (calitem)); - ea_calendar_item_destory_cell_data (EA_CALENDAR_ITEM (atk_obj)); - - g_signal_emit_by_name (atk_obj, "model_changed"); -} - -static void -selection_changed_cb (ECalendarItem *calitem) -{ - selection_preview_change_cb (calitem); -} - -/* helpers */ - -static EaCellTable * -ea_calendar_item_get_cell_data (EaCalendarItem *ea_calitem) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - ECalendarItem *calitem; - EaCellTable *cell_data; - - g_return_val_if_fail (ea_calitem, NULL); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_calitem); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return NULL; - - calitem = E_CALENDAR_ITEM (g_obj); - - cell_data = g_object_get_data (G_OBJECT(ea_calitem), - "ea-calendar-cell-table"); - - if (!cell_data) { - gint n_cells = ea_calendar_item_get_n_children (ATK_OBJECT(ea_calitem)); - cell_data = ea_cell_table_create (n_cells/EA_CALENDAR_COLUMN_NUM, - EA_CALENDAR_COLUMN_NUM, - FALSE); - g_object_set_data (G_OBJECT(ea_calitem), - "ea-calendar-cell-table", cell_data); - } - return cell_data; -} - -static void -ea_calendar_item_destory_cell_data (EaCalendarItem *ea_calitem) -{ - EaCellTable *cell_data; - - g_return_if_fail (ea_calitem); - - cell_data = g_object_get_data (G_OBJECT(ea_calitem), - "ea-calendar-cell-table"); - if (cell_data) { - g_object_set_data (G_OBJECT(ea_calitem), - "ea-calendar-cell-table", NULL); - ea_cell_table_destroy (cell_data); - } -} - -static gboolean -ea_calendar_item_get_row_label (EaCalendarItem *ea_calitem, gint row, - gchar *buffer, gint buffer_size) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - ECalendarItem *calitem; - gint index, week_num; - gint year, month, day; - - g_return_val_if_fail (ea_calitem, FALSE); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_calitem); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return FALSE; - - calitem = E_CALENDAR_ITEM (g_obj); - - index = atk_table_get_index_at (ATK_TABLE (ea_calitem), row, 0); - if (!e_calendar_item_get_date_for_offset (calitem, index, - &year, &month, &day)) - return FALSE; - - week_num = e_calendar_item_get_week_number (calitem, - day, month, year); - - g_snprintf (buffer, buffer_size, "week number : %d", week_num); - return TRUE; -} - -static gboolean -ea_calendar_item_get_column_label (EaCalendarItem *ea_calitem, gint column, - gchar *buffer, gint buffer_size) -{ - AtkGObjectAccessible *atk_gobj; - GObject *g_obj; - ECalendarItem *calitem; - gchar *week_char; - gint char_size; - - g_return_val_if_fail (ea_calitem, FALSE); - - atk_gobj = ATK_GOBJECT_ACCESSIBLE (ea_calitem); - g_obj = atk_gobject_accessible_get_object (atk_gobj); - if (!g_obj) - return FALSE; - - calitem = E_CALENDAR_ITEM (g_obj); - week_char = g_utf8_offset_to_pointer (calitem->days, column); - char_size = strlen (calitem->days) - - strlen (g_utf8_find_next_char (calitem->days, NULL)); - - if (week_char && char_size < buffer_size) { - memcpy (buffer, week_char, char_size); - buffer[char_size] = '\0'; - return TRUE; - } - return FALSE; -} - -/* the coordinate the e-calendar canvas coord */ -gboolean -e_calendar_item_get_day_extents (ECalendarItem *calitem, - gint year, gint month, gint date, - gint *x, gint *y, - gint *width, gint *height) -{ - GnomeCanvasItem *item; - GtkWidget *widget; - GtkStyle *style; - PangoFontDescription *font_desc; - PangoContext *pango_context; - PangoFontMetrics *font_metrics; - gint char_height, xthickness, ythickness, text_y; - gint new_year, new_month, num_months, months_offset; - gint month_x, month_y, month_cell_x, month_cell_y; - gint month_row, month_col; - gint day_row, day_col; - gint days_from_week_start; - - g_return_val_if_fail (E_IS_CALENDAR_ITEM (calitem), FALSE); - - item = GNOME_CANVAS_ITEM (calitem); - widget = GTK_WIDGET (item->canvas); - style = widget->style; - - /* Set up Pango prerequisites */ - font_desc = calitem->font_desc; - if (!font_desc) - font_desc = style->font_desc; - pango_context = gtk_widget_get_pango_context (widget); - font_metrics = pango_context_get_metrics (pango_context, font_desc, - pango_context_get_language (pango_context)); - - char_height = - PANGO_PIXELS (pango_font_metrics_get_ascent (font_metrics)) + - PANGO_PIXELS (pango_font_metrics_get_descent (font_metrics)); - - xthickness = style->xthickness; - ythickness = style->ythickness; - - new_year = year; - new_month = month; - e_calendar_item_normalize_date (calitem, &new_year, &new_month); - num_months = calitem->rows * calitem->cols; - months_offset = (new_year - calitem->year) * 12 - + new_month - calitem->month; - - if (months_offset > num_months || months_offset < 0) - return FALSE; - - month_row = months_offset / calitem->cols; - month_col = months_offset % calitem->cols; - - month_x = item->x1 + xthickness + calitem->x_offset - + month_col * calitem->month_width; - month_y = item->y1 + ythickness + month_row * calitem->month_height; - - month_cell_x = month_x + E_CALENDAR_ITEM_XPAD_BEFORE_WEEK_NUMBERS - + calitem->month_lpad + E_CALENDAR_ITEM_XPAD_BEFORE_CELLS; - text_y = month_y + ythickness * 2 - + E_CALENDAR_ITEM_YPAD_ABOVE_MONTH_NAME - + char_height + E_CALENDAR_ITEM_YPAD_BELOW_MONTH_NAME - + E_CALENDAR_ITEM_YPAD_ABOVE_DAY_LETTERS + calitem->month_tpad; - - month_cell_y = text_y + char_height - + E_CALENDAR_ITEM_YPAD_BELOW_DAY_LETTERS + 1 - + E_CALENDAR_ITEM_YPAD_ABOVE_CELLS; - - days_from_week_start = - e_calendar_item_get_n_days_from_week_start (calitem, new_year, - new_month); - day_row = (date + days_from_week_start - 1) / EA_CALENDAR_COLUMN_NUM; - day_col = (date + days_from_week_start - 1) % EA_CALENDAR_COLUMN_NUM; - - *x = month_cell_x + day_col * calitem->cell_width; - *y = month_cell_y + day_row * calitem->cell_height; - *width = calitem->cell_width; - *height = calitem->cell_height; - - return TRUE; -} - -/* month is from 0 to 11 */ -gboolean -e_calendar_item_get_date_for_offset (ECalendarItem *calitem, gint day_offset, - gint *year, gint *month, gint *day) -{ - gint start_year, start_month, start_day; - gint end_year, end_month, end_day; - GDate *start_date; - - g_return_val_if_fail (E_IS_CALENDAR_ITEM (calitem), FALSE); - - if (!e_calendar_item_get_date_range (calitem, &start_year, - &start_month, &start_day, - &end_year, &end_month, - &end_day)) - return FALSE; - - start_date = g_date_new_dmy (start_day, start_month + 1, start_year); - - g_date_add_days (start_date, day_offset); - - *year = g_date_get_year (start_date); - *month = g_date_get_month (start_date) - 1; - *day = g_date_get_day (start_date); - - return TRUE; -} - -/* the arg month is from 0 to 11 */ -static gboolean -e_calendar_item_get_offset_for_date (ECalendarItem *calitem, - gint year, gint month, gint day, - gint *offset) -{ - gint start_year, start_month, start_day; - gint end_year, end_month, end_day; - GDate *start_date, *end_date; - - *offset = 0; - g_return_val_if_fail (E_IS_CALENDAR_ITEM (calitem), FALSE); - - if (!e_calendar_item_get_date_range (calitem, &start_year, - &start_month, &start_day, - &end_year, &end_month, - &end_day)) - return FALSE; - - start_date = g_date_new_dmy (start_day, start_month + 1, start_year); - end_date = g_date_new_dmy (day, month + 1, year); - - *offset = g_date_days_between (start_date, end_date); - g_free (start_date); - g_free (end_date); - - return TRUE; -} - -gint -e_calendar_item_get_n_days_from_week_start (ECalendarItem *calitem, - gint year, gint month) -{ - struct tm tmp_tm; - gint start_weekday, days_from_week_start; - - memset (&tmp_tm, 0, sizeof (tmp_tm)); - tmp_tm.tm_year = year - 1900; - tmp_tm.tm_mon = month; - tmp_tm.tm_mday = 1; - tmp_tm.tm_isdst = -1; - mktime (&tmp_tm); - start_weekday = (tmp_tm.tm_wday + 6) % 7; /* 0 to 6 */ - days_from_week_start = (start_weekday + 7 - calitem->week_start_day) - % 7; - return days_from_week_start; -} diff --git a/a11y/widgets/ea-calendar-item.h b/a11y/widgets/ea-calendar-item.h deleted file mode 100644 index 5ba0c2b274..0000000000 --- a/a11y/widgets/ea-calendar-item.h +++ /dev/null @@ -1,75 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* vim:expandtab:shiftwidth=8:tabstop=8: - */ -/* Evolution Accessibility: ea-calendar-item.h - * - * Copyright (C) 2003 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003 - * - */ - -#ifndef __EA_CALENDAR_ITEM_H__ -#define __EA_CALENDAR_ITEM_H__ - -#include <atk/atkgobjectaccessible.h> -#include <misc/e-calendar-item.h> - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -#define EA_TYPE_CALENDAR_ITEM (ea_calendar_item_get_type ()) -#define EA_CALENDAR_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EA_TYPE_CALENDAR_ITEM, EaCalendarItem)) -#define EA_CALENDAR_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EA_TYPE_CALENDAR_ITEM, EaCalendarItemClass)) -#define EA_IS_CALENDAR_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EA_TYPE_CALENDAR_ITEM)) -#define EA_IS_CALENDAR_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EA_TYPE_CALENDAR_ITEM)) -#define EA_CALENDAR_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EA_TYPE_CALENDAR_ITEM, EaCalendarItemClass)) - -typedef struct _EaCalendarItem EaCalendarItem; -typedef struct _EaCalendarItemClass EaCalendarItemClass; - -struct _EaCalendarItem -{ - AtkGObjectAccessible parent; -}; - -GType ea_calendar_item_get_type (void); - -struct _EaCalendarItemClass -{ - AtkGObjectAccessibleClass parent_class; -}; - -AtkObject *ea_calendar_item_new (GObject *obj); -gboolean e_calendar_item_get_day_extents (ECalendarItem *calitem, - gint year, gint month, gint date, - gint *x, gint *y, - gint *width, gint *height); -gboolean e_calendar_item_get_date_for_offset (ECalendarItem *calitem, - gint day_offset, - gint *year, gint *month, - gint *day); -gint e_calendar_item_get_n_days_from_week_start (ECalendarItem *calitem, - gint year, gint month); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - - -#endif /* __EA_CALENDAR_ITEM_H__ */ diff --git a/a11y/widgets/ea-combo-button.c b/a11y/widgets/ea-combo-button.c deleted file mode 100644 index aad60c3023..0000000000 --- a/a11y/widgets/ea-combo-button.c +++ /dev/null @@ -1,170 +0,0 @@ -/* - * Authors: Harry Lu <harry.lu@sun.com> - * - * Copyright (C) 2004 Ximian, Inc. - */ - -#include <config.h> -#include "ea-combo-button.h" -#include <gtk/gtkbutton.h> -#include <gtk/gtklabel.h> -#include <glib/gi18n.h> - -static AtkObjectClass *parent_class; -static GType parent_type; - -/*Action IDs */ -enum { - ACTIVATE_DEFAULT, - POPUP_MENU, - LAST_ACTION -}; - -/* Static functions */ -static G_CONST_RETURN gchar* -ea_combo_button_get_name (AtkObject *a11y) -{ - GtkWidget *widget; - GtkWidget *label; - EComboButton *button; - - widget = GTK_ACCESSIBLE (a11y)->widget; - if (!widget) - return NULL; - - button = E_COMBO_BUTTON (widget); - label = e_combo_button_get_label (button); - if (label) - return gtk_label_get_text (GTK_LABEL (label)); - - return _("Combo Button"); -} - -/* Action interface */ -static G_CONST_RETURN gchar * -ea_combo_button_action_get_name (AtkAction *action, gint i) -{ - switch (i) - { - case ACTIVATE_DEFAULT: - return _("Activate Default"); - case POPUP_MENU: - return _("Popup Menu"); - default: - return NULL; - } -} - -static gboolean -ea_combo_button_do_action (AtkAction *action, - gint i) -{ - GtkWidget *widget; - EComboButton *button; - - widget = GTK_ACCESSIBLE (action)->widget; - if (!widget || !GTK_WIDGET_IS_SENSITIVE (widget) || !GTK_WIDGET_VISIBLE (widget)) - return FALSE; - - button = E_COMBO_BUTTON (widget); - - switch (i) - { - case ACTIVATE_DEFAULT: - g_signal_emit_by_name (button, "activate_default"); - return TRUE; - case POPUP_MENU: - return e_combo_button_popup_menu (button); - default: - return FALSE; - } -} - -static gint -ea_combo_button_get_n_actions (AtkAction *action) -{ - return LAST_ACTION; -} - -static void -atk_action_interface_init (AtkActionIface *iface) -{ - g_return_if_fail (iface != NULL); - - iface->do_action = ea_combo_button_do_action; - iface->get_n_actions = ea_combo_button_get_n_actions; - iface->get_name = ea_combo_button_action_get_name; -} - -static void -ea_combo_button_class_init (EaComboButtonClass *klass) -{ - AtkObjectClass *atk_object_class = ATK_OBJECT_CLASS (klass); - - parent_class = g_type_class_ref (parent_type); - - atk_object_class->get_name = ea_combo_button_get_name; -} - -static void -ea_combo_button_init (EaComboButton *a11y) -{ - /* Empty for now */ -} - -GType -ea_combo_button_get_type (void) -{ - static GType type = 0; - - if (!type) { - AtkObjectFactory *factory; - GTypeQuery query; - - GTypeInfo info = { - sizeof (EaComboButtonClass), - (GBaseInitFunc) NULL, - (GBaseFinalizeFunc) NULL, - (GClassInitFunc) ea_combo_button_class_init, - (GClassFinalizeFunc) NULL, - NULL, /* class_data */ - sizeof (EaComboButton), - 0, - (GInstanceInitFunc) ea_combo_button_init, - NULL /* value_tree */ - }; - - static const GInterfaceInfo atk_action_info = { - (GInterfaceInitFunc) atk_action_interface_init, - (GInterfaceFinalizeFunc) NULL, - NULL - }; - - factory = atk_registry_get_factory (atk_get_default_registry (), GTK_TYPE_BUTTON); - parent_type = atk_object_factory_get_accessible_type (factory); - g_type_query (parent_type, &query); - - info.class_size = query.class_size; - info.instance_size = query.instance_size; - - type = g_type_register_static (parent_type, "EaComboButton", &info, 0); - g_type_add_interface_static (type, ATK_TYPE_ACTION, - &atk_action_info); - - } - - return type; -} - -AtkObject * -ea_combo_button_new (GtkWidget *widget) -{ - EaComboButton *a11y; - - a11y = g_object_new (ea_combo_button_get_type (), NULL); - - GTK_ACCESSIBLE (a11y)->widget = GTK_WIDGET (widget); - ATK_OBJECT (a11y)->role = ATK_ROLE_PUSH_BUTTON; - - return ATK_OBJECT (a11y); -} diff --git a/a11y/widgets/ea-combo-button.h b/a11y/widgets/ea-combo-button.h deleted file mode 100644 index 8f4c279cba..0000000000 --- a/a11y/widgets/ea-combo-button.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Authors: Harry Lu <harry.lu@sun.com> - * - * Copyright (C) 2004 Ximian, Inc. - */ - -#ifndef __EA_COMBO_BUTTON_H_ -#define __EA_COMBO_BUTTON_H_ - -#include <gtk/gtkaccessible.h> -#include <misc/e-combo-button.h> - -#define EA_TYPE_COMBO_BUTTON (ea_combo_button_get_type ()) -#define EA_COMBO_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EA_TYPE_COMBO_BUTTON, EaComboButton)) -#define EA_COMBO_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EA_TYPE_COMBO_BUTTON, EaComboButtonClass)) -#define EA_IS_COMBO_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EA_TYPE_COMBO_BUTTON)) -#define EA_IS_COMBO_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EA_TYPE_COMBO_BUTTON)) - -typedef struct _EaComboButton EaComboButton; -typedef struct _EaComboButtonClass EaComboButtonClass; - -struct _EaComboButton { - GtkAccessible object; -}; - -struct _EaComboButtonClass { - GtkAccessibleClass parent_class; -}; - - -/* Standard Glib function */ -GType ea_combo_button_get_type (void); -AtkObject *ea_combo_button_new (GtkWidget *combo_button); - -#endif /* ! __EA_COMBO_BUTTON_H_ */ diff --git a/a11y/widgets/ea-widgets.c b/a11y/widgets/ea-widgets.c deleted file mode 100644 index feef6d1ef3..0000000000 --- a/a11y/widgets/ea-widgets.c +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* vim:expandtab:shiftwidth=8:tabstop=8: - */ -/* Evolution Accessibility: ea-widgets.c - * - * Copyright (C) 2003 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003 - * - */ - -#include "ea-factory.h" -#include "widgets/ea-calendar-item.h" -#include "widgets/ea-combo-button.h" -#include "ea-widgets.h" - -EA_FACTORY_GOBJECT (EA_TYPE_CALENDAR_ITEM, ea_calendar_item, ea_calendar_item_new); -EA_FACTORY (EA_TYPE_COMBO_BUTTON, ea_combo_button, ea_combo_button_new); - -void e_calendar_item_a11y_init (void) -{ - EA_SET_FACTORY (e_calendar_item_get_type (), ea_calendar_item); -} - -void e_combo_button_a11y_init (void) -{ - EA_SET_FACTORY (e_combo_button_get_type (), ea_combo_button); -} diff --git a/a11y/widgets/ea-widgets.h b/a11y/widgets/ea-widgets.h deleted file mode 100644 index fc8e7f1b90..0000000000 --- a/a11y/widgets/ea-widgets.h +++ /dev/null @@ -1,35 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* vim:expandtab:shiftwidth=8:tabstop=8: - */ -/* Evolution Accessibility: ea-widgets.h - * - * Copyright (C) 2003 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. - * - * This program 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 - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Bolian Yin <bolian.yin@sun.com> Sun Microsystem Inc., 2003 - * - */ - -/* Evolution Accessibility -*/ - -#ifndef _EA_WIDGETS_H__ -#define _EA_WIDGETS_H__ - -void e_calendar_item_a11y_init (void); -void e_combo_button_a11y_init (void); - -#endif /* _EA_WIDGETS_H__ */ |