[nautilus] file-view: Add unmount notification



commit 567bd8688408d569037b0a934845f5c4b8635ae1
Author: Xiaoguang Wang <xwang suse com>
Date:   Thu Apr 26 10:47:20 2018 +0800

    file-view: Add unmount notification
    
    Unmounting disk from file view context menu shows notification same as
    unmounting from sidebar.
    
    https://gitlab.gnome.org/GNOME/nautilus/issues/379

 src/nautilus-file-operations.c |  6 +++
 src/nautilus-ui-utilities.c    | 84 ++++++++++++++++++++++++++++++++++++++++++
 src/nautilus-ui-utilities.h    | 10 ++++-
 src/nautilus-window.c          | 83 -----------------------------------------
 4 files changed, 99 insertions(+), 84 deletions(-)
---
diff --git a/src/nautilus-file-operations.c b/src/nautilus-file-operations.c
index 55bc3abae..7e229f60e 100644
--- a/src/nautilus-file-operations.c
+++ b/src/nautilus-file-operations.c
@@ -2638,6 +2638,12 @@ do_unmount (UnmountData *data)
     {
         mount_op = gtk_mount_operation_new (data->parent_window);
     }
+
+    g_signal_connect (mount_op, "show-unmount-progress",
+                      G_CALLBACK (show_unmount_progress_cb), NULL);
+    g_signal_connect (mount_op, "aborted",
+                      G_CALLBACK (show_unmount_progress_aborted_cb), NULL);
+
     if (data->eject)
     {
         g_mount_eject_with_operation (data->mount,
diff --git a/src/nautilus-ui-utilities.c b/src/nautilus-ui-utilities.c
index ac2c423da..cc8d71ed3 100644
--- a/src/nautilus-ui-utilities.c
+++ b/src/nautilus-ui-utilities.c
@@ -23,6 +23,7 @@
 
 #include "nautilus-ui-utilities.h"
 #include "nautilus-icon-info.h"
+#include "nautilus-application.h"
 #include <eel/eel-graphic-effects.h>
 
 #include <gio/gio.h>
@@ -420,3 +421,86 @@ show_dialog (const gchar *primary_text,
 
     return GTK_DIALOG (dialog);
 }
+
+static void
+notify_unmount_done (GMountOperation *op,
+                     const gchar     *message)
+{
+    NautilusApplication *application;
+    gchar *notification_id;
+
+    application = nautilus_application_get_default ();
+    notification_id = g_strdup_printf ("nautilus-mount-operation-%p", op);
+    nautilus_application_withdraw_notification (application, notification_id);
+
+    if (message != NULL)
+    {
+        GNotification *unplug;
+        GIcon *icon;
+        gchar **strings;
+
+        strings = g_strsplit (message, "\n", 0);
+        icon = g_themed_icon_new ("media-removable-symbolic");
+        unplug = g_notification_new (strings[0]);
+        g_notification_set_body (unplug, strings[1]);
+        g_notification_set_icon (unplug, icon);
+
+        nautilus_application_send_notification (application, notification_id, unplug);
+        g_object_unref (unplug);
+        g_object_unref (icon);
+        g_strfreev (strings);
+    }
+
+    g_free (notification_id);
+}
+
+static void
+notify_unmount_show (GMountOperation *op,
+                     const gchar     *message)
+{
+    NautilusApplication *application;
+    GNotification *unmount;
+    gchar *notification_id;
+    GIcon *icon;
+    gchar **strings;
+
+    application = nautilus_application_get_default ();
+    strings = g_strsplit (message, "\n", 0);
+    icon = g_themed_icon_new ("media-removable");
+
+    unmount = g_notification_new (strings[0]);
+    g_notification_set_body (unmount, strings[1]);
+    g_notification_set_icon (unmount, icon);
+    g_notification_set_priority (unmount, G_NOTIFICATION_PRIORITY_URGENT);
+
+    notification_id = g_strdup_printf ("nautilus-mount-operation-%p", op);
+    nautilus_application_send_notification (application, notification_id, unmount);
+    g_object_unref (unmount);
+    g_object_unref (icon);
+    g_strfreev (strings);
+    g_free (notification_id);
+}
+
+void
+show_unmount_progress_cb (GMountOperation *op,
+                          const gchar     *message,
+                          gint64           time_left,
+                          gint64           bytes_left,
+                          gpointer         user_data)
+{
+    if (bytes_left == 0)
+    {
+        notify_unmount_done (op, message);
+    }
+    else
+    {
+        notify_unmount_show (op, message);
+    }
+}
+
+void
+show_unmount_progress_aborted_cb (GMountOperation *op,
+                                  gpointer         user_data)
+{
+    notify_unmount_done (op, NULL);
+}
diff --git a/src/nautilus-ui-utilities.h b/src/nautilus-ui-utilities.h
index 06b58f33a..2aa78f432 100644
--- a/src/nautilus-ui-utilities.h
+++ b/src/nautilus-ui-utilities.h
@@ -49,4 +49,12 @@ gchar     * get_text_for_date_range                 (GPtrArray         *date_ran
 GtkDialog * show_dialog                             (const gchar       *primary_text,
                                                      const gchar       *secondary_text,
                                                      GtkWindow         *parent,
-                                                     GtkMessageType     type);
\ No newline at end of file
+                                                     GtkMessageType     type);
+
+void        show_unmount_progress_cb                (GMountOperation   *op,
+                                                     const gchar       *message,
+                                                     gint64             time_left,
+                                                     gint64             bytes_left,
+                                                     gpointer           user_data);
+void        show_unmount_progress_aborted_cb        (GMountOperation   *op,
+                                                     gpointer           user_data);
diff --git a/src/nautilus-window.c b/src/nautilus-window.c
index 4dba58a37..598064d02 100644
--- a/src/nautilus-window.c
+++ b/src/nautilus-window.c
@@ -1008,89 +1008,6 @@ open_location_cb (NautilusWindow     *window,
                                              location, flags, NULL, window, NULL);
 }
 
-static void
-notify_unmount_done (GMountOperation *op,
-                     const gchar     *message)
-{
-    NautilusApplication *application;
-    gchar *notification_id;
-
-    application = nautilus_application_get_default ();
-    notification_id = g_strdup_printf ("nautilus-mount-operation-%p", op);
-    nautilus_application_withdraw_notification (application, notification_id);
-
-    if (message != NULL)
-    {
-        GNotification *unplug;
-        GIcon *icon;
-        gchar **strings;
-
-        strings = g_strsplit (message, "\n", 0);
-        icon = g_themed_icon_new ("media-removable-symbolic");
-        unplug = g_notification_new (strings[0]);
-        g_notification_set_body (unplug, strings[1]);
-        g_notification_set_icon (unplug, icon);
-
-        nautilus_application_send_notification (application, notification_id, unplug);
-        g_object_unref (unplug);
-        g_object_unref (icon);
-        g_strfreev (strings);
-    }
-
-    g_free (notification_id);
-}
-
-static void
-notify_unmount_show (GMountOperation *op,
-                     const gchar     *message)
-{
-    NautilusApplication *application;
-    GNotification *unmount;
-    gchar *notification_id;
-    GIcon *icon;
-    gchar **strings;
-
-    application = nautilus_application_get_default ();
-    strings = g_strsplit (message, "\n", 0);
-    icon = g_themed_icon_new ("media-removable");
-
-    unmount = g_notification_new (strings[0]);
-    g_notification_set_body (unmount, strings[1]);
-    g_notification_set_icon (unmount, icon);
-    g_notification_set_priority (unmount, G_NOTIFICATION_PRIORITY_URGENT);
-
-    notification_id = g_strdup_printf ("nautilus-mount-operation-%p", op);
-    nautilus_application_send_notification (application, notification_id, unmount);
-    g_object_unref (unmount);
-    g_object_unref (icon);
-    g_strfreev (strings);
-    g_free (notification_id);
-}
-
-static void
-show_unmount_progress_cb (GMountOperation *op,
-                          const gchar     *message,
-                          gint64           time_left,
-                          gint64           bytes_left,
-                          gpointer         user_data)
-{
-    if (bytes_left == 0)
-    {
-        notify_unmount_done (op, message);
-    }
-    else
-    {
-        notify_unmount_show (op, message);
-    }
-}
-
-static void
-show_unmount_progress_aborted_cb (GMountOperation *op,
-                                  gpointer         user_data)
-{
-    notify_unmount_done (op, NULL);
-}
-
 static void
 places_sidebar_unmount_operation_cb (NautilusWindow  *window,
                                      GMountOperation *mount_operation)


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