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
|