comparison mcabber/src/commands.c @ 128:81ccb1091dd8

[/trunk] Changeset 141 by mikael * /group implementation (shrink/expand) * Replace scr_DrawRoster() calls with "update_roster = TRUE" in commands.c An inline function would maybe be better? * TODO update
author mikael
date Thu, 28 Apr 2005 10:16:32 +0000
parents 0f7ec11efd06
children 03be1cc94560
comparison
equal deleted inserted replaced
127:0f7ec11efd06 128:81ccb1091dd8
33 // Commands callbacks 33 // Commands callbacks
34 void do_roster(char *arg); 34 void do_roster(char *arg);
35 void do_clear(char *arg); 35 void do_clear(char *arg);
36 void do_status(char *arg); 36 void do_status(char *arg);
37 void do_add(char *arg); 37 void do_add(char *arg);
38 void do_group(char *arg);
38 39
39 // Global variable for the commands list 40 // Global variable for the commands list
40 static GSList *Commands; 41 static GSList *Commands;
41 42
42 43
61 void cmd_init(void) 62 void cmd_init(void)
62 { 63 {
63 cmd_add("add", "Add a jabber user", COMPL_JID, 0, &do_add); 64 cmd_add("add", "Add a jabber user", COMPL_JID, 0, &do_add);
64 cmd_add("clear", "Clear the dialog window", 0, 0, &do_clear); 65 cmd_add("clear", "Clear the dialog window", 0, 0, &do_clear);
65 //cmd_add("del"); 66 //cmd_add("del");
66 cmd_add("group", "Change group display settings", COMPL_GROUP, 0, NULL); 67 cmd_add("group", "Change group display settings", COMPL_GROUP, 0, &do_group);
67 cmd_add("help", "Display some help", COMPL_CMD, 0, NULL); 68 cmd_add("help", "Display some help", COMPL_CMD, 0, NULL);
68 //cmd_add("info"); 69 //cmd_add("info");
69 //cmd_add("move"); 70 //cmd_add("move");
70 //cmd_add("nick"); 71 //cmd_add("nick");
71 cmd_add("quit", "Exit the software", 0, 0, NULL); 72 cmd_add("quit", "Exit the software", 0, 0, NULL);
72 //cmd_add("rename"); 73 //cmd_add("rename");
73 //cmd_add("request_auth"); 74 //cmd_add("request_auth");
74 cmd_add("roster", "Manipulate the roster/buddylist", COMPL_ROSTER, 0, &do_roster); 75 cmd_add("roster", "Manipulate the roster/buddylist", COMPL_ROSTER, 0,
76 &do_roster);
75 cmd_add("say", "Say something to the selected buddy", 0, 0, NULL); 77 cmd_add("say", "Say something to the selected buddy", 0, 0, NULL);
76 //cmd_add("search"); 78 //cmd_add("search");
77 //cmd_add("send_auth"); 79 //cmd_add("send_auth");
78 cmd_add("status", "Show or set your status", COMPL_STATUS, 0, &do_status); 80 cmd_add("status", "Show or set your status", COMPL_STATUS, 0, &do_status);
79 81
207 209
208 void do_roster(char *arg) 210 void do_roster(char *arg)
209 { 211 {
210 if (!strcasecmp(arg, "top")) { 212 if (!strcasecmp(arg, "top")) {
211 scr_RosterTop(); 213 scr_RosterTop();
212 scr_DrawRoster(); 214 update_roster = TRUE;
213 } else if (!strcasecmp(arg, "bottom")) { 215 } else if (!strcasecmp(arg, "bottom")) {
214 scr_RosterBottom(); 216 scr_RosterBottom();
215 scr_DrawRoster(); 217 update_roster = TRUE;
216 } else if (!strcasecmp(arg, "hide_offline")) { 218 } else if (!strcasecmp(arg, "hide_offline")) {
217 buddylist_set_hide_offline_buddies(TRUE); 219 buddylist_set_hide_offline_buddies(TRUE);
218 if (current_buddy) 220 if (current_buddy)
219 buddylist_build(); 221 buddylist_build();
220 scr_DrawRoster(); 222 update_roster = TRUE;
221 } else if (!strcasecmp(arg, "show_offline")) { 223 } else if (!strcasecmp(arg, "show_offline")) {
222 buddylist_set_hide_offline_buddies(FALSE); 224 buddylist_set_hide_offline_buddies(FALSE);
223 buddylist_build(); 225 buddylist_build();
224 scr_DrawRoster(); 226 update_roster = TRUE;
225 } else 227 } else
226 scr_LogPrint("Unrecognized parameter!"); 228 scr_LogPrint("Unrecognized parameter!");
227 } 229 }
228 230
229 void do_clear(char *arg) 231 void do_clear(char *arg)
267 269
268 // FIXME check arg =~ jabber id 270 // FIXME check arg =~ jabber id
269 // 2nd parameter = optional nickname (XXX NULL for now...) 271 // 2nd parameter = optional nickname (XXX NULL for now...)
270 jb_addbuddy(arg, NULL); 272 jb_addbuddy(arg, NULL);
271 } 273 }
274
275 void do_group(char *arg)
276 {
277 gpointer group;
278
279 if (!arg || (*arg == 0)) {
280 scr_LogPrint("Missing parameter");
281 return;
282 }
283
284 if (!current_buddy)
285 return;
286
287 group = BUDDATA(current_buddy);
288 if (!(buddy_gettype(group) & ROSTER_TYPE_GROUP)) {
289 scr_LogPrint("For now you need to select a group "
290 "before using /group");
291 return;
292 }
293 if (!strcmp(arg, "expand")) {
294 buddy_setflags(group, ROSTER_FLAG_HIDE, FALSE);
295 } else if (!strcmp(arg, "shrink")) {
296 buddy_setflags(group, ROSTER_FLAG_HIDE, TRUE);
297 } else {
298 scr_LogPrint("Unrecognized parameter!");
299 return;
300 }
301
302 buddylist_build();
303 update_roster = TRUE;
304 }
305