diff mcabber/src/commands.c @ 166:aa5b635520ef

[/trunk] Changeset 178 by mikael * Allow /group command to act on groups' buddies * Add buddy_getgroup()
author mikael
date Wed, 04 May 2005 17:11:59 +0000
parents faf534be8ff0
children 4ce9ff808baa
line wrap: on
line diff
--- a/mcabber/src/commands.c	Wed May 04 09:07:49 2005 +0000
+++ b/mcabber/src/commands.c	Wed May 04 17:11:59 2005 +0000
@@ -286,24 +286,26 @@
 void do_group(char *arg)
 {
   gpointer group;
+  guint leave_windowbuddy;
 
   if (!arg || (*arg == 0)) {
     scr_LogPrint("Missing parameter");
     return;
   }
 
-  if (!current_buddy)
-    return;
+  if (!current_buddy) return;
 
-  group = BUDDATA(current_buddy);
+  group = buddy_getgroup(BUDDATA(current_buddy));
+  leave_windowbuddy = (group != BUDDATA(current_buddy));
+
   if (!(buddy_gettype(group) & ROSTER_TYPE_GROUP)) {
-    scr_LogPrint("For now you need to select a group "
-                 "before using /group");
+    scr_LogPrint("You need to select a group");
     return;
   }
-  if (!strcasecmp(arg, "expand")) {
+
+  if (!strcasecmp(arg, "expand") || !strcasecmp(arg, "unfold")) {
     buddy_setflags(group, ROSTER_FLAG_HIDE, FALSE);
-  } else if (!strcasecmp(arg, "shrink")) {
+  } else if (!strcasecmp(arg, "shrink") || !strcasecmp(arg, "fold")) {
     buddy_setflags(group, ROSTER_FLAG_HIDE, TRUE);
   } else if (!strcasecmp(arg, "toggle")) {
     buddy_setflags(group, ROSTER_FLAG_HIDE,
@@ -315,6 +317,7 @@
 
   buddylist_build();
   update_roster = TRUE;
+  if (leave_windowbuddy) scr_ShowBuddyWindow();
 }
 
 void do_say(char *arg)