summarylogtreecommitdiffstats
path: root/display-types.diff
blob: 6146c8e61fc95e9cf3f398fb34f3f8ab24b1a2a4 (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
Display the value of "TYPE" attributes for vCard fields that have such 
attribute (closes: #442457)

 -- Rafael Laboissiere <rafael@debian.org>  Mon, 30 Jun 2008 16:46:12 +0200

Index: rolo-011.dfsg.1/src/view.c
===================================================================
--- rolo-011.dfsg.1.orig/src/view.c	2008-06-30 16:50:13.000000000 +0200
+++ rolo-011.dfsg.1/src/view.c	2008-06-30 16:50:23.000000000 +0200
@@ -305,10 +305,14 @@
 view_tel ()
 {
   vc_component *vc = NULL;
+  vc_component_param *vcp = NULL;
   char *val = NULL;
+  char *type = NULL;
+  char fmt [80];
+  char tmp [80];
   int x = 0;
   int y = 0;
-  int i = 0;
+  int len = -1;
 
   g_mode = VIEW_TEL;
 
@@ -322,20 +326,53 @@
   wstandend (sub);
   wmove (sub, 3, 0);
 
-  for (i = 1, vc = g_v; i <= 5; i++)
+  len = -1;
+  vc = g_v;
+  while (vc = vc_get_next_by_name (vc, VC_TELEPHONE))
+   {
+      vcp = vc ? vc_param_get_by_name (vc_get_param (vc), "type") : NULL;
+      if (vcp)
+        {
+           type = vc_param_get_value (vcp);
+           if ((len < 0) | (len < strlen (type)))
+             len = strlen (type) + 2;  /* take parentheses into account */
+        }
+   }
+
+  vc = g_v;
+  while (vc = vc_get_next_by_name (vc, VC_TELEPHONE))
     {
-      vc = vc_get_next_by_name (vc, VC_TELEPHONE);
-      val = vc_get_value (vc);
-      wprintw (sub, "Telephone #%i  : %s\n", i, val ? val : "");
+      vcp = vc ? vc_param_get_by_name (vc_get_param (vc), "type") : NULL;
+      type = vcp ? vc_param_get_value (vcp) : NULL;
+      val = vc ? vc_get_value (vc) : NULL;
+      snprintf (fmt, 79, "Telephone %%%ds : %%s\n", len);
+      snprintf (tmp, 79, type ? "(%s)" : "", type);
+      wprintw (sub, fmt, tmp, val ? val : "");
     }
 
   wprintw (sub, "\n");
 
-  for (i = 1, vc = g_v; i <= 5; i++)
+  len = -1;
+  vc = g_v;
+  while (vc = vc_get_next_by_name (vc, VC_EMAIL))
+    {
+      vcp = vc ? vc_param_get_by_name (vc_get_param (vc), "type") : NULL;
+      if (vcp) {
+        type = vc_param_get_value (vcp);
+        if ((len < 0) | (len < strlen (type)))
+          len = strlen (type) + 2;  /* take parentheses into account */
+      }
+    }
+
+  vc = g_v;
+  while (vc = vc_get_next_by_name (vc, VC_EMAIL))
     {
-      vc = vc_get_next_by_name (vc, VC_EMAIL);
-      val = vc_get_value (vc);
-      wprintw (sub, "Email Address #%i  : %s\n", i, val ? val : "");
+      vcp = vc ? vc_param_get_by_name (vc_get_param (vc), "type") : NULL;
+      type = vcp ? vc_param_get_value (vcp) : NULL;
+      val = vc ? vc_get_value (vc) : NULL;
+      snprintf (fmt, 79, "Email Address %%%ds : %%s\n", len);
+      snprintf (tmp, 79, type ? "(%s)" : "", type);
+      wprintw (sub, fmt, tmp, val ? val : "");
     }
 
   wprintw (sub, "\n");