changeset 510:6c3cd3aa4a91

New 'buddy_format' option
author Mikael Berthe <mikael@lilotux.net>
date Sat, 12 Nov 2005 17:36:20 +0100
parents cd52ddef5ce1
children c7cdb9c6d7aa
files mcabber/src/hooks.c mcabber/src/roster.c mcabber/src/roster.h
diffstat 3 files changed, 38 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/mcabber/src/hooks.c	Sat Nov 12 15:02:25 2005 +0100
+++ b/mcabber/src/hooks.c	Sat Nov 12 17:36:20 2005 +0100
@@ -145,11 +145,32 @@
                             time_t timestamp, enum imstatus status,
                             const char *status_msg)
 {
+  int buddy_format;
+  char *bn = NULL;
   const char *rn = (resname ? resname : "default");
-  scr_LogPrint(LPRINT_LOGNORM, "Buddy status has changed: [%c>%c] <%s/%s> %s",
+
+  buddy_format = settings_opt_get_int("buddy_format");
+  if (buddy_format) {
+    const char *name = roster_getname(jid);
+    if (name && strcmp(name, jid)) {
+      if (buddy_format == 1)
+        bn = g_strdup_printf("%s <%s/%s>", name, jid, rn);
+      else if (buddy_format == 2)
+        bn = g_strdup_printf("%s/%s", name, rn);
+      else if (buddy_format == 3)
+        bn = g_strdup_printf("%s", name);
+    }
+  }
+
+  if (!bn) {
+    bn = g_strdup_printf("<%s/%s>", jid, rn);
+  }
+
+  scr_LogPrint(LPRINT_LOGNORM, "Buddy status has changed: [%c>%c] %s %s",
                imstatus2char[roster_getstatus(jid, resname)],
-               imstatus2char[status], jid, rn,
+               imstatus2char[status], bn,
                ((status_msg) ? status_msg : ""));
+  g_free(bn);
   roster_setstatus(jid, rn, prio, status, status_msg, role_none, NULL);
   buddylist_build();
   scr_DrawRoster();
--- a/mcabber/src/roster.c	Sat Nov 12 15:02:25 2005 +0100
+++ b/mcabber/src/roster.c	Sat Nov 12 17:36:20 2005 +0100
@@ -489,6 +489,20 @@
   }
 }
 
+const char *roster_getname(const char *jid)
+{
+  GSList *sl_user;
+  roster *roster_usr;
+
+  sl_user = roster_find(jid, jidsearch,
+                        ROSTER_TYPE_USER|ROSTER_TYPE_ROOM|ROSTER_TYPE_AGENT);
+  if (sl_user == NULL)
+    return NULL; // Not in the roster...
+
+  roster_usr = (roster*)sl_user->data;
+  return roster_usr->name;
+}
+
 void roster_settype(const char *jid, guint type)
 {
   GSList *sl_user;
--- a/mcabber/src/roster.h	Sat Nov 12 15:02:25 2005 +0100
+++ b/mcabber/src/roster.h	Sat Nov 12 17:36:20 2005 +0100
@@ -57,6 +57,7 @@
                          enum imrole role, const char *realjid);
 void    roster_setflags(const char *jid, guint flags, guint value);
 void    roster_msg_setflag(const char *jid, guint value);
+const char *roster_getname(const char *jid);
 void    roster_settype(const char *jid, guint type);
 enum imstatus roster_getstatus(const char *jid, const char *resname);
 const char   *roster_getstatusmsg(const char *jid, const char *resname);