libpurple/attention.c

changeset 38859
ed15916ec9ed
child 38861
21858f98040c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/attention.c	Thu Jan 18 23:46:05 2018 -0600
@@ -0,0 +1,179 @@
+/* purple
+ *
+ * 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, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
+ */
+
+#include "attention.h"
+
+/******************************************************************************
+ * PurpleAttentionType API
+ *****************************************************************************/
+struct _PurpleAttentionType {
+	const gchar *name;
+	const gchar *incoming_description;
+	const gchar *outgoing_description;
+	const gchar *icon_name;
+	const gchar *unlocalized_name;
+};
+
+G_DEFINE_BOXED_TYPE(
+	PurpleAttentionType,
+	purple_attention_type,
+	purple_attention_type_copy,
+	g_free
+);
+
+PurpleAttentionType *
+purple_attention_type_new(const gchar *unlocalized_name,
+                          const gchar *name,
+						  const gchar *incoming_description,
+						  const gchar *outgoing_description)
+{
+	PurpleAttentionType *attn = g_new0(PurpleAttentionType, 1);
+
+	attn->unlocalized_name = unlocalized_name;
+	attn->name = name;
+	attn->incoming_description = incoming_description;
+	attn->outgoing_description = outgoing_description;
+
+	return attn;
+}
+
+PurpleAttentionType *
+purple_attention_type_copy(PurpleAttentionType *attn) {
+	PurpleAttentionType *attn_copy = NULL;
+
+	g_return_val_if_fail(attn != NULL, NULL);
+
+	attn_copy  = g_new(PurpleAttentionType, 1);
+	*attn_copy = *attn;
+
+	return attn_copy;
+}
+
+const gchar *
+purple_attention_type_get_name(const PurpleAttentionType *type) {
+	g_return_val_if_fail(type, NULL);
+
+	return type->name;
+}
+
+void
+purple_attention_type_set_name(PurpleAttentionType *type, const gchar *name) {
+	g_return_if_fail(type);
+
+	type->name = name;
+}
+
+const gchar *
+purple_attention_type_get_incoming_desc(const PurpleAttentionType *type) {
+	g_return_val_if_fail(type, NULL);
+
+	return type->incoming_description;
+}
+
+void
+purple_attention_type_set_incoming_desc(PurpleAttentionType *type, const gchar *desc) {
+	g_return_if_fail(type);
+
+	type->incoming_description = desc;
+}
+
+const gchar *
+purple_attention_type_get_outgoing_desc(const PurpleAttentionType *type) {
+	g_return_val_if_fail(type, NULL);
+
+	return type->outgoing_description;
+}
+
+void
+purple_attention_type_set_outgoing_desc(PurpleAttentionType *type, const gchar *desc) {
+	g_return_if_fail(type != NULL);
+
+	type->outgoing_description = desc;
+}
+
+const gchar *
+purple_attention_type_get_icon_name(const PurpleAttentionType *type) {
+	g_return_val_if_fail(type, NULL);
+
+	if(type->icon_name == NULL || *(type->icon_name) == '\0')
+		return NULL;
+
+	return type->icon_name;
+}
+
+void
+purple_attention_type_set_icon_name(PurpleAttentionType *type, const gchar *name) {
+	g_return_if_fail(type);
+
+	type->icon_name = name;
+}
+
+const gchar *
+purple_attention_type_get_unlocalized_name(const PurpleAttentionType *type) {
+	g_return_val_if_fail(type, NULL);
+
+	return type->unlocalized_name;
+}
+
+void
+purple_attention_type_set_unlocalized_name(PurpleAttentionType *type, const gchar *ulname) {
+	g_return_if_fail(type);
+
+	type->unlocalized_name = ulname;
+}
+
+/******************************************************************************
+ * PurpleAttentionType API
+ *****************************************************************************/
+G_DEFINE_INTERFACE(PurpleProtocolAttention, purple_protocol_attention, G_TYPE_INVALID);
+
+static void
+purple_protocol_attention_default_init(PurpleProtocolAttentionInterface *iface) {
+}
+
+gboolean
+purple_protocol_attention_send(PurpleProtocolAttention *attn, PurpleConnection *gc, const gchar *username, guint type) {
+	PurpleProtocolAttentionInterface *iface = NULL;
+
+	g_return_val_if_fail(PURPLE_IS_PROTOCOL_ATTENTION(attn), FALSE);
+
+	iface = PURPLE_PROTOCOL_ATTENTION_GET_IFACE(attn);
+	if(iface && iface->send) {
+		return iface->send(attn, gc, username, type);
+	}
+
+	return FALSE;
+}
+
+GList *
+purple_protocol_attention_get_types(PurpleProtocolAttention *attn, PurpleAccount *account) {
+	PurpleProtocolAttentionInterface *iface = NULL;
+
+	g_return_val_if_fail(PURPLE_IS_PROTOCOL_ATTENTION(attn), NULL);
+
+	iface = PURPLE_PROTOCOL_ATTENTION_GET_IFACE(attn);
+	if(iface && iface->get_types) {
+		return iface->get_types(attn, account);
+	}
+
+	return NULL;
+}
+

mercurial