diff options
author | Diego Escalante Urrelo <descalante@igalia.com> | 2011-01-19 00:10:11 +0800 |
---|---|---|
committer | Diego Escalante Urrelo <descalante@igalia.com> | 2011-03-08 04:34:52 +0800 |
commit | b9f9bf1a0763492f8bf41b8856bbd1149c5871a9 (patch) | |
tree | 92ad55101bff9eabcbc17afdba4a398ce4c4b709 /embed/ephy-download.h | |
parent | 7f7826a163f31bb662247ac4486dca0d01df35f6 (diff) | |
download | gsoc2013-epiphany-b9f9bf1a0763492f8bf41b8856bbd1149c5871a9.tar gsoc2013-epiphany-b9f9bf1a0763492f8bf41b8856bbd1149c5871a9.tar.gz gsoc2013-epiphany-b9f9bf1a0763492f8bf41b8856bbd1149c5871a9.tar.bz2 gsoc2013-epiphany-b9f9bf1a0763492f8bf41b8856bbd1149c5871a9.tar.lz gsoc2013-epiphany-b9f9bf1a0763492f8bf41b8856bbd1149c5871a9.tar.xz gsoc2013-epiphany-b9f9bf1a0763492f8bf41b8856bbd1149c5871a9.tar.zst gsoc2013-epiphany-b9f9bf1a0763492f8bf41b8856bbd1149c5871a9.zip |
ephy-download: add the new EphyDownload object
EphyDownload is a wrapper object around WebKitDownload that handles common
behavior in downloads: auto-destination, default action for the MIME type.
It can be used to wrap a WebKitDownload coming from a WebKitView or to download
a url: ephy_download_new_for_uri and ephy_download_new_for_download are
provided.
Its lifetime is not automagic like EphyEmbedPersist, so you have to unref it
when you no longer need it.
This new object replaces EphyEmbedPersist and enables us to use a single
codepath for downloads in all Epiphany.
Bug #618443
Diffstat (limited to 'embed/ephy-download.h')
-rw-r--r-- | embed/ephy-download.h | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/embed/ephy-download.h b/embed/ephy-download.h new file mode 100644 index 000000000..8c84bbe05 --- /dev/null +++ b/embed/ephy-download.h @@ -0,0 +1,115 @@ +/* vim: set sw=2 ts=2 sts=2 et: */ +/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* + * ephy-download.h + * This file is part of Epiphany + * + * Copyright © 2011 - Igalia S.L. + * + * Epiphany 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. + * + * Epiphany 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 Epiphany; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301 USA + */ + +#if !defined (__EPHY_EPIPHANY_H_INSIDE__) && !defined (EPIPHANY_COMPILATION) +#error "Only <epiphany/epiphany.h> can be included directly." +#endif + +#ifndef _EPHY_DOWNLOAD_H +#define _EPHY_DOWNLOAD_H + +#include <glib-object.h> +#include <webkit/webkit.h> + +#include "ephy-embed.h" + +G_BEGIN_DECLS + +#define EPHY_TYPE_DOWNLOAD ephy_download_get_type() +#define EPHY_DOWNLOAD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EPHY_TYPE_DOWNLOAD, EphyDownload)) +#define EPHY_DOWNLOAD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EPHY_TYPE_DOWNLOAD, EphyDownloadClass)) +#define EPHY_IS_DOWNLOAD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EPHY_TYPE_DOWNLOAD)) +#define EPHY_IS_DOWNLOAD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EPHY_TYPE_DOWNLOAD)) +#define EPHY_DOWNLOAD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EPHY_TYPE_DOWNLOAD, EphyDownloadClass)) + +typedef struct _EphyDownload EphyDownload; +typedef struct _EphyDownloadClass EphyDownloadClass; +typedef struct _EphyDownloadPrivate EphyDownloadPrivate; + +struct _EphyDownload +{ + GObject parent; + + EphyDownloadPrivate *priv; +}; + +struct _EphyDownloadClass +{ + GObjectClass parent_class; + + void (* completed) (EphyDownload *download); + void (* error) (EphyDownload *download, + gint error_code, + gint error_detail, + char *reason); +}; + +typedef enum +{ + EPHY_DOWNLOAD_ACTION_NONE, + EPHY_DOWNLOAD_ACTION_AUTO, + EPHY_DOWNLOAD_ACTION_BROWSE_TO, + EPHY_DOWNLOAD_ACTION_OPEN +} EphyDownloadActionType; + +GType ephy_download_get_type (void) G_GNUC_CONST; + +EphyDownload *ephy_download_new (void); +EphyDownload *ephy_download_new_for_uri (const char *uri); +EphyDownload *ephy_download_new_for_download (WebKitDownload *download); + + +void ephy_download_start (EphyDownload *download); +void ephy_download_pause (EphyDownload *download); +void ephy_download_cancel (EphyDownload *download); + +void ephy_download_set_auto_destination (EphyDownload *download); +void ephy_download_set_destination_uri (EphyDownload *download, + const char *destination); + +WebKitDownload *ephy_download_get_webkit_download (EphyDownload *download); + +const char *ephy_download_get_destination_uri (EphyDownload *download); +const char *ephy_download_get_source_uri (EphyDownload *download); + + +guint32 ephy_download_get_start_time (EphyDownload *download); + +GtkWidget *ephy_download_get_window (EphyDownload *download); +void ephy_download_set_window (EphyDownload *download, + GtkWidget *window); + +EphyDownloadActionType ephy_download_get_action (EphyDownload *download); +void ephy_download_set_action (EphyDownload *download, + EphyDownloadActionType action); +gboolean ephy_download_do_download_action (EphyDownload *download, + EphyDownloadActionType action); + +GtkWidget *ephy_download_get_widget (EphyDownload *download); +void ephy_download_set_widget (EphyDownload *download, + GtkWidget *widget); + +G_END_DECLS + +#endif /* _EPHY_DOWNLOAD_H */ |