Mercurial > pidgin
comparison src/protocols/irc/irc.c @ 7148:5c03e3e0d451
[gaim-migrate @ 7715]
View MOTD is now a proto action for IRC
committer: Tailor Script <tailor@pidgin.im>
author | Ethan Blanton <elb@pidgin.im> |
---|---|
date | Sat, 04 Oct 2003 22:59:43 +0000 |
parents | bf630f7dfdcd |
children | bb484e976aa8 |
comparison
equal
deleted
inserted
replaced
7147:e9867cdeb0fd | 7148:5c03e3e0d451 |
---|---|
27 #include "plugin.h" | 27 #include "plugin.h" |
28 #include "accountopt.h" | 28 #include "accountopt.h" |
29 #include "multi.h" | 29 #include "multi.h" |
30 #include "prpl.h" | 30 #include "prpl.h" |
31 #include "conversation.h" | 31 #include "conversation.h" |
32 #include "notify.h" | |
32 #include "debug.h" | 33 #include "debug.h" |
33 #include "blist.h" | 34 #include "blist.h" |
34 #include "util.h" | 35 #include "util.h" |
35 #include "irc.h" | 36 #include "irc.h" |
36 | 37 |
37 static void irc_buddy_append(char *name, struct irc_buddy *ib, GString *string); | 38 static void irc_buddy_append(char *name, struct irc_buddy *ib, GString *string); |
38 | 39 |
39 static const char *irc_blist_icon(GaimAccount *a, GaimBuddy *b); | 40 static const char *irc_blist_icon(GaimAccount *a, GaimBuddy *b); |
40 static void irc_blist_emblems(GaimBuddy *b, char **se, char **sw, char **nw, char **ne); | 41 static void irc_blist_emblems(GaimBuddy *b, char **se, char **sw, char **nw, char **ne); |
41 static GList *irc_away_states(GaimConnection *gc); | 42 static GList *irc_away_states(GaimConnection *gc); |
43 static GList *irc_actions(GaimConnection *gc); | |
42 /* static GList *irc_chat_info(GaimConnection *gc); */ | 44 /* static GList *irc_chat_info(GaimConnection *gc); */ |
43 static void irc_login(GaimAccount *account); | 45 static void irc_login(GaimAccount *account); |
44 static void irc_login_cb(gpointer data, gint source, GaimInputCondition cond); | 46 static void irc_login_cb(gpointer data, gint source, GaimInputCondition cond); |
45 static void irc_close(GaimConnection *gc); | 47 static void irc_close(GaimConnection *gc); |
46 static int irc_im_send(GaimConnection *gc, const char *who, const char *what, GaimConvImFlags flags); | 48 static int irc_im_send(GaimConnection *gc, const char *who, const char *what, GaimConvImFlags flags); |
47 static int irc_chat_send(GaimConnection *gc, int id, const char *what); | 49 static int irc_chat_send(GaimConnection *gc, int id, const char *what); |
48 static void irc_chat_join (GaimConnection *gc, GHashTable *data); | 50 static void irc_chat_join (GaimConnection *gc, GHashTable *data); |
49 static void irc_input_cb(gpointer data, gint source, GaimInputCondition cond); | 51 static void irc_input_cb(gpointer data, gint source, GaimInputCondition cond); |
50 | 52 |
53 static void irc_view_motd(GaimConnection *gc) | |
54 { | |
55 struct irc_conn *irc; | |
56 char *title; | |
57 | |
58 if (gc == NULL || gc->proto_data == NULL) { | |
59 gaim_debug(GAIM_DEBUG_ERROR, "irc", "got MOTD request for NULL gc\n"); | |
60 return; | |
61 } | |
62 irc = gc->proto_data; | |
63 if (irc->motd == NULL) { | |
64 gaim_notify_error(gc, _("Error displaying MOTD"), _("No MOTD available"), | |
65 _("There is no MOTD associated with this connection.")); | |
66 return; | |
67 } | |
68 title = g_strdup_printf(_("MOTD for %s"), irc->server); | |
69 gaim_notify_formatted(gc, title, title, NULL, irc->motd->str, NULL, NULL); | |
70 } | |
71 | |
51 static guint irc_nick_hash(const char *nick); | 72 static guint irc_nick_hash(const char *nick); |
52 static gboolean irc_nick_equal(const char *nick1, const char *nick2); | 73 static gboolean irc_nick_equal(const char *nick1, const char *nick2); |
53 static void irc_buddy_free(struct irc_buddy *ib); | 74 static void irc_buddy_free(struct irc_buddy *ib); |
54 | 75 |
55 static GaimPlugin *_irc_plugin = NULL; | 76 static GaimPlugin *_irc_plugin = NULL; |
103 } | 124 } |
104 | 125 |
105 static GList *irc_away_states(GaimConnection *gc) | 126 static GList *irc_away_states(GaimConnection *gc) |
106 { | 127 { |
107 return g_list_append(NULL, (gpointer)GAIM_AWAY_CUSTOM); | 128 return g_list_append(NULL, (gpointer)GAIM_AWAY_CUSTOM); |
129 } | |
130 | |
131 static GList *irc_actions(GaimConnection *gc) | |
132 { | |
133 struct irc_conn *irc = gc->proto_data; | |
134 struct proto_actions_menu *pam; | |
135 GList *list = NULL; | |
136 | |
137 pam = g_new0(struct proto_actions_menu, 1); | |
138 pam->label = _("View MOTD"); | |
139 pam->callback = irc_view_motd; | |
140 pam->gc = gc; | |
141 list = g_list_append(list, pam); | |
142 | |
143 return list; | |
108 } | 144 } |
109 | 145 |
110 static GList *irc_buddy_menu(GaimConnection *gc, const char *who) | 146 static GList *irc_buddy_menu(GaimConnection *gc, const char *who) |
111 { | 147 { |
112 return NULL; | 148 return NULL; |
435 irc_blist_icon, | 471 irc_blist_icon, |
436 irc_blist_emblems, | 472 irc_blist_emblems, |
437 NULL, | 473 NULL, |
438 NULL, | 474 NULL, |
439 irc_away_states, | 475 irc_away_states, |
440 NULL, | 476 irc_actions, |
441 irc_buddy_menu, | 477 irc_buddy_menu, |
442 irc_chat_join_info, | 478 irc_chat_join_info, |
443 irc_login, | 479 irc_login, |
444 irc_close, | 480 irc_close, |
445 irc_im_send, | 481 irc_im_send, |