comparison mcabber/src/commands.c @ 132:6531bcf030ae

[/trunk] Changeset 145 by mikael * Add /say command.
author mikael
date Thu, 28 Apr 2005 14:41:16 +0000
parents 60694c9ddde3
children faf534be8ff0
comparison
equal deleted inserted replaced
131:6efdcd9346dd 132:6531bcf030ae
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 void do_group(char *arg);
39 void do_say(char *arg);
39 40
40 // Global variable for the commands list 41 // Global variable for the commands list
41 static GSList *Commands; 42 static GSList *Commands;
42 43
43 44
72 cmd_add("quit", "Exit the software", 0, 0, NULL); 73 cmd_add("quit", "Exit the software", 0, 0, NULL);
73 //cmd_add("rename"); 74 //cmd_add("rename");
74 //cmd_add("request_auth"); 75 //cmd_add("request_auth");
75 cmd_add("roster", "Manipulate the roster/buddylist", COMPL_ROSTER, 0, 76 cmd_add("roster", "Manipulate the roster/buddylist", COMPL_ROSTER, 0,
76 &do_roster); 77 &do_roster);
77 cmd_add("say", "Say something to the selected buddy", 0, 0, NULL); 78 cmd_add("say", "Say something to the selected buddy", 0, 0, &do_say);
78 //cmd_add("search"); 79 //cmd_add("search");
79 //cmd_add("send_auth"); 80 //cmd_add("send_auth");
80 cmd_add("status", "Show or set your status", COMPL_STATUS, 0, &do_status); 81 cmd_add("status", "Show or set your status", COMPL_STATUS, 0, &do_status);
81 82
82 // Status category 83 // Status category
165 int process_line(char *line) 166 int process_line(char *line)
166 { 167 {
167 char *p; 168 char *p;
168 cmd *curcmd; 169 cmd *curcmd;
169 170
170 if (*line == 0 || *line != '/') { 171 if (!*line) { // User only pressed enter
171 scr_set_chatmode(TRUE);
172 if (current_buddy) { 172 if (current_buddy) {
173 scr_set_chatmode(TRUE);
173 buddy_setflags(BUDDATA(current_buddy), ROSTER_FLAG_LOCK, TRUE); 174 buddy_setflags(BUDDATA(current_buddy), ROSTER_FLAG_LOCK, TRUE);
174 175 scr_ShowBuddyWindow();
175 if (!*line)
176 scr_ShowBuddyWindow();
177 else
178 send_message(line); // FIXME: are we talking to a _buddy_?
179 } 176 }
177 return 0;
178 }
179
180 if (*line != '/') {
181 do_say(line);
180 return 0; 182 return 0;
181 } 183 }
182 184
183 /* It is a command */ 185 /* It is a command */
184 // Remove trailing spaces: 186 // Remove trailing spaces:
313 315
314 buddylist_build(); 316 buddylist_build();
315 update_roster = TRUE; 317 update_roster = TRUE;
316 } 318 }
317 319
320 void do_say(char *arg)
321 {
322 gpointer bud = BUDDATA(current_buddy);
323
324 scr_set_chatmode(TRUE);
325 if (current_buddy) {
326 if (!(buddy_gettype(bud) & ROSTER_TYPE_USER)) {
327 scr_LogPrint("This is not a user");
328 return;
329 }
330 buddy_setflags(bud, ROSTER_FLAG_LOCK, TRUE);
331 send_message(arg);
332 } else {
333 scr_LogPrint("Who are you talking to??");
334 }
335 }
336