libpurple/attention.c

Sat, 22 Aug 2020 02:58:07 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Sat, 22 Aug 2020 02:58:07 -0500
changeset 40516
fefaa6596e74
parent 40244
7a330cab3546
permissions
-rw-r--r--

Remove the Gtk Ticker plugin as it doesn't scale to today's IM networks

Remove the ticker plugin as it doesn't scale to todays typical IM usage.

Testing Done:
Compile and install.

Reviewed at https://reviews.imfreedom.org/r/81/

/* 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 {
	/* The name to show in GUI elements. */
	const gchar *name;
	/* Shown when received. */
	const gchar *incoming_description;
	/* Shown when sent. */
	const gchar *outgoing_description;
	/* Optional name of the icon to display. */
	const gchar *icon_name;
	/* An unlocalized name for UIs that would rather use that. */
	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