[totem] plugins: Add apple-trailers plugin



commit 7b56db7b8d7dc405a4720b0f10c610a70ce9f68c
Author: Bastien Nocera <hadess hadess net>
Date:   Sat Apr 21 21:06:01 2012 +0100

    plugins: Add apple-trailers plugin
    
    Add plugin to change Totem's user-agent for the Apple Trailers site.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=674469

 configure.in                                       |    3 +-
 src/plugins/apple-trailers/Makefile.am             |   13 +++
 .../apple-trailers/apple-trailers.plugin.in        |    9 ++
 src/plugins/apple-trailers/totem-apple-trailers.c  |   81 ++++++++++++++++++++
 4 files changed, 105 insertions(+), 1 deletions(-)
---
diff --git a/configure.in b/configure.in
index 2fabde7..beeaf4f 100644
--- a/configure.in
+++ b/configure.in
@@ -70,7 +70,7 @@ AC_SUBST(TOTEM_API_VERSION)
 AC_DEFINE_UNQUOTED(TOTEM_API_VERSION, ["$TOTEM_API_VERSION"], [Define to the Totem plugin API version])
 
 # The full list of plugins
-allowed_plugins="brasero-disc-recorder chapters dbusservice im-status gromit iplayer lirc media-player-keys ontop opensubtitles properties pythonconsole rotation save-file samplepython sample-vala screensaver screenshot sidebar-test skipto zeitgeist-dp grilo"
+allowed_plugins="apple-trailers brasero-disc-recorder chapters dbusservice im-status gromit iplayer lirc media-player-keys ontop opensubtitles properties pythonconsole rotation save-file samplepython sample-vala screensaver screenshot sidebar-test skipto zeitgeist-dp grilo"
 
 PLUGINDIR='${libdir}/totem/plugins'
 AC_SUBST(PLUGINDIR)
@@ -742,6 +742,7 @@ src/Makefile
 src/gst/Makefile
 src/properties/Makefile
 src/plugins/Makefile
+src/plugins/apple-trailers/Makefile
 src/plugins/dbusservice/Makefile
 src/plugins/screensaver/Makefile
 src/plugins/screenshot/Makefile
diff --git a/src/plugins/apple-trailers/Makefile.am b/src/plugins/apple-trailers/Makefile.am
new file mode 100644
index 0000000..f602750
--- /dev/null
+++ b/src/plugins/apple-trailers/Makefile.am
@@ -0,0 +1,13 @@
+include $(top_srcdir)/src/plugins/Makefile.plugins
+
+plugindir = $(PLUGINDIR)/apple-trailers
+plugin_LTLIBRARIES = libapple-trailers.la
+
+plugin_in_files = apple-trailers.plugin.in
+
+libapple_trailers_la_SOURCES = totem-apple-trailers.c
+libapple_trailers_la_LDFLAGS = $(plugin_ldflags)
+libapple_trailers_la_LIBADD = $(plugin_libadd)
+libapple_trailers_la_CFLAGS = $(plugin_cflags)
+
+-include $(top_srcdir)/git.mk
diff --git a/src/plugins/apple-trailers/apple-trailers.plugin.in b/src/plugins/apple-trailers/apple-trailers.plugin.in
new file mode 100644
index 0000000..2945af5
--- /dev/null
+++ b/src/plugins/apple-trailers/apple-trailers.plugin.in
@@ -0,0 +1,9 @@
+[Plugin]
+Module=apple-trailers
+IAge=1
+Builtin=true
+Name=Apple Trailers
+Description=Sets the user-agent for the Apple Trailers site
+Authors=Bastien Nocera
+Copyright=Copyright  2012 Bastien Nocera
+Website=http://www.gnome.org/projects/totem/
diff --git a/src/plugins/apple-trailers/totem-apple-trailers.c b/src/plugins/apple-trailers/totem-apple-trailers.c
new file mode 100644
index 0000000..503f7d7
--- /dev/null
+++ b/src/plugins/apple-trailers/totem-apple-trailers.c
@@ -0,0 +1,81 @@
+/*
+ *  Copyright (C) 2012 Bastien Nocera <hadess hadess net>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA.
+ *
+ *
+ * The Totem project hereby grant permission for non-gpl compatible GStreamer
+ * plugins to be used and distributed together with GStreamer and Totem. This
+ * permission are above and beyond the permissions granted by the GPL license
+ * Totem is covered by.
+ *
+ * Monday 7th February 2005: Christian Schaller: Add exception clause.
+ * See license_change file for details.
+ *
+ */
+
+
+#include "config.h"
+
+#include <glib-object.h>
+
+#include "totem-plugin.h"
+#include "totem.h"
+
+#define TOTEM_TYPE_APPLE_TRAILERS_PLUGIN	(totem_apple_trailers_plugin_get_type ())
+#define TOTEM_APPLE_TRAILERS_PLUGIN(o)		(G_TYPE_CHECK_INSTANCE_CAST ((o), TOTEM_TYPE_APPLE_TRAILERS_PLUGIN, TotemAppleTrailersPlugin))
+
+typedef struct {
+	guint signal_id;
+	TotemObject *totem;
+} TotemAppleTrailersPluginPrivate;
+
+TOTEM_PLUGIN_REGISTER(TOTEM_TYPE_APPLE_TRAILERS_PLUGIN, TotemAppleTrailersPlugin, totem_apple_trailers_plugin)
+
+static char *
+get_user_agent_cb (TotemObject *totem,
+		   const char  *mrl)
+{
+	if (g_str_has_prefix (mrl, "http://movies.apple.com";) ||
+	    g_str_has_prefix (mrl, "http://trailers.apple.com";))
+		return g_strdup ("Quicktime/7.2.0");
+	return NULL;
+}
+
+static void
+impl_activate (PeasActivatable *plugin)
+{
+	TotemAppleTrailersPlugin *pi = TOTEM_APPLE_TRAILERS_PLUGIN (plugin);
+
+	pi->priv->totem = g_object_ref (g_object_get_data (G_OBJECT (plugin), "object"));
+	pi->priv->signal_id = g_signal_connect (G_OBJECT (pi->priv->totem), "get-user-agent",
+						G_CALLBACK (get_user_agent_cb), NULL);
+}
+
+static void
+impl_deactivate (PeasActivatable *plugin)
+{
+	TotemAppleTrailersPlugin *pi = TOTEM_APPLE_TRAILERS_PLUGIN (plugin);
+
+	if (pi->priv->signal_id) {
+		g_signal_handler_disconnect (pi->priv->totem, pi->priv->signal_id);
+		pi->priv->signal_id = 0;
+	}
+
+	if (pi->priv->totem) {
+		g_object_unref (pi->priv->totem);
+		pi->priv->totem = NULL;
+	}
+}



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]