week-view: take into account GNOME time format
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=703321
This commit is contained in:
+45
-9
@@ -74,6 +74,11 @@ typedef struct
|
|||||||
* 0 for Sunday, 1 for Monday and so on */
|
* 0 for Sunday, 1 for Monday and so on */
|
||||||
gint first_weekday;
|
gint first_weekday;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* clock format from GNOME desktop settings
|
||||||
|
*/
|
||||||
|
gboolean use_24h_format;
|
||||||
|
|
||||||
/* property */
|
/* property */
|
||||||
icaltimetype *date;
|
icaltimetype *date;
|
||||||
GcalManager *manager; /* weak referenced */
|
GcalManager *manager; /* weak referenced */
|
||||||
@@ -408,16 +413,24 @@ draw_grid_window (GcalWeekView *view,
|
|||||||
for (i = 0; i < 24; i++)
|
for (i = 0; i < 24; i++)
|
||||||
{
|
{
|
||||||
gchar *hours;
|
gchar *hours;
|
||||||
hours = g_strdup_printf ("%d %s",
|
if (priv->use_24h_format)
|
||||||
i % 12,
|
{
|
||||||
i < 12 ? _("AM") : _("PM"));
|
hours = g_strdup_printf ("%02d:00", i);
|
||||||
|
pango_layout_set_text (layout, hours, -1);
|
||||||
if (i == 0)
|
}
|
||||||
pango_layout_set_text (layout, _("Midnight"), -1);
|
|
||||||
else if (i == 12)
|
|
||||||
pango_layout_set_text (layout, _("Noon"), -1);
|
|
||||||
else
|
else
|
||||||
pango_layout_set_text (layout, hours, -1);
|
{
|
||||||
|
hours = g_strdup_printf ("%02d:00 %s",
|
||||||
|
i % 12,
|
||||||
|
i < 12 ? _("AM") : _("PM"));
|
||||||
|
|
||||||
|
if (i == 0)
|
||||||
|
pango_layout_set_text (layout, _("Midnight"), -1);
|
||||||
|
else if (i == 12)
|
||||||
|
pango_layout_set_text (layout, _("Noon"), -1);
|
||||||
|
else
|
||||||
|
pango_layout_set_text (layout, hours, -1);
|
||||||
|
}
|
||||||
|
|
||||||
cairo_move_to (cr, padding.left, padding.top + (height / 24) * i);
|
cairo_move_to (cr, padding.left, padding.top + (height / 24) * i);
|
||||||
pango_cairo_show_layout (cr, layout);
|
pango_cairo_show_layout (cr, layout);
|
||||||
@@ -468,6 +481,7 @@ get_sidebar_width (GtkWidget *widget)
|
|||||||
PangoFontDescription *font_desc;
|
PangoFontDescription *font_desc;
|
||||||
gint mid_width;
|
gint mid_width;
|
||||||
gint noon_width;
|
gint noon_width;
|
||||||
|
gint hours_width;
|
||||||
gint sidebar_width;
|
gint sidebar_width;
|
||||||
|
|
||||||
context = gtk_widget_get_style_context (widget);
|
context = gtk_widget_get_style_context (widget);
|
||||||
@@ -489,7 +503,12 @@ get_sidebar_width (GtkWidget *widget)
|
|||||||
|
|
||||||
pango_layout_set_text (layout, _("Noon"), -1);
|
pango_layout_set_text (layout, _("Noon"), -1);
|
||||||
pango_layout_get_pixel_size (layout, &noon_width, NULL);
|
pango_layout_get_pixel_size (layout, &noon_width, NULL);
|
||||||
|
|
||||||
|
pango_layout_set_text (layout, _("00:00 PM"), -1);
|
||||||
|
pango_layout_get_pixel_size (layout, &hours_width, NULL);
|
||||||
|
|
||||||
sidebar_width = noon_width > mid_width ? noon_width : mid_width;
|
sidebar_width = noon_width > mid_width ? noon_width : mid_width;
|
||||||
|
sidebar_width = sidebar_width > hours_width ? 0 : hours_width;
|
||||||
sidebar_width += padding.left + padding.right;
|
sidebar_width += padding.left + padding.right;
|
||||||
|
|
||||||
pango_font_description_free (font_desc);
|
pango_font_description_free (font_desc);
|
||||||
@@ -1450,3 +1469,20 @@ gcal_week_view_set_first_weekday (GcalWeekView *view,
|
|||||||
priv = gcal_week_view_get_instance_private (view);
|
priv = gcal_week_view_get_instance_private (view);
|
||||||
priv->first_weekday = day_nr;
|
priv->first_weekday = day_nr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gcal_week_view_set_use_24h_format:
|
||||||
|
* @view:
|
||||||
|
* @use_24h:
|
||||||
|
*
|
||||||
|
* Whether the view will show time using 24h or 12h format
|
||||||
|
**/
|
||||||
|
void
|
||||||
|
gcal_week_view_set_use_24h_format (GcalWeekView *view,
|
||||||
|
gboolean use_24h)
|
||||||
|
{
|
||||||
|
GcalWeekViewPrivate *priv;
|
||||||
|
|
||||||
|
priv = gcal_week_view_get_instance_private (view);
|
||||||
|
priv->use_24h_format = use_24h;
|
||||||
|
}
|
||||||
|
|||||||
@@ -53,6 +53,9 @@ GtkWidget* gcal_week_view_new (GcalManager *manager);
|
|||||||
void gcal_week_view_set_first_weekday (GcalWeekView *view,
|
void gcal_week_view_set_first_weekday (GcalWeekView *view,
|
||||||
gint day_nr);
|
gint day_nr);
|
||||||
|
|
||||||
|
void gcal_week_view_set_use_24h_format (GcalWeekView *view,
|
||||||
|
gboolean use_24h);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __GCAL_WEEK_VIEW_H__ */
|
#endif /* __GCAL_WEEK_VIEW_H__ */
|
||||||
|
|||||||
@@ -1026,6 +1026,9 @@ gcal_window_constructed (GObject *object)
|
|||||||
GtkBuilder *builder;
|
GtkBuilder *builder;
|
||||||
GMenuModel *winmenu;
|
GMenuModel *winmenu;
|
||||||
|
|
||||||
|
GSettings *helper_settings;
|
||||||
|
gchar *clock_format;
|
||||||
|
gboolean use_24h_format;
|
||||||
gint i;
|
gint i;
|
||||||
|
|
||||||
if (G_OBJECT_CLASS (gcal_window_parent_class)->constructed != NULL)
|
if (G_OBJECT_CLASS (gcal_window_parent_class)->constructed != NULL)
|
||||||
@@ -1033,6 +1036,12 @@ gcal_window_constructed (GObject *object)
|
|||||||
|
|
||||||
priv = gcal_window_get_instance_private (GCAL_WINDOW (object));
|
priv = gcal_window_get_instance_private (GCAL_WINDOW (object));
|
||||||
|
|
||||||
|
helper_settings = g_settings_new ("org.gnome.desktop.interface");
|
||||||
|
clock_format = g_settings_get_string (helper_settings, "clock-format");
|
||||||
|
use_24h_format = (g_strcmp0 (clock_format, "24h") == 0);
|
||||||
|
g_free (clock_format);
|
||||||
|
g_object_unref (helper_settings);
|
||||||
|
|
||||||
/* ui construction */
|
/* ui construction */
|
||||||
priv->main_box = gtk_grid_new ();
|
priv->main_box = gtk_grid_new ();
|
||||||
gtk_orientable_set_orientation (GTK_ORIENTABLE (priv->main_box),
|
gtk_orientable_set_orientation (GTK_ORIENTABLE (priv->main_box),
|
||||||
@@ -1142,6 +1151,9 @@ gcal_window_constructed (GObject *object)
|
|||||||
gcal_week_view_set_first_weekday (
|
gcal_week_view_set_first_weekday (
|
||||||
GCAL_WEEK_VIEW (priv->views[GCAL_WINDOW_VIEW_WEEK]),
|
GCAL_WEEK_VIEW (priv->views[GCAL_WINDOW_VIEW_WEEK]),
|
||||||
get_first_weekday ());
|
get_first_weekday ());
|
||||||
|
gcal_week_view_set_use_24h_format (
|
||||||
|
GCAL_WEEK_VIEW (priv->views[GCAL_WINDOW_VIEW_WEEK]),
|
||||||
|
use_24h_format);
|
||||||
gtk_stack_add_titled (GTK_STACK (priv->views_stack),
|
gtk_stack_add_titled (GTK_STACK (priv->views_stack),
|
||||||
priv->views[GCAL_WINDOW_VIEW_WEEK],
|
priv->views[GCAL_WINDOW_VIEW_WEEK],
|
||||||
"week", _("Week"));
|
"week", _("Week"));
|
||||||
|
|||||||
Reference in New Issue
Block a user