gcal-day-view: added scroll_to current unit
This is the initial approach, which might be improved/fixed later
This commit is contained in:
+32
-8
@@ -41,6 +41,7 @@ struct _GcalDayViewPrivate
|
|||||||
/* property */
|
/* property */
|
||||||
icaltimetype *date;
|
icaltimetype *date;
|
||||||
|
|
||||||
|
GtkWidget *viewport;
|
||||||
GtkWidget *fold_button;
|
GtkWidget *fold_button;
|
||||||
|
|
||||||
/* events widgets parents */
|
/* events widgets parents */
|
||||||
@@ -48,6 +49,9 @@ struct _GcalDayViewPrivate
|
|||||||
GtkWidget *day_grid;
|
GtkWidget *day_grid;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static void viewport_shown (GtkWidget *widget,
|
||||||
|
gpointer user_data);
|
||||||
|
|
||||||
static void gcal_view_interface_init (GcalViewIface *iface);
|
static void gcal_view_interface_init (GcalViewIface *iface);
|
||||||
|
|
||||||
static void gcal_day_view_constructed (GObject *object);
|
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,
|
static void gcal_day_view_add (GtkContainer *container,
|
||||||
GtkWidget *widget);
|
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_initial_date (GcalView *view);
|
||||||
|
|
||||||
static icaltimetype* gcal_day_view_get_final_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,
|
G_IMPLEMENT_INTERFACE (GCAL_TYPE_VIEW,
|
||||||
gcal_view_interface_init));
|
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
|
static void
|
||||||
gcal_day_view_class_init (GcalDayViewClass *klass)
|
gcal_day_view_class_init (GcalDayViewClass *klass)
|
||||||
{
|
{
|
||||||
@@ -128,8 +151,6 @@ static void
|
|||||||
gcal_view_interface_init (GcalViewIface *iface)
|
gcal_view_interface_init (GcalViewIface *iface)
|
||||||
{
|
{
|
||||||
/* FIXME: add new GcalView API */
|
/* FIXME: add new GcalView API */
|
||||||
/* iface->remove_by_uuid = gcal_day_view_remove_by_uuid; */
|
|
||||||
|
|
||||||
/* New API */
|
/* New API */
|
||||||
iface->get_initial_date = gcal_day_view_get_initial_date;
|
iface->get_initial_date = gcal_day_view_get_initial_date;
|
||||||
iface->get_final_date = gcal_day_view_get_final_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);
|
gtk_grid_attach (GTK_GRID (object), priv->all_day_grid, 1, 0, 1, 1);
|
||||||
|
|
||||||
sw = gcal_viewport_new ();
|
priv->viewport = gcal_viewport_new ();
|
||||||
gcal_viewport_add (GCAL_VIEWPORT (sw), priv->day_grid);
|
gcal_viewport_add (GCAL_VIEWPORT (priv->viewport), priv->day_grid);
|
||||||
gtk_grid_attach (GTK_GRID (object), sw, 0, 1, 2, 1);
|
gtk_grid_attach (GTK_GRID (object), priv->viewport, 0, 1, 2, 1);
|
||||||
|
|
||||||
/* binding sizes */
|
/* binding sizes */
|
||||||
gtk_widget_set_size_request (
|
gtk_widget_set_size_request (
|
||||||
@@ -193,6 +214,9 @@ gcal_day_view_constructed (GObject *object)
|
|||||||
-1);
|
-1);
|
||||||
|
|
||||||
gtk_widget_show_all (GTK_WIDGET (object));
|
gtk_widget_show_all (GTK_WIDGET (object));
|
||||||
|
|
||||||
|
/* signal handling */
|
||||||
|
g_signal_connect (object, "map", G_CALLBACK (viewport_shown), object);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|||||||
Reference in New Issue
Block a user