diff options
Diffstat (limited to 'libempathy/empathy-tp-file.h')
-rw-r--r-- | libempathy/empathy-tp-file.h | 112 |
1 files changed, 73 insertions, 39 deletions
diff --git a/libempathy/empathy-tp-file.h b/libempathy/empathy-tp-file.h index 1d4443153..0d7d8efc0 100644 --- a/libempathy/empathy-tp-file.h +++ b/libempathy/empathy-tp-file.h @@ -1,6 +1,5 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* - * Copyright (C) 2007-2008 Collabora Ltd. + * Copyright (C) 2007-2009 Collabora Ltd. * Copyright (C) 2007 Marco Barisione <marco@barisione.org> * * This library is free software; you can redistribute it and/or @@ -19,6 +18,7 @@ * * Authors: Marco Barisione <marco@barisione.org> * Jonny Lamb <jonny.lamb@collabora.co.uk> + * Cosimo Cecchi <cosimo.cecchi@collabora.co.uk> */ #ifndef __EMPATHY_TP_FILE_H__ @@ -29,60 +29,94 @@ #include <telepathy-glib/channel.h> -#include "empathy-contact.h" - -#include <libmissioncontrol/mc-account.h> - G_BEGIN_DECLS -#define EMPATHY_TP_FILE_UNKNOWN_SIZE G_MAXUINT64 - -#define EMPATHY_TYPE_TP_FILE (empathy_tp_file_get_type ()) -#define EMPATHY_TP_FILE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_TP_FILE, EmpathyTpFile)) -#define EMPATHY_TP_FILE_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EMPATHY_TYPE_TP_FILE, EmpathyTpFileClass)) -#define EMPATHY_IS_TP_FILE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_TP_FILE)) -#define EMPATHY_IS_TP_FILE_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_TP_FILE)) -#define EMPATHY_TP_FILE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_TP_FILE, EmpathyTpFileClass)) +#define EMPATHY_TYPE_TP_FILE (empathy_tp_file_get_type ()) +#define EMPATHY_TP_FILE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), \ + EMPATHY_TYPE_TP_FILE, EmpathyTpFile)) +#define EMPATHY_TP_FILE_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), \ + EMPATHY_TYPE_TP_FILE, EmpathyTpFileClass)) +#define EMPATHY_IS_TP_FILE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), \ + EMPATHY_TYPE_TP_FILE)) +#define EMPATHY_IS_TP_FILE_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), \ + EMPATHY_TYPE_TP_FILE)) +#define EMPATHY_TP_FILE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), \ + EMPATHY_TYPE_TP_FILE, EmpathyTpFileClass)) + +#define EMPATHY_FT_ERROR_QUARK g_quark_from_static_string ("EmpathyFTError") + +typedef enum { + EMPATHY_FT_ERROR_FAILED, + EMPATHY_FT_ERROR_HASH_MISMATCH, + EMPATHY_FT_ERROR_TP_ERROR, + EMPATHY_FT_ERROR_SOCKET, + EMPATHY_FT_ERROR_NOT_SUPPORTED +} EmpathyFTErrorEnum; typedef struct _EmpathyTpFile EmpathyTpFile; -typedef struct _EmpathyTpFilePriv EmpathyTpFilePriv; typedef struct _EmpathyTpFileClass EmpathyTpFileClass; -struct _EmpathyTpFile -{ - GObject parent; - - /*<private>*/ - EmpathyTpFilePriv *priv; +struct _EmpathyTpFile { + GObject parent; + gpointer priv; }; -struct _EmpathyTpFileClass -{ +struct _EmpathyTpFileClass { GObjectClass parent_class; }; +/* prototypes for operation callbacks */ + +/** + * EmpathyTpFileProgressCallback: + * @tp_file: the #EmpathyTpFile being transferred + * @current_bytes: the bytes currently transferred by the operation + * @user_data: user data passed to the callback + **/ +typedef void (* EmpathyTpFileProgressCallback) + (EmpathyTpFile *tp_file, + guint64 current_bytes, + gpointer user_data); + +/** + * EmpathyTpFileOperationCallback: + * @tp_file: the #EmpathyTpFile that has been transferred + * @error: a #GError if the operation didn't succeed, %NULL otherwise + * @user_data: user data passed to the callback + **/ +typedef void (* EmpathyTpFileOperationCallback) + (EmpathyTpFile *tp_file, + const GError *error, + gpointer user_data); + GType empathy_tp_file_get_type (void) G_GNUC_CONST; -EmpathyTpFile *empathy_tp_file_new (TpChannel *channel); +/* public methods */ + +EmpathyTpFile * empathy_tp_file_new (TpChannel *channel, + gboolean incoming); + +void empathy_tp_file_accept (EmpathyTpFile *tp_file, + guint64 offset, + GFile *gfile, + GCancellable *cancellable, + EmpathyTpFileProgressCallback progress_callback, + gpointer progress_user_data, + EmpathyTpFileOperationCallback op_callback, + gpointer op_user_data); + +void empathy_tp_file_offer (EmpathyTpFile *tp_file, + GFile *gfile, + GCancellable *cancellable, + EmpathyTpFileProgressCallback progress_callback, + gpointer progress_user_data, + EmpathyTpFileOperationCallback op_callback, + gpointer op_user_data); -TpChannel *empathy_tp_file_get_channel (EmpathyTpFile *tp_file); -void empathy_tp_file_accept (EmpathyTpFile *tp_file, guint64 offset, - GFile *gfile, GError **error); void empathy_tp_file_cancel (EmpathyTpFile *tp_file); -void empathy_tp_file_offer (EmpathyTpFile *tp_file, GFile *gfile, - GError **error); +void empathy_tp_file_close (EmpathyTpFile *tp_file); -EmpathyContact *empathy_tp_file_get_contact (EmpathyTpFile *tp_file); -const gchar *empathy_tp_file_get_filename (EmpathyTpFile *tp_file); gboolean empathy_tp_file_is_incoming (EmpathyTpFile *tp_file); -TpFileTransferState empathy_tp_file_get_state ( - EmpathyTpFile *tp_file, TpFileTransferStateChangeReason *reason); -guint64 empathy_tp_file_get_size (EmpathyTpFile *tp_file); -guint64 empathy_tp_file_get_transferred_bytes (EmpathyTpFile *tp_file); -gint empathy_tp_file_get_remaining_time (EmpathyTpFile *tp_file); -gdouble empathy_tp_file_get_speed (EmpathyTpFile *tp_file); -const gchar *empathy_tp_file_get_content_type (EmpathyTpFile *tp_file); -gboolean empathy_tp_file_is_ready (EmpathyTpFile *tp_file); G_END_DECLS |