mcabber/mcabber/commands.c
changeset 2016 e9b6e168a45e
parent 2013 8dc418af3e72
child 2020 46a21258ad91
equal deleted inserted replaced
2015:db8ec238cd2c 2016:e9b6e168a45e
  1221   paramlst = split_arg(arg, 2, 0); // subcmd, [arg]
  1221   paramlst = split_arg(arg, 2, 0); // subcmd, [arg]
  1222   subcmd = *paramlst;
  1222   subcmd = *paramlst;
  1223   arg = *(paramlst+1);
  1223   arg = *(paramlst+1);
  1224 
  1224 
  1225   if (!subcmd || !*subcmd)
  1225   if (!subcmd || !*subcmd)
  1226     goto do_group_return;   // Should not happen anyway
  1226     goto do_group_return;   // Should not happen
       
  1227 
       
  1228   if (!strcasecmp(subcmd, "expand") || !strcasecmp(subcmd, "unfold"))
       
  1229     group_state = group_unfold;
       
  1230   else if (!strcasecmp(subcmd, "shrink") || !strcasecmp(subcmd, "fold"))
       
  1231     group_state = group_fold;
       
  1232   else if (!strcasecmp(subcmd, "toggle"))
       
  1233     group_state = group_toggle;
       
  1234   else {
       
  1235     scr_LogPrint(LPRINT_NORMAL, "Unrecognized parameter!");
       
  1236     goto do_group_return;
       
  1237   }
  1227 
  1238 
  1228   if (arg && *arg) {
  1239   if (arg && *arg) {
  1229     GSList *roster_elt;
  1240     GSList *roster_elt;
  1230     char *group_utf8 = to_utf8(arg);
  1241     char *group_utf8 = to_utf8(arg);
  1231     roster_elt = roster_find(group_utf8, namesearch, ROSTER_TYPE_GROUP);
  1242     roster_elt = roster_find(group_utf8, namesearch, ROSTER_TYPE_GROUP);
  1233     if (roster_elt)
  1244     if (roster_elt)
  1234       group = buddy_getgroup(roster_elt->data);
  1245       group = buddy_getgroup(roster_elt->data);
  1235   } else {
  1246   } else {
  1236     group = buddy_getgroup(BUDDATA(current_buddy));
  1247     group = buddy_getgroup(BUDDATA(current_buddy));
  1237   }
  1248   }
  1238   if (!group)
  1249   if (!group) {
       
  1250     scr_LogPrint(LPRINT_NORMAL, "Group not found.");
  1239     goto do_group_return;
  1251     goto do_group_return;
       
  1252   }
  1240 
  1253 
  1241   // We'll have to redraw the chat window if we're not currently on the group
  1254   // We'll have to redraw the chat window if we're not currently on the group
  1242   // entry itself, because it means we'll have to leave the current buddy
  1255   // entry itself, because it means we'll have to leave the current buddy
  1243   // chat window.
  1256   // chat window.
  1244   leave_buddywindow = (group != BUDDATA(current_buddy) &&
  1257   leave_buddywindow = (group != BUDDATA(current_buddy) &&
  1245                        group == buddy_getgroup(BUDDATA(current_buddy)));
  1258                        group == buddy_getgroup(BUDDATA(current_buddy)));
  1246 
  1259 
  1247 
       
  1248   if (!(buddy_gettype(group) & ROSTER_TYPE_GROUP)) {
  1260   if (!(buddy_gettype(group) & ROSTER_TYPE_GROUP)) {
  1249     scr_LogPrint(LPRINT_NORMAL, "You need to select a group.");
  1261     scr_LogPrint(LPRINT_NORMAL, "You need to select a group.");
  1250     goto do_group_return;
       
  1251   }
       
  1252 
       
  1253   if (!strcasecmp(subcmd, "expand") || !strcasecmp(subcmd, "unfold"))
       
  1254     group_state = group_unfold;
       
  1255   else if (!strcasecmp(subcmd, "shrink") || !strcasecmp(subcmd, "fold"))
       
  1256     group_state = group_fold;
       
  1257   else if (!strcasecmp(subcmd, "toggle"))
       
  1258     group_state = group_toggle;
       
  1259   else {
       
  1260     scr_LogPrint(LPRINT_NORMAL, "Unrecognized parameter!");
       
  1261     goto do_group_return;
  1262     goto do_group_return;
  1262   }
  1263   }
  1263 
  1264 
  1264   if (group_state != group_unfold && leave_buddywindow)
  1265   if (group_state != group_unfold && leave_buddywindow)
  1265     scr_roster_prev_group();
  1266     scr_roster_prev_group();