X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gio%2Fgmountoperation.c;h=d0ede5d7e3af19cd7b145a31d3a2073b615931f1;hb=634b69219979c084837c59874e5b2aec01a1d3e4;hp=a769e984fba7ff792fd1c6f3fb786d50141d0e7c;hpb=8e740f726faf659df912c0c496eb5de80f1695ad;p=platform%2Fupstream%2Fglib.git diff --git a/gio/gmountoperation.c b/gio/gmountoperation.c index a769e98..d0ede5d 100644 --- a/gio/gmountoperation.c +++ b/gio/gmountoperation.c @@ -13,9 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General - * Public License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307, USA. + * Public License along with this library; if not, see . * * Author: Alexander Larsson */ @@ -51,14 +49,13 @@ * passed, see each method taking a #GMountOperation for details. */ -G_DEFINE_TYPE (GMountOperation, g_mount_operation, G_TYPE_OBJECT); - enum { ASK_PASSWORD, ASK_QUESTION, REPLY, ABORTED, SHOW_PROCESSES, + SHOW_UNMOUNT_PROGRESS, LAST_SIGNAL }; @@ -83,6 +80,8 @@ enum { PROP_CHOICE }; +G_DEFINE_TYPE_WITH_PRIVATE (GMountOperation, g_mount_operation, G_TYPE_OBJECT) + static void g_mount_operation_set_property (GObject *object, guint prop_id, @@ -240,11 +239,18 @@ show_processes (GMountOperation *op, } static void +show_unmount_progress (GMountOperation *op, + const gchar *message, + gint64 time_left, + gint64 bytes_left) +{ + /* nothing to do */ +} + +static void g_mount_operation_class_init (GMountOperationClass *klass) { GObjectClass *object_class; - - g_type_class_add_private (klass, sizeof (GMountOperationPrivate)); object_class = G_OBJECT_CLASS (klass); object_class->finalize = g_mount_operation_finalize; @@ -254,6 +260,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 +380,44 @@ 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, + * in microseconds, 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. + * + * Since: 2.34 + */ + 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_INT64, G_TYPE_INT64); + + /** * GMountOperation:username: * * The user name that is used for authentication when carrying out @@ -464,9 +509,7 @@ g_mount_operation_class_init (GMountOperationClass *klass) static void g_mount_operation_init (GMountOperation *operation) { - operation->priv = G_TYPE_INSTANCE_GET_PRIVATE (operation, - G_TYPE_MOUNT_OPERATION, - GMountOperationPrivate); + operation->priv = g_mount_operation_get_instance_private (operation); } /**