summaryrefslogtreecommitdiff
path: root/libpurple/protocols/mxit/multimx.h
blob: 868f91b216db0da1d096713177f16677e1d4c04c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
/*
 *					MXit Protocol libPurple Plugin
 *
 *						-- MultiMx GroupChat --
 *
 *				Andrew Victor	<libpurple@mxit.com>
 *
 *			(C) Copyright 2009	MXit Lifestyle (Pty) Ltd.
 *				<http://www.mxitlifestyle.com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
 */

#ifndef		_MXIT_MULTIMX_H_
#define		_MXIT_MULTIMX_H_

#include	"roster.h"


/* GroupChat Room state */
#define		STATE_CREATOR	0
#define		STATE_INVITED	1
#define		STATE_JOINED	2

/*
 * a MultiMX room
 */
struct multimx {
	char	roomname[MXIT_CP_MAX_ALIAS_LEN];	/* name of the room */
	char	roomid[MXIT_CP_MAX_JID_LEN];		/* internal JID for room */
	int		chatid;								/* libpurple chat ID */
	short	state;								/* state */
};


/*
 * Received a Subscription Request to a MultiMX room.
 */
void multimx_invite(struct MXitSession* session, struct contact* contact, const char* creator);

/*
 * MultiMX room has been added to the roster.
 */
void multimx_created(struct MXitSession* session, struct contact* contact);

/*
 * Is this username a MultiMX contact?
 */
gboolean is_multimx_contact(struct MXitSession* session, const char* username);

/*
 * Received a message from a MultiMX room.
 */
void multimx_message_received(struct RXMsgData* mx, char* message, int len, short msgtype, int msgflags);

/*
 * User has selected "Add Chat" from the main menu.
 */
GList* mxit_chat_info(PurpleConnection *gc);

/*
 * User has joined a chatroom, either because they are creating it or they accepted an invite.
 */
void mxit_chat_join(PurpleConnection *gc, GHashTable *data);

/*
 * User has rejected an invite to join a MultiMX room.
 */
void mxit_chat_reject(PurpleConnection *gc, GHashTable* components);

/*
 * Return name of chatroom (on mouse hover)
 */
char* mxit_chat_name(GHashTable *data);

/*
 * User has selected to invite somebody to a chatroom.
 */
void mxit_chat_invite(PurpleConnection *gc, int id, const char *msg, const char *name);

/*
 * User as closed the chat window, and the chatroom is not marked as persistent.
 */
void mxit_chat_leave(PurpleConnection *gc, int id);

/*
 * User has entered a message in a chatroom window, send it to the MXit server.
 */
int mxit_chat_send(PurpleConnection *gc, int id, const char *message, PurpleMessageFlags flags);


#endif		/* _MXIT_MULTIMX_H_ */