[nautilus] file-view: Add unmount notification
- From: Carlos Soriano <csoriano src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus] file-view: Add unmount notification
- Date: Thu, 26 Apr 2018 10:30:45 +0000 (UTC)
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]