view: update interface code

This commit updates GcalView interface to use
modern GLib API and, consequently, removes tons
of obsolete code.
This commit is contained in:
Georges Basile Stavracas Neto
2016-03-09 14:19:04 -03:00
parent 042a9b34ab
commit 34a6ac389a
7 changed files with 78 additions and 128 deletions
+3 -3
View File
@@ -121,8 +121,6 @@ static gboolean gcal_month_view_key_press (GtkWidget *wid
static void add_new_event_button_cb (GtkWidget *button,
gpointer user_data);
static void gcal_view_interface_init (GcalViewIface *iface);
static void gcal_month_view_set_property (GObject *object,
guint property_id,
const GValue *value,
@@ -175,6 +173,8 @@ static void gcal_month_view_clear_marks (GcalView *vie
static GList* gcal_month_view_get_children_by_uuid (GcalView *view,
const gchar *uuid);
static void gcal_view_interface_init (GcalViewInterface *iface);
G_DEFINE_TYPE_WITH_CODE (GcalMonthView, gcal_month_view,GCAL_TYPE_SUBSCRIBER_VIEW,
G_ADD_PRIVATE (GcalMonthView)
G_IMPLEMENT_INTERFACE (GCAL_TYPE_VIEW, gcal_view_interface_init));
@@ -841,7 +841,7 @@ gcal_month_view_init (GcalMonthView *self)
}
static void
gcal_view_interface_init (GcalViewIface *iface)
gcal_view_interface_init (GcalViewInterface *iface)
{
iface->get_initial_date = gcal_month_view_get_initial_date;
iface->get_final_date = gcal_month_view_get_final_date;
-23
View File
@@ -245,29 +245,6 @@ get_color_name_from_source (ESource *source, GdkRGBA *out_color)
gdk_rgba_parse (out_color, "#becedd"); /* calendar default colour */
}
gint
gcal_compare_event_widget_by_date (gconstpointer a,
gconstpointer b)
{
/* negative value if a < b; zero if a = b; positive value if a > b. */
GcalViewChild *a_child;
GcalViewChild *b_child;
GDateTime *a_date;
GDateTime *b_date;
gint comparison;
a_child = (GcalViewChild*) a;
b_child = (GcalViewChild*) b;
a_date = gcal_event_get_date_start (gcal_event_widget_get_event (GCAL_EVENT_WIDGET (a_child->widget)));
b_date = gcal_event_get_date_start (gcal_event_widget_get_event (GCAL_EVENT_WIDGET (b_child->widget)));
comparison = g_date_time_compare (a_date, b_date);
return comparison;
}
/**
* get_desc_from_component:
* @component:
-3
View File
@@ -76,9 +76,6 @@ GdkPixbuf* get_circle_pixbuf_from_color (GdkRGBA
void get_color_name_from_source (ESource *source,
GdkRGBA *out_color);
gint gcal_compare_event_widget_by_date (gconstpointer a,
gconstpointer b);
gchar* get_desc_from_component (ECalComponent *component,
const gchar *joint_char);
+52 -68
View File
@@ -3,6 +3,7 @@
* gcal-view.c
*
* Copyright (C) 2015 - Erick Pérez Castellanos
* 2016 - Georges Basile Stavracas Neto <georges.stavracas@gmail.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
@@ -23,70 +24,53 @@
#include <glib.h>
G_DEFINE_INTERFACE (GcalView, gcal_view, GTK_TYPE_WIDGET)
static void
gcal_view_base_init (gpointer g_iface)
gcal_view_default_init (GcalViewInterface *iface)
{
static gboolean initialized = FALSE;
/**
* GcalView::active-date:
*
* The active date of the view.
*/
g_object_interface_install_property (iface,
g_param_spec_boxed ("active-date",
"The active date",
"The active/selecetd date in the view",
ICAL_TIME_TYPE,
G_PARAM_READWRITE));
if (!initialized)
{
/* create interface signals && properties here. */
g_object_interface_install_property (
g_iface,
g_param_spec_boxed ("active-date",
"The active date",
"The active/selecetd date in the view",
ICAL_TIME_TYPE,
G_PARAM_READWRITE));
/**
* GcalView::create-event:
*
* Emitted when the view wants to create an event.
*/
g_signal_new ("create-event",
GCAL_TYPE_VIEW,
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GcalViewInterface, create_event),
NULL, NULL, NULL,
G_TYPE_NONE,
4,
G_TYPE_POINTER,
G_TYPE_POINTER,
G_TYPE_DOUBLE,
G_TYPE_DOUBLE);
g_signal_new ("create-event",
GCAL_TYPE_VIEW,
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GcalViewIface,
create_event),
NULL, NULL, NULL,
G_TYPE_NONE,
4,
G_TYPE_POINTER,
G_TYPE_POINTER,
G_TYPE_DOUBLE,
G_TYPE_DOUBLE);
g_signal_new ("create-event-detailed", GCAL_TYPE_VIEW, G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GcalViewIface, create_event_detailed),
NULL, NULL, NULL,
G_TYPE_NONE, 2, G_TYPE_POINTER, G_TYPE_POINTER);
initialized = TRUE;
}
}
GType
gcal_view_get_type (void)
{
static GType type = 0;
if (type == 0)
{
const GTypeInfo info =
{
sizeof (GcalViewIface),
gcal_view_base_init, /* base_init */
NULL, /* base_finalize */
NULL, /* class_init */
NULL, /* class_finalize */
NULL, /* class_data */
0,
0, /* n_preallocs */
NULL /* instance_init */
};
type = g_type_register_static (G_TYPE_INTERFACE,
"GcalView",
&info,
0);
g_type_interface_add_prerequisite (type,
G_TYPE_OBJECT);
}
return type;
/**
* GcalView::create-event-detailed:
*
* Emitted when the view wants to create an event and immediately
* edit it.
*/
g_signal_new ("create-event-detailed",
GCAL_TYPE_VIEW,
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GcalViewInterface, create_event_detailed),
NULL, NULL, NULL,
G_TYPE_NONE, 2, G_TYPE_POINTER, G_TYPE_POINTER);
}
void
@@ -121,9 +105,9 @@ icaltimetype*
gcal_view_get_initial_date (GcalView *view)
{
g_return_val_if_fail (GCAL_IS_VIEW (view), NULL);
g_return_val_if_fail (GCAL_VIEW_GET_INTERFACE (view)->get_initial_date, NULL);
g_return_val_if_fail (GCAL_VIEW_GET_IFACE (view)->get_initial_date, NULL);
return GCAL_VIEW_GET_INTERFACE (view)->get_initial_date (view);
return GCAL_VIEW_GET_IFACE (view)->get_initial_date (view);
}
/**
@@ -138,9 +122,9 @@ icaltimetype*
gcal_view_get_final_date (GcalView *view)
{
g_return_val_if_fail (GCAL_IS_VIEW (view), NULL);
g_return_val_if_fail (GCAL_VIEW_GET_INTERFACE (view)->get_final_date, NULL);
g_return_val_if_fail (GCAL_VIEW_GET_IFACE (view)->get_final_date, NULL);
return GCAL_VIEW_GET_INTERFACE (view)->get_final_date (view);
return GCAL_VIEW_GET_IFACE (view)->get_final_date (view);
}
/**
@@ -153,9 +137,9 @@ void
gcal_view_clear_marks (GcalView *view)
{
g_return_if_fail (GCAL_IS_VIEW (view));
g_return_if_fail (GCAL_VIEW_GET_INTERFACE (view)->clear_marks);
g_return_if_fail (GCAL_VIEW_GET_IFACE (view)->clear_marks);
GCAL_VIEW_GET_INTERFACE (view)->clear_marks (view);
GCAL_VIEW_GET_IFACE (view)->clear_marks (view);
}
/**
@@ -172,7 +156,7 @@ gcal_view_get_children_by_uuid (GcalView *view,
const gchar *uuid)
{
g_return_val_if_fail (GCAL_IS_VIEW (view), NULL);
g_return_val_if_fail (GCAL_VIEW_GET_INTERFACE (view)->get_children_by_uuid, NULL);
g_return_val_if_fail (GCAL_VIEW_GET_IFACE (view)->get_children_by_uuid, NULL);
return GCAL_VIEW_GET_INTERFACE (view)->get_children_by_uuid (view, uuid);
return GCAL_VIEW_GET_IFACE (view)->get_children_by_uuid (view, uuid);
}
+18 -26
View File
@@ -24,43 +24,35 @@
G_BEGIN_DECLS
#define GCAL_TYPE_VIEW (gcal_view_get_type ())
#define GCAL_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCAL_TYPE_VIEW, GcalView))
#define GCAL_IS_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCAL_TYPE_VIEW))
#define GCAL_VIEW_GET_INTERFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), GCAL_TYPE_VIEW, GcalViewIface))
#define GCAL_TYPE_VIEW (gcal_view_get_type ())
struct _GcalViewChild
G_DECLARE_INTERFACE (GcalView, gcal_view, GCAL, VIEW, GtkWidget)
struct _GcalViewInterface
{
GtkWidget *widget;
gboolean hidden;
};
typedef struct _GcalViewChild GcalViewChild;
typedef struct _GcalView GcalView;
typedef struct _GcalViewIface GcalViewIface;
struct _GcalViewIface
{
GTypeInterface parent_iface;
GTypeInterface parent;
/* signals */
void (*create_event) (GcalView *view, icaltimetype *start_span, icaltimetype *end_span, gdouble x, gdouble y);
void (*create_event_detailed) (GcalView *view, icaltimetype *start_span, icaltimetype *end_span);
void (*create_event) (GcalView *view,
icaltimetype *start_span,
icaltimetype *end_span,
gdouble x,
gdouble y);
void (*create_event_detailed) (GcalView *view,
icaltimetype *start_span,
icaltimetype *end_span);
/* Time handling related API */
icaltimetype* (*get_initial_date) (GcalView *view);
icaltimetype* (*get_final_date) (GcalView *view);
icaltimetype* (*get_initial_date) (GcalView *view);
icaltimetype* (*get_final_date) (GcalView *view);
/* Marks related API */
void (*clear_marks) (GcalView *view);
void (*clear_marks) (GcalView *view);
GList* (*get_children_by_uuid) (GcalView *view, const gchar *uuid);
GList* (*get_children_by_uuid) (GcalView *view,
const gchar *uuid);
};
GType gcal_view_get_type (void);
void gcal_view_set_date (GcalView *view,
icaltimetype *date);
+3 -3
View File
@@ -102,8 +102,6 @@ static void draw_grid_window (GcalWeekView *view
static gint get_sidebar_width (GtkWidget *widget);
static void gcal_view_interface_init (GcalViewIface *iface);
static void gcal_week_view_constructed (GObject *object);
static void gcal_week_view_finalize (GObject *object);
@@ -158,6 +156,8 @@ static icaltimetype* gcal_week_view_get_final_date (GcalView *view
static GtkWidget* gcal_week_view_get_by_uuid (GcalSubscriberView *view,
const gchar *uuid);
static void gcal_view_interface_init (GcalViewInterface *iface);
G_DEFINE_TYPE_WITH_CODE (GcalWeekView, gcal_week_view, GCAL_TYPE_SUBSCRIBER_VIEW,
G_ADD_PRIVATE (GcalWeekView)
G_IMPLEMENT_INTERFACE (GCAL_TYPE_VIEW, gcal_view_interface_init));
@@ -553,7 +553,7 @@ gcal_week_view_init (GcalWeekView *self)
}
static void
gcal_view_interface_init (GcalViewIface *iface)
gcal_view_interface_init (GcalViewInterface *iface)
{
iface->get_initial_date = gcal_week_view_get_initial_date;
iface->get_final_date = gcal_week_view_get_final_date;
+2 -2
View File
@@ -112,7 +112,7 @@ enum
static guint signals[NUM_SIGNALS] = { 0, };
static void reset_sidebar (GcalYearView *year_view);
static void gcal_view_interface_init (GcalViewIface *iface);
static void gcal_view_interface_init (GcalViewInterface *iface);
static void gcal_data_model_subscriber_interface_init (ECalDataModelSubscriberInterface *iface);
G_DEFINE_TYPE_WITH_CODE (GcalYearView, gcal_year_view, GTK_TYPE_BOX,
@@ -1474,7 +1474,7 @@ gcal_year_view_init (GcalYearView *self)
}
static void
gcal_view_interface_init (GcalViewIface *iface)
gcal_view_interface_init (GcalViewInterface *iface)
{
/* FIXME: implement what's needed */
iface->get_children_by_uuid = gcal_year_view_get_children_by_uuid;