Replace nautilus_window_set_initiated_unmount() with an initiated-unmount signal

This signal just carries a boolean initiated_unmount argument, which
is meant to say True when the unmount/eject starts, and False when
the operation finishes.

We may want to rename all of this to unmount_started / stopped, etc.
I don't know if the caller needs to know about the mount_op in question,
or if it can be inferred from what the caller knows to be the current
shown location on the GtkPlacesSidebar.

Signed-off-by: Federico Mena Quintero <federico@gnome.org>
This commit is contained in:
Federico Mena Quintero 2011-10-03 11:51:46 -05:00
parent acccb10fd7
commit 644d8e4b64

View File

@ -83,6 +83,8 @@ struct _GtkPlacesSidebarClass {
void (* location_selected) (GtkPlacesSidebar *sidebar,
GFile *location,
GtkPlacesOpenMode open_mode);
void (* initiated_unmount) (GtkPlacesSidebar *sidebar,
gboolean initiated_unmount);
};
enum {
@ -121,6 +123,7 @@ typedef enum {
enum {
LOCATION_SELECTED,
INITIATED_UNMOUNT,
LAST_SIGNAL,
};
@ -196,6 +199,13 @@ emit_location_selected (GtkPlacesSidebar *sidebar, GFile *location, GtkPlacesOpe
location, open_mode);
}
static void
emit_initiated_unmount (GtkPlacesSidebar *sidebar, gboolean initiated_unmount)
{
g_signal_emit (sidebar, places_sidebar_signals[INITIATED_UNMOUNT], 0,
initiated_unmount);
}
static GdkPixbuf *
get_eject_icon (GtkPlacesSidebar *sidebar,
gboolean highlighted)
@ -1960,7 +1970,7 @@ unmount_done (gpointer data)
GtkPlacesSidebar *sidebar;
sidebar = data;
nautilus_window_set_initiated_unmount (sidebar->window, FALSE);
emit_initiated_unmount (sidebar, FALSE);
g_object_unref (sidebar);
}
@ -1969,7 +1979,7 @@ do_unmount (GMount *mount,
GtkPlacesSidebar *sidebar)
{
if (mount != NULL) {
nautilus_window_set_initiated_unmount (sidebar->window, TRUE);
emit_initiated_unmount (sidebar, TRUE);
nautilus_file_operations_unmount_mount_full (NULL, mount, FALSE, TRUE,
unmount_done,
g_object_ref (sidebar));
@ -2014,7 +2024,7 @@ drive_eject_cb (GObject *source_object,
char *name;
sidebar = user_data;
nautilus_window_set_initiated_unmount (sidebar->window, FALSE);
emit_initiated_unmount (sidebar, FALSE);
g_object_unref (sidebar);
error = NULL;
@ -2043,7 +2053,7 @@ volume_eject_cb (GObject *source_object,
char *name;
sidebar = user_data;
nautilus_window_set_initiated_unmount (sidebar->window, FALSE);
emit_initiated_unmount (sidebar, FALSE);
g_object_unref (sidebar);
error = NULL;
@ -2072,7 +2082,7 @@ mount_eject_cb (GObject *source_object,
char *name;
sidebar = user_data;
nautilus_window_set_initiated_unmount (sidebar->window, FALSE);
emit_initiated_unmount (sidebar, FALSE);
g_object_unref (sidebar);
error = NULL;
@ -2100,15 +2110,15 @@ do_eject (GMount *mount,
mount_op = gtk_mount_operation_new (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (sidebar))));
if (mount != NULL) {
nautilus_window_set_initiated_unmount (sidebar->window, TRUE);
emit_initiated_unmount (sidebar, TRUE);
g_mount_eject_with_operation (mount, 0, mount_op, NULL, mount_eject_cb,
g_object_ref (sidebar));
} else if (volume != NULL) {
nautilus_window_set_initiated_unmount (sidebar->window, TRUE);
emit_initiated_unmount (sidebar, TRUE);
g_volume_eject_with_operation (volume, 0, mount_op, NULL, volume_eject_cb,
g_object_ref (sidebar));
} else if (drive != NULL) {
nautilus_window_set_initiated_unmount (sidebar->window, TRUE);
emit_initiated_unmount (sidebar, TRUE);
g_drive_eject_with_operation (drive, 0, mount_op, NULL, drive_eject_cb,
g_object_ref (sidebar));
}
@ -2316,7 +2326,7 @@ drive_stop_cb (GObject *source_object,
char *name;
sidebar = user_data;
nautilus_window_set_initiated_unmount (sidebar->window, FALSE);
emit_initiated_unmount (sidebar, FALSE);
g_object_unref (sidebar);
error = NULL;
@ -2353,7 +2363,7 @@ stop_shortcut_cb (GtkMenuItem *item,
GMountOperation *mount_op;
mount_op = gtk_mount_operation_new (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (sidebar))));
nautilus_window_set_initiated_unmount (sidebar->window, TRUE);
emit_initiated_unmount (sidebar, TRUE);
g_drive_stop (drive, G_MOUNT_UNMOUNT_NONE, mount_op, NULL, drive_stop_cb,
g_object_ref (sidebar));
g_object_unref (mount_op);
@ -3300,6 +3310,16 @@ gtk_places_sidebar_class_init (GtkPlacesSidebarClass *class)
G_TYPE_NONE, 2,
G_TYPE_OBJECT,
G_TYPE_ENUM);
places_sidebar_signals [INITIATED_UNMOUNT] =
g_signal_new (I_("initiated-unmount"),
G_OBJECT_CLASS_TYPE (gobject_class),
G_SIGNAL_RUN_FIRST,
G_STRUCT_OFFSET (GtkPlacesSidebarClass, initiated_unmount),
NULL, NULL,
gtk_marshal_VOID__BOOLEAN,
G_TYPE_NONE, 1,
G_TYPE_BOOLEAN);
}
static void