summaryrefslogtreecommitdiff
path: root/libpurple/purplechatuser.h
blob: eaed2a4ce88df4730da1709a94f9def4aa0ed21d (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
/*
 * Purple - Internet Messaging Library
 * Copyright (C) Pidgin Developers <devel@pidgin.im>
 *
 * Purple is the legal property of its developers, whose names are too numerous
 * to list here.  Please refer to the COPYRIGHT file distributed with this
 * source distribution.
 *
 * 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, see <https://www.gnu.org/licenses/>.
 */

#if !defined(PURPLE_GLOBAL_HEADER_INSIDE) && !defined(PURPLE_COMPILATION)
# error "only <purple.h> may be included directly"
#endif

#ifndef PURPLE_CHAT_USER_H
#define PURPLE_CHAT_USER_H

#include <glib.h>
#include <glib-object.h>

/**
 * PurpleChatUser:
 *
 * Structure representing a chat user instance.
 */

/**
 * PurpleChatUserFlags:
 * @PURPLE_CHAT_USER_NONE:    No flags
 * @PURPLE_CHAT_USER_VOICE:   Voiced user or "Participant"
 * @PURPLE_CHAT_USER_HALFOP:  Half-op
 * @PURPLE_CHAT_USER_OP:      Channel Op or Moderator
 * @PURPLE_CHAT_USER_FOUNDER: Channel Founder
 * @PURPLE_CHAT_USER_TYPING:  Currently typing
 * @PURPLE_CHAT_USER_AWAY:    Currently away.
 *
 * Flags applicable to users in Chats.
 */
typedef enum /*< flags >*/
{
	PURPLE_CHAT_USER_NONE     = 0x0000,
	PURPLE_CHAT_USER_VOICE    = 0x0001,
	PURPLE_CHAT_USER_HALFOP   = 0x0002,
	PURPLE_CHAT_USER_OP       = 0x0004,
	PURPLE_CHAT_USER_FOUNDER  = 0x0008,
	PURPLE_CHAT_USER_TYPING   = 0x0010,
	PURPLE_CHAT_USER_AWAY     = 0x0020
} PurpleChatUserFlags;

#define PURPLE_TYPE_CHAT_USER purple_chat_user_get_type()
G_DECLARE_FINAL_TYPE(PurpleChatUser, purple_chat_user, PURPLE, CHAT_USER,
                     GObject)

#include <libpurple/purplechatconversation.h>

G_BEGIN_DECLS

/**
 * purple_chat_user_new:
 * @chat: The chat that the buddy belongs to.
 * @name: The name.
 * @alias: The alias.
 * @flags: The flags.
 *
 * Creates a new chat user
 *
 * Returns: The new chat user
 */
PurpleChatUser *purple_chat_user_new(PurpleChatConversation *chat,
                                     const gchar *name,
                                     const gchar *alias,
                                     PurpleChatUserFlags flags);

/**
 * purple_chat_user_set_chat:
 * @chat_user: The chat user
 * @chat: The chat conversation that @chat_user belongs to.
 *
 * Set the chat conversation associated with this chat user.
 *
 * Since: 3.0.0
 */
void purple_chat_user_set_chat(PurpleChatUser *chat_user,
                               PurpleChatConversation *chat);

/**
 * purple_chat_user_get_chat:
 * @chat_user: The chat user.
 *
 * Get the chat conversation associated with this chat user.
 *
 * Returns: (transfer full): The chat conversation that the buddy belongs to.
 *
 * Since: 3.0.0
 */
PurpleChatConversation *purple_chat_user_get_chat(PurpleChatUser *chat_user);

/**
 * purple_chat_user_get_alias:
 * @chat_user: The chat user.
 *
 * Get the alias of a chat user.
 *
 * Returns: The alias of the chat user.
 *
 * Since: 3.0.0
 */
const gchar *purple_chat_user_get_alias(PurpleChatUser *chat_user);

/**
 * purple_chat_user_get_name:
 * @chat_user: The chat user.
 *
 * Get the name of a chat user.
 *
 * Returns: The name of the chat user.
 */
const gchar *purple_chat_user_get_name(PurpleChatUser *chat_user);

/**
 * purple_chat_user_set_flags:
 * @chat_user: The chat user.
 * @flags: The new flags.
 *
 * Set the flags of a chat user.
 */
void purple_chat_user_set_flags(PurpleChatUser *chat_user,
                                PurpleChatUserFlags flags);

/**
 * purple_chat_user_get_flags:
 * @chat_user: The chat user.
 *
 * Get the flags of a chat user.
 *
 * Returns: The flags of the chat user.
 *
 * Since: 3.0.0
 */
PurpleChatUserFlags purple_chat_user_get_flags(PurpleChatUser *chat_user);

/**
 * purple_chat_user_is_buddy:
 * @chat_user: The chat user.
 *
 * Indicates if this chat user is on the buddy list.
 *
 * Returns: %TRUE if the chat user is on the buddy list.
 *
 * Since: 3.0.0
 */
gboolean purple_chat_user_is_buddy(PurpleChatUser *chat_user);

/**
 * purple_chat_user_compare:
 * @a: The first #PurpleChatUser.
 * @b: The second #PurpleChatUser.
 *
 * Compares #PurpleChatUser's @a and @b and returns -1 if @a should be sorted
 * first, 0 if sorted equally, and 1 if @a should be sorted after @b.
 *
 * Returns: The sorting order of @a and @b.
 */
gint purple_chat_user_compare(PurpleChatUser *a, PurpleChatUser *b);

G_END_DECLS

#endif /* PURPLE_CHAT_USER_H */