From 3494cd79df491f8f5771588862e9b7be26e1da34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ant=C3=B3nio=20Fernandes?= Date: Sun, 21 Jan 2024 16:38:45 +0000 Subject: [PATCH] network-cell: Show spinner while mounting/unmounting --- src/nautilus-files-view.c | 23 +++++++++++++++++------ src/nautilus-network-cell.c | 2 ++ src/resources/ui/nautilus-network-cell.ui | 14 ++++++++++++++ 3 files changed, 33 insertions(+), 6 deletions(-) diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c index 281adea73..62782f814 100644 --- a/src/nautilus-files-view.c +++ b/src/nautilus-files-view.c @@ -6829,8 +6829,11 @@ file_mount_callback (NautilusFile *file, gpointer callback_data) { g_autoptr (NautilusFilesView) self = NAUTILUS_FILES_VIEW (callback_data); + NautilusFilesViewPrivate *priv = nautilus_files_view_get_instance_private (self); + NautilusViewItem *item = nautilus_view_model_get_item_for_file (priv->model, file); nautilus_file_invalidate_attributes (file, NAUTILUS_FILE_ATTRIBUTE_MOUNT); + nautilus_view_item_set_loading (item, FALSE); if (error != NULL && (error->domain != G_IO_ERROR || @@ -6855,6 +6858,10 @@ file_unmount_callback (NautilusFile *file, gpointer callback_data) { g_autoptr (NautilusFilesView) self = NAUTILUS_FILES_VIEW (callback_data); + NautilusFilesViewPrivate *priv = nautilus_files_view_get_instance_private (self); + NautilusViewItem *item = nautilus_view_model_get_item_for_file (priv->model, file); + + nautilus_view_item_set_loading (item, FALSE); if (error != NULL && (error->domain != G_IO_ERROR || @@ -6919,13 +6926,12 @@ action_mount_volume (GSimpleAction *action, GVariant *state, gpointer user_data) { + NautilusFilesView *view = NAUTILUS_FILES_VIEW (user_data); + NautilusFilesViewPrivate *priv = nautilus_files_view_get_instance_private (view); NautilusFile *file; GList *selection, *l; - NautilusFilesView *view; GMountOperation *mount_op; - view = NAUTILUS_FILES_VIEW (user_data); - selection = nautilus_view_get_selection (NAUTILUS_VIEW (view)); for (l = selection; l != NULL; l = l->next) { @@ -6933,6 +6939,9 @@ action_mount_volume (GSimpleAction *action, if (nautilus_file_can_mount (file)) { + NautilusViewItem *item = nautilus_view_model_get_item_for_file (priv->model, file); + + nautilus_view_item_set_loading (item, TRUE); mount_op = gtk_mount_operation_new (nautilus_files_view_get_containing_window (view)); g_mount_operation_set_password_save (mount_op, G_PASSWORD_SAVE_FOR_SESSION); nautilus_file_mount (file, mount_op, NULL, @@ -6949,12 +6958,11 @@ action_unmount_volume (GSimpleAction *action, GVariant *state, gpointer user_data) { + NautilusFilesView *view = NAUTILUS_FILES_VIEW (user_data); + NautilusFilesViewPrivate *priv = nautilus_files_view_get_instance_private (view); NautilusFile *file; g_autolist (NautilusFile) selection = NULL; GList *l; - NautilusFilesView *view; - - view = NAUTILUS_FILES_VIEW (user_data); selection = nautilus_view_get_selection (NAUTILUS_VIEW (view)); @@ -6964,6 +6972,9 @@ action_unmount_volume (GSimpleAction *action, if (nautilus_file_can_unmount (file)) { GMountOperation *mount_op; + NautilusViewItem *item = nautilus_view_model_get_item_for_file (priv->model, file); + + nautilus_view_item_set_loading (item, TRUE); mount_op = gtk_mount_operation_new (nautilus_files_view_get_containing_window (view)); nautilus_file_unmount (file, mount_op, NULL, file_unmount_callback, g_object_ref (view)); diff --git a/src/nautilus-network-cell.c b/src/nautilus-network-cell.c index 01de35c61..b9da3d495 100644 --- a/src/nautilus-network-cell.c +++ b/src/nautilus-network-cell.c @@ -87,6 +87,8 @@ nautilus_network_cell_init (NautilusNetworkCell *self) /* Connect automatically to an item. */ self->item_signal_group = g_signal_group_new (NAUTILUS_TYPE_VIEW_ITEM); + g_signal_group_connect_swapped (self->item_signal_group, "notify::loading", + (GCallback) on_file_changed, self); g_signal_group_connect_swapped (self->item_signal_group, "file-changed", (GCallback) on_file_changed, self); g_signal_connect_object (self->item_signal_group, "bind", diff --git a/src/resources/ui/nautilus-network-cell.ui b/src/resources/ui/nautilus-network-cell.ui index 748944376..ac9b399f2 100644 --- a/src/resources/ui/nautilus-network-cell.ui +++ b/src/resources/ui/nautilus-network-cell.ui @@ -56,6 +56,20 @@ + + + + + NautilusNetworkCell + + + + + NautilusNetworkCell + + + + Disconnect