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, |
