Mercurial > hg
changeset 132:6531bcf030ae
[/trunk] Changeset 145 by mikael
* Add /say command.
author | mikael |
---|---|
date | Thu, 28 Apr 2005 14:41:16 +0000 |
parents | 6efdcd9346dd |
children | a27b22e3b3a1 |
files | mcabber/src/commands.c |
diffstat | 1 files changed, 27 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/mcabber/src/commands.c Thu Apr 28 14:41:01 2005 +0000 +++ b/mcabber/src/commands.c Thu Apr 28 14:41:16 2005 +0000 @@ -36,6 +36,7 @@ void do_status(char *arg); void do_add(char *arg); void do_group(char *arg); +void do_say(char *arg); // Global variable for the commands list static GSList *Commands; @@ -74,7 +75,7 @@ //cmd_add("request_auth"); cmd_add("roster", "Manipulate the roster/buddylist", COMPL_ROSTER, 0, &do_roster); - cmd_add("say", "Say something to the selected buddy", 0, 0, NULL); + cmd_add("say", "Say something to the selected buddy", 0, 0, &do_say); //cmd_add("search"); //cmd_add("send_auth"); cmd_add("status", "Show or set your status", COMPL_STATUS, 0, &do_status); @@ -167,16 +168,17 @@ char *p; cmd *curcmd; - if (*line == 0 || *line != '/') { - scr_set_chatmode(TRUE); + if (!*line) { // User only pressed enter if (current_buddy) { + scr_set_chatmode(TRUE); buddy_setflags(BUDDATA(current_buddy), ROSTER_FLAG_LOCK, TRUE); + scr_ShowBuddyWindow(); + } + return 0; + } - if (!*line) - scr_ShowBuddyWindow(); - else - send_message(line); // FIXME: are we talking to a _buddy_? - } + if (*line != '/') { + do_say(line); return 0; } @@ -315,3 +317,20 @@ update_roster = TRUE; } +void do_say(char *arg) +{ + gpointer bud = BUDDATA(current_buddy); + + scr_set_chatmode(TRUE); + if (current_buddy) { + if (!(buddy_gettype(bud) & ROSTER_TYPE_USER)) { + scr_LogPrint("This is not a user"); + return; + } + buddy_setflags(bud, ROSTER_FLAG_LOCK, TRUE); + send_message(arg); + } else { + scr_LogPrint("Who are you talking to??"); + } +} +