summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomas Bzatek <tbzatek@tbzatek.englab.brq.redhat.com>2009-01-28 17:56:32 +0100
committerTomas Bzatek <tbzatek@tbzatek.englab.brq.redhat.com>2009-01-28 17:56:32 +0100
commit3a3e0de7a8be63a8a62c08f70a31d917d7a499f7 (patch)
tree355bc0321622927be5e6756147a897dc26fcca54
parent3a4e31b5ab5d45df8c44b0e8d2f59dfabfe62981 (diff)
downloadnautilus-gdu-3a3e0de7a8be63a8a62c08f70a31d917d7a499f7.tar.gz
nautilus-gdu-3a3e0de7a8be63a8a62c08f70a31d917d7a499f7.tar.xz
nautilus-gdu-3a3e0de7a8be63a8a62c08f70a31d917d7a499f7.zip
Handle presentable-removed event
-rw-r--r--TODO3
-rw-r--r--src/nautilus-gdu-window.c53
2 files changed, 40 insertions, 16 deletions
diff --git a/TODO b/TODO
index 8270893..36759b7 100644
--- a/TODO
+++ b/TODO
@@ -7,10 +7,11 @@ Short-term:
- simple standalone mode
- do we need Bootable flag for something?
- make a Fedora package
+ - !! set partition type too !!
- handle LUKS encrypted volumes
-- monitor device/presentable events like eject, umount etc.
+- monitor device/presentable events like eject, umount etc. (try to pull the USB key out and window should disappear)
- show custom icon if user has set it in Nautilus
- is firmware needed for some devices?
- different partition tables?
diff --git a/src/nautilus-gdu-window.c b/src/nautilus-gdu-window.c
index 660ba80..8177ac6 100644
--- a/src/nautilus-gdu-window.c
+++ b/src/nautilus-gdu-window.c
@@ -667,15 +667,20 @@ format_action_completed (GduDevice *device,
error,
_("Error creating partition"));
g_error_free (error);
- } else if (data->encrypt_passphrase != NULL) {
- /* now set the passphrase if requested */
- if (data->save_in_keyring || data->save_in_keyring_session) {
- gdu_util_save_secret (device,
- data->encrypt_passphrase,
- data->save_in_keyring_session);
- /* TODO: show encryption info somewhere? */
- update_ui (data->priv);
+ }
+ else
+ {
+ /* formatting finished */
+ if (data->encrypt_passphrase != NULL) {
+ /* now set the passphrase if requested */
+ if (data->save_in_keyring || data->save_in_keyring_session) {
+ gdu_util_save_secret (device,
+ data->encrypt_passphrase,
+ data->save_in_keyring_session);
+ }
}
+ /* TODO: show encryption info somewhere? */
+ update_ui (data->priv);
}
free_format_action_data (data);
}
@@ -879,6 +884,25 @@ out:
static void
+nautilus_gdu_destroy (FormatDialogPrivate *priv)
+{
+ g_return_if_fail (priv != NULL);
+// g_print ("...destroying...\n");
+ gtk_widget_destroy (GTK_WIDGET (priv->dialog));
+ g_object_unref (priv->presentable);
+ g_object_unref (priv->pool);
+ g_free (priv);
+}
+
+static void
+presentable_removed (GduPresentable *presentable, FormatDialogPrivate *priv)
+{
+ g_return_if_fail (priv != NULL);
+ g_warning ("Presentable removed event.\n");
+ nautilus_gdu_destroy (priv);
+}
+
+static void
format_dialog_got_response (GtkDialog *dialog,
gint response_id,
FormatDialogPrivate *priv)
@@ -893,11 +917,7 @@ format_dialog_got_response (GtkDialog *dialog,
}
else {
/* destroy the window and unref the presentable */
-// g_print ("...destroying...\n");
- gtk_widget_destroy (GTK_WIDGET (dialog));
- g_object_unref (priv->presentable);
- g_object_unref (priv->pool);
- g_free (priv);
+ nautilus_gdu_destroy (priv);
}
}
@@ -1130,14 +1150,17 @@ nautilus_gdu_spawn_dialog (GduPresentable *presentable)
// gtk_dialog_set_response_sensitive (dialog, GTK_RESPONSE_OK, FALSE);
- /* update sensivity and length of fs label + entry */
+ /* update sensivity and length of fs label + entry */
g_signal_connect (priv->part_type_combo_box, "changed",
G_CALLBACK (type_combo_box_changed), priv);
g_signal_connect (G_OBJECT (dialog), "response",
G_CALLBACK (format_dialog_got_response), priv);
+ /* catch Presentable events */
+ g_signal_connect (G_OBJECT (priv->presentable), "removed",
+ G_CALLBACK (presentable_removed), priv);
+
gtk_widget_show_all (GTK_WIDGET (dialog));
gtk_widget_grab_focus (priv->close_button);
-
update_ui (priv);
update_ui_progress (priv, NULL, FALSE);
}