[gnome-calendar] project: Make time format a first-class citizen
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-calendar] project: Make time format a first-class citizen
- Date: Sun, 28 Jan 2018 12:06:41 +0000 (UTC)
commit b936759e5c745acfd9221d203b9560c1ac6c0d6a
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Sun Jan 28 02:30:55 2018 -0200
project: Make time format a first-class citizen
The current code deals with 12/24h clock formats almost like
a workaround of the issue. This commit adds proper support to
different clock formats.
src/gcal-application.c | 55 +++++++++++++++++++++++++++++++++----
src/gcal-edit-dialog.c | 35 ++++++++++++++++++++----
src/gcal-edit-dialog.h | 3 +-
src/gcal-enums.h | 12 ++++++++
src/gcal-search-popover.c | 65 ++++++++++++++++++++++++--------------------
src/gcal-search-popover.h | 3 --
src/gcal-time-selector.c | 16 +++++------
src/gcal-time-selector.h | 4 ++-
src/gcal-window.c | 62 +++++++++++++++++++++++-------------------
src/gcal-window.h | 1 +
src/views/gcal-month-view.c | 18 ------------
src/views/gcal-week-grid.c | 10 -------
src/views/gcal-week-grid.h | 3 --
src/views/gcal-week-header.c | 11 --------
src/views/gcal-week-header.h | 3 --
src/views/gcal-week-view.c | 44 ++++++++++++++++--------------
src/views/gcal-week-view.h | 3 --
src/views/gcal-year-view.c | 12 --------
src/views/gcal-year-view.h | 3 --
19 files changed, 199 insertions(+), 164 deletions(-)
---
diff --git a/src/gcal-application.c b/src/gcal-application.c
index eef7b4aa..bd2b1dd3 100644
--- a/src/gcal-application.c
+++ b/src/gcal-application.c
@@ -24,6 +24,7 @@
#include "css-code.h"
#include "gcal-application.h"
#include "gcal-debug.h"
+#include "gcal-enums.h"
#include "gcal-log.h"
#include "gcal-shell-search-provider.h"
#include "gcal-weather-service.h"
@@ -48,6 +49,9 @@ struct _GcalApplication
gchar *uuid;
icaltimetype *initial_date;
+ GSettings *desktop_settings;
+ GcalTimeFormat time_format;
+
GcalWeatherService *weather_service;
GcalShellSearchProvider *search_provider;
@@ -118,6 +122,7 @@ enum
{
PROP_0,
PROP_MANAGER,
+ PROP_TIME_FORMAT,
PROP_WEATHER_SERVICE,
N_PROPS
};
@@ -190,6 +195,25 @@ load_css_provider (GcalApplication *self)
gtk_css_provider_load_from_resource (self->provider, "/org/gnome/calendar/theme/Adwaita.css");
}
+static void
+load_time_format (GcalApplication *self)
+{
+ g_autofree gchar *clock_format = NULL;
+ g_autofree gchar *enum_format = NULL;
+
+ clock_format = g_settings_get_string (self->desktop_settings, "clock-format");
+
+ if (g_strcmp0 (clock_format, "12h") == 0)
+ self->time_format = GCAL_TIME_FORMAT_12H;
+ else
+ self->time_format = GCAL_TIME_FORMAT_24H;
+
+ enum_format = g_enum_to_string (GCAL_TYPE_TIME_FORMAT, self->time_format);
+ g_debug ("Setting time format to %s", enum_format);
+
+ g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_TIME_FORMAT]);
+}
+
/*
* GObject overrides
@@ -202,15 +226,14 @@ gcal_application_finalize (GObject *object)
GCAL_ENTRY;
- g_clear_pointer (&self->uuid, g_free);
g_clear_pointer (&self->initial_date, g_free);
-
- g_clear_object (&(self->provider));
+ g_clear_pointer (&self->uuid, g_free);
g_clear_object (&self->colors_provider);
-
+ g_clear_object (&self->desktop_settings);
g_clear_object (&self->manager);
- g_clear_object (&self->weather_service);
+ g_clear_object (&self->provider);
g_clear_object (&self->search_provider);
+ g_clear_object (&self->weather_service);
G_OBJECT_CLASS (gcal_application_parent_class)->finalize (object);
@@ -231,6 +254,10 @@ gcal_application_get_property (GObject *object,
g_value_set_object (value, self->manager);
break;
+ case PROP_TIME_FORMAT:
+ g_value_set_enum (value, self->time_format);
+ break;
+
case PROP_WEATHER_SERVICE:
g_value_set_object (value, self->weather_service);
break;
@@ -281,8 +308,11 @@ gcal_application_activate (GApplication *application)
"manager", self->manager,
"active-date", self->initial_date,
"weather-service", self->weather_service,
+ "time-format", self->time_format,
NULL);
+ g_object_bind_property (self, "time-format", self->window, "time-format", G_BINDING_DEFAULT);
+
g_signal_connect (self->window, "destroy", G_CALLBACK (gtk_widget_destroyed), &self->window);
gtk_widget_show (self->window);
}
@@ -455,6 +485,13 @@ gcal_application_class_init (GcalApplicationClass *klass)
GCAL_TYPE_MANAGER,
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+ properties[PROP_TIME_FORMAT] = g_param_spec_enum ("time-format",
+ "The time format of the computer",
+ "The time format of the computer",
+ GCAL_TYPE_TIME_FORMAT,
+ GCAL_TIME_FORMAT_24H,
+ G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+
properties[PROP_WEATHER_SERVICE] = g_param_spec_object ("weather-service",
"The weather service object",
"The weather service object",
@@ -477,6 +514,14 @@ gcal_application_init (GcalApplication *self)
self->weather_service = gcal_weather_service_new ();
self->search_provider = gcal_shell_search_provider_new (self->manager);
+
+ /* Time format */
+ self->desktop_settings = g_settings_new ("org.gnome.desktop.interface");
+ g_signal_connect_swapped (self->desktop_settings,
+ "changed::clock-format",
+ G_CALLBACK (load_time_format),
+ self);
+ load_time_format (self);
}
static void
diff --git a/src/gcal-edit-dialog.c b/src/gcal-edit-dialog.c
index 11dc58bd..c20dd1e1 100644
--- a/src/gcal-edit-dialog.c
+++ b/src/gcal-edit-dialog.c
@@ -107,7 +107,7 @@ struct _GcalEditDialog
ESource *selected_source;
/* flags */
- gboolean format_24h;
+ GcalTimeFormat time_format;
gboolean event_is_new;
gboolean recurrence_changed;
gboolean setting_event;
@@ -127,6 +127,7 @@ enum
PROP_0,
PROP_EVENT,
PROP_MANAGER,
+ PROP_TIME_FORMAT,
PROP_WRITABLE,
LAST_PROP
};
@@ -718,6 +719,10 @@ gcal_edit_dialog_get_property (GObject *object,
g_value_set_object (value, self->manager);
break;
+ case PROP_TIME_FORMAT:
+ g_value_set_enum (value, self->time_format);
+ break;
+
case PROP_WRITABLE:
g_value_set_boolean (value, self->writable);
break;
@@ -745,6 +750,10 @@ gcal_edit_dialog_set_property (GObject *object,
gcal_edit_dialog_set_manager (self, g_value_get_object (value));
break;
+ case PROP_TIME_FORMAT:
+ gcal_edit_dialog_set_time_format (self, g_value_get_enum (value));
+ break;
+
case PROP_WRITABLE:
gcal_edit_dialog_set_writable (self, g_value_get_boolean (value));
break;
@@ -794,6 +803,20 @@ gcal_edit_dialog_class_init (GcalEditDialogClass *klass)
GCAL_TYPE_MANAGER,
G_PARAM_READWRITE));
+ /**
+ * GcalEditDialog::time-format:
+ *
+ * The time format.
+ */
+ g_object_class_install_property (object_class,
+ PROP_TIME_FORMAT,
+ g_param_spec_enum ("time-format",
+ "Manager of the dialog",
+ "The manager of the dialog",
+ GCAL_TYPE_TIME_FORMAT,
+ GCAL_TIME_FORMAT_24H,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
/**
* GcalEditDialog::writable:
*
@@ -1209,14 +1232,16 @@ gcal_edit_dialog_new (void)
*/
void
gcal_edit_dialog_set_time_format (GcalEditDialog *dialog,
- gboolean use_24h_format)
+ GcalTimeFormat time_format)
{
g_return_if_fail (GCAL_IS_EDIT_DIALOG (dialog));
- dialog->format_24h = use_24h_format;
+ dialog->time_format = time_format;
+
+ gcal_time_selector_set_time_format (GCAL_TIME_SELECTOR (dialog->start_time_selector), dialog->time_format);
+ gcal_time_selector_set_time_format (GCAL_TIME_SELECTOR (dialog->end_time_selector), dialog->time_format);
- gcal_time_selector_set_time_format (GCAL_TIME_SELECTOR (dialog->start_time_selector), dialog->format_24h);
- gcal_time_selector_set_time_format (GCAL_TIME_SELECTOR (dialog->end_time_selector), dialog->format_24h);
+ g_object_notify (G_OBJECT (dialog), "time-format");
}
/**
diff --git a/src/gcal-edit-dialog.h b/src/gcal-edit-dialog.h
index 5704e1a5..73222d21 100644
--- a/src/gcal-edit-dialog.h
+++ b/src/gcal-edit-dialog.h
@@ -19,6 +19,7 @@
#ifndef __GCAL_EDIT_DIALOG_H__
#define __GCAL_EDIT_DIALOG_H__
+#include "gcal-enums.h"
#include "gcal-event.h"
#include "gcal-manager.h"
@@ -48,7 +49,7 @@ void gcal_edit_dialog_set_manager (GcalEditDialog *d
GcalManager *manager);
void gcal_edit_dialog_set_time_format (GcalEditDialog *dialog,
- gboolean use_24h_format);
+ GcalTimeFormat time_format);
GDateTime* gcal_edit_dialog_get_date_end (GcalEditDialog *dialog);
diff --git a/src/gcal-enums.h b/src/gcal-enums.h
index c1bcf160..36ad059d 100644
--- a/src/gcal-enums.h
+++ b/src/gcal-enums.h
@@ -18,6 +18,18 @@
#pragma once
+#include "gcal-enum-types.h"
+
+/**
+ * GcalTimeFormat:
+ * @GCAL_TIME_FORMAT_12H: time is displayed in 12h format
+ * @GCAL_TIME_FORMAT_24H: time is displayed in 24h format
+ */
+typedef enum
+{
+ GCAL_TIME_FORMAT_12H,
+ GCAL_TIME_FORMAT_24H,
+} GcalTimeFormat;
/**
* GcalWindowViewType:
diff --git a/src/gcal-search-popover.c b/src/gcal-search-popover.c
index a341306b..4eaa6e4c 100644
--- a/src/gcal-search-popover.c
+++ b/src/gcal-search-popover.c
@@ -20,6 +20,7 @@
#define G_LOG_DOMAIN "GcalSearchPopover"
#include "gcal-debug.h"
+#include "gcal-enums.h"
#include "gcal-event.h"
#include "gcal-search-popover.h"
#include "gcal-utils.h"
@@ -60,14 +61,15 @@ struct _GcalSearchPopover
GcalManager *manager; /* weak reference */
/* flags */
- gboolean format_24h;
+ GcalTimeFormat time_format;
gboolean subscribed;
};
enum
{
PROP_0,
- PROP_DATE, /* active-date inherited property */
+ PROP_DATE,
+ PROP_TIME_FORMAT,
};
enum
@@ -291,7 +293,8 @@ make_row_for_event (GcalSearchPopover *self,
/* show 'all day' instead of 00:00 */
if (!gcal_event_get_all_day (event))
{
- text = g_date_time_format (local_datetime, self->format_24h ? "%R" : "%r");
+ text = g_date_time_format (local_datetime,
+ self->time_format == GCAL_TIME_FORMAT_24H ? "%R" : "%r");
time_label = gtk_label_new (text);
g_free (text);
}
@@ -579,11 +582,14 @@ gcal_search_popover_set_property (GObject *object,
switch (property_id)
{
case PROP_DATE:
- {
- g_clear_pointer (&self->date, g_free);
- self->date = g_value_dup_boxed (value);
- break;
- }
+ g_clear_pointer (&self->date, g_free);
+ self->date = g_value_dup_boxed (value);
+ break;
+
+ case PROP_TIME_FORMAT:
+ self->time_format = g_value_get_enum (value);
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
@@ -603,6 +609,11 @@ gcal_search_popover_get_property (GObject *object,
case PROP_DATE:
g_value_set_boxed (value, self->date);
break;
+
+ case PROP_TIME_FORMAT:
+ g_value_set_enum (value, self->time_format);
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
@@ -655,11 +666,22 @@ gcal_search_popover_class_init (GcalSearchPopoverClass *klass)
* Actually it is not used.
*
*/
- g_object_class_install_property (object_class, PROP_DATE,
- g_param_spec_boxed ("active-date",
- "The active date",
- "The active/selected date in the view",
- ICAL_TIME_TYPE, G_PARAM_READWRITE));
+ g_object_class_install_property (object_class,
+ PROP_DATE,
+ g_param_spec_boxed ("active-date",
+ "The active date",
+ "The active/selected date in the view",
+ ICAL_TIME_TYPE,
+ G_PARAM_READWRITE));
+
+ g_object_class_install_property (object_class,
+ PROP_TIME_FORMAT,
+ g_param_spec_enum ("time-format",
+ "The time format",
+ "The time format",
+ GCAL_TYPE_TIME_FORMAT,
+ GCAL_TIME_FORMAT_24H,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
/* bind things for/from the template class */
gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (klass),
"/org/gnome/calendar/search-popover.ui");
@@ -707,23 +729,6 @@ gcal_search_popover_connect (GcalSearchPopover *search_popover,
search_popover->manager = manager;
}
-/**
- * gcal_search_popover_set_time_format:
- * @view: a #GcalSearchPopover instance.
- * @format_24h: whether is 24h or not.
- *
- * Setup time format, instead of accessing DConf
- * again.
- *
- */
-void
-gcal_search_popover_set_time_format (GcalSearchPopover *self,
- gboolean format_24h)
-{
- self->format_24h = format_24h;
-}
-
-
/**
* gcal_search_popover_set_search:
* @view: a #GcalSearchPopover instance
diff --git a/src/gcal-search-popover.h b/src/gcal-search-popover.h
index cb420fb9..476b5c69 100644
--- a/src/gcal-search-popover.h
+++ b/src/gcal-search-popover.h
@@ -30,9 +30,6 @@ G_BEGIN_DECLS
G_DECLARE_FINAL_TYPE (GcalSearchPopover, gcal_search_popover, GCAL, SEARCH_POPOVER, GtkPopover)
-void gcal_search_popover_set_time_format (GcalSearchPopover *self,
- gboolean format_24h);
-
void gcal_search_popover_search (GcalSearchPopover *self,
const gchar *field,
const gchar *query);
diff --git a/src/gcal-time-selector.c b/src/gcal-time-selector.c
index adb3c198..c93c5139 100644
--- a/src/gcal-time-selector.c
+++ b/src/gcal-time-selector.c
@@ -38,7 +38,7 @@ struct _GcalTimeSelector
GDateTime *time;
- gboolean format_24h;
+ GcalTimeFormat time_format;
};
enum
@@ -63,7 +63,7 @@ update_label (GcalTimeSelector *selector)
{
gchar *new_label;
- if (selector->format_24h)
+ if (selector->time_format == GCAL_TIME_FORMAT_24H)
{
new_label = g_date_time_format (selector->time, "%H:%M");
}
@@ -102,7 +102,7 @@ update_time (GcalTimeSelector *selector)
hour = (gint) gtk_adjustment_get_value (selector->hour_adjustment);
minute = (gint) gtk_adjustment_get_value (selector->minute_adjustment);
- if (!selector->format_24h)
+ if (selector->time_format == GCAL_TIME_FORMAT_12H)
{
hour = hour % 12;
@@ -188,14 +188,14 @@ gcal_time_selector_set_property (GObject *object,
void
gcal_time_selector_set_time_format (GcalTimeSelector *selector,
- gboolean format_24h)
+ GcalTimeFormat time_format)
{
g_return_if_fail (GCAL_IS_TIME_SELECTOR (selector));
- selector->format_24h = format_24h;
- gtk_widget_set_visible (selector->period_combo, !format_24h);
+ selector->time_format = time_format;
+ gtk_widget_set_visible (selector->period_combo, time_format == GCAL_TIME_FORMAT_12H);
- if (format_24h)
+ if (time_format == GCAL_TIME_FORMAT_24H)
{
gtk_adjustment_set_lower (gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (selector->hour_spin)), 0.0);
gtk_adjustment_set_upper (gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (selector->hour_spin)),
23.0);
@@ -312,7 +312,7 @@ gcal_time_selector_set_time (GcalTimeSelector *selector,
hour = g_date_time_get_hour (time);
minute = g_date_time_get_minute (time);
- if (!selector->format_24h)
+ if (selector->time_format == GCAL_TIME_FORMAT_12H)
{
g_signal_handlers_block_by_func (selector->period_combo, update_time, selector);
diff --git a/src/gcal-time-selector.h b/src/gcal-time-selector.h
index fb0fd1bd..b276dcc6 100644
--- a/src/gcal-time-selector.h
+++ b/src/gcal-time-selector.h
@@ -19,6 +19,8 @@
#ifndef __GCAL_TIME_SELECTOR_H__
#define __GCAL_TIME_SELECTOR_H__
+#include "gcal-enums.h"
+
#include <gtk/gtk.h>
G_BEGIN_DECLS
@@ -30,7 +32,7 @@ G_DECLARE_FINAL_TYPE (GcalTimeSelector, gcal_time_selector, GCAL, TIME_SELECTOR,
GtkWidget* gcal_time_selector_new (void);
void gcal_time_selector_set_time_format (GcalTimeSelector *selector,
- gboolean format_24h);
+ GcalTimeFormat time_format);
GDateTime* gcal_time_selector_get_time (GcalTimeSelector *selector);
diff --git a/src/gcal-window.c b/src/gcal-window.c
index 93e70b89..7a081536 100644
--- a/src/gcal-window.c
+++ b/src/gcal-window.c
@@ -21,7 +21,6 @@
#include "gcal-debug.h"
#include "gcal-edit-dialog.h"
-#include "gcal-enums.h"
#include "gcal-event-widget.h"
#include "gcal-manager.h"
#include "gcal-month-view.h"
@@ -162,6 +161,8 @@ struct _GcalWindow
gint refresh_timeout_id;
gint open_edit_dialog_timeout_id;
+ GcalTimeFormat time_format;
+
/* weather management */
GcalWeatherService *weather_service;
GcalWeatherSettings *weather_settings;
@@ -187,6 +188,7 @@ enum
PROP_ACTIVE_VIEW,
PROP_MANAGER,
PROP_NEW_EVENT_MODE,
+ PROP_TIME_FORMAT,
PROP_WEATHER_SERVICE,
N_PROPS
};
@@ -1339,6 +1341,14 @@ gcal_window_set_property (GObject *object,
}
break;
+ case PROP_TIME_FORMAT:
+ if (self->time_format != g_value_get_enum (value))
+ {
+ self->time_format = g_value_get_enum (value);
+ g_object_notify_by_pspec (object, properties[PROP_TIME_FORMAT]);
+ }
+ break;
+
case PROP_WEATHER_SERVICE:
if (g_set_object (&self->weather_service, g_value_get_object (value)))
g_object_notify_by_pspec (object, properties[PROP_WEATHER_SERVICE]);
@@ -1361,24 +1371,28 @@ gcal_window_get_property (GObject *object,
switch (property_id)
{
+ case PROP_ACTIVE_DATE:
+ g_value_set_boxed (value, self->active_date);
+ break;
+
case PROP_ACTIVE_VIEW:
g_value_set_enum (value, self->active_view);
break;
- case PROP_MANAGER:
- g_value_set_object (value, self->manager);
+ case PROP_NEW_EVENT_MODE:
+ g_value_set_boolean (value, self->new_event_mode);
break;
- case PROP_WEATHER_SERVICE:
- g_value_set_object (value, self->weather_service);
+ case PROP_MANAGER:
+ g_value_set_object (value, self->manager);
break;
- case PROP_ACTIVE_DATE:
- g_value_set_boxed (value, self->active_date);
+ case PROP_TIME_FORMAT:
+ g_value_set_enum (value, self->time_format);
break;
- case PROP_NEW_EVENT_MODE:
- g_value_set_boolean (value, self->new_event_mode);
+ case PROP_WEATHER_SERVICE:
+ g_value_set_object (value, self->weather_service);
break;
default:
@@ -1460,6 +1474,13 @@ gcal_window_class_init (GcalWindowClass *klass)
FALSE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ properties[PROP_TIME_FORMAT] = g_param_spec_enum ("time-format",
+ "The time format of the computer",
+ "The time format of the computer",
+ GCAL_TYPE_TIME_FORMAT,
+ GCAL_TIME_FORMAT_24H,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+
properties[PROP_WEATHER_SERVICE] = g_param_spec_object ("weather-service",
"The weather service object",
"The weather service object",
@@ -1537,9 +1558,6 @@ static void
gcal_window_init (GcalWindow *self)
{
GApplication *app;
- GSettings *helper_settings;
- gchar *clock_format;
- gboolean use_24h_format;
/* Setup actions */
g_action_map_add_action_entries (G_ACTION_MAP (self),
@@ -1549,6 +1567,7 @@ gcal_window_init (GcalWindow *self)
app = g_application_get_default ();
self->weather_service = gcal_application_get_weather_service (GCAL_APPLICATION (app));
+ self->time_format = GCAL_TIME_FORMAT_24H;
gtk_widget_init_template (GTK_WIDGET (self));
@@ -1556,29 +1575,13 @@ gcal_window_init (GcalWindow *self)
g_object_bind_property (self, "application", self->source_dialog, "application",
G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
- 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);
-
self->views[GCAL_WINDOW_VIEW_WEEK] = self->week_view;
self->views[GCAL_WINDOW_VIEW_MONTH] = self->month_view;
self->views[GCAL_WINDOW_VIEW_YEAR] = self->year_view;
- gcal_edit_dialog_set_time_format (GCAL_EDIT_DIALOG (self->edit_dialog), use_24h_format);
-
gcal_week_view_set_first_weekday (GCAL_WEEK_VIEW (self->views[GCAL_WINDOW_VIEW_WEEK]), get_first_weekday
());
- gcal_week_view_set_use_24h_format (GCAL_WEEK_VIEW (self->views[GCAL_WINDOW_VIEW_WEEK]), use_24h_format);
-
gcal_month_view_set_first_weekday (GCAL_MONTH_VIEW (self->views[GCAL_WINDOW_VIEW_MONTH]),
get_first_weekday ());
- gcal_month_view_set_use_24h_format (GCAL_MONTH_VIEW (self->views[GCAL_WINDOW_VIEW_MONTH]), use_24h_format);
-
gcal_year_view_set_first_weekday (GCAL_YEAR_VIEW (self->views[GCAL_WINDOW_VIEW_YEAR]), get_first_weekday
());
- gcal_year_view_set_use_24h_format (GCAL_YEAR_VIEW (self->views[GCAL_WINDOW_VIEW_YEAR]), use_24h_format);
-
- /* search view */
- gcal_search_popover_set_time_format (GCAL_SEARCH_POPOVER (self->search_popover), use_24h_format);
/* refresh timeout, first is fast */
self->refresh_timeout_id = g_timeout_add (FAST_REFRESH_TIMEOUT, (GSourceFunc) refresh_sources, self);
@@ -1604,6 +1607,9 @@ gcal_window_init (GcalWindow *self)
g_object_bind_property (self, "manager", self->month_view, "manager", G_BINDING_DEFAULT);
g_object_bind_property (self, "manager", self->year_view, "manager", G_BINDING_DEFAULT);
g_object_bind_property (self, "manager", self->quick_add_popover, "manager", G_BINDING_DEFAULT);
+ g_object_bind_property (self, "time-format", self->edit_dialog, "time-format", G_BINDING_DEFAULT);
+ g_object_bind_property (self, "time-format", self->search_popover, "time-format", G_BINDING_DEFAULT);
+ g_object_bind_property (self, "time-format", self->week_view, "time-format", G_BINDING_DEFAULT);
g_object_bind_property (self, "weather-service", self->weather_settings, "weather-service",
G_BINDING_DEFAULT);
g_object_bind_property (self, "weather-service", self->month_view, "weather-service", G_BINDING_DEFAULT);
g_object_bind_property (self, "weather-service", self->week_view, "weather-service", G_BINDING_DEFAULT);
diff --git a/src/gcal-window.h b/src/gcal-window.h
index 6a62e171..e4a52767 100644
--- a/src/gcal-window.h
+++ b/src/gcal-window.h
@@ -20,6 +20,7 @@
#define __GCAL_WINDOW_H__
#include "gcal-application.h"
+#include "gcal-enums.h"
#include "gcal-utils.h"
#include <gtk/gtk.h>
diff --git a/src/views/gcal-month-view.c b/src/views/gcal-month-view.c
index 861a2790..b1c072fa 100644
--- a/src/views/gcal-month-view.c
+++ b/src/views/gcal-month-view.c
@@ -111,11 +111,6 @@ struct _GcalMonthView
GDateTime *start_mark_cell;
GDateTime *end_mark_cell;
- /*
- * clock format from GNOME desktop settings
- */
- gboolean use_24h_format;
-
/* Storage for the accumulated scrolling */
gdouble scroll_value;
guint update_grid_id;
@@ -2246,16 +2241,3 @@ gcal_month_view_set_first_weekday (GcalMonthView *self,
update_weekday_labels (self);
}
-/**
- * gcal_month_view_set_use_24h_format:
- * @view:
- * @use_24h:
- *
- * Whether the view will show time using 24h or 12h format
- */
-void
-gcal_month_view_set_use_24h_format (GcalMonthView *self,
- gboolean use_24h)
-{
- self->use_24h_format = use_24h;
-}
diff --git a/src/views/gcal-week-grid.c b/src/views/gcal-week-grid.c
index 9abd9927..06db2072 100644
--- a/src/views/gcal-week-grid.c
+++ b/src/views/gcal-week-grid.c
@@ -53,7 +53,6 @@ struct _GcalWeekGrid
GdkWindow *event_window;
gint first_weekday;
- gboolean use_24h_format : 1;
icaltimetype *active_date;
@@ -1154,15 +1153,6 @@ gcal_week_grid_set_first_weekday (GcalWeekGrid *self,
self->first_weekday = nr_day;
}
-void
-gcal_week_grid_set_use_24h_format (GcalWeekGrid *self,
- gboolean use_24h_format)
-{
- g_return_if_fail (GCAL_IS_WEEK_GRID (self));
-
- self->use_24h_format = use_24h_format;
-}
-
void
gcal_week_grid_add_event (GcalWeekGrid *self,
GcalEvent *event)
diff --git a/src/views/gcal-week-grid.h b/src/views/gcal-week-grid.h
index 64cd663c..de0cee72 100644
--- a/src/views/gcal-week-grid.h
+++ b/src/views/gcal-week-grid.h
@@ -36,9 +36,6 @@ void gcal_week_grid_set_manager (GcalWeekGrid
void gcal_week_grid_set_first_weekday (GcalWeekGrid *week_grid,
gint nr_day);
-void gcal_week_grid_set_use_24h_format (GcalWeekGrid *week_grid,
- gboolean use_24h_format);
-
void gcal_week_grid_add_event (GcalWeekGrid *self,
GcalEvent *event);
diff --git a/src/views/gcal-week-header.c b/src/views/gcal-week-header.c
index 2e8e922d..fb2c59e4 100644
--- a/src/views/gcal-week-header.c
+++ b/src/views/gcal-week-header.c
@@ -86,8 +86,6 @@ struct _GcalWeekHeader
*/
gboolean expanded;
- gboolean use_24h_format;
-
icaltimetype *active_date;
gint selection_start;
@@ -1834,15 +1832,6 @@ gcal_week_header_set_first_weekday (GcalWeekHeader *self,
self->first_weekday = nr_day;
}
-void
-gcal_week_header_set_use_24h_format (GcalWeekHeader *self,
- gboolean use_24h_format)
-{
- g_return_if_fail (GCAL_IS_WEEK_HEADER (self));
-
- self->use_24h_format = use_24h_format;
-}
-
void
gcal_week_header_add_event (GcalWeekHeader *self,
GcalEvent *event)
diff --git a/src/views/gcal-week-header.h b/src/views/gcal-week-header.h
index a5ef2d8a..34ecffa1 100644
--- a/src/views/gcal-week-header.h
+++ b/src/views/gcal-week-header.h
@@ -38,9 +38,6 @@ void gcal_week_header_set_manager (GcalWeekHeader
void gcal_week_header_set_first_weekday (GcalWeekHeader *self,
gint nr_day);
-void gcal_week_header_set_use_24h_format (GcalWeekHeader *self,
- gboolean use_24h_format);
-
void gcal_week_header_add_event (GcalWeekHeader *self,
GcalEvent *event);
diff --git a/src/views/gcal-week-view.c b/src/views/gcal-week-view.c
index 8dc27330..8d74311a 100644
--- a/src/views/gcal-week-view.c
+++ b/src/views/gcal-week-view.c
@@ -19,6 +19,7 @@
#define G_LOG_DOMAIN "GcalWeekView"
#include "gcal-debug.h"
+#include "gcal-enums.h"
#include "gcal-event-widget.h"
#include "gcal-utils.h"
#include "gcal-view.h"
@@ -54,10 +55,8 @@ struct _GcalWeekView
*/
gint first_weekday;
- /*
- * clock format from GNOME desktop settings
- */
- gboolean use_24h_format;
+
+ GcalTimeFormat time_format;
/* property */
icaltimetype *date;
@@ -80,6 +79,7 @@ enum
PROP_0,
PROP_DATE,
PROP_MANAGER,
+ PROP_TIME_FORMAT,
PROP_WEATHER_SERVICE,
NUM_PROPS
};
@@ -429,7 +429,7 @@ gcal_week_view_draw_hours (GcalWeekView *self,
{
gchar *hours;
- if (self->use_24h_format)
+ if (self->time_format == GCAL_TIME_FORMAT_24H)
{
hours = g_strdup_printf ("%02d:00", i);
}
@@ -543,6 +543,12 @@ gcal_week_view_set_property (GObject *object,
g_object_notify (object, "manager");
break;
+ case PROP_TIME_FORMAT:
+ g_debug ("BLAAA");
+ self->time_format = g_value_get_enum (value);
+ gtk_widget_queue_draw (self->hours_bar);
+ break;
+
case PROP_WEATHER_SERVICE:
if (g_set_object (&self->weather_service, g_value_get_object (value)))
g_object_notify (object, "weather-service");
@@ -575,6 +581,10 @@ gcal_week_view_get_property (GObject *object,
g_value_set_object (value, self->manager);
break;
+ case PROP_TIME_FORMAT:
+ g_value_set_enum (value, self->time_format);
+ break;
+
case PROP_WEATHER_SERVICE:
g_value_set_object (value, self->weather_service);
break;
@@ -602,6 +612,15 @@ gcal_week_view_class_init (GcalWeekViewClass *klass)
g_object_class_override_property (object_class, PROP_MANAGER, "manager");
g_object_class_override_property (object_class, PROP_WEATHER_SERVICE, "weather-service");
+ g_object_class_install_property (object_class,
+ PROP_TIME_FORMAT,
+ g_param_spec_enum ("time-format",
+ "Time format",
+ "Time format",
+ GCAL_TYPE_TIME_FORMAT,
+ GCAL_TIME_FORMAT_24H,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/calendar/week-view.ui");
gtk_widget_class_bind_template_child (widget_class, GcalWeekView, header);
@@ -661,18 +680,3 @@ gcal_week_view_set_first_weekday (GcalWeekView *self,
gcal_week_grid_set_first_weekday (GCAL_WEEK_GRID (self->week_grid), self->first_weekday);
}
-/**
- * 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 *self,
- gboolean use_24h)
-{
- g_return_if_fail (GCAL_IS_WEEK_VIEW (self));
-
- self->use_24h_format = use_24h;
-}
diff --git a/src/views/gcal-week-view.h b/src/views/gcal-week-view.h
index 5326f655..2e14cc85 100644
--- a/src/views/gcal-week-view.h
+++ b/src/views/gcal-week-view.h
@@ -33,9 +33,6 @@ GtkWidget* gcal_week_view_new (void);
void gcal_week_view_set_first_weekday (GcalWeekView *self,
gint day_nr);
-void gcal_week_view_set_use_24h_format (GcalWeekView *self,
- gboolean use_24h);
-
G_END_DECLS
#endif /* __GCAL_WEEK_VIEW_H__ */
diff --git a/src/views/gcal-year-view.c b/src/views/gcal-year-view.c
index c7232c8a..39a8d958 100644
--- a/src/views/gcal-year-view.c
+++ b/src/views/gcal-year-view.c
@@ -97,11 +97,6 @@ struct _GcalYearView
/* Storage for the accumulated scrolling */
gdouble scroll_value;
- /**
- * clock format from GNOME desktop settings
- */
- gboolean use_24h_format;
-
/* show week numbers from GNOME Shell settings */
GSettings *calendar_settings;
gboolean show_week_numbers;
@@ -2108,10 +2103,3 @@ gcal_year_view_set_first_weekday (GcalYearView *year_view,
{
year_view->first_weekday = nr_day;
}
-
-void
-gcal_year_view_set_use_24h_format (GcalYearView *year_view,
- gboolean use_24h_format)
-{
- year_view->use_24h_format = use_24h_format;
-}
diff --git a/src/views/gcal-year-view.h b/src/views/gcal-year-view.h
index 9cad185a..103e53c4 100644
--- a/src/views/gcal-year-view.h
+++ b/src/views/gcal-year-view.h
@@ -34,9 +34,6 @@ G_DECLARE_FINAL_TYPE (GcalYearView, gcal_year_view, GCAL, YEAR_VIEW, GtkBox)
void gcal_year_view_set_first_weekday (GcalYearView *year_view,
gint nr_day);
-void gcal_year_view_set_use_24h_format (GcalYearView *year_view,
- gboolean use_24h_format);
-
void gcal_year_view_set_current_date (GcalYearView *year_view,
icaltimetype *current_date);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]