gcal-day-view: added scroll_to current unit

This is the initial approach, which might be improved/fixed later
This commit is contained in:
Erick Pérez Castellanos
2014-12-04 17:10:26 -05:00
parent b03c592e99
commit f2a8e8b674
+32 -8
View File
@@ -41,6 +41,7 @@ struct _GcalDayViewPrivate
/* property */
icaltimetype *date;
GtkWidget *viewport;
GtkWidget *fold_button;
/* events widgets parents */
@@ -48,6 +49,9 @@ struct _GcalDayViewPrivate
GtkWidget *day_grid;
};
static void viewport_shown (GtkWidget *widget,
gpointer user_data);
static void gcal_view_interface_init (GcalViewIface *iface);
static void gcal_day_view_constructed (GObject *object);
@@ -67,9 +71,6 @@ static void gcal_day_view_get_property (GObject *objec
static void gcal_day_view_add (GtkContainer *container,
GtkWidget *widget);
static void gcal_day_view_set_date (GcalDayView *view,
icaltimetype *date);
static icaltimetype* gcal_day_view_get_initial_date (GcalView *view);
static icaltimetype* gcal_day_view_get_final_date (GcalView *view);
@@ -90,6 +91,28 @@ G_DEFINE_TYPE_WITH_CODE (GcalDayView,
G_IMPLEMENT_INTERFACE (GCAL_TYPE_VIEW,
gcal_view_interface_init));
static void
viewport_shown (GtkWidget *widget,
gpointer user_data)
{
GcalDayViewPrivate *priv;
icaltimetype date;
gdouble value;
priv = GCAL_DAY_VIEW (user_data)->priv;
if (priv->date == NULL)
return;
date = icaltime_current_time_with_zone (priv->date->zone);
/* 0.01 is spacing to let the mark show up */
value = (((gdouble) date.hour) / 24.0) - 0.01;
g_debug ("Getting into here, with value: %f", value);
gcal_viewport_scroll_to (GCAL_VIEWPORT (priv->viewport), value);
}
static void
gcal_day_view_class_init (GcalDayViewClass *klass)
{
@@ -128,8 +151,6 @@ static void
gcal_view_interface_init (GcalViewIface *iface)
{
/* FIXME: add new GcalView API */
/* iface->remove_by_uuid = gcal_day_view_remove_by_uuid; */
/* New API */
iface->get_initial_date = gcal_day_view_get_initial_date;
iface->get_final_date = gcal_day_view_get_final_date;
@@ -182,9 +203,9 @@ gcal_day_view_constructed (GObject *object)
gtk_grid_attach (GTK_GRID (object), priv->all_day_grid, 1, 0, 1, 1);
sw = gcal_viewport_new ();
gcal_viewport_add (GCAL_VIEWPORT (sw), priv->day_grid);
gtk_grid_attach (GTK_GRID (object), sw, 0, 1, 2, 1);
priv->viewport = gcal_viewport_new ();
gcal_viewport_add (GCAL_VIEWPORT (priv->viewport), priv->day_grid);
gtk_grid_attach (GTK_GRID (object), priv->viewport, 0, 1, 2, 1);
/* binding sizes */
gtk_widget_set_size_request (
@@ -193,6 +214,9 @@ gcal_day_view_constructed (GObject *object)
-1);
gtk_widget_show_all (GTK_WIDGET (object));
/* signal handling */
g_signal_connect (object, "map", G_CALLBACK (viewport_shown), object);
}
static void