[gnome-calendar] event-widget: show start time when event is timed



commit 5227f3fcdcbecfaf1ff08c3e011bcc6372e727d4
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Mon Feb 29 23:20:08 2016 -0300

    event-widget: show start time when event is timed
    
    We differentiate all day events from timed events by their
    ordering, but we don't give any visual clues of this
    differentiation.
    
    Fix that by adding the start time of the event when it's a
    timed event.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=753131

 src/gcal-event-widget.c |   25 ++++++++++++++++++++++++-
 1 files changed, 24 insertions(+), 1 deletions(-)
---
diff --git a/src/gcal-event-widget.c b/src/gcal-event-widget.c
index 7948b92..e1c5518 100644
--- a/src/gcal-event-widget.c
+++ b/src/gcal-event-widget.c
@@ -423,6 +423,7 @@ gcal_event_widget_draw (GtkWidget *widget,
 
   PangoLayout *layout;
   PangoFontDescription *font_desc;
+  gchar *display_text;
 
   self = GCAL_EVENT_WIDGET (widget);
   context = gtk_widget_get_style_context (widget);
@@ -436,9 +437,30 @@ gcal_event_widget_draw (GtkWidget *widget,
   gtk_render_background (context, cr, 0, 0, width, height);
   gtk_render_frame (context, cr, 0, 0, width, height);
 
+  /*
+   * The text displayed in the widget includes the time when the event
+   * is timed, or not if the event is all day.
+   */
+  if (gcal_event_get_all_day (self->event))
+    {
+      display_text = g_strdup (gcal_event_get_summary (self->event));
+    }
+  else
+    {
+      GDateTime *local_start_time;
+      gchar *start_time;
+
+      local_start_time = g_date_time_to_local (gcal_event_get_date_start (self->event));
+      start_time = g_date_time_format (local_start_time, "%R%p");
+      display_text = g_strdup_printf ("(%s) %s", start_time, gcal_event_get_summary (self->event));
+
+      g_clear_pointer (&local_start_time, g_date_time_unref);
+      g_clear_pointer (&start_time, g_free);
+    }
+
   /* FIXME for RTL alignment and icons positions */
   gtk_style_context_get (context, state, "font", &font_desc, NULL);
-  layout = gtk_widget_create_pango_layout (widget, gcal_event_get_summary (self->event));
+  layout = gtk_widget_create_pango_layout (widget, display_text);
   pango_layout_set_font_description (layout, font_desc);
   pango_layout_set_ellipsize (layout, PANGO_ELLIPSIZE_END);
   pango_layout_set_width (layout, (width - (padding.left + padding.right) ) * PANGO_SCALE);
@@ -512,6 +534,7 @@ gcal_event_widget_draw (GtkWidget *widget,
 
   pango_font_description_free (font_desc);
   g_object_unref (layout);
+  g_free (display_text);
 
   return FALSE;
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]