finch/gntmedia.c

Wed, 13 May 2009 20:29:03 +0000

author
Marcus Lundblad <malu@pidgin.im>
date
Wed, 13 May 2009 20:29:03 +0000
changeset 27110
05ca719b901b
parent 26760
251146cb6d09
child 27883
646492a02be0
permissions
-rw-r--r--

Support custom smileys in MUCs (when all participants support BoB and a maximum
of 10 participants are in the chat).
Always announce support for BoB, since disable custom smileys will still turn
off fetching them, and BoB can be used for other purposes further on.

22650
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1 /**
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
2 * @file gntmedia.c GNT Media API
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
3 * @ingroup finch
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
4 */
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
5
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
6 /* finch
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
7 *
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
8 * Finch is the legal property of its developers, whose names are too numerous
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
9 * to list here. Please refer to the COPYRIGHT file distributed with this
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
10 * source distribution.
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
11 *
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
12 * This program is free software; you can redistribute it and/or modify
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
13 * it under the terms of the GNU General Public License as published by
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
14 * the Free Software Foundation; either version 2 of the License, or
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
15 * (at your option) any later version.
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
16 *
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
17 * This program is distributed in the hope that it will be useful,
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
20 * GNU General Public License for more details.
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
21 *
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
22 * You should have received a copy of the GNU General Public License
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
23 * along with this program; if not, write to the Free Software
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
25 */
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
26
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
27 #include "finch.h"
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
28
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
29 #include "gntconv.h"
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
30 #include "gntmedia.h"
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
31
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
32 #include "gnt.h"
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
33 #include "gntbutton.h"
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
34 #include "gntbox.h"
22683
bd514cc037cf Fine tune the media (audio) widget in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22682
diff changeset
35 #include "gntlabel.h"
22650
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
36
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
37 #include "cmds.h"
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
38 #include "conversation.h"
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
39 #include "debug.h"
26479
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents: 26464
diff changeset
40 #include "mediamanager.h"
22650
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
41
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
42 /* An incredibly large part of the following is from gtkmedia.c */
23704
9b88c9b23aed Use USE_VV instead of USE_FARSIGHT.
Michael Ruprecht <maiku@pidgin.im>
parents: 23700
diff changeset
43 #ifdef USE_VV
26760
251146cb6d09 Fix build with --disable-gstreamer.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26746
diff changeset
44 #include "media-gst.h"
22650
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
45
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
46 #undef hangup
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
47
26505
1b8e849bbc4d Hide FinchMedia and related structures.
Michael Ruprecht <maiku@pidgin.im>
parents: 26501
diff changeset
48 #define FINCH_TYPE_MEDIA (finch_media_get_type())
1b8e849bbc4d Hide FinchMedia and related structures.
Michael Ruprecht <maiku@pidgin.im>
parents: 26501
diff changeset
49 #define FINCH_MEDIA(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), FINCH_TYPE_MEDIA, FinchMedia))
1b8e849bbc4d Hide FinchMedia and related structures.
Michael Ruprecht <maiku@pidgin.im>
parents: 26501
diff changeset
50 #define FINCH_MEDIA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), FINCH_TYPE_MEDIA, FinchMediaClass))
1b8e849bbc4d Hide FinchMedia and related structures.
Michael Ruprecht <maiku@pidgin.im>
parents: 26501
diff changeset
51 #define FINCH_IS_MEDIA(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), FINCH_TYPE_MEDIA))
1b8e849bbc4d Hide FinchMedia and related structures.
Michael Ruprecht <maiku@pidgin.im>
parents: 26501
diff changeset
52 #define FINCH_IS_MEDIA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), FINCH_TYPE_MEDIA))
1b8e849bbc4d Hide FinchMedia and related structures.
Michael Ruprecht <maiku@pidgin.im>
parents: 26501
diff changeset
53 #define FINCH_MEDIA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), FINCH_TYPE_MEDIA, FinchMediaClass))
1b8e849bbc4d Hide FinchMedia and related structures.
Michael Ruprecht <maiku@pidgin.im>
parents: 26501
diff changeset
54
1b8e849bbc4d Hide FinchMedia and related structures.
Michael Ruprecht <maiku@pidgin.im>
parents: 26501
diff changeset
55 typedef struct _FinchMedia FinchMedia;
1b8e849bbc4d Hide FinchMedia and related structures.
Michael Ruprecht <maiku@pidgin.im>
parents: 26501
diff changeset
56 typedef struct _FinchMediaClass FinchMediaClass;
1b8e849bbc4d Hide FinchMedia and related structures.
Michael Ruprecht <maiku@pidgin.im>
parents: 26501
diff changeset
57 typedef struct _FinchMediaPrivate FinchMediaPrivate;
1b8e849bbc4d Hide FinchMedia and related structures.
Michael Ruprecht <maiku@pidgin.im>
parents: 26501
diff changeset
58 typedef enum _FinchMediaState FinchMediaState;
1b8e849bbc4d Hide FinchMedia and related structures.
Michael Ruprecht <maiku@pidgin.im>
parents: 26501
diff changeset
59
1b8e849bbc4d Hide FinchMedia and related structures.
Michael Ruprecht <maiku@pidgin.im>
parents: 26501
diff changeset
60 struct _FinchMediaClass
1b8e849bbc4d Hide FinchMedia and related structures.
Michael Ruprecht <maiku@pidgin.im>
parents: 26501
diff changeset
61 {
1b8e849bbc4d Hide FinchMedia and related structures.
Michael Ruprecht <maiku@pidgin.im>
parents: 26501
diff changeset
62 GntBoxClass parent_class;
1b8e849bbc4d Hide FinchMedia and related structures.
Michael Ruprecht <maiku@pidgin.im>
parents: 26501
diff changeset
63 };
1b8e849bbc4d Hide FinchMedia and related structures.
Michael Ruprecht <maiku@pidgin.im>
parents: 26501
diff changeset
64
1b8e849bbc4d Hide FinchMedia and related structures.
Michael Ruprecht <maiku@pidgin.im>
parents: 26501
diff changeset
65 struct _FinchMedia
1b8e849bbc4d Hide FinchMedia and related structures.
Michael Ruprecht <maiku@pidgin.im>
parents: 26501
diff changeset
66 {
1b8e849bbc4d Hide FinchMedia and related structures.
Michael Ruprecht <maiku@pidgin.im>
parents: 26501
diff changeset
67 GntBox parent;
1b8e849bbc4d Hide FinchMedia and related structures.
Michael Ruprecht <maiku@pidgin.im>
parents: 26501
diff changeset
68 FinchMediaPrivate *priv;
1b8e849bbc4d Hide FinchMedia and related structures.
Michael Ruprecht <maiku@pidgin.im>
parents: 26501
diff changeset
69 };
1b8e849bbc4d Hide FinchMedia and related structures.
Michael Ruprecht <maiku@pidgin.im>
parents: 26501
diff changeset
70
22650
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
71 struct _FinchMediaPrivate
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
72 {
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
73 PurpleMedia *media;
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
74
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
75 GntWidget *accept;
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
76 GntWidget *reject;
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
77 GntWidget *hangup;
22683
bd514cc037cf Fine tune the media (audio) widget in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22682
diff changeset
78 GntWidget *calling;
22650
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
79
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
80 PurpleConversation *conv;
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
81 };
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
82
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
83 #define FINCH_MEDIA_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), FINCH_TYPE_MEDIA, FinchMediaPrivate))
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
84
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
85 static void finch_media_class_init (FinchMediaClass *klass);
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
86 static void finch_media_init (FinchMedia *media);
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
87 static void finch_media_finalize (GObject *object);
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
88 static void finch_media_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
89 static void finch_media_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
90
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
91 static GntBoxClass *parent_class = NULL;
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
92
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
93 enum {
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
94 MESSAGE,
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
95 LAST_SIGNAL
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
96 };
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
97 static guint finch_media_signals[LAST_SIGNAL] = {0};
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
98
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
99 enum {
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
100 PROP_0,
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
101 PROP_MEDIA,
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
102 };
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
103
26506
5f8ab0b75892 Silence two more warnings.
Michael Ruprecht <maiku@pidgin.im>
parents: 26505
diff changeset
104 static GType
22650
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
105 finch_media_get_type(void)
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
106 {
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
107 static GType type = 0;
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
108
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
109 if (type == 0) {
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
110 static const GTypeInfo info = {
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
111 sizeof(FinchMediaClass),
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
112 NULL,
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
113 NULL,
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
114 (GClassInitFunc) finch_media_class_init,
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
115 NULL,
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
116 NULL,
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
117 sizeof(FinchMedia),
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
118 0,
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
119 (GInstanceInitFunc) finch_media_init,
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
120 NULL
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
121 };
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
122 type = g_type_register_static(GNT_TYPE_BOX, "FinchMedia", &info, 0);
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
123 }
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
124 return type;
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
125 }
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
126
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
127
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
128 static void
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
129 finch_media_class_init (FinchMediaClass *klass)
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
130 {
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
131 GObjectClass *gobject_class = (GObjectClass*)klass;
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
132 parent_class = g_type_class_peek_parent(klass);
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
133
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
134 gobject_class->finalize = finch_media_finalize;
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
135 gobject_class->set_property = finch_media_set_property;
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
136 gobject_class->get_property = finch_media_get_property;
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
137
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
138 g_object_class_install_property(gobject_class, PROP_MEDIA,
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
139 g_param_spec_object("media",
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
140 "PurpleMedia",
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
141 "The PurpleMedia associated with this media.",
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
142 PURPLE_TYPE_MEDIA,
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
143 G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
144
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
145 finch_media_signals[MESSAGE] = g_signal_new("message", G_TYPE_FROM_CLASS(klass),
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
146 G_SIGNAL_RUN_LAST, 0, NULL, NULL,
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
147 g_cclosure_marshal_VOID__STRING,
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
148 G_TYPE_NONE, 1, G_TYPE_STRING);
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
149
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
150 g_type_class_add_private(klass, sizeof(FinchMediaPrivate));
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
151 }
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
152
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
153
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
154 static void
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
155 finch_media_init (FinchMedia *media)
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
156 {
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
157 media->priv = FINCH_MEDIA_GET_PRIVATE(media);
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
158
22683
bd514cc037cf Fine tune the media (audio) widget in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22682
diff changeset
159 media->priv->calling = gnt_label_new(_("Calling ... "));
bd514cc037cf Fine tune the media (audio) widget in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22682
diff changeset
160 media->priv->hangup = gnt_button_new(_("Hangup"));
bd514cc037cf Fine tune the media (audio) widget in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22682
diff changeset
161 media->priv->accept = gnt_button_new(_("Accept"));
bd514cc037cf Fine tune the media (audio) widget in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22682
diff changeset
162 media->priv->reject = gnt_button_new(_("Reject"));
22650
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
163
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
164 gnt_box_set_alignment(GNT_BOX(media), GNT_ALIGN_MID);
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
165
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
166 gnt_box_add_widget(GNT_BOX(media), media->priv->accept);
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
167 gnt_box_add_widget(GNT_BOX(media), media->priv->reject);
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
168 }
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
169
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
170 static void
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
171 finch_media_finalize (GObject *media)
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
172 {
26123
4948b40fdbec Make voice calls work with Finch.
Michael Ruprecht <maiku@pidgin.im>
parents: 26111
diff changeset
173 FinchMedia *gntmedia = FINCH_MEDIA(media);
4948b40fdbec Make voice calls work with Finch.
Michael Ruprecht <maiku@pidgin.im>
parents: 26111
diff changeset
174 purple_debug_info("gntmedia", "finch_media_finalize\n");
4948b40fdbec Make voice calls work with Finch.
Michael Ruprecht <maiku@pidgin.im>
parents: 26111
diff changeset
175 if (gntmedia->priv->media)
4948b40fdbec Make voice calls work with Finch.
Michael Ruprecht <maiku@pidgin.im>
parents: 26111
diff changeset
176 g_object_unref(gntmedia->priv->media);
22650
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
177 }
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
178
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
179 static void
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
180 finch_media_emit_message(FinchMedia *gntmedia, const char *msg)
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
181 {
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
182 g_signal_emit(gntmedia, finch_media_signals[MESSAGE], 0, msg);
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
183 }
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
184
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
185 static void
26501
c186275f46aa Remove purple_media_accept.
Michael Ruprecht <maiku@pidgin.im>
parents: 26500
diff changeset
186 finch_media_connected_cb(PurpleMedia *media, FinchMedia *gntmedia)
22650
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
187 {
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
188 GntWidget *parent;
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
189
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
190 finch_media_emit_message(gntmedia, _("Call in progress."));
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
191
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
192 gnt_box_remove(GNT_BOX(gntmedia), gntmedia->priv->accept);
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
193 gnt_box_remove(GNT_BOX(gntmedia), gntmedia->priv->reject);
22683
bd514cc037cf Fine tune the media (audio) widget in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22682
diff changeset
194 gnt_box_remove(GNT_BOX(gntmedia), gntmedia->priv->hangup);
bd514cc037cf Fine tune the media (audio) widget in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22682
diff changeset
195 gnt_box_remove(GNT_BOX(gntmedia), gntmedia->priv->calling);
bd514cc037cf Fine tune the media (audio) widget in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22682
diff changeset
196
bd514cc037cf Fine tune the media (audio) widget in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22682
diff changeset
197 gnt_box_add_widget(GNT_BOX(gntmedia), gntmedia->priv->hangup);
bd514cc037cf Fine tune the media (audio) widget in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22682
diff changeset
198
bd514cc037cf Fine tune the media (audio) widget in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22682
diff changeset
199 gnt_widget_destroy(gntmedia->priv->accept);
bd514cc037cf Fine tune the media (audio) widget in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22682
diff changeset
200 gnt_widget_destroy(gntmedia->priv->reject);
bd514cc037cf Fine tune the media (audio) widget in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22682
diff changeset
201 gnt_widget_destroy(gntmedia->priv->calling);
bd514cc037cf Fine tune the media (audio) widget in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22682
diff changeset
202 gntmedia->priv->accept = NULL;
bd514cc037cf Fine tune the media (audio) widget in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22682
diff changeset
203 gntmedia->priv->reject = NULL;
bd514cc037cf Fine tune the media (audio) widget in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22682
diff changeset
204 gntmedia->priv->calling = NULL;
bd514cc037cf Fine tune the media (audio) widget in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22682
diff changeset
205
bd514cc037cf Fine tune the media (audio) widget in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22682
diff changeset
206 parent = GNT_WIDGET(gntmedia);
bd514cc037cf Fine tune the media (audio) widget in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22682
diff changeset
207 while (parent->parent)
bd514cc037cf Fine tune the media (audio) widget in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22682
diff changeset
208 parent = parent->parent;
bd514cc037cf Fine tune the media (audio) widget in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22682
diff changeset
209 gnt_box_readjust(GNT_BOX(parent));
bd514cc037cf Fine tune the media (audio) widget in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22682
diff changeset
210 gnt_widget_draw(parent);
bd514cc037cf Fine tune the media (audio) widget in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22682
diff changeset
211 }
bd514cc037cf Fine tune the media (audio) widget in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22682
diff changeset
212
bd514cc037cf Fine tune the media (audio) widget in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22682
diff changeset
213 static void
bd514cc037cf Fine tune the media (audio) widget in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22682
diff changeset
214 finch_media_wait_cb(PurpleMedia *media, FinchMedia *gntmedia)
bd514cc037cf Fine tune the media (audio) widget in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22682
diff changeset
215 {
bd514cc037cf Fine tune the media (audio) widget in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22682
diff changeset
216 GntWidget *parent;
bd514cc037cf Fine tune the media (audio) widget in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22682
diff changeset
217
bd514cc037cf Fine tune the media (audio) widget in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22682
diff changeset
218 gnt_box_remove(GNT_BOX(gntmedia), gntmedia->priv->accept);
bd514cc037cf Fine tune the media (audio) widget in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22682
diff changeset
219 gnt_box_remove(GNT_BOX(gntmedia), gntmedia->priv->reject);
bd514cc037cf Fine tune the media (audio) widget in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22682
diff changeset
220 gnt_box_remove(GNT_BOX(gntmedia), gntmedia->priv->hangup);
bd514cc037cf Fine tune the media (audio) widget in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22682
diff changeset
221 gnt_box_remove(GNT_BOX(gntmedia), gntmedia->priv->calling);
bd514cc037cf Fine tune the media (audio) widget in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22682
diff changeset
222
bd514cc037cf Fine tune the media (audio) widget in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22682
diff changeset
223 gnt_box_add_widget(GNT_BOX(gntmedia), gntmedia->priv->calling);
22650
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
224 gnt_box_add_widget(GNT_BOX(gntmedia), gntmedia->priv->hangup);
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
225
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
226 parent = GNT_WIDGET(gntmedia);
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
227 while (parent->parent)
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
228 parent = parent->parent;
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
229 gnt_box_readjust(GNT_BOX(parent));
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
230 gnt_widget_draw(parent);
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
231 }
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
232
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
233 static void
26449
9e381dc6ed24 Rename state-changed enum and values.
Michael Ruprecht <maiku@pidgin.im>
parents: 26445
diff changeset
234 finch_media_state_changed_cb(PurpleMedia *media, PurpleMediaState state,
26244
5b2642b82431 Update Finch to new media API.
Michael Ruprecht <maiku@pidgin.im>
parents: 26183
diff changeset
235 gchar *sid, gchar *name, FinchMedia *gntmedia)
22650
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
236 {
26449
9e381dc6ed24 Rename state-changed enum and values.
Michael Ruprecht <maiku@pidgin.im>
parents: 26445
diff changeset
237 purple_debug_info("gntmedia", "state: %d sid: %s name: %s\n",
9e381dc6ed24 Rename state-changed enum and values.
Michael Ruprecht <maiku@pidgin.im>
parents: 26445
diff changeset
238 state, sid, name);
26244
5b2642b82431 Update Finch to new media API.
Michael Ruprecht <maiku@pidgin.im>
parents: 26183
diff changeset
239 if (sid == NULL && name == NULL) {
26449
9e381dc6ed24 Rename state-changed enum and values.
Michael Ruprecht <maiku@pidgin.im>
parents: 26445
diff changeset
240 if (state == PURPLE_MEDIA_STATE_END) {
26244
5b2642b82431 Update Finch to new media API.
Michael Ruprecht <maiku@pidgin.im>
parents: 26183
diff changeset
241 finch_media_emit_message(gntmedia,
5b2642b82431 Update Finch to new media API.
Michael Ruprecht <maiku@pidgin.im>
parents: 26183
diff changeset
242 _("The call has been terminated."));
5b2642b82431 Update Finch to new media API.
Michael Ruprecht <maiku@pidgin.im>
parents: 26183
diff changeset
243 finch_conversation_set_info_widget(
5b2642b82431 Update Finch to new media API.
Michael Ruprecht <maiku@pidgin.im>
parents: 26183
diff changeset
244 gntmedia->priv->conv, NULL);
5b2642b82431 Update Finch to new media API.
Michael Ruprecht <maiku@pidgin.im>
parents: 26183
diff changeset
245 gnt_widget_destroy(GNT_WIDGET(gntmedia));
5b2642b82431 Update Finch to new media API.
Michael Ruprecht <maiku@pidgin.im>
parents: 26183
diff changeset
246 /*
5b2642b82431 Update Finch to new media API.
Michael Ruprecht <maiku@pidgin.im>
parents: 26183
diff changeset
247 * XXX: This shouldn't have to be here
5b2642b82431 Update Finch to new media API.
Michael Ruprecht <maiku@pidgin.im>
parents: 26183
diff changeset
248 * to free the FinchMedia widget.
5b2642b82431 Update Finch to new media API.
Michael Ruprecht <maiku@pidgin.im>
parents: 26183
diff changeset
249 */
5b2642b82431 Update Finch to new media API.
Michael Ruprecht <maiku@pidgin.im>
parents: 26183
diff changeset
250 g_object_unref(gntmedia);
5b2642b82431 Update Finch to new media API.
Michael Ruprecht <maiku@pidgin.im>
parents: 26183
diff changeset
251 }
26449
9e381dc6ed24 Rename state-changed enum and values.
Michael Ruprecht <maiku@pidgin.im>
parents: 26445
diff changeset
252 } else if (state == PURPLE_MEDIA_STATE_CONNECTED) {
26501
c186275f46aa Remove purple_media_accept.
Michael Ruprecht <maiku@pidgin.im>
parents: 26500
diff changeset
253 finch_media_connected_cb(media, gntmedia);
26524
265d852c96bb Say which media type is being requested in Finch.
Michael Ruprecht <maiku@pidgin.im>
parents: 26522
diff changeset
254 } else if (state == PURPLE_MEDIA_STATE_NEW &&
265d852c96bb Say which media type is being requested in Finch.
Michael Ruprecht <maiku@pidgin.im>
parents: 26522
diff changeset
255 sid != NULL && name != NULL &&
265d852c96bb Say which media type is being requested in Finch.
Michael Ruprecht <maiku@pidgin.im>
parents: 26522
diff changeset
256 purple_media_is_initiator(media, sid, name) == FALSE) {
26746
2a2d45ac9774 Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents: 26647
diff changeset
257 PurpleAccount *account;
26524
265d852c96bb Say which media type is being requested in Finch.
Michael Ruprecht <maiku@pidgin.im>
parents: 26522
diff changeset
258 PurpleBuddy *buddy;
265d852c96bb Say which media type is being requested in Finch.
Michael Ruprecht <maiku@pidgin.im>
parents: 26522
diff changeset
259 const gchar *alias;
265d852c96bb Say which media type is being requested in Finch.
Michael Ruprecht <maiku@pidgin.im>
parents: 26522
diff changeset
260 PurpleMediaSessionType type =
265d852c96bb Say which media type is being requested in Finch.
Michael Ruprecht <maiku@pidgin.im>
parents: 26522
diff changeset
261 purple_media_get_session_type(media, sid);
265d852c96bb Say which media type is being requested in Finch.
Michael Ruprecht <maiku@pidgin.im>
parents: 26522
diff changeset
262 gchar *message = NULL;
265d852c96bb Say which media type is being requested in Finch.
Michael Ruprecht <maiku@pidgin.im>
parents: 26522
diff changeset
263
26746
2a2d45ac9774 Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents: 26647
diff changeset
264 account = purple_media_get_account(gntmedia->priv->media);
2a2d45ac9774 Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents: 26647
diff changeset
265 buddy = purple_find_buddy(account, name);
26524
265d852c96bb Say which media type is being requested in Finch.
Michael Ruprecht <maiku@pidgin.im>
parents: 26522
diff changeset
266 alias = buddy ? purple_buddy_get_contact_alias(buddy) : name;
265d852c96bb Say which media type is being requested in Finch.
Michael Ruprecht <maiku@pidgin.im>
parents: 26522
diff changeset
267
265d852c96bb Say which media type is being requested in Finch.
Michael Ruprecht <maiku@pidgin.im>
parents: 26522
diff changeset
268 if (type & PURPLE_MEDIA_AUDIO) {
265d852c96bb Say which media type is being requested in Finch.
Michael Ruprecht <maiku@pidgin.im>
parents: 26522
diff changeset
269 message = g_strdup_printf(
265d852c96bb Say which media type is being requested in Finch.
Michael Ruprecht <maiku@pidgin.im>
parents: 26522
diff changeset
270 _("%s wishes to start an audio session with you."),
265d852c96bb Say which media type is being requested in Finch.
Michael Ruprecht <maiku@pidgin.im>
parents: 26522
diff changeset
271 alias);
265d852c96bb Say which media type is being requested in Finch.
Michael Ruprecht <maiku@pidgin.im>
parents: 26522
diff changeset
272 } else {
265d852c96bb Say which media type is being requested in Finch.
Michael Ruprecht <maiku@pidgin.im>
parents: 26522
diff changeset
273 message = g_strdup_printf(
26647
89bcc7bce53e Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26631
diff changeset
274 _("%s is trying to start an unsupported media session type with you."),
26524
265d852c96bb Say which media type is being requested in Finch.
Michael Ruprecht <maiku@pidgin.im>
parents: 26522
diff changeset
275 alias);
265d852c96bb Say which media type is being requested in Finch.
Michael Ruprecht <maiku@pidgin.im>
parents: 26522
diff changeset
276 }
265d852c96bb Say which media type is being requested in Finch.
Michael Ruprecht <maiku@pidgin.im>
parents: 26522
diff changeset
277 finch_media_emit_message(gntmedia, message);
265d852c96bb Say which media type is being requested in Finch.
Michael Ruprecht <maiku@pidgin.im>
parents: 26522
diff changeset
278 g_free(message);
26244
5b2642b82431 Update Finch to new media API.
Michael Ruprecht <maiku@pidgin.im>
parents: 26183
diff changeset
279 }
22650
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
280 }
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
281
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
282 static void
26445
6da3853c89c2 Use stream-info instead of state-changed for reject.
Michael Ruprecht <maiku@pidgin.im>
parents: 26248
diff changeset
283 finch_media_stream_info_cb(PurpleMedia *media, PurpleMediaInfoType type,
26496
11e1e5221460 Create purple_media_stream_info. Add local parameter to stream-info signal.
Michael Ruprecht <maiku@pidgin.im>
parents: 26495
diff changeset
284 gchar *sid, gchar *name, gboolean local, FinchMedia *gntmedia)
26445
6da3853c89c2 Use stream-info instead of state-changed for reject.
Michael Ruprecht <maiku@pidgin.im>
parents: 26248
diff changeset
285 {
6da3853c89c2 Use stream-info instead of state-changed for reject.
Michael Ruprecht <maiku@pidgin.im>
parents: 26248
diff changeset
286 if (type == PURPLE_MEDIA_INFO_REJECT) {
6da3853c89c2 Use stream-info instead of state-changed for reject.
Michael Ruprecht <maiku@pidgin.im>
parents: 26248
diff changeset
287 finch_media_emit_message(gntmedia,
6da3853c89c2 Use stream-info instead of state-changed for reject.
Michael Ruprecht <maiku@pidgin.im>
parents: 26248
diff changeset
288 _("You have rejected the call."));
6da3853c89c2 Use stream-info instead of state-changed for reject.
Michael Ruprecht <maiku@pidgin.im>
parents: 26248
diff changeset
289 }
6da3853c89c2 Use stream-info instead of state-changed for reject.
Michael Ruprecht <maiku@pidgin.im>
parents: 26248
diff changeset
290 }
6da3853c89c2 Use stream-info instead of state-changed for reject.
Michael Ruprecht <maiku@pidgin.im>
parents: 26248
diff changeset
291
6da3853c89c2 Use stream-info instead of state-changed for reject.
Michael Ruprecht <maiku@pidgin.im>
parents: 26248
diff changeset
292 static void
26501
c186275f46aa Remove purple_media_accept.
Michael Ruprecht <maiku@pidgin.im>
parents: 26500
diff changeset
293 finch_media_accept_cb(PurpleMedia *media, GntWidget *widget)
c186275f46aa Remove purple_media_accept.
Michael Ruprecht <maiku@pidgin.im>
parents: 26500
diff changeset
294 {
c186275f46aa Remove purple_media_accept.
Michael Ruprecht <maiku@pidgin.im>
parents: 26500
diff changeset
295 purple_media_stream_info(media, PURPLE_MEDIA_INFO_ACCEPT,
c186275f46aa Remove purple_media_accept.
Michael Ruprecht <maiku@pidgin.im>
parents: 26500
diff changeset
296 NULL, NULL, TRUE);
c186275f46aa Remove purple_media_accept.
Michael Ruprecht <maiku@pidgin.im>
parents: 26500
diff changeset
297 }
c186275f46aa Remove purple_media_accept.
Michael Ruprecht <maiku@pidgin.im>
parents: 26500
diff changeset
298
c186275f46aa Remove purple_media_accept.
Michael Ruprecht <maiku@pidgin.im>
parents: 26500
diff changeset
299 static void
26499
759bf410db86 Remove purple_media_hangup.
Michael Ruprecht <maiku@pidgin.im>
parents: 26496
diff changeset
300 finch_media_hangup_cb(PurpleMedia *media, GntWidget *widget)
759bf410db86 Remove purple_media_hangup.
Michael Ruprecht <maiku@pidgin.im>
parents: 26496
diff changeset
301 {
759bf410db86 Remove purple_media_hangup.
Michael Ruprecht <maiku@pidgin.im>
parents: 26496
diff changeset
302 purple_media_stream_info(media, PURPLE_MEDIA_INFO_HANGUP,
759bf410db86 Remove purple_media_hangup.
Michael Ruprecht <maiku@pidgin.im>
parents: 26496
diff changeset
303 NULL, NULL, TRUE);
759bf410db86 Remove purple_media_hangup.
Michael Ruprecht <maiku@pidgin.im>
parents: 26496
diff changeset
304 }
759bf410db86 Remove purple_media_hangup.
Michael Ruprecht <maiku@pidgin.im>
parents: 26496
diff changeset
305
759bf410db86 Remove purple_media_hangup.
Michael Ruprecht <maiku@pidgin.im>
parents: 26496
diff changeset
306 static void
26500
8fc1146ee03c Remove purple_media_reject.
Michael Ruprecht <maiku@pidgin.im>
parents: 26499
diff changeset
307 finch_media_reject_cb(PurpleMedia *media, GntWidget *widget)
8fc1146ee03c Remove purple_media_reject.
Michael Ruprecht <maiku@pidgin.im>
parents: 26499
diff changeset
308 {
8fc1146ee03c Remove purple_media_reject.
Michael Ruprecht <maiku@pidgin.im>
parents: 26499
diff changeset
309 purple_media_stream_info(media, PURPLE_MEDIA_INFO_REJECT,
8fc1146ee03c Remove purple_media_reject.
Michael Ruprecht <maiku@pidgin.im>
parents: 26499
diff changeset
310 NULL, NULL, TRUE);
8fc1146ee03c Remove purple_media_reject.
Michael Ruprecht <maiku@pidgin.im>
parents: 26499
diff changeset
311 }
8fc1146ee03c Remove purple_media_reject.
Michael Ruprecht <maiku@pidgin.im>
parents: 26499
diff changeset
312
8fc1146ee03c Remove purple_media_reject.
Michael Ruprecht <maiku@pidgin.im>
parents: 26499
diff changeset
313 static void
22650
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
314 finch_media_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
315 {
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
316 FinchMedia *media;
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
317 g_return_if_fail(FINCH_IS_MEDIA(object));
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
318
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
319 media = FINCH_MEDIA(object);
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
320 switch (prop_id) {
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
321 case PROP_MEDIA:
26244
5b2642b82431 Update Finch to new media API.
Michael Ruprecht <maiku@pidgin.im>
parents: 26183
diff changeset
322 {
22650
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
323 if (media->priv->media)
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
324 g_object_unref(media->priv->media);
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
325 media->priv->media = g_value_get_object(value);
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
326 g_object_ref(media->priv->media);
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
327 g_signal_connect_swapped(G_OBJECT(media->priv->accept), "activate",
26501
c186275f46aa Remove purple_media_accept.
Michael Ruprecht <maiku@pidgin.im>
parents: 26500
diff changeset
328 G_CALLBACK(finch_media_accept_cb), media->priv->media);
22650
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
329 g_signal_connect_swapped(G_OBJECT(media->priv->reject), "activate",
26500
8fc1146ee03c Remove purple_media_reject.
Michael Ruprecht <maiku@pidgin.im>
parents: 26499
diff changeset
330 G_CALLBACK(finch_media_reject_cb), media->priv->media);
22650
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
331 g_signal_connect_swapped(G_OBJECT(media->priv->hangup), "activate",
26499
759bf410db86 Remove purple_media_hangup.
Michael Ruprecht <maiku@pidgin.im>
parents: 26496
diff changeset
332 G_CALLBACK(finch_media_hangup_cb), media->priv->media);
22650
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
333
26514
058053cffc0e Add purple_media_is_initiator.
Michael Ruprecht <maiku@pidgin.im>
parents: 26508
diff changeset
334 if (purple_media_is_initiator(media->priv->media,
058053cffc0e Add purple_media_is_initiator.
Michael Ruprecht <maiku@pidgin.im>
parents: 26508
diff changeset
335 NULL, NULL) == TRUE) {
26244
5b2642b82431 Update Finch to new media API.
Michael Ruprecht <maiku@pidgin.im>
parents: 26183
diff changeset
336 finch_media_wait_cb(media->priv->media, media);
5b2642b82431 Update Finch to new media API.
Michael Ruprecht <maiku@pidgin.im>
parents: 26183
diff changeset
337 }
5b2642b82431 Update Finch to new media API.
Michael Ruprecht <maiku@pidgin.im>
parents: 26183
diff changeset
338 g_signal_connect(G_OBJECT(media->priv->media), "state-changed",
5b2642b82431 Update Finch to new media API.
Michael Ruprecht <maiku@pidgin.im>
parents: 26183
diff changeset
339 G_CALLBACK(finch_media_state_changed_cb), media);
26445
6da3853c89c2 Use stream-info instead of state-changed for reject.
Michael Ruprecht <maiku@pidgin.im>
parents: 26248
diff changeset
340 g_signal_connect(G_OBJECT(media->priv->media), "stream-info",
6da3853c89c2 Use stream-info instead of state-changed for reject.
Michael Ruprecht <maiku@pidgin.im>
parents: 26248
diff changeset
341 G_CALLBACK(finch_media_stream_info_cb), media);
22650
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
342 break;
26244
5b2642b82431 Update Finch to new media API.
Michael Ruprecht <maiku@pidgin.im>
parents: 26183
diff changeset
343 }
22650
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
344 default:
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
345 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
346 break;
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
347 }
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
348 }
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
349
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
350 static void
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
351 finch_media_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
352 {
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
353 FinchMedia *media;
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
354 g_return_if_fail(FINCH_IS_MEDIA(object));
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
355
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
356 media = FINCH_MEDIA(object);
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
357
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
358 switch (prop_id) {
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
359 case PROP_MEDIA:
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
360 g_value_set_object(value, media->priv->media);
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
361 break;
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
362 default:
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
363 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
364 break;
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
365 }
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
366 }
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
367
26506
5f8ab0b75892 Silence two more warnings.
Michael Ruprecht <maiku@pidgin.im>
parents: 26505
diff changeset
368 static GntWidget *
23721
15285d082f6c Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Michael Ruprecht <maiku@pidgin.im>
parents: 23704
diff changeset
369 finch_media_new(PurpleMedia *media)
22650
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
370 {
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
371 return GNT_WIDGET(g_object_new(finch_media_get_type(),
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
372 "media", media,
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
373 "vertical", FALSE,
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
374 "homogeneous", FALSE,
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
375 NULL));
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
376 }
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
377
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
378 static void
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
379 gntmedia_message_cb(FinchMedia *gntmedia, const char *msg, PurpleConversation *conv)
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
380 {
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
381 if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM) {
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
382 purple_conv_im_write(PURPLE_CONV_IM(conv), NULL, msg, PURPLE_MESSAGE_SYSTEM, time(NULL));
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
383 }
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
384 }
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
385
26111
d25772351a75 Stop additional media sessions within a single conversation for grouped contacts.
Michael Ruprecht <maiku@pidgin.im>
parents: 26099
diff changeset
386 static gboolean
26183
d78798f480da Remove connection attribute from PurpleMedia.
Michael Ruprecht <maiku@pidgin.im>
parents: 26176
diff changeset
387 finch_new_media(PurpleMediaManager *manager, PurpleMedia *media,
26746
2a2d45ac9774 Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents: 26647
diff changeset
388 PurpleAccount *account, gchar *name, gpointer null)
22650
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
389 {
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
390 GntWidget *gntmedia;
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
391 PurpleConversation *conv;
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
392
26746
2a2d45ac9774 Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents: 26647
diff changeset
393 conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, name);
22650
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
394
23721
15285d082f6c Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Michael Ruprecht <maiku@pidgin.im>
parents: 23704
diff changeset
395 gntmedia = finch_media_new(media);
22650
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
396 g_signal_connect(G_OBJECT(gntmedia), "message", G_CALLBACK(gntmedia_message_cb), conv);
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
397 FINCH_MEDIA(gntmedia)->priv->conv = conv;
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
398 finch_conversation_set_info_widget(conv, gntmedia);
26111
d25772351a75 Stop additional media sessions within a single conversation for grouped contacts.
Michael Ruprecht <maiku@pidgin.im>
parents: 26099
diff changeset
399 return TRUE;
22650
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
400 }
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
401
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
402 static PurpleCmdRet
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
403 call_cmd_cb(PurpleConversation *conv, const char *cmd, char **args,
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
404 char **eror, gpointer data)
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
405 {
26099
2ba28e840a95 Convert serv_* media functions to purple_prpl_* functions.
Michael Ruprecht <maiku@pidgin.im>
parents: 23721
diff changeset
406 PurpleAccount *account = purple_conversation_get_account(conv);
22650
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
407
26495
52846ebe1c7d Don't assume a PurpleMedia instance will be created immediately.
Michael Ruprecht <maiku@pidgin.im>
parents: 26488
diff changeset
408 if (!purple_prpl_initiate_media(account,
26123
4948b40fdbec Make voice calls work with Finch.
Michael Ruprecht <maiku@pidgin.im>
parents: 26111
diff changeset
409 purple_conversation_get_name(conv),
26495
52846ebe1c7d Don't assume a PurpleMedia instance will be created immediately.
Michael Ruprecht <maiku@pidgin.im>
parents: 26488
diff changeset
410 PURPLE_MEDIA_AUDIO))
22650
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
411 return PURPLE_CMD_STATUS_FAILED;
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
412
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
413 return PURPLE_CMD_STATUS_OK;
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
414 }
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
415
26450
99c5f4c41446 Make voice calls in Finch work again.
Michael Ruprecht <maiku@pidgin.im>
parents: 26449
diff changeset
416 static GstElement *
26522
44401eba59a5 Give more information to element creation functions.
Michael Ruprecht <maiku@pidgin.im>
parents: 26521
diff changeset
417 create_default_audio_src(PurpleMedia *media,
44401eba59a5 Give more information to element creation functions.
Michael Ruprecht <maiku@pidgin.im>
parents: 26521
diff changeset
418 const gchar *session_id, const gchar *participant)
26450
99c5f4c41446 Make voice calls in Finch work again.
Michael Ruprecht <maiku@pidgin.im>
parents: 26449
diff changeset
419 {
26464
a5ec570b876a Implement create_default_audio_* functions in gntmedia.c.
Michael Ruprecht <maiku@pidgin.im>
parents: 26450
diff changeset
420 GstElement *bin, *src, *volume;
a5ec570b876a Implement create_default_audio_* functions in gntmedia.c.
Michael Ruprecht <maiku@pidgin.im>
parents: 26450
diff changeset
421 GstPad *pad, *ghost;
a5ec570b876a Implement create_default_audio_* functions in gntmedia.c.
Michael Ruprecht <maiku@pidgin.im>
parents: 26450
diff changeset
422 double input_volume = purple_prefs_get_int(
26630
4f664673a5b0 Change media volume preference to be specific to Finch.
Michael Ruprecht <maiku@pidgin.im>
parents: 26616
diff changeset
423 "/finch/media/audio/volume/input")/10.0;
26464
a5ec570b876a Implement create_default_audio_* functions in gntmedia.c.
Michael Ruprecht <maiku@pidgin.im>
parents: 26450
diff changeset
424
26631
06e0ebeffbf5 Pick better devices in Finch too and have fallbacks.
Michael Ruprecht <maiku@pidgin.im>
parents: 26630
diff changeset
425 src = gst_element_factory_make("gconfaudiosrc", NULL);
06e0ebeffbf5 Pick better devices in Finch too and have fallbacks.
Michael Ruprecht <maiku@pidgin.im>
parents: 26630
diff changeset
426 if (src == NULL)
06e0ebeffbf5 Pick better devices in Finch too and have fallbacks.
Michael Ruprecht <maiku@pidgin.im>
parents: 26630
diff changeset
427 src = gst_element_factory_make("autoaudiosrc", NULL);
06e0ebeffbf5 Pick better devices in Finch too and have fallbacks.
Michael Ruprecht <maiku@pidgin.im>
parents: 26630
diff changeset
428 if (src == NULL)
06e0ebeffbf5 Pick better devices in Finch too and have fallbacks.
Michael Ruprecht <maiku@pidgin.im>
parents: 26630
diff changeset
429 src = gst_element_factory_make("alsasrc", NULL);
06e0ebeffbf5 Pick better devices in Finch too and have fallbacks.
Michael Ruprecht <maiku@pidgin.im>
parents: 26630
diff changeset
430 if (src == NULL)
06e0ebeffbf5 Pick better devices in Finch too and have fallbacks.
Michael Ruprecht <maiku@pidgin.im>
parents: 26630
diff changeset
431 src = gst_element_factory_make("osssrc", NULL);
06e0ebeffbf5 Pick better devices in Finch too and have fallbacks.
Michael Ruprecht <maiku@pidgin.im>
parents: 26630
diff changeset
432 if (src == NULL)
06e0ebeffbf5 Pick better devices in Finch too and have fallbacks.
Michael Ruprecht <maiku@pidgin.im>
parents: 26630
diff changeset
433 src = gst_element_factory_make("dshowaudiosrc", NULL);
06e0ebeffbf5 Pick better devices in Finch too and have fallbacks.
Michael Ruprecht <maiku@pidgin.im>
parents: 26630
diff changeset
434 if (src == NULL) {
06e0ebeffbf5 Pick better devices in Finch too and have fallbacks.
Michael Ruprecht <maiku@pidgin.im>
parents: 26630
diff changeset
435 purple_debug_error("gntmedia", "Unable to find a suitable "
06e0ebeffbf5 Pick better devices in Finch too and have fallbacks.
Michael Ruprecht <maiku@pidgin.im>
parents: 26630
diff changeset
436 "element for the default audio source.\n");
06e0ebeffbf5 Pick better devices in Finch too and have fallbacks.
Michael Ruprecht <maiku@pidgin.im>
parents: 26630
diff changeset
437 return NULL;
06e0ebeffbf5 Pick better devices in Finch too and have fallbacks.
Michael Ruprecht <maiku@pidgin.im>
parents: 26630
diff changeset
438 }
06e0ebeffbf5 Pick better devices in Finch too and have fallbacks.
Michael Ruprecht <maiku@pidgin.im>
parents: 26630
diff changeset
439
26507
629bdcfe9516 Unique elements ought to be named the same as their id.
Michael Ruprecht <maiku@pidgin.im>
parents: 26505
diff changeset
440 bin = gst_bin_new("finchdefaultaudiosrc");
26464
a5ec570b876a Implement create_default_audio_* functions in gntmedia.c.
Michael Ruprecht <maiku@pidgin.im>
parents: 26450
diff changeset
441 volume = gst_element_factory_make("volume", "purpleaudioinputvolume");
a5ec570b876a Implement create_default_audio_* functions in gntmedia.c.
Michael Ruprecht <maiku@pidgin.im>
parents: 26450
diff changeset
442 g_object_set(volume, "volume", input_volume, NULL);
a5ec570b876a Implement create_default_audio_* functions in gntmedia.c.
Michael Ruprecht <maiku@pidgin.im>
parents: 26450
diff changeset
443 gst_bin_add_many(GST_BIN(bin), src, volume, NULL);
a5ec570b876a Implement create_default_audio_* functions in gntmedia.c.
Michael Ruprecht <maiku@pidgin.im>
parents: 26450
diff changeset
444 gst_element_link(src, volume);
a5ec570b876a Implement create_default_audio_* functions in gntmedia.c.
Michael Ruprecht <maiku@pidgin.im>
parents: 26450
diff changeset
445 pad = gst_element_get_pad(volume, "src");
a5ec570b876a Implement create_default_audio_* functions in gntmedia.c.
Michael Ruprecht <maiku@pidgin.im>
parents: 26450
diff changeset
446 ghost = gst_ghost_pad_new("ghostsrc", pad);
a5ec570b876a Implement create_default_audio_* functions in gntmedia.c.
Michael Ruprecht <maiku@pidgin.im>
parents: 26450
diff changeset
447 gst_element_add_pad(bin, ghost);
a5ec570b876a Implement create_default_audio_* functions in gntmedia.c.
Michael Ruprecht <maiku@pidgin.im>
parents: 26450
diff changeset
448
a5ec570b876a Implement create_default_audio_* functions in gntmedia.c.
Michael Ruprecht <maiku@pidgin.im>
parents: 26450
diff changeset
449 return bin;
26450
99c5f4c41446 Make voice calls in Finch work again.
Michael Ruprecht <maiku@pidgin.im>
parents: 26449
diff changeset
450 }
99c5f4c41446 Make voice calls in Finch work again.
Michael Ruprecht <maiku@pidgin.im>
parents: 26449
diff changeset
451
99c5f4c41446 Make voice calls in Finch work again.
Michael Ruprecht <maiku@pidgin.im>
parents: 26449
diff changeset
452 static GstElement *
26522
44401eba59a5 Give more information to element creation functions.
Michael Ruprecht <maiku@pidgin.im>
parents: 26521
diff changeset
453 create_default_audio_sink(PurpleMedia *media,
44401eba59a5 Give more information to element creation functions.
Michael Ruprecht <maiku@pidgin.im>
parents: 26521
diff changeset
454 const gchar *session_id, const gchar *participant)
26450
99c5f4c41446 Make voice calls in Finch work again.
Michael Ruprecht <maiku@pidgin.im>
parents: 26449
diff changeset
455 {
26464
a5ec570b876a Implement create_default_audio_* functions in gntmedia.c.
Michael Ruprecht <maiku@pidgin.im>
parents: 26450
diff changeset
456 GstElement *bin, *sink, *volume, *queue;
a5ec570b876a Implement create_default_audio_* functions in gntmedia.c.
Michael Ruprecht <maiku@pidgin.im>
parents: 26450
diff changeset
457 GstPad *pad, *ghost;
a5ec570b876a Implement create_default_audio_* functions in gntmedia.c.
Michael Ruprecht <maiku@pidgin.im>
parents: 26450
diff changeset
458 double output_volume = purple_prefs_get_int(
26630
4f664673a5b0 Change media volume preference to be specific to Finch.
Michael Ruprecht <maiku@pidgin.im>
parents: 26616
diff changeset
459 "/finch/media/audio/volume/output")/10.0;
26464
a5ec570b876a Implement create_default_audio_* functions in gntmedia.c.
Michael Ruprecht <maiku@pidgin.im>
parents: 26450
diff changeset
460
26631
06e0ebeffbf5 Pick better devices in Finch too and have fallbacks.
Michael Ruprecht <maiku@pidgin.im>
parents: 26630
diff changeset
461 sink = gst_element_factory_make("gconfaudiosink", NULL);
06e0ebeffbf5 Pick better devices in Finch too and have fallbacks.
Michael Ruprecht <maiku@pidgin.im>
parents: 26630
diff changeset
462 if (sink == NULL)
06e0ebeffbf5 Pick better devices in Finch too and have fallbacks.
Michael Ruprecht <maiku@pidgin.im>
parents: 26630
diff changeset
463 sink = gst_element_factory_make("autoaudiosink",NULL);
06e0ebeffbf5 Pick better devices in Finch too and have fallbacks.
Michael Ruprecht <maiku@pidgin.im>
parents: 26630
diff changeset
464 if (sink == NULL) {
06e0ebeffbf5 Pick better devices in Finch too and have fallbacks.
Michael Ruprecht <maiku@pidgin.im>
parents: 26630
diff changeset
465 purple_debug_error("gntmedia", "Unable to find a suitable "
06e0ebeffbf5 Pick better devices in Finch too and have fallbacks.
Michael Ruprecht <maiku@pidgin.im>
parents: 26630
diff changeset
466 "element for the default audio sink.\n");
06e0ebeffbf5 Pick better devices in Finch too and have fallbacks.
Michael Ruprecht <maiku@pidgin.im>
parents: 26630
diff changeset
467 return NULL;
06e0ebeffbf5 Pick better devices in Finch too and have fallbacks.
Michael Ruprecht <maiku@pidgin.im>
parents: 26630
diff changeset
468 }
06e0ebeffbf5 Pick better devices in Finch too and have fallbacks.
Michael Ruprecht <maiku@pidgin.im>
parents: 26630
diff changeset
469
06e0ebeffbf5 Pick better devices in Finch too and have fallbacks.
Michael Ruprecht <maiku@pidgin.im>
parents: 26630
diff changeset
470 bin = gst_bin_new("finchdefaultaudiosink");
26464
a5ec570b876a Implement create_default_audio_* functions in gntmedia.c.
Michael Ruprecht <maiku@pidgin.im>
parents: 26450
diff changeset
471 volume = gst_element_factory_make("volume", "purpleaudiooutputvolume");
a5ec570b876a Implement create_default_audio_* functions in gntmedia.c.
Michael Ruprecht <maiku@pidgin.im>
parents: 26450
diff changeset
472 g_object_set(volume, "volume", output_volume, NULL);
a5ec570b876a Implement create_default_audio_* functions in gntmedia.c.
Michael Ruprecht <maiku@pidgin.im>
parents: 26450
diff changeset
473 queue = gst_element_factory_make("queue", NULL);
a5ec570b876a Implement create_default_audio_* functions in gntmedia.c.
Michael Ruprecht <maiku@pidgin.im>
parents: 26450
diff changeset
474 gst_bin_add_many(GST_BIN(bin), sink, volume, queue, NULL);
a5ec570b876a Implement create_default_audio_* functions in gntmedia.c.
Michael Ruprecht <maiku@pidgin.im>
parents: 26450
diff changeset
475 gst_element_link(volume, sink);
a5ec570b876a Implement create_default_audio_* functions in gntmedia.c.
Michael Ruprecht <maiku@pidgin.im>
parents: 26450
diff changeset
476 gst_element_link(queue, volume);
a5ec570b876a Implement create_default_audio_* functions in gntmedia.c.
Michael Ruprecht <maiku@pidgin.im>
parents: 26450
diff changeset
477 pad = gst_element_get_pad(queue, "sink");
a5ec570b876a Implement create_default_audio_* functions in gntmedia.c.
Michael Ruprecht <maiku@pidgin.im>
parents: 26450
diff changeset
478 ghost = gst_ghost_pad_new("ghostsink", pad);
a5ec570b876a Implement create_default_audio_* functions in gntmedia.c.
Michael Ruprecht <maiku@pidgin.im>
parents: 26450
diff changeset
479 gst_element_add_pad(bin, ghost);
a5ec570b876a Implement create_default_audio_* functions in gntmedia.c.
Michael Ruprecht <maiku@pidgin.im>
parents: 26450
diff changeset
480
a5ec570b876a Implement create_default_audio_* functions in gntmedia.c.
Michael Ruprecht <maiku@pidgin.im>
parents: 26450
diff changeset
481 return bin;
26450
99c5f4c41446 Make voice calls in Finch work again.
Michael Ruprecht <maiku@pidgin.im>
parents: 26449
diff changeset
482 }
26505
1b8e849bbc4d Hide FinchMedia and related structures.
Michael Ruprecht <maiku@pidgin.im>
parents: 26501
diff changeset
483 #endif /* USE_VV */
26450
99c5f4c41446 Make voice calls in Finch work again.
Michael Ruprecht <maiku@pidgin.im>
parents: 26449
diff changeset
484
22650
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
485 void finch_media_manager_init(void)
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
486 {
26505
1b8e849bbc4d Hide FinchMedia and related structures.
Michael Ruprecht <maiku@pidgin.im>
parents: 26501
diff changeset
487 #ifdef USE_VV
22650
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
488 PurpleMediaManager *manager = purple_media_manager_get();
26616
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26524
diff changeset
489 PurpleMediaElementInfo *default_audio_src =
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26524
diff changeset
490 g_object_new(PURPLE_TYPE_MEDIA_ELEMENT_INFO,
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26524
diff changeset
491 "id", "finchdefaultaudiosrc",
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26524
diff changeset
492 "name", "Finch Default Audio Source",
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26524
diff changeset
493 "type", PURPLE_MEDIA_ELEMENT_AUDIO
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26524
diff changeset
494 | PURPLE_MEDIA_ELEMENT_SRC
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26524
diff changeset
495 | PURPLE_MEDIA_ELEMENT_ONE_SRC
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26524
diff changeset
496 | PURPLE_MEDIA_ELEMENT_UNIQUE,
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26524
diff changeset
497 "create-cb", create_default_audio_src, NULL);
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26524
diff changeset
498 PurpleMediaElementInfo *default_audio_sink =
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26524
diff changeset
499 g_object_new(PURPLE_TYPE_MEDIA_ELEMENT_INFO,
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26524
diff changeset
500 "id", "finchdefaultaudiosink",
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26524
diff changeset
501 "name", "Finch Default Audio Sink",
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26524
diff changeset
502 "type", PURPLE_MEDIA_ELEMENT_AUDIO
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26524
diff changeset
503 | PURPLE_MEDIA_ELEMENT_SINK
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26524
diff changeset
504 | PURPLE_MEDIA_ELEMENT_ONE_SINK,
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26524
diff changeset
505 "create-cb", create_default_audio_sink, NULL);
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26524
diff changeset
506
22650
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
507 g_signal_connect(G_OBJECT(manager), "init-media", G_CALLBACK(finch_new_media), NULL);
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
508 purple_cmd_register("call", "", PURPLE_CMD_P_DEFAULT,
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
509 PURPLE_CMD_FLAG_IM, NULL,
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
510 call_cmd_cb, _("call: Make an audio call."), NULL);
26450
99c5f4c41446 Make voice calls in Finch work again.
Michael Ruprecht <maiku@pidgin.im>
parents: 26449
diff changeset
511
26521
f7f083e8cd31 Declare which media caps Pidgin and Finch handle.
Michael Ruprecht <maiku@pidgin.im>
parents: 26514
diff changeset
512 purple_media_manager_set_ui_caps(manager,
f7f083e8cd31 Declare which media caps Pidgin and Finch handle.
Michael Ruprecht <maiku@pidgin.im>
parents: 26514
diff changeset
513 PURPLE_MEDIA_CAPS_AUDIO |
f7f083e8cd31 Declare which media caps Pidgin and Finch handle.
Michael Ruprecht <maiku@pidgin.im>
parents: 26514
diff changeset
514 PURPLE_MEDIA_CAPS_AUDIO_SINGLE_DIRECTION);
f7f083e8cd31 Declare which media caps Pidgin and Finch handle.
Michael Ruprecht <maiku@pidgin.im>
parents: 26514
diff changeset
515
26450
99c5f4c41446 Make voice calls in Finch work again.
Michael Ruprecht <maiku@pidgin.im>
parents: 26449
diff changeset
516 purple_debug_info("gntmedia", "Registering media element types\n");
26616
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26524
diff changeset
517 purple_media_manager_set_active_element(manager, default_audio_src);
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26524
diff changeset
518 purple_media_manager_set_active_element(manager, default_audio_sink);
26630
4f664673a5b0 Change media volume preference to be specific to Finch.
Michael Ruprecht <maiku@pidgin.im>
parents: 26616
diff changeset
519
4f664673a5b0 Change media volume preference to be specific to Finch.
Michael Ruprecht <maiku@pidgin.im>
parents: 26616
diff changeset
520 purple_prefs_add_none("/finch/media");
4f664673a5b0 Change media volume preference to be specific to Finch.
Michael Ruprecht <maiku@pidgin.im>
parents: 26616
diff changeset
521 purple_prefs_add_none("/finch/media/audio");
4f664673a5b0 Change media volume preference to be specific to Finch.
Michael Ruprecht <maiku@pidgin.im>
parents: 26616
diff changeset
522 purple_prefs_add_none("/finch/media/audio/volume");
4f664673a5b0 Change media volume preference to be specific to Finch.
Michael Ruprecht <maiku@pidgin.im>
parents: 26616
diff changeset
523 purple_prefs_add_int("/finch/media/audio/volume/input", 10);
4f664673a5b0 Change media volume preference to be specific to Finch.
Michael Ruprecht <maiku@pidgin.im>
parents: 26616
diff changeset
524 purple_prefs_add_int("/finch/media/audio/volume/output", 10);
26505
1b8e849bbc4d Hide FinchMedia and related structures.
Michael Ruprecht <maiku@pidgin.im>
parents: 26501
diff changeset
525 #endif
22650
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
526 }
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
527
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
528 void finch_media_manager_uninit(void)
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
529 {
26505
1b8e849bbc4d Hide FinchMedia and related structures.
Michael Ruprecht <maiku@pidgin.im>
parents: 26501
diff changeset
530 #ifdef USE_VV
22650
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
531 PurpleMediaManager *manager = purple_media_manager_get();
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
532 g_signal_handlers_disconnect_by_func(G_OBJECT(manager),
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
533 G_CALLBACK(finch_new_media), NULL);
26505
1b8e849bbc4d Hide FinchMedia and related structures.
Michael Ruprecht <maiku@pidgin.im>
parents: 26501
diff changeset
534 #endif
22650
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
535 }
3ed9cc16bf2a Some media support in finch. This needs to be updated for the got-accept signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
536
23700
e47be56bdd2b Fix compiling with the --disable-vv switch.
Michael Ruprecht <maiku@pidgin.im>
parents: 23697
diff changeset
537

mercurial