author | Myhailo Danylenko <isbear@ukrpost.net> |
Wed, 15 May 2013 13:07:05 +0300 | |
changeset 85 | 93c3cc0d7891 |
parent 51 | 5e5992999357 |
child 87 | 78238d26911a |
permissions | -rw-r--r-- |
51
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
1 |
# HG changeset patch |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
2 |
# Parent f6642109fbfb5029d85f3f7c4dc9d93e100d607a |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
3 |
[experimental] Allow user to modify time formatting |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
4 |
|
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
5 |
* give user full control and full responsibility |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
6 |
* add time_prefix = 3, that uses |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
7 |
* time_format (normal prefix format string) |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
8 |
* time_format_special (special prefix format string) |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
9 |
* time_prefix_len (normal prefix width + 5) |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
10 |
* fall back to 0, if any of these unset |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
11 |
|
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
12 |
diff -r f6642109fbfb mcabber/mcabber/screen.c |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
13 |
--- a/mcabber/mcabber/screen.c Thu Oct 18 00:00:46 2012 +0300 |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
14 |
+++ b/mcabber/mcabber/screen.c Thu Oct 18 01:49:44 2012 +0300 |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
15 |
@@ -853,38 +853,100 @@ |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
16 |
static const char *timeprefixes[] = { |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
17 |
"%m-%d %H:%M ", |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
18 |
"%H:%M ", |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
19 |
- " " |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
20 |
+ " ", |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
21 |
+ NULL, |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
22 |
}; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
23 |
|
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
24 |
static const char *spectimeprefixes[] = { |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
25 |
"%m-%d %H:%M:%S ", |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
26 |
"%H:%M:%S ", |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
27 |
- " " |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
28 |
+ " ", |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
29 |
+ NULL, |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
30 |
}; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
31 |
|
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
32 |
static int timepreflengths[] = { |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
33 |
// (length of the corresponding timeprefix + 5) |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
34 |
17, |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
35 |
11, |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
36 |
- 6 |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
37 |
+ 6, |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
38 |
+ 0, |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
39 |
}; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
40 |
|
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
41 |
+/* |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
42 |
+static struct { |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
43 |
+ char format; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
44 |
+ unsigned short len; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
45 |
+} timeprefix_characters[] = { |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
46 |
+ { 'C', 2 }, |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
47 |
+ { 'd', 2 }, |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
48 |
+ { 'D', 10 }, |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
49 |
+ { 'e', 2 }, |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
50 |
+ { 'F', 10 }, |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
51 |
+ { 'G', 4 }, |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
52 |
+ { 'g', 2 }, |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
53 |
+ { 'H', 2 }, |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
54 |
+ { 'I', 2 }, |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
55 |
+ { 'j', 3 }, |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
56 |
+ { 'k', 2 }, |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
57 |
+ { 'l', 2 }, |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
58 |
+ { 'm', 2 }, |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
59 |
+ { 'M', 2 }, |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
60 |
+ { 'p', 2 }, // ? locale-dependent, can set LC_CTIME=C? |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
61 |
+ { 'P', 2 }, // ? |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
62 |
+ { 'R', 5 }, |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
63 |
+ { 'S', 2 }, |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
64 |
+ { 'T', 8 }, |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
65 |
+ { 'u', 1 }, |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
66 |
+ { 'U', 2 }, |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
67 |
+ { 'V', 2 }, |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
68 |
+ { 'w', 1 }, |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
69 |
+ { 'W', 2 }, |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
70 |
+ { 'y', 2 }, |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
71 |
+ { 'Y', 4 }, |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
72 |
+ { 'z', 5 }, |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
73 |
+ { '%', 1 }, |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
74 |
+ { '\0', 0 }, // end marker |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
75 |
+}; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
76 |
+*/ |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
77 |
+ |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
78 |
+static guint gettprefixnum (void) |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
79 |
+{ |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
80 |
+ guint n = settings_opt_get_int ("time_prefix"); |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
81 |
+ static gboolean initialized = FALSE; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
82 |
+ if (n < 3) |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
83 |
+ return n; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
84 |
+ if (n > 3) |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
85 |
+ return 0; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
86 |
+ if (!initialized) { |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
87 |
+ const char *tp = settings_opt_get ("time_format"); |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
88 |
+ const char *stp = settings_opt_get ("time_format_special"); |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
89 |
+ guint tpl = settings_opt_get_int ("time_prefix_len"); |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
90 |
+ if (!tp || !*tp || !stp || !*stp || tpl < 6) { |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
91 |
+ tp = timeprefixes[0]; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
92 |
+ stp = spectimeprefixes[0]; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
93 |
+ tpl = timepreflengths[0]; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
94 |
+ } |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
95 |
+ timeprefixes[3] = g_strdup (tp); |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
96 |
+ spectimeprefixes[3] = g_strdup (stp); |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
97 |
+ timepreflengths[3] = tpl; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
98 |
+ initialized = TRUE; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
99 |
+ } |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
100 |
+ return 3; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
101 |
+} |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
102 |
+ |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
103 |
static const char *gettprefix(void) |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
104 |
{ |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
105 |
- guint n = settings_opt_get_int("time_prefix"); |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
106 |
- return timeprefixes[(n < 3 ? n : 0)]; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
107 |
+ return timeprefixes[gettprefixnum()]; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
108 |
} |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
109 |
|
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
110 |
static const char *getspectprefix(void) |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
111 |
{ |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
112 |
- guint n = settings_opt_get_int("time_prefix"); |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
113 |
- return spectimeprefixes[(n < 3 ? n : 0)]; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
114 |
+ return spectimeprefixes[gettprefixnum()]; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
115 |
} |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
116 |
|
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
117 |
guint scr_getprefixwidth(void) |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
118 |
{ |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
119 |
- guint n = settings_opt_get_int("time_prefix"); |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
120 |
- return timepreflengths[(n < 3 ? n : 0)]; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
121 |
+ return timepreflengths[gettprefixnum()]; |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
122 |
} |
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
123 |
|
5e5992999357
Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
124 |
guint scr_gettextwidth(void) |