[evolution] Split CalendarViewFactory into separate classes by view type.
- From: Matthew Barnes <mbarnes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution] Split CalendarViewFactory into separate classes by view type.
- Date: Fri, 5 Jul 2013 20:41:59 +0000 (UTC)
commit 033d5013d365fb6bb00aeec6fd8442b38ac80e04
Author: Matthew Barnes <mbarnes redhat com>
Date: Tue Jul 2 16:39:19 2013 -0400
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 d975e49..f23c997 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 <http://www.gnu.org/licenses/>
*
- *
- * Authors:
- * Federico Mena-Quintero <federico ximian com>
- *
- * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
- *
*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
+#include "calendar-view-factory.h"
+#include <config.h>
#include <glib/gi18n.h>
-#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 833c4bd..ff4f8ee 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 <http://www.gnu.org/licenses/>
*
- *
- * Authors:
- * Federico Mena-Quintero <federico ximian com>
- *
- * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
- *
*/
#ifndef CALENDAR_VIEW_FACTORY_H
#define CALENDAR_VIEW_FACTORY_H
-#include "gnome-cal.h"
+#include <e-util/e-util.h>
-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 be6e67f..b4ed297 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);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]