summaryrefslogtreecommitdiff
path: root/plugins/ExternalAPI/m_mucc.h
blob: 44fc7dd2f14a1b78e561899bf79a4ca59bba2450 (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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
/*

MUCC Group Chat GUI Plugin for Miranda IM
Copyright (C) 2004  Piotr Piastucki

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., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

*/
#ifndef M_MUCC_INCLUDED
#define M_MUCC_INCLUDED

#define MUCC_WINDOW_CHATROOM		1
#define MUCC_WINDOW_CHATLIST		2
	
#define MUCC_WF_BOLD			0x0001		//enable the 'bold' button
#define MUCC_WF_ITALIC			0x0002		//enable the 'italics' button	
#define MUCC_WF_UNDERLINE		0x0004		//enable the 'underline' button
#define MUCC_WF_COLOR			0x0008		//enable the 'foreground color' button
#define MUCC_WF_BKGCOLOR		0x0010		//enable the 'background color' button
#define MUCC_WF_TYPNOTIF		0x0020		//enable typing notifications

typedef struct {
	int			cbSize;
	int	   		iType;					//Window type, MUCW_CHATROOM or MUCW_CHATLIST
	DWORD		dwFlags;				//Window look & feel flags
	const char *pszModule;				//Identifier of the module owning the window
	const char *pszModuleName;			//Name of the module as displayed to the user
	const char *pszID;					//Unique identifier of the chat room
	const char *pszName;				//Name of the chat room
	const char *pszUID;					//Identifier of the user
	const char *pszNick;				//Nick name used by the user in the chat room
	const char *pszStatusbarText;		//Optional text to set in the statusbar
} MUCCWINDOW;

#define MS_MUCC_NEW_WINDOW  "MUCC/NewWindow"

typedef struct {
	const char *pszID;					//Unique identifier of the group or the chat room
	const char *pszName;				//Name of the group or the chat room
	const char *pszNick;				//Name of the user
	const char *pszText;				//Text, usage depends on type of event
	int			iCount;					//Number of users in the chat room
	DWORD		dwFlags;				//Item flags
} MUCCQUERYITEM;

typedef struct {
	int			cbSize;
	int			iType;					//Query type, one of MUCC_EVENT_QUERY_* values
	const char *pszModule;				//Name of the module
	const char *pszParent;				//Parent of groups or the group chat rooms belong to
	int			iItemsNum;				//Number of items pItems iws pointing to
	MUCCQUERYITEM *pItems;				//Pointer to array of result items
	DWORD		dwFlags;				//Item flags
	int			iPage;					//Number of page in room list
	int			iLastPage;				//1 if the group has any child or there is a next page in room list, 0 otherwise
} MUCCQUERYRESULT;

#define MS_MUCC_QUERY_RESULT "MUCC/QueryResult"

/*
 * The following fields must be set for all events:
 * cbSize		- size of the structure
 * pszModule	- module name
 * iType		- event type (id)
 */
/*
 * Incoming messages
 */
#define MUCC_EVENT_MESSAGE			0x0001
/* pszID		- room ID
 * pszUID		- user UID (login etc.)
 * pszNick		- user nick (i.e. the name to be displayed)
 * pszText		- message
 * iFont		- font index
 * iFontSize	- font size
 * color		- text color
 * dwFlags		- flags
 * time			- time
 * bIsMe		- TRUE if this is an outgoing message, FALSE otherwise
 */
#define MUCC_EVENT_STATUS			0x0002
/* pszID		- room ID
 * pszUID		- user UID (login etc.)
 * pszNick		- user nick (i.e. the name to be displayed)
 * pszText		- unused
 * dwData		- status 
 * dwFlags
 * bIsMe
 */
#define MUCC_EVENT_INVITATION		0x0003
/*
*/
#define MUCC_EVENT_ERROR			0x0004

#define MUCC_EVENT_TOPIC			0x0005
/* pszID
 * pszText
 */
#define MUCC_EVENT_ROOM_INFO		0x0006

/*
 * Incoming & outgoing messages
 */
#define MUCC_EVENT_JOIN				0x0080
#define MUCC_EVENT_LEAVE			0x0081
/*
 * Outgoing messages
 */
#define MUCC_EVENT_INVITE			0x0102
#define MUCC_EVENT_START_PRIV		0x0103
#define MUCC_EVENT_REGISTER_NICK	0x0105
#define MUCC_EVENT_REMOVE_NICK		0x0106
#define MUCC_EVENT_REGISTER_ROOM	0x0107
#define MUCC_EVENT_REMOVE_ROOM		0x0108
#define MUCC_EVENT_KICK_BAN			0x0109
#define MUCC_EVENT_SET_USER_ROLE	0x010A
#define MUCC_EVENT_UNBAN			0x010B
/*
 * Queries
 */ 
#define MUCC_EVENT_QUERY_GROUPS		0x0120
#define MUCC_EVENT_QUERY_ROOMS		0x0121
#define MUCC_EVENT_QUERY_USER_ROOMS 0x0122
#define MUCC_EVENT_QUERY_USER_NICKS 0x0123
#define MUCC_EVENT_QUERY_SEARCH		0x0124
#define MUCC_EVENT_QUERY_CONTACTS	0x0130
#define MUCC_EVENT_QUERY_USERS		0x0131
/*
	Event flags
*/
#define MUCC_EF_FONT_BOLD			0x000100	// Bold font flag (MUCC_EVENT_MESSAGE)
#define MUCC_EF_FONT_ITALIC			0x000200	// Italic font flag (MUCC_EVENT_MESSAGE)
#define MUCC_EF_FONT_UNDERLINE		0x000400	// Underlined font flags (MUCC_EVENT_MESSAGE)
/*
#define MUCC_EF_FONT_NAME			0x000800
#define MUCC_EF_FONT_SIZE			0x001000
#define MUCC_EF_FONT_COLOR			0x002000
*/
#define MUCC_EF_ROOM_PUBLIC			0x000001
#define MUCC_EF_ROOM_NICKNAMES		0x000002
#define MUCC_EF_ROOM_PERMANENT		0x000004
#define MUCC_EF_ROOM_MEMBERS_ONLY	0x000008
#define MUCC_EF_ROOM_MODERATED		0x000020
#define MUCC_EF_ROOM_OFFICIAL		0x000040
#define MUCC_EF_ROOM_NAME			0x100000

#define MUCC_EF_USER_OWNER			0x000001
#define MUCC_EF_USER_ADMIN			0x000002
#define MUCC_EF_USER_REGISTERED		0x000004
#define MUCC_EF_USER_MEMBER			0x000008
#define MUCC_EF_USER_MODERATOR		0x000010
#define MUCC_EF_USER_BANNED			0x000020
#define MUCC_EF_USER_GLOBALOWNER	0x000040

typedef struct {
	int			cbSize;
	int			iType;				// Event type, one of MUCC_EVENT_* values
	DWORD		dwFlags;			// Event flags - MUCC_EF_*
	int			iFont;				// Text font index
	int			iFontSize;			// Text font size
	COLORREF	color;				// Text color
	const char *pszModule;			// Name of the module
	const char *pszID;				// Unique identifier of the chat room corresponding to the event,
	const char *pszName;			// Name of the chat room visible to the user
	const char *pszUID;				// User identifier, usage depends on type of event
	const char *pszNick;			// Nick, usage depends on type of event
	const char *pszText;			// Text, usage depends on type of event
	DWORD		dwData;				// DWORD data e.g. status
	BOOL		bIsMe;				// TRUE if the event is related to the user
	time_t		time;				// Time of the event
} MUCCEVENT;

#define MS_MUCC_EVENT  "MUCC/Event"
#define ME_MUCC_EVENT  "MUCC/OutgoingEvent"

#endif