From 033d5013d365fb6bb00aeec6fd8442b38ac80e04 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Tue, 2 Jul 2013 16:39:19 -0400 Subject: Split CalendarViewFactory into separate classes by view type. I suspect this will enable us to ditch GalViewFactory entirely once I rework a few more things. We'll see though; one step at a time here. --- calendar/gui/calendar-view-factory.c | 215 +++++++++++++--------------- calendar/gui/calendar-view-factory.h | 64 ++++----- modules/calendar/e-cal-shell-view-private.c | 8 +- 3 files changed, 132 insertions(+), 155 deletions(-) diff --git a/calendar/gui/calendar-view-factory.c b/calendar/gui/calendar-view-factory.c index d975e491de..f23c997fb0 100644 --- a/calendar/gui/calendar-view-factory.c +++ b/calendar/gui/calendar-view-factory.c @@ -1,5 +1,5 @@ /* - * Evolution calendar - Generic view factory for calendar views + * calendar-view-factory.c * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -14,159 +14,140 @@ * You should have received a copy of the GNU Lesser General Public * License along with the program; if not, see * - * - * Authors: - * Federico Mena-Quintero - * - * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com) - * */ -#ifdef HAVE_CONFIG_H -#include -#endif +#include "calendar-view-factory.h" +#include #include -#include "calendar-view-factory.h" + #include "calendar-view.h" -#define CALENDAR_VIEW_FACTORY_GET_PRIVATE(obj) \ - (G_TYPE_INSTANCE_GET_PRIVATE \ - ((obj), TYPE_CALENDAR_VIEW_FACTORY, CalendarViewFactoryPrivate)) +G_DEFINE_TYPE ( + GalViewFactoryCalendarDay, + gal_view_factory_calendar_day, + GAL_TYPE_VIEW_FACTORY) -struct _CalendarViewFactoryPrivate { - /* Type of views created by this factory */ - GnomeCalendarViewType view_type; -}; +G_DEFINE_TYPE ( + GalViewFactoryCalendarWorkWeek, + gal_view_factory_calendar_work_week, + GAL_TYPE_VIEW_FACTORY) -static const gchar * - calendar_view_factory_get_type_code - (GalViewFactory *factory); -static GalView * - calendar_view_factory_new_view (GalViewFactory *factory, - const gchar *name); +G_DEFINE_TYPE ( + GalViewFactoryCalendarWeek, + gal_view_factory_calendar_week, + GAL_TYPE_VIEW_FACTORY) G_DEFINE_TYPE ( - CalendarViewFactory, - calendar_view_factory, + GalViewFactoryCalendarMonth, + gal_view_factory_calendar_month, GAL_TYPE_VIEW_FACTORY) -static void -calendar_view_factory_class_init (CalendarViewFactoryClass *class) +static const gchar * +gal_view_factory_calendar_day_get_type_code (GalViewFactory *factory) { - GalViewFactoryClass *gal_view_factory_class; + return "day_view"; +} - g_type_class_add_private (class, sizeof (CalendarViewFactoryPrivate)); +static GalView * +gal_view_factory_calendar_day_new_view (GalViewFactory *factory, + const gchar *title) +{ + return g_object_new ( + GAL_TYPE_VIEW_CALENDAR_DAY, + "title", title, NULL); +} - gal_view_factory_class = GAL_VIEW_FACTORY_CLASS (class); - gal_view_factory_class->get_type_code = calendar_view_factory_get_type_code; - gal_view_factory_class->new_view = calendar_view_factory_new_view; +static void +gal_view_factory_calendar_day_class_init (GalViewFactoryClass *class) +{ + class->get_type_code = gal_view_factory_calendar_day_get_type_code; + class->new_view = gal_view_factory_calendar_day_new_view; } static void -calendar_view_factory_init (CalendarViewFactory *cal_view_factory) +gal_view_factory_calendar_day_init (GalViewFactory *factory) { - cal_view_factory->priv = - CALENDAR_VIEW_FACTORY_GET_PRIVATE (cal_view_factory); } -/* get_type_code method for the calendar view factory */ static const gchar * -calendar_view_factory_get_type_code (GalViewFactory *factory) +gal_view_factory_calendar_work_week_get_type_code (GalViewFactory *factory) { - CalendarViewFactory *cal_view_factory; - CalendarViewFactoryPrivate *priv; - - cal_view_factory = CALENDAR_VIEW_FACTORY (factory); - priv = cal_view_factory->priv; - - switch (priv->view_type) { - case GNOME_CAL_DAY_VIEW: - return "day_view"; + return "work_week_view"; +} - case GNOME_CAL_WORK_WEEK_VIEW: - return "work_week_view"; +static GalView * +gal_view_factory_calendar_work_week_new_view (GalViewFactory *factory, + const gchar *title) +{ + return g_object_new ( + GAL_TYPE_VIEW_CALENDAR_WORK_WEEK, + "title", title, NULL); +} - case GNOME_CAL_WEEK_VIEW: - return "week_view"; +static void +gal_view_factory_calendar_work_week_class_init (GalViewFactoryClass *class) +{ + class->get_type_code = gal_view_factory_calendar_work_week_get_type_code; + class->new_view = gal_view_factory_calendar_work_week_new_view; +} - case GNOME_CAL_MONTH_VIEW: - return "month_view"; +static void +gal_view_factory_calendar_work_week_init (GalViewFactory *factory) +{ +} - default: - g_return_val_if_reached (NULL); - } +static const gchar * +gal_view_factory_calendar_week_get_type_code (GalViewFactory *factory) +{ + return "week_view"; } -/* new_view method for the calendar view factory */ static GalView * -calendar_view_factory_new_view (GalViewFactory *factory, - const gchar *title) -{ - CalendarViewFactory *cal_view_factory; - GType type; - - cal_view_factory = CALENDAR_VIEW_FACTORY (factory); - - switch (cal_view_factory->priv->view_type) { - case GNOME_CAL_DAY_VIEW: - type = GAL_TYPE_VIEW_CALENDAR_DAY; - break; - case GNOME_CAL_WORK_WEEK_VIEW: - type = GAL_TYPE_VIEW_CALENDAR_WORK_WEEK; - break; - case GNOME_CAL_WEEK_VIEW: - type = GAL_TYPE_VIEW_CALENDAR_WEEK; - break; - case GNOME_CAL_MONTH_VIEW: - type = GAL_TYPE_VIEW_CALENDAR_MONTH; - break; - default: - g_return_val_if_reached (NULL); - } - - return g_object_new (type, "title", title, NULL); -} - -/** - * calendar_view_factory_construct: - * @cal_view_factory: A calendar view factory. - * @view_type: Type of calendar views that the factory will create. - * - * Constructs a calendar view factory by setting the type of views it will - * create. - * - * Return value: The same value as @cal_view_factory. - **/ -GalViewFactory * -calendar_view_factory_construct (CalendarViewFactory *cal_view_factory, - GnomeCalendarViewType view_type) +gal_view_factory_calendar_week_new_view (GalViewFactory *factory, + const gchar *title) { - CalendarViewFactoryPrivate *priv; + return g_object_new ( + GAL_TYPE_VIEW_CALENDAR_WEEK, + "title", title, NULL); +} - g_return_val_if_fail (cal_view_factory != NULL, NULL); - g_return_val_if_fail (IS_CALENDAR_VIEW_FACTORY (cal_view_factory), NULL); +static void +gal_view_factory_calendar_week_class_init (GalViewFactoryClass *class) +{ + class->get_type_code = gal_view_factory_calendar_week_get_type_code; + class->new_view = gal_view_factory_calendar_week_new_view; +} - priv = cal_view_factory->priv; +static void +gal_view_factory_calendar_week_init (GalViewFactory *factory) +{ +} - priv->view_type = view_type; +static const gchar * +gal_view_factory_calendar_month_get_type_code (GalViewFactory *factory) +{ + return "month_view"; +} - return GAL_VIEW_FACTORY (cal_view_factory); +static GalView * +gal_view_factory_calendar_month_new_view (GalViewFactory *factory, + const gchar *title) +{ + return g_object_new ( + GAL_TYPE_VIEW_CALENDAR_MONTH, + "title", title, NULL); } -/** - * calendar_view_factory_new: - * @view_type: Type of calendar views that the factory will create. - * - * Creates a new factory for calendar views. - * - * Return value: A newly-created calendar view factory. - **/ -GalViewFactory * -calendar_view_factory_new (GnomeCalendarViewType view_type) +static void +gal_view_factory_calendar_month_class_init (GalViewFactoryClass *class) { - CalendarViewFactory *cal_view_factory; + class->get_type_code = gal_view_factory_calendar_month_get_type_code; + class->new_view = gal_view_factory_calendar_month_new_view; +} - cal_view_factory = g_object_new (TYPE_CALENDAR_VIEW_FACTORY, NULL); - return calendar_view_factory_construct (cal_view_factory, view_type); +static void +gal_view_factory_calendar_month_init (GalViewFactory *factory) +{ } + diff --git a/calendar/gui/calendar-view-factory.h b/calendar/gui/calendar-view-factory.h index 833c4bd281..ff4f8ee1c4 100644 --- a/calendar/gui/calendar-view-factory.h +++ b/calendar/gui/calendar-view-factory.h @@ -1,6 +1,5 @@ /* - * - * Evolution calendar - Generic view factory for calendar views + * calendar-view-factory.h * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -15,50 +14,47 @@ * You should have received a copy of the GNU Lesser General Public * License along with the program; if not, see * - * - * Authors: - * Federico Mena-Quintero - * - * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com) - * */ #ifndef CALENDAR_VIEW_FACTORY_H #define CALENDAR_VIEW_FACTORY_H -#include "gnome-cal.h" +#include -G_BEGIN_DECLS +/* Standard GObject macros */ +#define GAL_TYPE_VIEW_FACTORY_CALENDAR_DAY \ + (gal_view_factory_calendar_day_get_type ()) +#define GAL_TYPE_VIEW_FACTORY_CALENDAR_WORK_WEEK \ + (gal_view_factory_calendar_work_week_get_type ()) +#define GAL_TYPE_VIEW_FACTORY_CALENDAR_WEEK \ + (gal_view_factory_calendar_week_get_type ()) +#define GAL_TYPE_VIEW_FACTORY_CALENDAR_MONTH \ + (gal_view_factory_calendar_month_get_type ()) -#define TYPE_CALENDAR_VIEW_FACTORY (calendar_view_factory_get_type ()) -#define CALENDAR_VIEW_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CALENDAR_VIEW_FACTORY, \ - CalendarViewFactory)) -#define CALENDAR_VIEW_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), \ - TYPE_CALENDAR_VIEW_FACTORY, CalendarViewClass)) -#define IS_CALENDAR_VIEW_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CALENDAR_VIEW_FACTORY)) -#define IS_CALENDAR_VIEW_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \ - TYPE_CALENDAR_VIEW_FACTORY)) - -typedef struct _CalendarViewFactoryPrivate CalendarViewFactoryPrivate; - -typedef struct { - GalViewFactory factory; +G_BEGIN_DECLS - /* Private data */ - CalendarViewFactoryPrivate *priv; -} CalendarViewFactory; +typedef struct _GalViewFactory GalViewFactoryCalendarDay; +typedef struct _GalViewFactoryClass GalViewFactoryCalendarDayClass; -typedef struct { - GalViewFactoryClass parent_class; -} CalendarViewFactoryClass; +typedef struct _GalViewFactory GalViewFactoryCalendarWorkWeek; +typedef struct _GalViewFactoryClass GalViewFactoryCalendarWorkWeekClass; -GType calendar_view_factory_get_type (void); +typedef struct _GalViewFactory GalViewFactoryCalendarWeek; +typedef struct _GalViewFactoryClass GalViewFactoryCalendarWeekClass; -GalViewFactory *calendar_view_factory_construct (CalendarViewFactory *cal_view_factory, - GnomeCalendarViewType view_type); +typedef struct _GalViewFactory GalViewFactoryCalendarMonth; +typedef struct _GalViewFactoryClass GalViewFactoryCalendarMonthClass; -GalViewFactory *calendar_view_factory_new (GnomeCalendarViewType view_type); +GType gal_view_factory_calendar_day_get_type + (void) G_GNUC_CONST; +GType gal_view_factory_calendar_work_week_get_type + (void) G_GNUC_CONST; +GType gal_view_factory_calendar_week_get_type + (void) G_GNUC_CONST; +GType gal_view_factory_calendar_month_get_type + (void) G_GNUC_CONST; G_END_DECLS -#endif +#endif /* CALENDAR_VIEW_FACTORY_H */ + diff --git a/modules/calendar/e-cal-shell-view-private.c b/modules/calendar/e-cal-shell-view-private.c index be6e67f102..b4ed297ea0 100644 --- a/modules/calendar/e-cal-shell-view-private.c +++ b/modules/calendar/e-cal-shell-view-private.c @@ -419,19 +419,19 @@ cal_shell_view_load_view_collection (EShellViewClass *shell_view_class) collection = shell_view_class->view_collection; - factory = calendar_view_factory_new (GNOME_CAL_DAY_VIEW); + factory = g_object_new (GAL_TYPE_VIEW_FACTORY_CALENDAR_DAY, NULL); gal_view_collection_add_factory (collection, factory); g_object_unref (factory); - factory = calendar_view_factory_new (GNOME_CAL_WORK_WEEK_VIEW); + factory = g_object_new (GAL_TYPE_VIEW_FACTORY_CALENDAR_WORK_WEEK, NULL); gal_view_collection_add_factory (collection, factory); g_object_unref (factory); - factory = calendar_view_factory_new (GNOME_CAL_WEEK_VIEW); + factory = g_object_new (GAL_TYPE_VIEW_FACTORY_CALENDAR_WEEK, NULL); gal_view_collection_add_factory (collection, factory); g_object_unref (factory); - factory = calendar_view_factory_new (GNOME_CAL_MONTH_VIEW); + factory = g_object_new (GAL_TYPE_VIEW_FACTORY_CALENDAR_MONTH, NULL); gal_view_collection_add_factory (collection, factory); g_object_unref (factory); -- cgit v1.2.3