diff options
Diffstat (limited to 'src/plugins/chat/chat.c')
-rw-r--r-- | src/plugins/chat/chat.c | 90 |
1 files changed, 57 insertions, 33 deletions
diff --git a/src/plugins/chat/chat.c b/src/plugins/chat/chat.c index 33af07fe..9be89250 100644 --- a/src/plugins/chat/chat.c +++ b/src/plugins/chat/chat.c | |||
@@ -26,7 +26,14 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | 28 | ||
29 | #include "chat.h" | 29 | #include "platform.h" |
30 | #include <GNUnet/gnunet_chat_lib.h> | ||
31 | #include "gnunetgtk_common.h" | ||
32 | |||
33 | /* YUCK -- why? */ | ||
34 | #include "../fs/meta.h" | ||
35 | #include "../fs/meta.c" | ||
36 | |||
30 | 37 | ||
31 | struct GNUNET_CHAT_safe_write_struct | 38 | struct GNUNET_CHAT_safe_write_struct |
32 | { | 39 | { |
@@ -41,6 +48,23 @@ struct GNUNET_CHAT_safe_nick_write_struct | |||
41 | const char *nick; | 48 | const char *nick; |
42 | }; | 49 | }; |
43 | 50 | ||
51 | struct GNUNET_CHAT_gui_chat_client | ||
52 | { | ||
53 | struct GNUNET_CHAT_gui_chat_client *next; | ||
54 | struct GNUNET_CHAT_gui_chat_client *prev; | ||
55 | int number; | ||
56 | GtkWidget *chatFrame; | ||
57 | struct GNUNET_CHAT_Room *room; | ||
58 | gchar *room_name; | ||
59 | |||
60 | }; | ||
61 | |||
62 | struct GNUNET_CHAT_member_list | ||
63 | { | ||
64 | struct GNUNET_CHAT_member_list *next; | ||
65 | struct GNUNET_CHAT_member_list *prev; | ||
66 | char *nick; | ||
67 | }; | ||
44 | 68 | ||
45 | 69 | ||
46 | static struct GNUNET_ClientServerConnection *sock; | 70 | static struct GNUNET_ClientServerConnection *sock; |
@@ -79,7 +103,7 @@ write_save_call (void *arg) | |||
79 | } | 103 | } |
80 | 104 | ||
81 | /* Safe call to add a nick to the chat room view */ | 105 | /* Safe call to add a nick to the chat room view */ |
82 | static void * | 106 | /* static */ void * |
83 | write_nick_save_call (void *arg) | 107 | write_nick_save_call (void *arg) |
84 | { | 108 | { |
85 | struct GNUNET_CHAT_safe_nick_write_struct *writeholder = arg; | 109 | struct GNUNET_CHAT_safe_nick_write_struct *writeholder = arg; |
@@ -117,7 +141,7 @@ write_nick_save_call (void *arg) | |||
117 | } | 141 | } |
118 | 142 | ||
119 | /* Safe call to remove a nick from the chat room view */ | 143 | /* Safe call to remove a nick from the chat room view */ |
120 | static void * | 144 | /* static */ void * |
121 | remove_nick_save_call (void *arg) | 145 | remove_nick_save_call (void *arg) |
122 | { | 146 | { |
123 | struct GNUNET_CHAT_safe_nick_write_struct *writeholder = arg; | 147 | struct GNUNET_CHAT_safe_nick_write_struct *writeholder = arg; |
@@ -173,6 +197,7 @@ static int | |||
173 | receive_callback (void *cls, | 197 | receive_callback (void *cls, |
174 | struct GNUNET_CHAT_Room *room, | 198 | struct GNUNET_CHAT_Room *room, |
175 | const GNUNET_HashCode *sender, | 199 | const GNUNET_HashCode *sender, |
200 | const struct GNUNET_ECRS_MetaData * member_info, | ||
176 | const char *message, | 201 | const char *message, |
177 | GNUNET_CHAT_MSG_OPTIONS options) | 202 | GNUNET_CHAT_MSG_OPTIONS options) |
178 | { | 203 | { |
@@ -205,7 +230,8 @@ receive_callback (void *cls, | |||
205 | static int | 230 | static int |
206 | member_list_callback (void *cls, | 231 | member_list_callback (void *cls, |
207 | const struct GNUNET_ECRS_MetaData * member_info, | 232 | const struct GNUNET_ECRS_MetaData * member_info, |
208 | const GNUNET_RSA_PublicKey * pkey) | 233 | const GNUNET_RSA_PublicKey * pkey, |
234 | GNUNET_CHAT_MSG_OPTIONS opt) | ||
209 | { | 235 | { |
210 | struct GNUNET_CHAT_gui_chat_client *client = cls; | 236 | struct GNUNET_CHAT_gui_chat_client *client = cls; |
211 | GtkWidget *chatnicklist; | 237 | GtkWidget *chatnicklist; |
@@ -256,31 +282,7 @@ init_chat (struct GNUNET_GE_Context *ectx, | |||
256 | gtk_widget_show (tab); | 282 | gtk_widget_show (tab); |
257 | } | 283 | } |
258 | 284 | ||
259 | void | 285 | static int |
260 | on_chat_room_name_button_click_event_chat (GtkWidget * widget, gpointer data) | ||
261 | { | ||
262 | GtkEntry *room_entry; | ||
263 | GtkEntry *nick_entry; | ||
264 | char *room_text; | ||
265 | char *nick_text; | ||
266 | |||
267 | room_entry = | ||
268 | GTK_ENTRY (glade_xml_get_widget | ||
269 | (GNUNET_GTK_get_main_glade_XML (), "chatRoomNameEntry")); | ||
270 | nick_entry = | ||
271 | GTK_ENTRY (glade_xml_get_widget | ||
272 | (GNUNET_GTK_get_main_glade_XML (), "chatRoomMonikerEntry")); | ||
273 | |||
274 | room_text = (char *) gtk_entry_get_text (room_entry); | ||
275 | nick_text = (char *) gtk_entry_get_text (nick_entry); | ||
276 | |||
277 | create_chat_room_tab (room_text, nick_text); | ||
278 | |||
279 | gtk_entry_set_text (nick_entry, ""); | ||
280 | gtk_entry_set_text (room_entry, ""); | ||
281 | } | ||
282 | |||
283 | int | ||
284 | create_chat_room_tab (char *room_name, char *nick) | 286 | create_chat_room_tab (char *room_name, char *nick) |
285 | { | 287 | { |
286 | GladeXML *chatXML; | 288 | GladeXML *chatXML; |
@@ -291,6 +293,7 @@ create_chat_room_tab (char *room_name, char *nick) | |||
291 | struct GNUNET_CHAT_gui_chat_client *client; | 293 | struct GNUNET_CHAT_gui_chat_client *client; |
292 | struct GNUNET_CHAT_gui_chat_client *pos; | 294 | struct GNUNET_CHAT_gui_chat_client *pos; |
293 | struct GNUNET_ECRS_MetaData * meta; | 295 | struct GNUNET_ECRS_MetaData * meta; |
296 | GNUNET_HashCode me; | ||
294 | 297 | ||
295 | chatnotebook = | 298 | chatnotebook = |
296 | glade_xml_get_widget (GNUNET_GTK_get_main_glade_XML (), "chatnotebook"); | 299 | glade_xml_get_widget (GNUNET_GTK_get_main_glade_XML (), "chatnotebook"); |
@@ -316,9 +319,11 @@ create_chat_room_tab (char *room_name, char *nick) | |||
316 | GNUNET_CHAT_join_room (chat_ectx, chat_cfg, nick, | 319 | GNUNET_CHAT_join_room (chat_ectx, chat_cfg, nick, |
317 | meta, | 320 | meta, |
318 | room_name, | 321 | room_name, |
322 | -1, | ||
319 | &receive_callback, client, &member_list_callback, | 323 | &receive_callback, client, &member_list_callback, |
320 | client, | 324 | client, |
321 | NULL, NULL); | 325 | NULL, NULL, |
326 | &me); | ||
322 | GNUNET_ECRS_meta_data_destroy(meta); | 327 | GNUNET_ECRS_meta_data_destroy(meta); |
323 | client->room = chatRoom; | 328 | client->room = chatRoom; |
324 | client->chatFrame = newChatWindow; | 329 | client->chatFrame = newChatWindow; |
@@ -340,11 +345,30 @@ create_chat_room_tab (char *room_name, char *nick) | |||
340 | return GNUNET_OK; | 345 | return GNUNET_OK; |
341 | } | 346 | } |
342 | 347 | ||
343 | int | 348 | |
344 | remove_chat_room_tab (char *room_name) | 349 | |
350 | void | ||
351 | on_chat_room_name_button_click_event_chat (GtkWidget * widget, gpointer data) | ||
345 | { | 352 | { |
353 | GtkEntry *room_entry; | ||
354 | GtkEntry *nick_entry; | ||
355 | char *room_text; | ||
356 | char *nick_text; | ||
346 | 357 | ||
347 | return GNUNET_SYSERR; | 358 | room_entry = |
359 | GTK_ENTRY (glade_xml_get_widget | ||
360 | (GNUNET_GTK_get_main_glade_XML (), "chatRoomNameEntry")); | ||
361 | nick_entry = | ||
362 | GTK_ENTRY (glade_xml_get_widget | ||
363 | (GNUNET_GTK_get_main_glade_XML (), "chatRoomMonikerEntry")); | ||
364 | |||
365 | room_text = (char *) gtk_entry_get_text (room_entry); | ||
366 | nick_text = (char *) gtk_entry_get_text (nick_entry); | ||
367 | |||
368 | create_chat_room_tab (room_text, nick_text); | ||
369 | |||
370 | gtk_entry_set_text (nick_entry, ""); | ||
371 | gtk_entry_set_text (room_entry, ""); | ||
348 | } | 372 | } |
349 | 373 | ||
350 | void | 374 | void |