comparison 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
comparison
equal deleted inserted replaced
165:b4921dbf8709 166:aa5b635520ef
284 } 284 }
285 285
286 void do_group(char *arg) 286 void do_group(char *arg)
287 { 287 {
288 gpointer group; 288 gpointer group;
289 guint leave_windowbuddy;
289 290
290 if (!arg || (*arg == 0)) { 291 if (!arg || (*arg == 0)) {
291 scr_LogPrint("Missing parameter"); 292 scr_LogPrint("Missing parameter");
292 return; 293 return;
293 } 294 }
294 295
295 if (!current_buddy) 296 if (!current_buddy) return;
296 return; 297
297 298 group = buddy_getgroup(BUDDATA(current_buddy));
298 group = BUDDATA(current_buddy); 299 leave_windowbuddy = (group != BUDDATA(current_buddy));
300
299 if (!(buddy_gettype(group) & ROSTER_TYPE_GROUP)) { 301 if (!(buddy_gettype(group) & ROSTER_TYPE_GROUP)) {
300 scr_LogPrint("For now you need to select a group " 302 scr_LogPrint("You need to select a group");
301 "before using /group"); 303 return;
302 return; 304 }
303 } 305
304 if (!strcasecmp(arg, "expand")) { 306 if (!strcasecmp(arg, "expand") || !strcasecmp(arg, "unfold")) {
305 buddy_setflags(group, ROSTER_FLAG_HIDE, FALSE); 307 buddy_setflags(group, ROSTER_FLAG_HIDE, FALSE);
306 } else if (!strcasecmp(arg, "shrink")) { 308 } else if (!strcasecmp(arg, "shrink") || !strcasecmp(arg, "fold")) {
307 buddy_setflags(group, ROSTER_FLAG_HIDE, TRUE); 309 buddy_setflags(group, ROSTER_FLAG_HIDE, TRUE);
308 } else if (!strcasecmp(arg, "toggle")) { 310 } else if (!strcasecmp(arg, "toggle")) {
309 buddy_setflags(group, ROSTER_FLAG_HIDE, 311 buddy_setflags(group, ROSTER_FLAG_HIDE,
310 !(buddy_getflags(group) & ROSTER_FLAG_HIDE)); 312 !(buddy_getflags(group) & ROSTER_FLAG_HIDE));
311 } else { 313 } else {
313 return; 315 return;
314 } 316 }
315 317
316 buddylist_build(); 318 buddylist_build();
317 update_roster = TRUE; 319 update_roster = TRUE;
320 if (leave_windowbuddy) scr_ShowBuddyWindow();
318 } 321 }
319 322
320 void do_say(char *arg) 323 void do_say(char *arg)
321 { 324 {
322 gpointer bud; 325 gpointer bud;