[gnome-control-center] datetime: Do not offer the 12 hr clock in locales without AM/PM
- From: Bastien Nocera <hadess src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] datetime: Do not offer the 12 hr clock in locales without AM/PM
- Date: Thu, 8 Nov 2012 11:31:54 +0000 (UTC)
commit 8afea39c60cefaf85eb2f745be04fe86ad75aee1
Author: Debarshi Ray <debarshir gnome org>
Date: Sat Apr 14 21:02:56 2012 +0200
datetime: Do not offer the 12 hr clock in locales without AM/PM
https://bugzilla.gnome.org/show_bug.cgi?id=673721
panels/datetime/cc-datetime-panel.c | 34 ++++++++++++++++++++++++++++++----
panels/datetime/datetime.ui | 2 +-
2 files changed, 31 insertions(+), 5 deletions(-)
---
diff --git a/panels/datetime/cc-datetime-panel.c b/panels/datetime/cc-datetime-panel.c
index 803f48a..df3fe45 100644
--- a/panels/datetime/cc-datetime-panel.c
+++ b/panels/datetime/cc-datetime-panel.c
@@ -22,6 +22,7 @@
#include "config.h"
#include "cc-datetime-panel.h"
+#include <langinfo.h>
#include <sys/time.h>
#include "cc-timezone-map.h"
#include "timedated.h"
@@ -79,6 +80,7 @@ struct _CcDateTimePanelPrivate
GSettings *settings;
GDesktopClockFormat clock_format;
+ gboolean ampm_available;
GnomeWallClock *clock_tracker;
@@ -261,8 +263,14 @@ update_time (CcDateTimePanel *self)
char *label;
char *am_pm_widgets[] = {"ampm_up_button", "ampm_down_button", "ampm_label" };
guint i;
+ gboolean use_ampm;
- if (priv->clock_format == G_DESKTOP_CLOCK_FORMAT_24H)
+ if (priv->clock_format == G_DESKTOP_CLOCK_FORMAT_12H && priv->ampm_available)
+ use_ampm = TRUE;
+ else
+ use_ampm = FALSE;
+
+ if (!use_ampm)
{
/* Update the hours label */
label = g_date_time_format (priv->date, "%H");
@@ -283,8 +291,7 @@ update_time (CcDateTimePanel *self)
}
for (i = 0; i < G_N_ELEMENTS (am_pm_widgets); i++)
- gtk_widget_set_visible (W(am_pm_widgets[i]),
- priv->clock_format == G_DESKTOP_CLOCK_FORMAT_12H);
+ gtk_widget_set_visible (W(am_pm_widgets[i]), use_ampm);
/* Update the minutes label */
label = g_date_time_format (priv->date, "%M");
@@ -945,6 +952,7 @@ cc_date_time_panel_init (CcDateTimePanel *self)
GError *err = NULL;
GtkTreeModelFilter *city_modelfilter;
GtkTreeModelSort *city_modelsort;
+ const char *ampm;
guint i, num_days;
int ret;
DateEndianess endianess;
@@ -1030,6 +1038,25 @@ cc_date_time_panel_init (CcDateTimePanel *self)
"aspectmap")),
widget);
+ /* Clock settings */
+ priv->settings = g_settings_new (CLOCK_SCHEMA);
+
+ ampm = nl_langinfo (AM_STR);
+ /* There are no AM/PM indicators for this locale, so
+ * offer the 24 hr clock as the only option */
+ if (ampm == NULL || ampm[0] == '\0')
+ {
+ gtk_widget_set_visible (W("ampm_up_button"), FALSE);
+ gtk_widget_set_visible (W("ampm_label"), FALSE);
+ gtk_widget_set_visible (W("ampm_down_button"), FALSE);
+ gtk_widget_set_visible (W("24h_box"), FALSE);
+ priv->ampm_available = FALSE;
+ }
+ else
+ {
+ priv->ampm_available = TRUE;
+ }
+
gtk_container_add (GTK_CONTAINER (self),
GTK_WIDGET (gtk_builder_get_object (priv->builder,
"datetime-panel")));
@@ -1039,7 +1066,6 @@ cc_date_time_panel_init (CcDateTimePanel *self)
priv->clock_tracker = g_object_new (GNOME_TYPE_WALL_CLOCK, NULL);
g_signal_connect (priv->clock_tracker, "notify::clock", G_CALLBACK (on_clock_changed), self);
- priv->settings = g_settings_new (CLOCK_SCHEMA);
clock_settings_changed_cb (priv->settings, CLOCK_FORMAT_KEY, self);
g_signal_connect (priv->settings, "changed::" CLOCK_FORMAT_KEY,
G_CALLBACK (clock_settings_changed_cb), self);
diff --git a/panels/datetime/datetime.ui b/panels/datetime/datetime.ui
index 4d97d2b..caec8e8 100644
--- a/panels/datetime/datetime.ui
+++ b/panels/datetime/datetime.ui
@@ -438,7 +438,7 @@
</packing>
</child>
<child>
- <object class="GtkBox" id="box1">
+ <object class="GtkBox" id="24h_box">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]