summaryrefslogtreecommitdiff
path: root/plugins/gepub-thumbnailer/gepub-thumbnailer-provider.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/gepub-thumbnailer/gepub-thumbnailer-provider.c')
-rw-r--r--plugins/gepub-thumbnailer/gepub-thumbnailer-provider.c128
1 files changed, 128 insertions, 0 deletions
diff --git a/plugins/gepub-thumbnailer/gepub-thumbnailer-provider.c b/plugins/gepub-thumbnailer/gepub-thumbnailer-provider.c
new file mode 100644
index 0000000..2204bd3
--- /dev/null
+++ b/plugins/gepub-thumbnailer/gepub-thumbnailer-provider.c
@@ -0,0 +1,128 @@
+/* vi:set et ai sw=2 sts=2 ts=2: */
+/*-
+ * Copyright (c) 2010 Jannis Pohlmann <jannis@xfce.org>
+ * Copyright (c) 2020, Olivier Duchateau <duchateau.olivier@gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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 Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General
+ * Public License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <glib.h>
+#include <glib-object.h>
+
+#include <tumbler/tumbler.h>
+
+#include "gepub-thumbnailer-provider.h"
+#include "gepub-thumbnailer.h"
+
+
+
+static void gepub_thumbnailer_provider_thumbnailer_provider_init (TumblerThumbnailerProviderIface *iface);
+static GList *gepub_thumbnailer_provider_get_thumbnailers (TumblerThumbnailerProvider *provider);
+
+
+
+struct _GepubThumbnailerProviderClass
+{
+ GObjectClass __parent__;
+};
+
+struct _GepubThumbnailerProvider
+{
+ GObject __parent__;
+};
+
+
+
+G_DEFINE_DYNAMIC_TYPE_EXTENDED (GepubThumbnailerProvider,
+ gepub_thumbnailer_provider,
+ G_TYPE_OBJECT,
+ 0,
+ TUMBLER_ADD_INTERFACE (TUMBLER_TYPE_THUMBNAILER_PROVIDER,
+ gepub_thumbnailer_provider_thumbnailer_provider_init));
+
+
+
+void
+gepub_thumbnailer_provider_register (TumblerProviderPlugin *plugin)
+{
+ gepub_thumbnailer_provider_register_type (G_TYPE_MODULE (plugin));
+}
+
+
+
+static void
+gepub_thumbnailer_provider_class_init (GepubThumbnailerProviderClass *klass)
+{
+}
+
+
+
+static void
+gepub_thumbnailer_provider_class_finalize (GepubThumbnailerProviderClass *klass)
+{
+}
+
+
+
+static void
+gepub_thumbnailer_provider_thumbnailer_provider_init (TumblerThumbnailerProviderIface *iface)
+{
+ iface->get_thumbnailers = gepub_thumbnailer_provider_get_thumbnailers;
+}
+
+
+
+static void
+gepub_thumbnailer_provider_init (GepubThumbnailerProvider *provider)
+{
+}
+
+
+
+static GList *
+gepub_thumbnailer_provider_get_thumbnailers (TumblerThumbnailerProvider *provider)
+{
+ GepubThumbnailer *thumbnailer;
+ GList *thumbnailers = NULL;
+ static const gchar *mime_types[] =
+ {
+ "application/epub",
+ "application/epub+zip",
+ NULL
+ };
+ GStrv uri_schemes;
+
+ /* determine which URI schemes are supported by GIO */
+ uri_schemes = tumbler_util_get_supported_uri_schemes ();
+
+ /* create the pixbuf thumbnailer */
+ thumbnailer = g_object_new (TYPE_GEPUB_THUMBNAILER,
+ "uri-schemes", uri_schemes,
+ "mime-types", mime_types,
+ NULL);
+
+ /* add the thumbnailer to the list */
+ thumbnailers = g_list_append (thumbnailers, thumbnailer);
+
+ /* free URI schemes and MIME types */
+ g_strfreev (uri_schemes);
+
+ return thumbnailers;
+}