Mercurial > ~mikael > mcabber > hg
comparison mcabber/src/commands.c @ 1009:c112423ac012
Add /room bookmark
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Sun, 12 Nov 2006 10:51:43 +0100 |
parents | b57a01ffeed6 |
children | 7f216b904315 |
comparison
equal
deleted
inserted
replaced
1008:bbf53cd43fbb | 1009:c112423ac012 |
---|---|
188 compl_add_category_word(COMPL_MULTILINE, "verbatim"); | 188 compl_add_category_word(COMPL_MULTILINE, "verbatim"); |
189 | 189 |
190 // Room category | 190 // Room category |
191 compl_add_category_word(COMPL_ROOM, "affil"); | 191 compl_add_category_word(COMPL_ROOM, "affil"); |
192 compl_add_category_word(COMPL_ROOM, "ban"); | 192 compl_add_category_word(COMPL_ROOM, "ban"); |
193 compl_add_category_word(COMPL_ROOM, "bookmark"); | |
193 compl_add_category_word(COMPL_ROOM, "destroy"); | 194 compl_add_category_word(COMPL_ROOM, "destroy"); |
194 compl_add_category_word(COMPL_ROOM, "invite"); | 195 compl_add_category_word(COMPL_ROOM, "invite"); |
195 compl_add_category_word(COMPL_ROOM, "join"); | 196 compl_add_category_word(COMPL_ROOM, "join"); |
196 compl_add_category_word(COMPL_ROOM, "kick"); | 197 compl_add_category_word(COMPL_ROOM, "kick"); |
197 compl_add_category_word(COMPL_ROOM, "leave"); | 198 compl_add_category_word(COMPL_ROOM, "leave"); |
2014 scr_WriteIncomingMessage(jid, "End of WHOIS", 0, HBB_PREFIX_INFO); | 2015 scr_WriteIncomingMessage(jid, "End of WHOIS", 0, HBB_PREFIX_INFO); |
2015 | 2016 |
2016 g_free(buffer); | 2017 g_free(buffer); |
2017 g_free(nick); | 2018 g_free(nick); |
2018 free_arg_lst(paramlst); | 2019 free_arg_lst(paramlst); |
2020 } | |
2021 | |
2022 static void room_bookmark(gpointer bud, char *arg) | |
2023 { | |
2024 const char *roomid; | |
2025 const char *name = NULL, *nick = NULL; | |
2026 enum { bm_add = 0, bm_del = 1 } action = 0; | |
2027 int autojoin = 0; | |
2028 | |
2029 if (arg && *arg) { | |
2030 // /room bookmark [add|del] [[+|-]autojoin] | |
2031 char **paramlst; | |
2032 char **pp; | |
2033 | |
2034 paramlst = split_arg(arg, 2, 0); // At most 2 parameters | |
2035 for (pp = paramlst; *pp; pp++) { | |
2036 if (!strcasecmp(*pp, "add")) | |
2037 action = bm_add; | |
2038 else if (!strcasecmp(*pp, "del")) | |
2039 action = bm_del; | |
2040 else if (!strcasecmp(*pp, "-autojoin")) | |
2041 autojoin = 0; | |
2042 else if (!strcasecmp(*pp, "+autojoin") || !strcasecmp(*pp, "autojoin")) | |
2043 autojoin = 1; | |
2044 } | |
2045 free_arg_lst(paramlst); | |
2046 } | |
2047 | |
2048 roomid = buddy_getjid(bud); | |
2049 | |
2050 if (action == bm_add) { | |
2051 name = buddy_getname(bud); | |
2052 nick = buddy_getnickname(bud); | |
2053 } | |
2054 | |
2055 jb_set_storage_bookmark(roomid, name, nick, NULL, autojoin); | |
2019 } | 2056 } |
2020 | 2057 |
2021 static void do_room(char *arg) | 2058 static void do_room(char *arg) |
2022 { | 2059 { |
2023 char **paramlst; | 2060 char **paramlst; |
2092 if ((arg = check_room_subcommand(arg, FALSE, bud)) != NULL) | 2129 if ((arg = check_room_subcommand(arg, FALSE, bud)) != NULL) |
2093 room_topic(bud, arg); | 2130 room_topic(bud, arg); |
2094 } else if (!strcasecmp(subcmd, "whois")) { | 2131 } else if (!strcasecmp(subcmd, "whois")) { |
2095 if ((arg = check_room_subcommand(arg, TRUE, bud)) != NULL) | 2132 if ((arg = check_room_subcommand(arg, TRUE, bud)) != NULL) |
2096 room_whois(bud, arg, TRUE); | 2133 room_whois(bud, arg, TRUE); |
2134 } else if (!strcasecmp(subcmd, "bookmark")) { | |
2135 if ((arg = check_room_subcommand(arg, FALSE, bud)) != NULL) | |
2136 room_bookmark(bud, arg); | |
2097 } else { | 2137 } else { |
2098 scr_LogPrint(LPRINT_NORMAL, "Unrecognized parameter!"); | 2138 scr_LogPrint(LPRINT_NORMAL, "Unrecognized parameter!"); |
2099 } | 2139 } |
2100 | 2140 |
2101 free_arg_lst(paramlst); | 2141 free_arg_lst(paramlst); |