changeset 120:cfd3df636d5f

[/trunk] Changeset 133 by mikael * Small optimization.
author mikael
date Mon, 25 Apr 2005 20:56:23 +0000
parents d7fbd5293385
children 94b251102069
files mcabber/src/commands.c mcabber/src/hooks.c mcabber/src/jabglue.c mcabber/src/main.c mcabber/src/roster.c mcabber/src/roster.h mcabber/src/screen.c
diffstat 7 files changed, 22 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/mcabber/src/commands.c	Mon Apr 25 20:34:59 2005 +0000
+++ b/mcabber/src/commands.c	Mon Apr 25 20:56:23 2005 +0000
@@ -209,12 +209,12 @@
     scr_RosterBottom();
     scr_DrawRoster();
   } else if (!strcasecmp(arg, "hide_offline")) {
-    buddylist_hide_offline_buddies(TRUE);
+    buddylist_set_hide_offline_buddies(TRUE);
     if (current_buddy)
       buddylist_build();
     scr_DrawRoster();
   } else if (!strcasecmp(arg, "show_offline")) {
-    buddylist_hide_offline_buddies(FALSE);
+    buddylist_set_hide_offline_buddies(FALSE);
     if (current_buddy)
       buddylist_build();
     scr_DrawRoster();
--- a/mcabber/src/hooks.c	Mon Apr 25 20:34:59 2005 +0000
+++ b/mcabber/src/hooks.c	Mon Apr 25 20:56:23 2005 +0000
@@ -48,6 +48,8 @@
   scr_LogPrint("Buddy status has changed: [%c>%c] <%s>",
           imstatus2char[roster_getstatus(jid)], imstatus2char[status], jid);
   roster_setstatus(jid, status);
+  buddylist_build();
+  scr_DrawRoster();
   hlog_write_status(jid, 0, status);
 }
 
--- a/mcabber/src/jabglue.c	Mon Apr 25 20:34:59 2005 +0000
+++ b/mcabber/src/jabglue.c	Mon Apr 25 20:56:23 2005 +0000
@@ -677,8 +677,6 @@
         if (ust != roster_getstatus(r))
           hk_statuschange(r, 0, ust);
         free(r);
-        buddylist_build();
-        scr_DrawRoster();
         /*
         if (x = xmlnode_get_tag(packet->x, "status"))
           if (p = xmlnode_get_data(x))
--- a/mcabber/src/main.c	Mon Apr 25 20:34:59 2005 +0000
+++ b/mcabber/src/main.c	Mon Apr 25 20:56:23 2005 +0000
@@ -183,7 +183,7 @@
 
   optstring = cfg_read("hide_offline_buddies");
   if (optstring && (atoi(optstring) > 0))
-    buddylist_hide_offline_buddies(TRUE);
+    buddylist_set_hide_offline_buddies(TRUE);
 
   /* Initialize commands system */
   cmd_init();
--- a/mcabber/src/roster.c	Mon Apr 25 20:34:59 2005 +0000
+++ b/mcabber/src/roster.c	Mon Apr 25 20:56:23 2005 +0000
@@ -273,9 +273,9 @@
 
 /* ### BuddyList functions ### */
 
-//  buddylist_hide_offline_buddies(hide)
+//  buddylist_set_hide_offline_buddies(hide)
 // "hide" values: 1=hide 0=show_all -1=invert
-void buddylist_hide_offline_buddies(int hide)
+void buddylist_set_hide_offline_buddies(int hide)
 {
   if (hide < 0)                     // NEG   (invert)
     hide_offline_buddies = !hide_offline_buddies;
@@ -285,6 +285,11 @@
     hide_offline_buddies = 1;
 }
 
+inline int buddylist_get_hide_offline_buddies(void)
+{
+  return hide_offline_buddies;
+}
+
 //  buddylist_build()
 // Creates the buddylist from the roster entries.
 void buddylist_build(void)
--- a/mcabber/src/roster.h	Mon Apr 25 20:34:59 2005 +0000
+++ b/mcabber/src/roster.h	Mon Apr 25 20:56:23 2005 +0000
@@ -44,7 +44,8 @@
 enum imstatus roster_getstatus(const char *jid);
 guint   roster_gettype(const char *jid);
 
-void buddylist_hide_offline_buddies(int hide);
+void buddylist_set_hide_offline_buddies(int hide);
+inline int buddylist_get_hide_offline_buddies(void);
 void buddy_hide_group(gpointer rosterdata, int hide);
 void buddylist_build(void);
 const char *buddy_getjid(gpointer rosterdata);
--- a/mcabber/src/screen.c	Mon Apr 25 20:34:59 2005 +0000
+++ b/mcabber/src/screen.c	Mon Apr 25 20:56:23 2005 +0000
@@ -577,7 +577,8 @@
     buddy_setflags(BUDDATA(current_buddy), ROSTER_FLAG_LOCK, TRUE);
 
   // We should rebuild the buddylist but not everytime
-  if (current_buddy && prev_st == offline)
+  if (current_buddy && prev_st == offline &&
+          buddylist_get_hide_offline_buddies())
     buddylist_build();
   if (chatmode)
     scr_ShowBuddyWindow();
@@ -597,7 +598,8 @@
     buddy_setflags(BUDDATA(current_buddy), ROSTER_FLAG_LOCK, TRUE);
 
   // We should rebuild the buddylist but not everytime
-  if (current_buddy && prev_st == offline)
+  if (current_buddy && prev_st == offline &&
+          buddylist_get_hide_offline_buddies())
     buddylist_build();
   if (chatmode)
     scr_ShowBuddyWindow();
@@ -608,14 +610,14 @@
   enum imstatus prev_st;
 
   if (current_buddy) {
-    prev_st = buddy_getstatus(BUDDATA(current_buddy));
     if (g_list_previous(current_buddy)) {
+      prev_st = buddy_getstatus(BUDDATA(current_buddy));
       buddy_setflags(BUDDATA(current_buddy), ROSTER_FLAG_LOCK, FALSE);
       current_buddy = g_list_previous(current_buddy);
       if (chatmode)
         buddy_setflags(BUDDATA(current_buddy), ROSTER_FLAG_LOCK, TRUE);
       // We should rebuild the buddylist but not everytime
-      if (prev_st == offline)
+      if (prev_st == offline && buddylist_get_hide_offline_buddies())
         buddylist_build();
       scr_DrawRoster();
     }
@@ -630,14 +632,14 @@
   enum imstatus prev_st;
 
   if (current_buddy) {
-    prev_st = buddy_getstatus(BUDDATA(current_buddy));
     if (g_list_next(current_buddy)) {
+      prev_st = buddy_getstatus(BUDDATA(current_buddy));
       buddy_setflags(BUDDATA(current_buddy), ROSTER_FLAG_LOCK, FALSE);
       current_buddy = g_list_next(current_buddy);
       if (chatmode)
         buddy_setflags(BUDDATA(current_buddy), ROSTER_FLAG_LOCK, TRUE);
       // We should rebuild the buddylist but not everytime
-      if (prev_st == offline)
+      if (prev_st == offline && buddylist_get_hide_offline_buddies())
         buddylist_build();
       scr_DrawRoster();
     }