diff options
| -rw-r--r-- | data.c | 25 | ||||
| -rw-r--r-- | data.h | 3 | ||||
| -rw-r--r-- | gtk.c | 10 | 
3 files changed, 32 insertions, 6 deletions
| @@ -102,3 +102,28 @@ void data_add_incoming_message(const char* sender_jid, const char* content) {  	// received message so that future responses go to this ressource  } + +void data_add_outgoing_message(const char* sender_jid, const char* content, +                               chat_t* chat) { + +	// allocate and initialize message_t +	message_t* msg = malloc(sizeof(message_t)); +	msg->sender_jid = malloc(sizeof(char)*strlen(sender_jid)); +	strcpy(msg->sender_jid, sender_jid); +	msg->recipient_jid = malloc(sizeof(char)*strlen(chat->jid)); +	strcpy(msg->recipient_jid, chat->jid); +	msg->content = malloc(sizeof(char)*strlen(content)); +	strcpy(msg->content, content); +	msg->next = NULL; + +	// find pointer to next message of chat and add this message +	message_t* m; +	for (m = chat->messages; m != NULL; m=m->next); +	m = msg; + +	// TODO send this message via XMPP + +	// create GUI widget for this message +	gui_add_message_widget(msg, chat); + +} @@ -12,6 +12,7 @@ typedef enum {  typedef struct _message_t {  	char* content;  	char* sender_jid; +	char* recipient_jid;  	struct _message_t* next;  	void* widget;  } message_t; @@ -34,4 +35,6 @@ typedef struct _roster_item_t {  void data_add_roster_item(const char* jid, const char* subscription,                            const char* name);  void data_add_incoming_message(const char* sender_jid, const char* content); +void data_add_outgoing_message(const char* sender_jid, const char* content, +                               chat_t* chat);  #endif @@ -68,17 +68,15 @@ static void disconnect_cb(void) {  void send_message(chat_t* chat) { +	// cast void* to GUI-specific chat_widget_t*  	chat_widget_t* chat_widget = (chat_widget_t*)chat->widget; +	// get text of message and own JID  	const char* text = gtk_editable_get_text(GTK_EDITABLE(chat_widget->entry));  	const char* self = gtk_editable_get_text(GTK_EDITABLE(connector_jid_entry)); -	// execute dummy XMPP send TODO -	printf("Sending from %s to %s:\n> %s\n", self, chat->jid, text); - -	//// add message content to the chat -	//GtkWidget* message = gtk_label_new(text); -	//gtk_box_append(GTK_BOX(chat->chat_content_box), message); +	// add message to datastructure +	data_add_outgoing_message(self, text, chat);  	// clear text input  	GtkEntryBuffer* buffer; | 
