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