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:
@@ -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;
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
@@ -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
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user