timeformat.diff
author Myhailo Danylenko <isbear@ukrpost.net>
Wed, 15 May 2013 13:32:42 +0300
changeset 86 ac5fed257211
parent 51 5e5992999357
child 87 78238d26911a
permissions -rw-r--r--
[round-prio] Fix numbers
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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)