3 * Purple is the legal property of its developers, whose names are too numerous
4 * to list here. Please refer to the COPYRIGHT file distributed with this
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
22 #ifndef PURPLE_ATTENTION_H
23 #define PURPLE_ATTENTION_H
26 #include <glib-object.h>
30 * @section_id: libpurple-attention
31 * @short_description: <filename>attention.h</filename>
32 * @title: Attention Object and Interfaces
35 #define PURPLE_TYPE_ATTENTION_TYPE (purple_attention_type_get_type())
38 * PurpleAttentionType:
39 * @name: The name to show in GUI elements.
40 * @incoming_description: Shown when received.
41 * @outgoing_description: Shown when sent.
42 * @icon_name: Optional name of the icon to display.
43 * @unlocalized_name: An unlocalized name for UIs that would rather use that.
45 * Represents "nudges" and "buzzes" that you may send to a buddy to attract
46 * their attention (or vice-versa).
48 typedef struct _PurpleAttentionType PurpleAttentionType
;
51 #include "connection.h"
55 #define PURPLE_TYPE_PROTOCOL_ATTENTION (purple_protocol_attention_get_type())
57 /******************************************************************************
59 *****************************************************************************/
62 * purple_attention_type_get_type:
64 * Returns: The #GType for the #PurpleAttentionType boxed structure.
66 GType
purple_attention_type_get_type(void);
68 PurpleAttentionType
*purple_attention_type_copy(PurpleAttentionType
*attn
);
71 * purple_attention_type_new:
72 * @unlocalized_name: A non-localized string that can be used by UIs in need of such
73 * non-localized strings. This should be the same as @name,
74 * without localization.
75 * @name: A localized string that the UI may display for the event. This
76 * should be the same string as @unlocalized_name, with localization.
77 * @incoming_description: A localized description shown when the event is received.
78 * @outgoing_description: A localized description shown when the event is sent.
80 * Creates a new #PurpleAttentionType object and sets its mandatory parameters.
82 * Returns: A pointer to the new object.
84 PurpleAttentionType
*purple_attention_type_new(const gchar
*unlocalized_name
, const gchar
*name
,
85 const gchar
*incoming_description
, const gchar
*outgoing_description
);
88 * purple_attention_type_get_name:
89 * @type: The attention type.
91 * Get the attention type's name as displayed by the UI.
95 const gchar
*purple_attention_type_get_name(const PurpleAttentionType
*type
);
98 * purple_attention_type_set_name:
99 * @type: The attention type.
100 * @name: The localized name that will be displayed by UIs. This should be
101 * the same string given as the unlocalized name, but with
104 * Sets the displayed name of the attention-demanding event.
106 void purple_attention_type_set_name(PurpleAttentionType
*type
, const gchar
*name
);
109 * purple_attention_type_get_incoming_desc:
110 * @type: The attention type.
112 * Get the attention type's description shown when the event is received.
114 * Returns: The description.
116 const gchar
*purple_attention_type_get_incoming_desc(const PurpleAttentionType
*type
);
119 * purple_attention_type_set_incoming_desc:
120 * @type: The attention type.
121 * @desc: The localized description for incoming events.
123 * Sets the description of the attention-demanding event shown in conversations
124 * when the event is received.
126 void purple_attention_type_set_incoming_desc(PurpleAttentionType
*type
, const gchar
*desc
);
129 * purple_attention_type_get_outgoing_desc:
130 * @type: The attention type.
132 * Get the attention type's description shown when the event is sent.
134 * Returns: The description.
136 const gchar
*purple_attention_type_get_outgoing_desc(const PurpleAttentionType
*type
);
139 * purple_attention_type_set_outgoing_desc:
140 * @type: The attention type.
141 * @desc: The localized description for outgoing events.
143 * Sets the description of the attention-demanding event shown in conversations
144 * when the event is sent.
146 void purple_attention_type_set_outgoing_desc(PurpleAttentionType
*type
, const gchar
*desc
);
149 * purple_attention_type_get_icon_name:
150 * @type: The attention type.
152 * Get the attention type's icon name.
154 * Note: Icons are optional for attention events.
156 * Returns: The icon name or %NULL if unset/empty.
158 const gchar
*purple_attention_type_get_icon_name(const PurpleAttentionType
*type
);
161 * purple_attention_type_set_icon_name:
162 * @type: The attention type.
163 * @name: The icon's name.
165 * Sets the name of the icon to display for the attention event; this is optional.
167 * Note: Icons are optional for attention events.
169 void purple_attention_type_set_icon_name(PurpleAttentionType
*type
, const gchar
*name
);
172 * purple_attention_type_get_unlocalized_name:
173 * @type: The attention type
175 * Get the attention type's unlocalized name; this is useful for some UIs.
177 * Returns: The unlocalized name.
179 const gchar
*purple_attention_type_get_unlocalized_name(const PurpleAttentionType
*type
);
182 * purple_attention_type_set_unlocalized_name:
183 * @type: The attention type.
184 * @ulname: The unlocalized name. This should be the same string given as
185 * the localized name, but without localization.
187 * Sets the unlocalized name of the attention event; some UIs may need this,
188 * thus it is required.
190 void purple_attention_type_set_unlocalized_name(PurpleAttentionType
*type
, const gchar
*ulname
);
192 /******************************************************************************
194 *****************************************************************************/
197 * purple_protocol_attention_get_type:
199 * Returns: The #GType for the protocol attention interface.
201 G_DECLARE_INTERFACE(PurpleProtocolAttention
, purple_protocol_attention
, PURPLE
,
202 PROTOCOL_ATTENTION
, GObject
)
205 * PurpleProtocolAttentionInterface:
207 * The protocol attention interface.
209 * This interface provides attention API for sending and receiving
210 * zaps/nudges/buzzes etc.
212 struct _PurpleProtocolAttentionInterface
{
214 GTypeInterface parent
;
217 gboolean (*send
)(PurpleProtocolAttention
*attn
, PurpleConnection
*gc
,
218 const gchar
*username
, guint type
);
220 GList
*(*get_types
)(PurpleProtocolAttention
*attn
, PurpleAccount
*acct
);
224 * purple_protocol_attention_get_types:
225 * @attn: The #PurpleProtocolAttention.
226 * @acct: The #PurpleAccount whose attention types to get.
228 * Returns a list of #PurpleAttentionType's for @attn.
230 * Returns: (transfer container) (element-type PurpleAttentionType): The list of #PurpleAttentionType's.
232 GList
*purple_protocol_attention_get_types(PurpleProtocolAttention
*attn
, PurpleAccount
*acct
);
235 * purple_protocol_attention_send:
236 * @attn: The #PurpleProtocolAttention instance.
237 * @gc: The #PurpleConnection to send on
238 * @username: The name of the user to send the attention to.
239 * @type: The type of attention to send.
241 * Sends an attention message of @type to @username.
243 * Returns: TRUE on success, FALSE otherwise.
245 gboolean
purple_protocol_attention_send(PurpleProtocolAttention
*attn
, PurpleConnection
*gc
, const gchar
*username
, guint type
);
249 #endif /* PURPLE_ATTENTION_H */