aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/chat/chat.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/chat/chat.c')
-rw-r--r--src/plugins/chat/chat.c90
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
31struct GNUNET_CHAT_safe_write_struct 38struct 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
51struct 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
62struct 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
46static struct GNUNET_ClientServerConnection *sock; 70static 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 */
82static void * 106/* static */ void *
83write_nick_save_call (void *arg) 107write_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 */
120static void * 144/* static */ void *
121remove_nick_save_call (void *arg) 145remove_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
173receive_callback (void *cls, 197receive_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,
205static int 230static int
206member_list_callback (void *cls, 231member_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
259void 285static int
260on_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
283int
284create_chat_room_tab (char *room_name, char *nick) 286create_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
343int 348
344remove_chat_room_tab (char *room_name) 349
350void
351on_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
350void 374void