From 44375ad7c595884c091056a1955d08a1975c5516 Mon Sep 17 00:00:00 2001 From: Cosimo Cecchi Date: Fri, 6 Jul 2012 15:41:47 -0400 Subject: [PATCH] mount-operation: add show-unmount-progress signal The actual implementation will be in gvfs. https://bugzilla.gnome.org/show_bug.cgi?id=676111 --- gio/gmountoperation.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ gio/gmountoperation.h | 6 +++++- 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/gio/gmountoperation.c b/gio/gmountoperation.c index a769e98..118d0fe 100644 --- a/gio/gmountoperation.c +++ b/gio/gmountoperation.c @@ -59,6 +59,7 @@ enum { REPLY, ABORTED, SHOW_PROCESSES, + SHOW_UNMOUNT_PROGRESS, LAST_SIGNAL }; @@ -240,6 +241,15 @@ show_processes (GMountOperation *op, } static void +show_unmount_progress (GMountOperation *op, + const gchar *message, + guint64 time_left, + guint64 bytes_left) +{ + /* nothing to do */ +} + +static void g_mount_operation_class_init (GMountOperationClass *klass) { GObjectClass *object_class; @@ -254,6 +264,7 @@ g_mount_operation_class_init (GMountOperationClass *klass) klass->ask_password = ask_password; klass->ask_question = ask_question; klass->show_processes = show_processes; + klass->show_unmount_progress = show_unmount_progress; /** * GMountOperation::ask-password: @@ -373,6 +384,41 @@ g_mount_operation_class_init (GMountOperationClass *klass) G_TYPE_STRING, G_TYPE_ARRAY, G_TYPE_STRV); /** + * GMountOperation::show-unmount-progress: + * @op: a #GMountOperation: + * @message: string containing a mesage to display to the user + * @time_left: the estimated time left before the operation completes, or -1 + * @bytes_left: the amount of bytes to be written before the operation + * completes (or -1 if such amount is not known), or zero if the operation + * is completed + * + * Emitted when an unmount operation has been busy for more than some time + * (typically 1.5 seconds). + * + * When unmounting or ejecting a volume, the kernel might need to flush + * pending data in its buffers to the volume stable storage, and this operation + * can take a considerable amount of time. This signal may be emitted several + * times as long as the unmount operation is outstanding, and then one + * last time when the operation is completed, with @bytes_left set to zero. + * + * Implementations of GMountOperation should handle this signal by + * showing an UI notification, and then dismiss it, or show another notification + * of completion, when @bytes_left reaches zero. + * + * If the message contains a line break, the first line should be + * presented as a heading. For example, it may be used as the + * primary text in a #GtkMessageDialog. + */ + signals[SHOW_UNMOUNT_PROGRESS] = + g_signal_new (I_("show-unmount-progress"), + G_TYPE_FROM_CLASS (object_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GMountOperationClass, show_unmount_progress), + NULL, NULL, NULL, + G_TYPE_NONE, 3, + G_TYPE_STRING, G_TYPE_UINT64, G_TYPE_UINT64); + + /** * GMountOperation:username: * * The user name that is used for authentication when carrying out diff --git a/gio/gmountoperation.h b/gio/gmountoperation.h index 8432b80..ae36398 100644 --- a/gio/gmountoperation.h +++ b/gio/gmountoperation.h @@ -80,6 +80,11 @@ struct _GMountOperationClass GArray *processes, const gchar *choices[]); + void (* show_unmount_progress) (GMountOperation *op, + const gchar *message, + guint64 time_left, + guint64 bytes_left); + /*< private >*/ /* Padding for future expansion */ void (*_g_reserved1) (void); @@ -91,7 +96,6 @@ struct _GMountOperationClass void (*_g_reserved7) (void); void (*_g_reserved8) (void); void (*_g_reserved9) (void); - void (*_g_reserved10) (void); }; GType g_mount_operation_get_type (void) G_GNUC_CONST; -- 2.7.4