timeformat.diff
author Myhailo Danylenko <isbear@isbear.org.ua>
Fri, 09 Dec 2016 02:12:34 +0200
changeset 92 66f7e2aa040c
parent 87 78238d26911a
permissions -rw-r--r--
Add fix-compile-warning-xmpp_c, refresh queue
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
87
78238d26911a Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents: 51
diff changeset
     2
# Parent 66f6d14c851bd0280966a8263ff4119588775620
92
66f7e2aa040c Add fix-compile-warning-xmpp_c, refresh queue
Myhailo Danylenko <isbear@isbear.org.ua>
parents: 87
diff changeset
     3
# Parent  b31541d59f2a96959b96c7c4454d3da15a33addd
51
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     4
[experimental] Allow user to modify time formatting
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     5
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     6
  * give user full control and full responsibility
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     7
  * add time_prefix = 3, that uses
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     8
    * time_format (normal prefix format string)
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     9
    * time_format_special (special prefix format string)
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    10
    * time_prefix_len (normal prefix width + 5)
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    11
  * fall back to 0, if any of these unset
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    12
92
66f7e2aa040c Add fix-compile-warning-xmpp_c, refresh queue
Myhailo Danylenko <isbear@isbear.org.ua>
parents: 87
diff changeset
    13
diff -r b31541d59f2a mcabber/mcabber/screen.c
66f7e2aa040c Add fix-compile-warning-xmpp_c, refresh queue
Myhailo Danylenko <isbear@isbear.org.ua>
parents: 87
diff changeset
    14
--- a/mcabber/mcabber/screen.c	Fri Dec 09 01:38:46 2016 +0200
66f7e2aa040c Add fix-compile-warning-xmpp_c, refresh queue
Myhailo Danylenko <isbear@isbear.org.ua>
parents: 87
diff changeset
    15
+++ b/mcabber/mcabber/screen.c	Fri Dec 09 01:48:18 2016 +0200
87
78238d26911a Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents: 51
diff changeset
    16
@@ -85,6 +85,7 @@
78238d26911a Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents: 51
diff changeset
    17
 static void scr_end_current_completion(void);
78238d26911a Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents: 51
diff changeset
    18
 static void scr_insert_text(const char*);
78238d26911a Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents: 51
diff changeset
    19
 static void scr_handle_tab(gboolean fwd);
78238d26911a Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents: 51
diff changeset
    20
+static unsigned int attention_sign(void);
78238d26911a Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents: 51
diff changeset
    21
 
78238d26911a Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents: 51
diff changeset
    22
 static void scr_glog_print(const gchar *log_domain, GLogLevelFlags log_level,
78238d26911a Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents: 51
diff changeset
    23
                            const gchar *message, gpointer user_data);
92
66f7e2aa040c Add fix-compile-warning-xmpp_c, refresh queue
Myhailo Danylenko <isbear@isbear.org.ua>
parents: 87
diff changeset
    24
@@ -229,8 +230,6 @@
87
78238d26911a Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents: 51
diff changeset
    25
 
78238d26911a Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents: 51
diff changeset
    26
 /* Functions */
78238d26911a Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents: 51
diff changeset
    27
 
78238d26911a Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents: 51
diff changeset
    28
-static unsigned int attention_sign(void);
78238d26911a Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents: 51
diff changeset
    29
-
78238d26911a Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents: 51
diff changeset
    30
 static int find_color(const char *name)
78238d26911a Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents: 51
diff changeset
    31
 {
78238d26911a Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents: 51
diff changeset
    32
   int result;
92
66f7e2aa040c Add fix-compile-warning-xmpp_c, refresh queue
Myhailo Danylenko <isbear@isbear.org.ua>
parents: 87
diff changeset
    33
@@ -878,38 +877,100 @@
51
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    34
 static const char *timeprefixes[] = {
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    35
   "%m-%d %H:%M ",
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    36
   "%H:%M ",
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    37
-  " "
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    38
+  " ",
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    39
+  NULL,
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 const char *spectimeprefixes[] = {
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    43
   "%m-%d %H:%M:%S   ",
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    44
   "%H:%M:%S   ",
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    45
-  "   "
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    46
+  "   ",
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    47
+  NULL,
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    48
 };
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    49
 
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    50
 static int timepreflengths[] = {
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    51
   // (length of the corresponding timeprefix + 5)
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    52
   17,
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    53
   11,
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    54
-  6
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    55
+  6,
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    56
+  0,
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    57
 };
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    58
 
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    59
+/*
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    60
+static struct {
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    61
+  char format;
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    62
+  unsigned short len;
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    63
+} timeprefix_characters[] = {
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    64
+  { 'C', 2  },
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    65
+  { 'd', 2  },
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    66
+  { 'D', 10 },
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    67
+  { 'e', 2  },
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    68
+  { 'F', 10 },
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    69
+  { 'G', 4  },
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    70
+  { 'g', 2  },
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    71
+  { 'H', 2  },
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    72
+  { 'I', 2  },
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    73
+  { 'j', 3  },
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    74
+  { 'k', 2  },
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    75
+  { 'l', 2  },
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    76
+  { 'm', 2  },
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    77
+  { 'M', 2  },
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    78
+  { 'p', 2  }, // ? locale-dependent, can set LC_CTIME=C?
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    79
+  { 'P', 2  }, // ?
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    80
+  { 'R', 5  },
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    81
+  { 'S', 2  },
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    82
+  { 'T', 8  },
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    83
+  { 'u', 1  },
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    84
+  { 'U', 2  },
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    85
+  { 'V', 2  },
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    86
+  { 'w', 1  },
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    87
+  { 'W', 2  },
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    88
+  { 'y', 2  },
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    89
+  { 'Y', 4  },
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    90
+  { 'z', 5  },
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    91
+  { '%', 1  },
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    92
+  { '\0', 0 }, // end marker
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    93
+};
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
+
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    96
+static guint gettprefixnum (void)
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    97
+{
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    98
+  guint n = settings_opt_get_int ("time_prefix");
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    99
+  static gboolean initialized = FALSE;
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   100
+  if (n < 3)
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   101
+    return n;
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   102
+  if (n > 3)
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   103
+    return 0;
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   104
+  if (!initialized) {
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   105
+    const char *tp  = settings_opt_get ("time_format");
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   106
+    const char *stp = settings_opt_get ("time_format_special");
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   107
+    guint       tpl = settings_opt_get_int ("time_prefix_len");
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   108
+    if (!tp || !*tp || !stp || !*stp || tpl < 6) {
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   109
+      tp  = timeprefixes[0];
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   110
+      stp = spectimeprefixes[0];
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   111
+      tpl = timepreflengths[0];
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   112
+    }
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   113
+    timeprefixes[3]     = g_strdup (tp);
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   114
+    spectimeprefixes[3] = g_strdup (stp);
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   115
+    timepreflengths[3]  = tpl;
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   116
+    initialized = TRUE;
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   117
+  }
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   118
+  return 3;
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   119
+}
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   120
+
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   121
 static const char *gettprefix(void)
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
-  guint n = settings_opt_get_int("time_prefix");
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   124
-  return timeprefixes[(n < 3 ? n : 0)];
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   125
+  return timeprefixes[gettprefixnum()];
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   126
 }
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   127
 
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   128
 static const char *getspectprefix(void)
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   129
 {
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   130
-  guint n = settings_opt_get_int("time_prefix");
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   131
-  return spectimeprefixes[(n < 3 ? n : 0)];
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   132
+  return spectimeprefixes[gettprefixnum()];
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   133
 }
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   134
 
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   135
 guint scr_getprefixwidth(void)
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   136
 {
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   137
-  guint n = settings_opt_get_int("time_prefix");
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   138
-  return timepreflengths[(n < 3 ? n : 0)];
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   139
+  return timepreflengths[gettprefixnum()];
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   140
 }
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   141
 
5e5992999357 Fiddling with time formatting
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   142
 guint scr_gettextwidth(void)