diff options
author | Federico Mena Quintero <federico@src.gnome.org> | 2001-06-20 01:26:04 +0800 |
---|---|---|
committer | Federico Mena Quintero <federico@src.gnome.org> | 2001-06-20 01:26:04 +0800 |
commit | 4583098b34dfc46701ec05531bba90a7c59d8d92 (patch) | |
tree | 2c00fba88a8ba20ae218fe68f679958bbf963e2d /calendar/gui/calendar-view.c | |
parent | 2e156596a6e8099c3f540ca362b1415613ed30dd (diff) | |
download | gsoc2013-evolution-4583098b34dfc46701ec05531bba90a7c59d8d92.tar.gz gsoc2013-evolution-4583098b34dfc46701ec05531bba90a7c59d8d92.tar.zst gsoc2013-evolution-4583098b34dfc46701ec05531bba90a7c59d8d92.zip |
Sync - Federico
svn path=/trunk/; revision=10293
Diffstat (limited to 'calendar/gui/calendar-view.c')
-rw-r--r-- | calendar/gui/calendar-view.c | 317 |
1 files changed, 317 insertions, 0 deletions
diff --git a/calendar/gui/calendar-view.c b/calendar/gui/calendar-view.c new file mode 100644 index 0000000000..7a3a2b3fd1 --- /dev/null +++ b/calendar/gui/calendar-view.c @@ -0,0 +1,317 @@ +/* Evolution calendar - Generic view object for calendar views + * + * Copyright (C) 2001 Ximian, Inc. + * + * Author: Federico Mena-Quintero <federico@ximian.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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. + */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include "calendar-view.h" + + + +/* Private part of the CalendarView structure */ +struct _CalendarViewPrivate { + /* Type of the view */ + GnomeCalendarViewType view_type; + + /* Title of the view */ + char *title; +}; + + + +static void calendar_view_class_init (CalendarViewClass *class); +static void calendar_view_init (CalendarView *cview); +static void calendar_view_destroy (GtkObject *object); + +static void calendar_view_edit (GalView *view); +static void calendar_view_load (GalView *view, const char *filename); +static void calendar_view_save (GalView *view, const char *filename); +static const char *calendar_view_get_title (GalView *view); +static void calendar_view_set_title (GalView *view, const char *title); +static const char *calendar_view_get_type_code (GalView *view); +static GalView *calendar_view_clone (GalView *view); + +static GalViewClass *parent_class = NULL; + + + +/** + * calendar_view_get_type: + * + * Registers the #CalendarView class if necessary, and returns the type ID + * associated to it. + * + * Return value: The type ID of the #CalendarView class. + **/ +GtkType +calendar_view_get_type (void) +{ + static GtkType calendar_view_type; + + if (!calendar_view_type) { + static const GtkTypeInfo calendar_view_info = { + "CalendarView", + sizeof (CalendarView), + sizeof (CalendarViewClass), + (GtkClassInitFunc) calendar_view_class_init, + (GtkObjectInitFunc) calendar_view_init, + NULL, /* reserved_1 */ + NULL, /* reserved_2 */ + (GtkClassInitFunc) NULL + }; + + calendar_view_type = gtk_type_unique (GAL_VIEW_TYPE, &calendar_view_info); + } + + return calendar_view_type; +} + +/* Class initialization function for the calendar view */ +static void +calendar_view_class_init (CalendarViewClass *class) +{ + GalViewClass *gal_view_class; + GtkObjectClass *object_class; + + parent_class = gtk_type_class (GAL_VIEW_TYPE); + + gal_view_class = (GalViewClass *) class; + object_class = (GtkObjectClass *) class; + + gal_view_class->edit = calendar_view_edit; + gal_view_class->load = calendar_view_load; + gal_view_class->save = calendar_view_save; + gal_view_class->get_title = calendar_view_get_title; + gal_view_class->set_title = calendar_view_set_title; + gal_view_class->get_type_code = calendar_view_get_type_code; + gal_view_class->clone = calendar_view_clone; + + object_class->destroy = calendar_view_destroy; +} + +/* Object initialization function for the calendar view */ +static void +calendar_view_init (CalendarView *cal_view) +{ + CalendarViewPrivate *priv; + + priv = g_new0 (CalendarViewPrivate, 1); + cal_view->priv = priv; + + priv->title = NULL; +} + +/* Destroy method for the calendar view */ +static void +calendar_view_destroy (GtkObject *object) +{ + CalendarView *cal_view; + CalendarViewPrivate *priv; + + g_return_if_fail (object != NULL); + g_return_if_fail (IS_CALENDAR_VIEW (object)); + + cal_view = CALENDAR_VIEW (object); + priv = cal_view->priv; + + if (priv->title) { + g_free (priv->title); + priv->title = NULL; + } + + g_free (priv); + cal_view->priv = NULL; + + if (GTK_OBJECT_CLASS (parent_class)->destroy) + (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); +} + + + +/* edit method of the calendar view */ +static void +calendar_view_edit (GalView *view) +{ + /* nothing */ +} + +/* load method of the calendar view */ +static void +calendar_view_load (GalView *view, const char *filename) +{ + /* nothing */ +} + +/* save method of the calendar view */ +static void +calendar_view_save (GalView *view, const char *filename) +{ + /* nothing */ +} + +/* get_title method of the calendar view */ +static const char * +calendar_view_get_title (GalView *view) +{ + CalendarView *cal_view; + CalendarViewPrivate *priv; + + cal_view = CALENDAR_VIEW (view); + priv = cal_view->priv; + + return priv->title; +} + +/* set_title method of the calendar view */ +static void +calendar_view_set_title (GalView *view, const char *title) +{ + CalendarView *cal_view; + CalendarViewPrivate *priv; + + cal_view = CALENDAR_VIEW (view); + priv = cal_view->priv; + + if (priv->title) + g_free (priv->title); + + priv->title = g_strdup (title); +} + +/* get_type_code method for the calendar view */ +static const char * +calendar_view_get_type_code (GalView *view) +{ + CalendarView *cal_view; + CalendarViewPrivate *priv; + + cal_view = CALENDAR_VIEW (view); + priv = cal_view->priv; + + switch (priv->view_type) { + case GNOME_CAL_DAY_VIEW: + return "day_view"; + + case GNOME_CAL_WORK_WEEK_VIEW: + return "work_week_view"; + + case GNOME_CAL_WEEK_VIEW: + return "week_view"; + + case GNOME_CAL_MONTH_VIEW: + return "month_view"; + + default: + g_assert_not_reached (); + return NULL; + } +} + +/* clone method for the calendar view */ +static GalView * +calendar_view_clone (GalView *view) +{ + CalendarView *cal_view; + CalendarViewPrivate *priv; + CalendarView *new_view; + CalendarViewPrivate *new_priv; + + cal_view = CALENDAR_VIEW (view); + priv = cal_view->priv; + + new_view = gtk_type_new (TYPE_CALENDAR_VIEW); + new_priv = new_view->priv; + + new_priv->view_type = priv->view_type; + new_priv->title = g_strdup (priv->title); + + return GAL_VIEW (new_view); +} + + + +/** + * calendar_view_construct: + * @cal_view: A calendar view. + * @view_type: The type of calendar view that this object will represent. + * @title: Title for the view. + * + * Constructs a calendar view by setting its view type and title. + * + * Return value: The same value as @cal_view. + **/ +CalendarView * +calendar_view_construct (CalendarView *cal_view, + GnomeCalendarViewType view_type, + const char *title) +{ + CalendarViewPrivate *priv; + + g_return_val_if_fail (cal_view != NULL, NULL); + g_return_val_if_fail (IS_CALENDAR_VIEW (cal_view), NULL); + g_return_val_if_fail (title != NULL, NULL); + + priv = cal_view->priv; + + priv->view_type = view_type; + priv->title = g_strdup (title); + + return cal_view; +} + +/** + * calendar_view_new: + * @view_type: The type of calendar view that this object will represent. + * @title: Title for the view. + * + * Creates a new calendar view object. + * + * Return value: A newly-created calendar view. + **/ +CalendarView * +calendar_view_new (GnomeCalendarViewType view_type, const char *title) +{ + CalendarView *cal_view; + + cal_view = gtk_type_new (TYPE_CALENDAR_VIEW); + return calendar_view_construct (cal_view, view_type, title); +} + +/** + * calendar_view_get_view_type: + * @cal_view: A calendar view. + * + * Queries the calendar view type of a calendar view. + * + * Return value: Type of calendar view. + **/ +GnomeCalendarViewType +calendar_view_get_view_type (CalendarView *cal_view) +{ + CalendarViewPrivate *priv; + + g_return_val_if_fail (cal_view != NULL, GNOME_CAL_DAY_VIEW); + g_return_val_if_fail (IS_CALENDAR_VIEW (cal_view), GNOME_CAL_DAY_VIEW); + + priv = cal_view->priv; + return priv->view_type; +} |