Mercurial > ~mikael > mcabber > hg
diff mcabber/src/commands.c @ 116:1e7e59775f12
[/trunk] Changeset 130 by mikael
* Add /status command.
* Fix /quit command when there is a trailing word ("/quit bye"...).
* Add an extension (.txt) to the TODO file.
author | mikael |
---|---|
date | Mon, 25 Apr 2005 15:26:17 +0000 |
parents | 8ac67e951eab |
children | 1e8f646e2c5b |
line wrap: on
line diff
--- a/mcabber/src/commands.c Sun Apr 24 20:50:16 2005 +0000 +++ b/mcabber/src/commands.c Mon Apr 25 15:26:17 2005 +0000 @@ -33,6 +33,7 @@ // Commands callbacks void do_roster(char *arg); void do_clear(char *arg); +void do_status(char *arg); // Global variable for the commands list static GSList *Commands; @@ -73,7 +74,7 @@ cmd_add("say", "Say something to the selected buddy", 0, 0, NULL); //cmd_add("search"); //cmd_add("send_auth"); - cmd_add("status", "Show or set your status", COMPL_STATUS, 0, NULL); + cmd_add("status", "Show or set your status", COMPL_STATUS, 0, &do_status); // Status category compl_add_category_word(COMPL_STATUS, "online"); @@ -171,9 +172,9 @@ *p = 0; // Command "quit"? - if (!strcasecmp(line, "/quit")) { - return 255; - } + if (!strncasecmp(line, "/quit", 5)) + if (!line[5] || line[5] == ' ') + return 255; // Commands handling curcmd = cmd_get(line); @@ -226,3 +227,31 @@ scr_Clear(); } +void do_status(char *arg) +{ + enum imstatus st; + + if (!arg || (*arg == 0)) { + scr_LogPrint("Your status is: %c", imstatus2char[jb_getstatus()]); + return; + } + + if (!strcmp(arg, "offline")) st = offline; + else if (!strcmp(arg, "online")) st = available; + else if (!strcmp(arg, "avail")) st = available; + else if (!strcmp(arg, "away")) st = away; + else if (!strcmp(arg, "invisible")) st = invisible; + else if (!strcmp(arg, "dnd")) st = dontdisturb; + else if (!strcmp(arg, "busy")) st = occupied; + else if (!strcmp(arg, "notavail")) st = notavail; + else if (!strcmp(arg, "free")) st = freeforchat; + else { + // XXX TODO no parameter == status request + scr_LogPrint("Unrecognized parameter!"); + return; + } + + // XXX special case if offline?? + jb_setstatus(st, NULL); // TODO handle message (instead of NULL) +} +