Mercurial > pidgin
diff libpurple/media.c @ 23760:5150d8b576be
Missed files
author | Sean Egan <seanegan@gmail.com> |
---|---|
date | Wed, 05 Sep 2007 00:48:34 +0000 |
parents | |
children | 70cdff43ec76 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpurple/media.c Wed Sep 05 00:48:34 2007 +0000 @@ -0,0 +1,183 @@ +/** + * @file media.c Account API + * @ingroup core + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "connection.h" +#include "media.h" + +#ifdef USE_FARSIGHT + +#include <farsight/farsight.h> + +struct _PurpleMediaPrivate +{ + FarsightSession *farsight_session; + + char *name; + PurpleConnection *connection; +}; + +#define PURPLE_MEDIA_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), PURPLE_TYPE_MEDIA, PurpleMediaPrivate)) + +static void purple_media_class_init (PurpleMediaClass *klass); +static void purple_media_init (PurpleMedia *media); +static void purple_media_finalize (GObject *object); +static void purple_media_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); +static void purple_media_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); + +static GObjectClass *parent_class = NULL; + + + +enum { + STATE_CHANGE, + LAST_SIGNAL +}; +static guint purple_media_signals[LAST_SIGNAL] = {0}; + +enum { + PROP_0, + PROP_FARSIGHT_SESSION, + PROP_NAME, + PROP_CONNECTION, + PROP_MIC_ELEMENT, + PROP_SPEAKER_ELEMENT, +}; + +GType +purple_media_get_type() +{ + static GType type = 0; + + if (type == 0) { + static const GTypeInfo info = { + sizeof(PurpleMediaClass), + NULL, + NULL, + (GClassInitFunc) purple_media_class_init, + NULL, + NULL, + sizeof(PurpleMedia), + 0, + (GInstanceInitFunc) purple_media_init + }; + type = g_type_register_static(G_TYPE_OBJECT, "PurpleMedia", &info, 0); + } + return type; +} + + +static void +purple_media_class_init (PurpleMediaClass *klass) +{ + GObjectClass *gobject_class = (GObjectClass*)klass; + parent_class = g_type_class_peek_parent(klass); + + gobject_class->finalize = purple_media_finalize; + gobject_class->set_property = purple_media_set_property; + gobject_class->get_property = purple_media_get_property; + + g_object_class_install_property(gobject_class, PROP_FARSIGHT_SESSION, + g_param_spec_object("farsight-session", + "Farsight session", + "The FarsightSession associated with this media.", + FARSIGHT_TYPE_SESSION, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READABLE)); + + g_object_class_install_property(gobject_class, PROP_NAME, + g_param_spec_string("screenname", + "Screenname", + "The screenname of the remote user", + NULL, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READABLE)); + + g_object_class_install_property(gobject_class, PROP_CONNECTION, + g_param_spec_pointer("connection", + "Connection", + "The PurpleConnection associated with this session", + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READABLE)); +} + +static void +purple_media_init (PurpleMedia *media) +{ + media->priv = PURPLE_MEDIA_GET_PRIVATE(media); +} + +static void +purple_media_finalize (GObject *media) +{ + parent_class->finalize(media); +} + +static void +purple_media_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) +{ + PurpleMedia *media; + g_return_if_fail(PURPLE_IS_MEDIA(object)); + + media = PURPLE_MEDIA(object); + + switch (prop_id) { + case PROP_FARSIGHT_SESSION: + media->priv->farsight_session = g_value_get_object(value); + break; + case PROP_NAME: + media->priv->name = g_value_get_string(value); + break; + case PROP_CONNECTION: + media->priv->connection = g_value_get_pointer(value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +purple_media_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) +{ + PurpleMedia *media; + g_return_if_fail(PURPLE_IS_MEDIA(object)); + + media = PURPLE_MEDIA(object); + + switch (prop_id) { + case PROP_FARSIGHT_SESSION: + g_value_set_object(value, media->priv->farsight_session); + break; + case PROP_NAME: + g_value_set_string(value, media->priv->name); + break; + case PROP_CONNECTION: + g_value_set_pointer(value, media->priv->connection); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } + +} + +#endif /* USE_FARSIGHT */