gcal-view: modified API
Implemented in views. Reworked GcalDayView implementation to allow bigger than days events.
This commit is contained in:
+13
-12
@@ -77,11 +77,14 @@ static icaltimetype* gcal_day_view_get_final_date (GcalView *view)
|
||||
|
||||
static gboolean gcal_day_view_contains_date (GcalView *view,
|
||||
icaltimetype *date);
|
||||
|
||||
static gchar* gcal_day_view_get_left_header (GcalView *view);
|
||||
|
||||
static gchar* gcal_day_view_get_right_header (GcalView *view);
|
||||
|
||||
static gboolean gcal_day_view_draw_event (GcalView *view,
|
||||
icaltimetype *start_date,
|
||||
icaltimetype *end_date);
|
||||
|
||||
static GtkWidget* gcal_day_view_get_by_uuid (GcalView *view,
|
||||
const gchar *uuid);
|
||||
|
||||
@@ -154,11 +157,11 @@ gcal_view_interface_init (GcalViewIface *iface)
|
||||
/* New API */
|
||||
iface->get_initial_date = gcal_day_view_get_initial_date;
|
||||
iface->get_final_date = gcal_day_view_get_final_date;
|
||||
iface->contains_date = gcal_day_view_contains_date;
|
||||
|
||||
iface->get_left_header = gcal_day_view_get_left_header;
|
||||
iface->get_right_header = gcal_day_view_get_right_header;
|
||||
|
||||
iface->draw_event = gcal_day_view_draw_event;
|
||||
iface->get_by_uuid = gcal_day_view_get_by_uuid;
|
||||
}
|
||||
|
||||
@@ -368,8 +371,9 @@ gcal_day_view_get_final_date (GcalView *view)
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gcal_day_view_contains_date (GcalView *view,
|
||||
icaltimetype *date)
|
||||
gcal_day_view_draw_event (GcalView *view,
|
||||
icaltimetype *start_date,
|
||||
icaltimetype *end_date)
|
||||
{
|
||||
GcalDayViewPrivate *priv;
|
||||
|
||||
@@ -386,16 +390,13 @@ gcal_day_view_contains_date (GcalView *view,
|
||||
return FALSE;
|
||||
|
||||
/* XXX: Check for date_only comparison since might drop timezone info */
|
||||
left_boundary = icaltime_compare_date_only (*first_day, *date);
|
||||
right_boundary = icaltime_compare_date_only (*date, *last_day);
|
||||
left_boundary = icaltime_compare_date_only (*end_date, *first_day);
|
||||
right_boundary = icaltime_compare_date_only (*last_day, *end_date);
|
||||
|
||||
if ((left_boundary == -1 || left_boundary == 0) &&
|
||||
(right_boundary == -1 || right_boundary == 0))
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
if (left_boundary == -1 || right_boundary == -1)
|
||||
return FALSE;
|
||||
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gchar*
|
||||
|
||||
+25
-23
@@ -117,13 +117,14 @@ static icaltimetype* gcal_month_view_get_initial_date (GcalView *vie
|
||||
|
||||
static icaltimetype* gcal_month_view_get_final_date (GcalView *view);
|
||||
|
||||
static gboolean gcal_month_view_contains_date (GcalView *view,
|
||||
icaltimetype *date);
|
||||
|
||||
static gchar* gcal_month_view_get_left_header (GcalView *view);
|
||||
|
||||
static gchar* gcal_month_view_get_right_header (GcalView *view);
|
||||
|
||||
static gboolean gcal_month_view_draw_event (GcalView *view,
|
||||
icaltimetype *start_date,
|
||||
icaltimetype *end_date);
|
||||
|
||||
static GtkWidget* gcal_month_view_get_by_uuid (GcalView *view,
|
||||
const gchar *uuid);
|
||||
|
||||
@@ -218,11 +219,11 @@ gcal_view_interface_init (GcalViewIface *iface)
|
||||
/* New API */
|
||||
iface->get_initial_date = gcal_month_view_get_initial_date;
|
||||
iface->get_final_date = gcal_month_view_get_final_date;
|
||||
iface->contains_date = gcal_month_view_contains_date;
|
||||
|
||||
iface->get_left_header = gcal_month_view_get_left_header;
|
||||
iface->get_right_header = gcal_month_view_get_right_header;
|
||||
|
||||
iface->draw_event = gcal_month_view_draw_event;
|
||||
iface->get_by_uuid = gcal_month_view_get_by_uuid;
|
||||
}
|
||||
|
||||
@@ -1099,7 +1100,7 @@ gcal_month_view_set_date (GcalMonthView *view,
|
||||
will_resize = FALSE;
|
||||
|
||||
/* if span_updated: queue_resize */
|
||||
will_resize = ! gcal_month_view_contains_date (GCAL_VIEW (view), date);
|
||||
will_resize = ! gcal_month_view_draw_event (GCAL_VIEW (view), date, NULL);
|
||||
|
||||
if (priv->date != NULL)
|
||||
g_free (priv->date);
|
||||
@@ -1125,7 +1126,7 @@ gcal_month_view_set_date (GcalMonthView *view,
|
||||
child = (GcalViewChild*) l->data;
|
||||
child_date =
|
||||
gcal_event_widget_get_date (GCAL_EVENT_WIDGET (child->widget));
|
||||
if (! gcal_month_view_contains_date (GCAL_VIEW (view), child_date))
|
||||
if (! gcal_month_view_draw_event (GCAL_VIEW (view), child_date, NULL))
|
||||
to_remove = g_list_append (to_remove, child->widget);
|
||||
}
|
||||
}
|
||||
@@ -1212,22 +1213,6 @@ gcal_month_view_get_final_date (GcalView *view)
|
||||
return new_date;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gcal_month_view_contains_date (GcalView *view,
|
||||
icaltimetype *date)
|
||||
{
|
||||
GcalMonthViewPrivate *priv;
|
||||
|
||||
g_return_val_if_fail (GCAL_IS_MONTH_VIEW (view), FALSE);
|
||||
priv = GCAL_MONTH_VIEW (view)->priv;
|
||||
|
||||
if (priv->date == NULL)
|
||||
return FALSE;
|
||||
|
||||
return (priv->date->month == date->month &&
|
||||
priv->date->year == date->year);
|
||||
}
|
||||
|
||||
static gchar*
|
||||
gcal_month_view_get_left_header (GcalView *view)
|
||||
{
|
||||
@@ -1255,6 +1240,23 @@ gcal_month_view_get_right_header (GcalView *view)
|
||||
return g_strdup_printf ("%d", priv->date->year);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gcal_month_view_draw_event (GcalView *view,
|
||||
icaltimetype *start_date,
|
||||
icaltimetype *end_date)
|
||||
{
|
||||
GcalMonthViewPrivate *priv;
|
||||
|
||||
g_return_val_if_fail (GCAL_IS_MONTH_VIEW (view), FALSE);
|
||||
priv = GCAL_MONTH_VIEW (view)->priv;
|
||||
|
||||
if (priv->date == NULL)
|
||||
return FALSE;
|
||||
|
||||
return (priv->date->month == start_date->month &&
|
||||
priv->date->year == start_date->year);
|
||||
}
|
||||
|
||||
static GtkWidget*
|
||||
gcal_month_view_get_by_uuid (GcalView *view,
|
||||
const gchar *uuid)
|
||||
@@ -1309,7 +1311,7 @@ gcal_month_view_reposition_child (GcalView *view,
|
||||
date =
|
||||
gcal_event_widget_get_date (GCAL_EVENT_WIDGET (child->widget));
|
||||
|
||||
if (gcal_month_view_contains_date (view, date))
|
||||
if (gcal_month_view_draw_event (view, date, NULL))
|
||||
{
|
||||
if (date->day - 1 == i)
|
||||
{
|
||||
|
||||
+23
-19
@@ -178,25 +178,6 @@ gcal_view_get_final_date (GcalView *view)
|
||||
return GCAL_VIEW_GET_INTERFACE (view)->get_final_date (view);
|
||||
}
|
||||
|
||||
/**
|
||||
* gcal_view_contains_date:
|
||||
* @view: a #GcalView
|
||||
* @date: an #icaltimetype object
|
||||
*
|
||||
* Whether @date is contained in the time-range represented by @view
|
||||
*
|
||||
* Returns: %TRUE if it is, %FALSE otherwise
|
||||
**/
|
||||
gboolean
|
||||
gcal_view_contains_date (GcalView *view,
|
||||
icaltimetype *date)
|
||||
{
|
||||
g_return_val_if_fail (GCAL_IS_VIEW (view), FALSE);
|
||||
g_return_if_fail (GCAL_VIEW_GET_INTERFACE (view)->contains_date);
|
||||
|
||||
return GCAL_VIEW_GET_INTERFACE (view)->contains_date (view, date);
|
||||
}
|
||||
|
||||
/**
|
||||
* gcal_view_mark_current_unit:
|
||||
* @view: a #GcalView
|
||||
@@ -263,6 +244,29 @@ gcal_view_get_right_header (GcalView *view)
|
||||
return GCAL_VIEW_GET_INTERFACE (view)->get_right_header (view);
|
||||
}
|
||||
|
||||
/**
|
||||
* gcal_view_draw_event:
|
||||
* @view: a #GcalView
|
||||
* @start_date: an #icaltimetype object. The starting date of the event
|
||||
* @end_date: an #icaltimetype object. The edn-date of the event
|
||||
*
|
||||
* Whether the event within these boundaries will be drawn by the #GcalView implementation
|
||||
*
|
||||
* Returns: %TRUE if it is, %FALSE otherwise
|
||||
**/
|
||||
gboolean
|
||||
gcal_view_draw_event (GcalView *view,
|
||||
icaltimetype *start_date,
|
||||
icaltimetype *end_date)
|
||||
{
|
||||
g_return_val_if_fail (GCAL_IS_VIEW (view), FALSE);
|
||||
g_return_if_fail (GCAL_VIEW_GET_INTERFACE (view)->draw_event);
|
||||
|
||||
return GCAL_VIEW_GET_INTERFACE (view)->draw_event (view,
|
||||
start_date,
|
||||
end_date);
|
||||
}
|
||||
|
||||
/**
|
||||
* gcal_view_get_by_uuid:
|
||||
* @view: a #GcalView
|
||||
|
||||
+5
-4
@@ -63,7 +63,6 @@ struct _GcalViewIface
|
||||
/* Time handling related API */
|
||||
icaltimetype* (*get_initial_date) (GcalView *view);
|
||||
icaltimetype* (*get_final_date) (GcalView *view);
|
||||
gboolean (*contains_date) (GcalView *view, icaltimetype *date);
|
||||
|
||||
/* Marks related API */
|
||||
void (*mark_current_unit) (GcalView *view);
|
||||
@@ -74,6 +73,7 @@ struct _GcalViewIface
|
||||
gchar* (*get_right_header) (GcalView *view);
|
||||
|
||||
/* Container functions related API */
|
||||
gboolean (*draw_event) (GcalView *view, icaltimetype *start_date, icaltimetype *end_date);
|
||||
GtkWidget* (*get_by_uuid) (GcalView *view, const gchar *uuid);
|
||||
};
|
||||
|
||||
@@ -99,9 +99,6 @@ icaltimetype* gcal_view_get_initial_date (GcalView *view);
|
||||
|
||||
icaltimetype* gcal_view_get_final_date (GcalView *view);
|
||||
|
||||
gboolean gcal_view_contains_date (GcalView *view,
|
||||
icaltimetype *date);
|
||||
|
||||
void gcal_view_mark_current_unit (GcalView *view);
|
||||
|
||||
void gcal_view_clear_mark (GcalView *view);
|
||||
@@ -110,6 +107,10 @@ gchar* gcal_view_get_left_header (GcalView *view);
|
||||
|
||||
gchar* gcal_view_get_right_header (GcalView *view);
|
||||
|
||||
gboolean gcal_view_draw_event (GcalView *view,
|
||||
icaltimetype *start_date,
|
||||
icaltimetype *end_date);
|
||||
|
||||
GtkWidget* gcal_view_get_by_uuid (GcalView *view,
|
||||
const gchar *uuid);
|
||||
|
||||
|
||||
+13
-9
@@ -149,8 +149,9 @@ static icaltimetype* gcal_week_view_get_initial_date (GcalView *view
|
||||
|
||||
static icaltimetype* gcal_week_view_get_final_date (GcalView *view);
|
||||
|
||||
static gboolean gcal_week_view_contains_date (GcalView *view,
|
||||
icaltimetype *date);
|
||||
static gboolean gcal_week_view_draw_event (GcalView *view,
|
||||
icaltimetype *start_date,
|
||||
icaltimetype *end_date);
|
||||
|
||||
static GtkWidget* gcal_week_view_get_by_uuid (GcalView *view,
|
||||
const gchar *uuid);
|
||||
@@ -233,7 +234,8 @@ gcal_view_interface_init (GcalViewIface *iface)
|
||||
{
|
||||
iface->get_initial_date = gcal_week_view_get_initial_date;
|
||||
iface->get_final_date = gcal_week_view_get_final_date;
|
||||
iface->contains_date = gcal_week_view_contains_date;
|
||||
|
||||
iface->draw_event = gcal_week_view_draw_event;
|
||||
|
||||
iface->get_by_uuid = gcal_week_view_get_by_uuid;
|
||||
}
|
||||
@@ -975,7 +977,7 @@ gcal_week_view_set_date (GcalWeekView *view,
|
||||
will_resize = FALSE;
|
||||
|
||||
/* if span_updated: queue_resize */
|
||||
will_resize = ! gcal_week_view_contains_date (GCAL_VIEW (view), date);
|
||||
will_resize = ! gcal_week_view_draw_event (GCAL_VIEW (view), date, NULL);
|
||||
|
||||
if (priv->date != NULL)
|
||||
g_free (priv->date);
|
||||
@@ -995,7 +997,7 @@ gcal_week_view_set_date (GcalWeekView *view,
|
||||
|
||||
child = (GcalWeekViewChild*) l->data;
|
||||
child_date = gcal_event_widget_get_date (GCAL_EVENT_WIDGET (child->widget));
|
||||
if (! gcal_week_view_contains_date (GCAL_VIEW (view), child_date))
|
||||
if (! gcal_week_view_draw_event (GCAL_VIEW (view), child_date, NULL))
|
||||
to_remove = g_list_append (to_remove, child->widget);
|
||||
}
|
||||
}
|
||||
@@ -1498,8 +1500,9 @@ gcal_week_view_get_final_date (GcalView *view)
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gcal_week_view_contains_date (GcalView *view,
|
||||
icaltimetype *date)
|
||||
gcal_week_view_draw_event (GcalView *view,
|
||||
icaltimetype *start_date,
|
||||
icaltimetype *end_date)
|
||||
{
|
||||
GcalWeekViewPrivate *priv;
|
||||
|
||||
@@ -1508,8 +1511,9 @@ gcal_week_view_contains_date (GcalView *view,
|
||||
|
||||
if (priv->date == NULL)
|
||||
return FALSE;
|
||||
if (icaltime_week_number (*(priv->date)) == icaltime_week_number (*date)
|
||||
&& priv->date->year == date->year)
|
||||
|
||||
if (icaltime_week_number (*(priv->date)) == icaltime_week_number (*start_date)
|
||||
&& priv->date->year == start_date->year)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
+11
-7
@@ -688,7 +688,8 @@ gcal_window_events_added (GcalManager *manager,
|
||||
|
||||
GcalView *view;
|
||||
GtkWidget *event;
|
||||
icaltimetype *starting_date;
|
||||
icaltimetype *start_date;
|
||||
icaltimetype *end_date;
|
||||
|
||||
priv = GCAL_WINDOW (user_data)->priv;
|
||||
view = GCAL_VIEW (priv->views[priv->active_view]);
|
||||
@@ -698,16 +699,19 @@ gcal_window_events_added (GcalManager *manager,
|
||||
tokens = g_strsplit ((gchar*) l->data, ":", -1);
|
||||
source_uid = tokens[0];
|
||||
event_uid = tokens[1];
|
||||
starting_date = gcal_manager_get_event_start_date (manager,
|
||||
source_uid,
|
||||
event_uid);
|
||||
start_date = gcal_manager_get_event_start_date (manager,
|
||||
source_uid,
|
||||
event_uid);
|
||||
end_date = gcal_manager_get_event_end_date (manager,
|
||||
source_uid,
|
||||
event_uid);
|
||||
|
||||
/* FIXME: erase me */
|
||||
/* g_debug ("add: %s with date %s", */
|
||||
/* (gchar*) l->data, */
|
||||
/* icaltime_as_ical_string (*starting_date)); */
|
||||
/* icaltime_as_ical_string (*start_date)); */
|
||||
|
||||
if (gcal_view_contains_date (view, starting_date) &&
|
||||
if (gcal_view_draw_event (view, start_date, end_date) &&
|
||||
gcal_view_get_by_uuid (view, (gchar*)l->data) == NULL)
|
||||
{
|
||||
event = gcal_event_widget_new ((gchar*) l->data);
|
||||
@@ -726,7 +730,7 @@ gcal_window_events_added (GcalManager *manager,
|
||||
user_data);
|
||||
}
|
||||
|
||||
g_free (starting_date);
|
||||
g_free (start_date);
|
||||
g_strfreev (tokens);
|
||||
}
|
||||
}
|
||||
|
||||
+15
-13
@@ -115,8 +115,13 @@ static icaltimetype* gcal_year_view_get_initial_date (GcalView
|
||||
|
||||
static icaltimetype* gcal_year_view_get_final_date (GcalView *view);
|
||||
|
||||
static gboolean gcal_year_view_contains_date (GcalView *view,
|
||||
icaltimetype *date);
|
||||
static gchar* gcal_year_view_get_left_header (GcalView *view);
|
||||
|
||||
static gchar* gcal_year_view_get_right_header (GcalView *view);
|
||||
|
||||
static gboolean gcal_year_view_draw_event (GcalView *view,
|
||||
icaltimetype *start_date,
|
||||
icaltimetype *end_date);
|
||||
|
||||
static GtkWidget* gcal_year_view_get_by_uuid (GcalView *view,
|
||||
const gchar *uuid);
|
||||
@@ -129,10 +134,6 @@ static void gcal_year_view_clear_selection (GcalView
|
||||
|
||||
static void gcal_year_view_create_event_on_current_unit (GcalView *view);
|
||||
|
||||
static gchar* gcal_year_view_get_left_header (GcalView *view);
|
||||
|
||||
static gchar* gcal_year_view_get_right_header (GcalView *view);
|
||||
|
||||
G_DEFINE_TYPE_WITH_CODE (GcalYearView,
|
||||
gcal_year_view,
|
||||
GTK_TYPE_CONTAINER,
|
||||
@@ -213,11 +214,11 @@ gcal_view_interface_init (GcalViewIface *iface)
|
||||
/* New API */
|
||||
iface->get_initial_date = gcal_year_view_get_initial_date;
|
||||
iface->get_final_date = gcal_year_view_get_final_date;
|
||||
iface->contains_date = gcal_year_view_contains_date;
|
||||
|
||||
iface->get_left_header = gcal_year_view_get_left_header;
|
||||
iface->get_right_header = gcal_year_view_get_right_header;
|
||||
|
||||
iface->draw_event = gcal_year_view_draw_event;
|
||||
iface->get_by_uuid = gcal_year_view_get_by_uuid;
|
||||
}
|
||||
|
||||
@@ -758,7 +759,7 @@ gcal_year_view_set_date (GcalYearView *view,
|
||||
will_resize = FALSE;
|
||||
|
||||
/* if span_updated: queue_resize */
|
||||
will_resize = ! gcal_year_view_contains_date (GCAL_VIEW (view), date);
|
||||
will_resize = ! gcal_year_view_draw_event (GCAL_VIEW (view), date, NULL);
|
||||
|
||||
if (priv->date != NULL)
|
||||
g_free (priv->date);
|
||||
@@ -779,7 +780,7 @@ gcal_year_view_set_date (GcalYearView *view,
|
||||
child = (GcalViewChild*) l->data;
|
||||
child_date =
|
||||
gcal_event_widget_get_date (GCAL_EVENT_WIDGET (child->widget));
|
||||
if (! gcal_year_view_contains_date (GCAL_VIEW (view), child_date))
|
||||
if (! gcal_year_view_draw_event (GCAL_VIEW (view), child_date, NULL))
|
||||
to_remove = g_list_append (to_remove, child->widget);
|
||||
}
|
||||
}
|
||||
@@ -1023,8 +1024,9 @@ gcal_year_view_get_final_date (GcalView *view)
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gcal_year_view_contains_date (GcalView *view,
|
||||
icaltimetype *date)
|
||||
gcal_year_view_draw_event (GcalView *view,
|
||||
icaltimetype *start_date,
|
||||
icaltimetype *end_date)
|
||||
{
|
||||
GcalYearViewPrivate *priv;
|
||||
|
||||
@@ -1034,7 +1036,7 @@ gcal_year_view_contains_date (GcalView *view,
|
||||
if (priv->date == NULL)
|
||||
return FALSE;
|
||||
|
||||
return priv->date->year == date->year;
|
||||
return priv->date->year == start_date->year;
|
||||
}
|
||||
|
||||
static GtkWidget*
|
||||
@@ -1091,7 +1093,7 @@ gcal_year_view_reposition_child (GcalView *view,
|
||||
date =
|
||||
gcal_event_widget_get_date (GCAL_EVENT_WIDGET (child->widget));
|
||||
|
||||
if (gcal_year_view_contains_date (view, date))
|
||||
if (gcal_year_view_draw_event (view, date, NULL))
|
||||
{
|
||||
if (date->month - 1 == i)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user