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,