gtkappchooseronline.c 3.47 KB
Newer Older
1
/*
2
 * gtkappchooseronline.h: an extension point for online integration
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
 *
 * Copyright (C) 2010 Red Hat, Inc.
 *
 * 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 the Gnome Library; see the file COPYING.LIB.  If not,
 * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA 02111-1307, USA.
 *
 * Authors: Cosimo Cecchi <ccecchi@redhat.com>
 */

Matthias Clasen's avatar
Matthias Clasen committed
24
#include "config.h"
25

26
#include "gtkappchooseronline.h"
27

28
#include "gtkappchoosermodule.h"
29
#include "gtkintl.h"
30 31 32

#include <gio/gio.h>

33
G_DEFINE_INTERFACE_WITH_CODE (GtkAppChooserOnline, _gtk_app_chooser_online, G_TYPE_OBJECT,
34
                              g_type_interface_add_prerequisite (g_define_type_id, G_TYPE_ASYNC_INITABLE);)
35 36

static void
37
_gtk_app_chooser_online_default_init (GtkAppChooserOnlineInterface *iface)
38 39 40 41
{
  /* do nothing */
}

42
GtkAppChooserOnline *
43 44
_gtk_app_chooser_online_get_default_finish (GObject      *source,
                                            GAsyncResult *result)
45 46 47 48 49 50 51
{
  GtkAppChooserOnline *retval;

  retval = GTK_APP_CHOOSER_ONLINE (g_async_initable_new_finish (G_ASYNC_INITABLE (source),
                                                                result, NULL));

  return retval;
52
}
53 54

void
55 56
_gtk_app_chooser_online_get_default_async (GAsyncReadyCallback callback,
                                           gpointer            user_data)
57 58 59 60 61
{
  GIOExtensionPoint *ep;
  GIOExtension *extension;
  GList *extensions;

62
  _gtk_app_chooser_module_ensure ();
63

64
  ep = g_io_extension_point_lookup ("gtkappchooser-online");
65 66 67 68 69 70
  extensions = g_io_extension_point_get_extensions (ep);

  if (extensions != NULL)
    {
      /* pick the first */
      extension = extensions->data;
71 72
      g_async_initable_new_async (g_io_extension_get_type (extension), G_PRIORITY_DEFAULT,
                                  NULL, callback, user_data, NULL);
73 74 75 76
    }
}

void
77 78 79 80 81
_gtk_app_chooser_online_search_for_mimetype_async (GtkAppChooserOnline *self,
                                                   const gchar         *content_type,
                                                   GtkWindow           *parent,
                                                   GAsyncReadyCallback  callback,
                                                   gpointer             user_data)
82
{
83
  GtkAppChooserOnlineInterface *iface;
84

85
  g_return_if_fail (GTK_IS_APP_CHOOSER_ONLINE (self));
86

87
  iface = GTK_APP_CHOOSER_ONLINE_GET_IFACE (self);
88 89 90 91 92

  (* iface->search_for_mimetype_async) (self, content_type, parent, callback, user_data);
}

gboolean
93 94 95
_gtk_app_chooser_online_search_for_mimetype_finish (GtkAppChooserOnline  *self,
                                                    GAsyncResult         *res,
                                                    GError              **error)
96
{
97
  GtkAppChooserOnlineInterface *iface;
98

99
  g_return_val_if_fail (GTK_IS_APP_CHOOSER_ONLINE (self), FALSE);
100

101
  iface = GTK_APP_CHOOSER_ONLINE_GET_IFACE (self);
102 103 104

  return ((* iface->search_for_mimetype_finish) (self, res, error));
}