summaryrefslogtreecommitdiffstats
path: root/gdm/patch/time_display_on_greeter.patch
blob: 7bcad8939cbeb4e2f15b43a729034aa22b0e1465 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
Description: Display time on the greeter in accordance with the system wide settings in Language Support.
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=651506
Bug-Ubuntu: https://launchpad.net/bugs/777264
Forwarded: yes
Author: Gunnar Hjalmarsson <ubuntu@gunnar.cc>

diff -Nur -x '*.orig' -x '*~' gdm-3.0.0//gui/simple-greeter/gdm-clock-widget.c gdm-3.0.0.new//gui/simple-greeter/gdm-clock-widget.c
--- gdm-3.0.0//gui/simple-greeter/gdm-clock-widget.c	2011-04-04 16:37:16.000000000 +0200
+++ gdm-3.0.0.new//gui/simple-greeter/gdm-clock-widget.c	2011-06-05 23:55:31.140297043 +0200
@@ -30,6 +30,7 @@
 #include <errno.h>
 #include <dirent.h>
 #include <sys/stat.h>
+#include <locale.h>
 
 #include <glib.h>
 #include <glib/gi18n.h>
@@ -60,39 +61,23 @@
 static void
 update_time_format (GdmClockWidget *clock)
 {
+        time_t      t;
+        struct tm  *tm;
+        char        ampm[16];
         char       *clock_format;
         char       *tooltip_format;
 
-        if (clock->priv->should_show_date && clock->priv->should_show_seconds) {
-                /* translators: This is the time format to use when both
-                 * the date and time with seconds are being shown together.
-                 */
-                clock_format = _("%a %b %e, %l:%M:%S %p");
-                tooltip_format = NULL;
-        } else if (clock->priv->should_show_date && !clock->priv->should_show_seconds) {
-                /* translators: This is the time format to use when both
-                 * the date and time without seconds are being shown together.
-                 */
-                clock_format = _("%a %b %e, %l:%M %p");
-
-                tooltip_format = NULL;
-        } else if (!clock->priv->should_show_date && clock->priv->should_show_seconds) {
-                /* translators: This is the time format to use when there is
-                 * no date, just weekday and time with seconds.
-                 */
-                clock_format = _("%a %l:%M:%S %p");
-
-                /* translators: This is the time format to use for the date
-                 */
-                tooltip_format = "%x";
+        time (&t);
+        tm = localtime (&t);
+        setlocale(LC_TIME, "");
+        strftime(ampm, sizeof(ampm), "%p", tm);
+ 
+        if (strlen(ampm) > 0) {
+                clock_format = "%l:%M %p";
         } else {
-                /* translators: This is the time format to use when there is
-                 * no date, just weekday and time without seconds.
-                 */
-                clock_format = _("%a %l:%M %p");
-
-                tooltip_format = "%x";
+                clock_format = "%H:%M";
         }
+        tooltip_format = "%x";
 
         g_free (clock->priv->time_format);
         clock->priv->time_format = g_locale_from_utf8 (clock_format, -1, NULL, NULL, NULL);
@@ -113,6 +98,8 @@
 {
         time_t     t;
         struct tm *tm;
+        char       showed_time[32];
+        char       weekday[32];
         char       buf[256];
         char      *utf8;
         char      *markup;
@@ -123,10 +110,15 @@
                 g_warning ("Unable to get broken down local time");
                 return;
         }
-        if (strftime (buf, sizeof (buf), clock_format, tm) == 0) {
+        if (strftime (showed_time, sizeof (showed_time), clock_format, tm) == 0) {
                 g_warning ("Couldn't format time: %s", clock_format);
-                strcpy (buf, "???");
+                strcpy (showed_time, "???");
         }
+
+        setlocale( LC_TIME, getenv("LC_MESSAGES") );
+        strftime(weekday, sizeof(weekday), "%a", tm);
+        sprintf(buf, "%s %s", weekday, showed_time);
+
         utf8 = g_locale_to_utf8 (buf, -1, NULL, NULL, NULL);
         markup = g_strdup_printf ("<b><span foreground=\"white\">%s</span></b>", utf8);
         gtk_label_set_markup (label, markup);
@@ -134,6 +126,7 @@
         g_free (utf8);
 
         if (tooltip_format != NULL) {
+                setlocale(LC_TIME, "");
                 if (strftime (buf, sizeof (buf), tooltip_format, tm) == 0) {
                         g_warning ("Couldn't format tooltip date: %s", tooltip_format);
                         strcpy (buf, "???");