changeset 1351:43e777a5ff06

The group name can be specified in the /group command
author Mikael Berthe <mikael@lilotux.net>
date Sat, 10 Nov 2007 22:28:16 +0100
parents 096411233fce
children 61a54e172010
files mcabber/doc/help/de/hlp_group.txt mcabber/doc/help/en/hlp_group.txt mcabber/doc/help/fr/hlp_group.txt mcabber/doc/help/it/hlp_group.txt mcabber/doc/help/nl/hlp_group.txt mcabber/doc/help/pl/hlp_group.txt mcabber/doc/help/ru/hlp_group.txt mcabber/doc/help/uk/hlp_group.txt mcabber/src/commands.c
diffstat 9 files changed, 65 insertions(+), 45 deletions(-) [+]
line wrap: on
line diff
--- a/mcabber/doc/help/de/hlp_group.txt	Sat Nov 10 22:14:57 2007 +0100
+++ b/mcabber/doc/help/de/hlp_group.txt	Sat Nov 10 22:28:16 2007 +0100
@@ -1,11 +1,11 @@
 
- /GROUP fold|unfold|toggle
+ /GROUP fold|unfold|toggle [groupname]
 
 Dieser Befehl verändert die Anzeige der gerade ausgewählten Gruppe
 
-/group fold
+/group fold [groupname]
  Verstecke die gerade ausgewählte Gruppe
-/group unfold
+/group unfold [groupname]
  Die Gruppen-Ansicht aufklappen
-/group toggle
+/group toggle [groupname]
  Verstecken/Aufklappen der ausgewählten Gruppe
--- a/mcabber/doc/help/en/hlp_group.txt	Sat Nov 10 22:14:57 2007 +0100
+++ b/mcabber/doc/help/en/hlp_group.txt	Sat Nov 10 22:28:16 2007 +0100
@@ -1,11 +1,11 @@
 
- /GROUP fold|unfold|toggle
+ /GROUP fold|unfold|toggle [groupname]
 
 This command changes the current group display.
 
-/group fold
- Fold (shrink) the current group tree in the roster
-/group unfold
- Unfold (expand) the current group tree in the roster
-/group toggle
- Toggle the state (fold/unfold) of the current tree
+/group fold [groupname]
+ Fold (shrink) the current/specified group tree in the roster
+/group unfold [groupname]
+ Unfold (expand) the current/specified group tree in the roster
+/group toggle [groupname]
+ Toggle the state (fold/unfold) of the current/specified tree
--- a/mcabber/doc/help/fr/hlp_group.txt	Sat Nov 10 22:14:57 2007 +0100
+++ b/mcabber/doc/help/fr/hlp_group.txt	Sat Nov 10 22:28:16 2007 +0100
@@ -1,11 +1,11 @@
 
- /GROUP fold|unfold|toggle
+ /GROUP fold|unfold|toggle [groupname]
 
 Cette commande permet de modifier l'affichage des groupes.
 
-/group fold
+/group fold [groupname]
  Plie (cache) l'arborescence du groupe sélectionné
-/group unfold
+/group unfold [groupname]
  Déplie (montre) l'arborescence du groupe sélectionné
-/group toggle
+/group toggle [groupname]
  Inverse l'état (plié/déplié) du groupe sélectionné
--- a/mcabber/doc/help/it/hlp_group.txt	Sat Nov 10 22:14:57 2007 +0100
+++ b/mcabber/doc/help/it/hlp_group.txt	Sat Nov 10 22:28:16 2007 +0100
@@ -1,11 +1,11 @@
 
- /GROUP fold|unfold|toggle
+ /GROUP fold|unfold|toggle [groupname]
 
 Questo comando cambia la visualizzazione del gruppo corrente.
 
-/group fold
+/group fold [groupname]
  Chiude (collassa) l'albero del gruppo corrente nel roster
-/group unfold
+/group unfold [groupname]
  Apre (espande) l'albero del gruppo corrente nel roster
-/group toggle
+/group toggle [groupname]
  Cambia lo stato (collassato/espanso) dell'albero corrente
--- a/mcabber/doc/help/nl/hlp_group.txt	Sat Nov 10 22:14:57 2007 +0100
+++ b/mcabber/doc/help/nl/hlp_group.txt	Sat Nov 10 22:28:16 2007 +0100
@@ -1,11 +1,11 @@
 
- /GROUP fold|unfold|toggle
+ /GROUP fold|unfold|toggle [groupname]
 
 Dit commando verandert het aanzicht van de huidige groep.
 
-/group fold
+/group fold [groupname]
  Verbergen (inklappen) van de huidige group in het roster
-/group unfold
+/group unfold [groupname]
  Tonen (uitklappen) van de huidige group in het roster
-/group toggle
+/group toggle [groupname]
  Omschakelen van het aanzicht van de huidige groep (in-/uitklappen)
--- a/mcabber/doc/help/pl/hlp_group.txt	Sat Nov 10 22:14:57 2007 +0100
+++ b/mcabber/doc/help/pl/hlp_group.txt	Sat Nov 10 22:28:16 2007 +0100
@@ -1,11 +1,11 @@
 
- /GROUP fold|unfold|toggle
+ /GROUP fold|unfold|toggle [groupname]
 
 To polecenie pozwala zarządzać sposobem wyświetlania grupy.
 
-/group fold
+/group fold [groupname]
  Zwija obecne drzewo grupy w liście kontaktów
-/group unfold
+/group unfold [groupname]
  Rozwija obecne drzewo grupy w liście kontaktów
-/group toggle
+/group toggle [groupname]
  Przełącza między stanem (zwinięty/rozwinięty) w obecnym drzewie grupy
--- a/mcabber/doc/help/ru/hlp_group.txt	Sat Nov 10 22:14:57 2007 +0100
+++ b/mcabber/doc/help/ru/hlp_group.txt	Sat Nov 10 22:28:16 2007 +0100
@@ -1,11 +1,11 @@
 
- /GROUP fold|unfold|toggle
+ /GROUP fold|unfold|toggle [groupname]
 
 Эта команда управляет отображением списка пользователей определенной группы в списке контактов.
 
-/group fold
+/group fold [groupname]
  Сворачивает (закрывает) текущий развернутый список пользователей определенной группы в списке контактов
-/group unfold
+/group unfold [groupname]
  Разворачивает (раскрывает) текущий свернутый список пользователей определенной группы в списке контактов
-/group toggle
+/group toggle [groupname]
  Отображает текущее состояние (свернуто\развернуто) списка определенной группы в списке контактов
--- a/mcabber/doc/help/uk/hlp_group.txt	Sat Nov 10 22:14:57 2007 +0100
+++ b/mcabber/doc/help/uk/hlp_group.txt	Sat Nov 10 22:28:16 2007 +0100
@@ -1,11 +1,11 @@
 
- /GROUP fold|unfold|toggle
+ /GROUP fold|unfold|toggle [groupname]
 
 Змінює відображення поточної групи.
 
-/group fold
+/group fold [groupname]
  Згорнути дерево поточної групи у списку.
-/group unfold
+/group unfold [groupname]
  Розгорнути дерево поточної групи у списку.
-/group toggle
+/group toggle [groupname]
  Змінити стан відображення поточної групи.
--- a/mcabber/src/commands.c	Sat Nov 10 22:14:57 2007 +0100
+++ b/mcabber/src/commands.c	Sat Nov 10 22:28:16 2007 +0100
@@ -989,8 +989,10 @@
 
 static void do_group(char *arg)
 {
-  gpointer group;
+  gpointer group = NULL;
   guint leave_buddywindow;
+  char **paramlst;
+  char *subcmd;
 
   if (!*arg) {
     scr_LogPrint(LPRINT_NORMAL, "Missing parameter.");
@@ -1000,9 +1002,23 @@
   if (!current_buddy)
     return;
 
-  group = buddy_getgroup(BUDDATA(current_buddy));
+  paramlst = split_arg(arg, 2, 1); // subcmd, [arg]
+  subcmd = *paramlst;
+  arg = *(paramlst+1);
+
+  if (!subcmd || !*subcmd)
+    goto do_group_return;   // Should not happen anyway
+
+  if (arg && *arg) {
+    GSList *roster_elt;
+    roster_elt = roster_find(arg, namesearch, ROSTER_TYPE_GROUP);
+    if (roster_elt)
+      group = buddy_getgroup(roster_elt->data);
+  } else {
+    group = buddy_getgroup(BUDDATA(current_buddy));
+  }
   if (!group)
-    return;
+    goto do_group_return;
 
   // We'll have to redraw the chat window if we're not currently on the group
   // entry itself, because it means we'll have to leave the current buddy
@@ -1011,24 +1027,28 @@
 
   if (!(buddy_gettype(group) & ROSTER_TYPE_GROUP)) {
     scr_LogPrint(LPRINT_NORMAL, "You need to select a group.");
-    return;
+    goto do_group_return;
   }
 
-  if (!strcasecmp(arg, "expand") || !strcasecmp(arg, "unfold")) {
+  if (!strcasecmp(subcmd, "expand") || !strcasecmp(subcmd, "unfold")) {
     buddy_setflags(group, ROSTER_FLAG_HIDE, FALSE);
-  } else if (!strcasecmp(arg, "shrink") || !strcasecmp(arg, "fold")) {
+  } else if (!strcasecmp(subcmd, "shrink") || !strcasecmp(subcmd, "fold")) {
     buddy_setflags(group, ROSTER_FLAG_HIDE, TRUE);
-  } else if (!strcasecmp(arg, "toggle")) {
+  } else if (!strcasecmp(subcmd, "toggle")) {
     buddy_setflags(group, ROSTER_FLAG_HIDE,
-            !(buddy_getflags(group) & ROSTER_FLAG_HIDE));
+                   !(buddy_getflags(group) & ROSTER_FLAG_HIDE));
   } else {
     scr_LogPrint(LPRINT_NORMAL, "Unrecognized parameter!");
-    return;
+    goto do_group_return;
   }
 
   buddylist_build();
   update_roster = TRUE;
-  if (leave_buddywindow) scr_ShowBuddyWindow();
+  if (leave_buddywindow)
+    scr_ShowBuddyWindow();
+
+do_group_return:
+  free_arg_lst(paramlst);
 }
 
 static int send_message_to(const char *fjid, const char *msg, const char *subj,