[glib] mount-operation: add show-unmount-progress signal



commit 44375ad7c595884c091056a1955d08a1975c5516
Author: Cosimo Cecchi <cosimoc gnome org>
Date:   Fri Jul 6 15:41:47 2012 -0400

    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 deletions(-)
---
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;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]