diff options
Diffstat (limited to 'src/format-window.c')
-rw-r--r-- | src/format-window.c | 231 |
1 files changed, 138 insertions, 93 deletions
diff --git a/src/format-window.c b/src/format-window.c index 17fc595..f652afb 100644 --- a/src/format-window.c +++ b/src/format-window.c @@ -153,20 +153,19 @@ update_ui_controls (FormatDialogPrivate *priv) /* most of the code here was stolen from palimpsest */ +/* keep in sync with gdu-shell.c/details_update() */ static void update_ui (FormatDialogPrivate *priv) { - char *details1; - char *details2; - char *details3; char *s; + char *p; char *name = NULL; - char *icon_name = NULL; - GdkPixbuf *pixbuf; + GdkPixbuf *pixbuf = NULL; const char *usage; const char *type; const char *device_file; - char *strsize = NULL; + guint64 presentable_size = 0; + char *strsize_long; GduDevice *device = NULL; GduPresentable *toplevel_presentable = NULL; GduDevice *toplevel_device = NULL; @@ -176,6 +175,8 @@ update_ui (FormatDialogPrivate *priv) gboolean known_fs; const char *scheme; char **flags; + GPtrArray *details; + guint n; if (priv->presentable) { @@ -183,9 +184,9 @@ update_ui (FormatDialogPrivate *priv) toplevel_presentable = gdu_presentable_get_toplevel (priv->presentable); if (toplevel_presentable != NULL) toplevel_device = gdu_presentable_get_device (toplevel_presentable); - icon_name = gdu_presentable_get_icon_name (priv->presentable); name = gdu_presentable_get_name (priv->presentable); - strsize = gdu_util_get_size_for_display (gdu_presentable_get_size (priv->presentable), FALSE); + presentable_size = gdu_presentable_get_size (priv->presentable); + pixbuf = gdu_util_get_pixbuf_for_presentable_at_pixel_size (priv->presentable, 112); } /* window title */ @@ -195,15 +196,6 @@ update_ui (FormatDialogPrivate *priv) /* icon */ - pixbuf = NULL; - /* we can also use gdu_util_get_pixbuf_for_presentable() */ - if (icon_name != NULL) { - pixbuf = gtk_icon_theme_load_icon (gtk_icon_theme_get_default (), - icon_name, - 96, - GTK_ICON_LOOKUP_GENERIC_FALLBACK, - NULL); - } gtk_image_set_from_pixbuf (GTK_IMAGE (priv->icon_image), pixbuf); if (pixbuf) g_object_unref (pixbuf); @@ -221,31 +213,20 @@ update_ui (FormatDialogPrivate *priv) type = gdu_device_id_get_type (device); device_file = gdu_device_get_device_file (device); } + details = g_ptr_array_new (); + - details1 = NULL; - details2 = NULL; - details3 = NULL; + /* header labels */ + if (presentable_size > 0) { + strsize_long = gdu_util_get_size_for_display (presentable_size, TRUE); + } else { + strsize_long = g_strdup ("Unknown Size"); + } - /* Labels, header */ - /* TODO: clean unused code up */ if (GDU_IS_DRIVE (priv->presentable)) { - details3 = g_strdup (device_file); - if (GDU_IS_ACTIVATABLE_DRIVE (priv->presentable)) { - switch (gdu_activatable_drive_get_kind (GDU_ACTIVATABLE_DRIVE (priv->presentable))) { - case GDU_ACTIVATABLE_DRIVE_KIND_LINUX_MD: - details1 = g_strdup (_("Linux Software RAID")); - break; - default: - details1 = g_strdup (_("Activatable Drive")); - break; - } - } else { - s = gdu_util_get_connection_for_display ( - gdu_device_drive_get_connection_interface (device), - gdu_device_drive_get_connection_speed (device)); - details1 = g_strdup_printf (_("Connected via %s"), s); - g_free (s); - } + + g_ptr_array_add (details, + g_strdup (strsize_long)); if (device == NULL) { /* TODO */ @@ -264,15 +245,19 @@ update_ui (FormatDialogPrivate *priv) s = g_strdup_printf (_("Unknown Scheme: %s"), scheme); } - details2 = g_strdup_printf (_("%s Partitioned Media (%s)"), strsize, s); + g_ptr_array_add (details, + g_strdup_printf (_("Partitioned Media (%s)"), s)); g_free (s); } else if (usage != NULL && strlen (usage) > 0) { - details2 = g_strdup_printf (_("%s Unpartitioned Media"), strsize); + g_ptr_array_add (details, + g_strdup (_("Unpartitioned Media"))); } else if (!gdu_device_is_media_available (device)) { - details2 = g_strdup_printf (_("No Media Detected")); + g_ptr_array_add (details, + g_strdup_printf (_("No Media Detected"))); } else { - details2 = g_strdup_printf (_("Unrecognized")); + g_ptr_array_add (details, + g_strdup_printf (_("Unrecognized"))); } } else { if (gdu_device_is_partition_table (device)) { @@ -287,25 +272,49 @@ update_ui (FormatDialogPrivate *priv) } else { s = g_strdup_printf (_("Unknown Scheme: %s"), scheme); } - details2 = g_strdup_printf (_("Partitioned (%s)"), s); - g_free (s); + g_ptr_array_add (details, s); } else if (usage != NULL && strlen (usage) > 0) { - details2 = g_strdup_printf (_("Not Partitioned")); + g_ptr_array_add (details, + g_strdup_printf (_("Not Partitioned"))); } else if (!gdu_device_is_media_available (device)) { - details2 = g_strdup_printf (_("No Media Detected")); + g_ptr_array_add (details, + g_strdup_printf (_("No Media Detected"))); } else { - details2 = g_strdup_printf (_("Unrecognized")); + g_ptr_array_add (details, + g_strdup_printf (_("Unrecognized"))); } } + } + + if (GDU_IS_LINUX_MD_DRIVE (priv->presentable)) { + g_ptr_array_add (details, + g_strdup (_("Linux Software RAID"))); + } else { + s = gdu_util_get_connection_for_display ( + gdu_device_drive_get_connection_interface (device), + gdu_device_drive_get_connection_speed (device)); + g_ptr_array_add (details, + g_strdup_printf (_("Connected via %s"), s)); + g_free (s); + } + if (device_file != NULL) { if (gdu_device_is_read_only (device)) { - s = details3; - details3 = g_strconcat (details3, _(" (Read Only)"), NULL); - g_free (s); + g_ptr_array_add (details, + g_strdup_printf (_("%s (Read Only)"), device_file)); + } else { + g_ptr_array_add (details, + g_strdup (device_file)); } + } else { + g_ptr_array_add (details, + g_strdup (_("Not running"))); } + } else if (GDU_IS_VOLUME (priv->presentable)) { - details3 = g_strdup (device_file); + + g_ptr_array_add (details, + g_strdup (strsize_long)); if (strcmp (usage, "filesystem") == 0) { char *fsname; @@ -313,7 +322,8 @@ update_ui (FormatDialogPrivate *priv) gdu_device_id_get_type (device), gdu_device_id_get_version (device), TRUE); - details1 = g_strdup_printf (_("%s %s File System"), strsize, fsname); + g_ptr_array_add (details, + g_strdup_printf (_("%s File System"), fsname)); g_free (fsname); } else if (strcmp (usage, "raid") == 0) { char *fsname; @@ -321,84 +331,115 @@ update_ui (FormatDialogPrivate *priv) gdu_device_id_get_type (device), gdu_device_id_get_version (device), TRUE); - details1 = g_strdup_printf (_("%s %s"), strsize, fsname); - g_free (fsname); + g_ptr_array_add (details, fsname); } else if (strcmp (usage, "crypto") == 0) { - details1 = g_strdup_printf (_("%s Encrypted LUKS Device"), strsize); + g_ptr_array_add (details, + g_strdup (_("Encrypted LUKS Device"))); } else if (strcmp (usage, "other") == 0) { if (strcmp (type, "swap") == 0) { - details1 = g_strdup_printf (_("%s Swap Space"), strsize); + g_ptr_array_add (details, + g_strdup (_("Swap Space"))); } else { - details1 = g_strdup_printf (_("%s Data"), strsize); + g_ptr_array_add (details, + g_strdup (_("Data"))); } } else { - details1 = g_strdup_printf (_("%s Unrecognized"), strsize); + g_ptr_array_add (details, + g_strdup (_("Unrecognized"))); } if (gdu_device_is_luks_cleartext (device)) { - details2 = g_strdup (_("Unlocked Encrypted LUKS Volume")); + g_ptr_array_add (details, + g_strdup (_("Unlocked Encrypted LUKS Volume"))); } else { if (gdu_device_is_partition (device)) { char *part_desc; part_desc = gdu_util_get_desc_for_part_type (gdu_device_partition_get_scheme (device), gdu_device_partition_get_type (device)); - details2 = g_strdup_printf (_("Partition %d (%s)"), - gdu_device_partition_get_number (device), part_desc); + g_ptr_array_add (details, + g_strdup_printf (_("Partition %d (%s)"), + gdu_device_partition_get_number (device), part_desc)); g_free (part_desc); } else { - details2 = g_strdup (_("Not Partitioned")); + g_ptr_array_add (details, + g_strdup (_("Not Partitioned"))); } } + s = g_strdup (device_file); if (gdu_device_is_read_only (device)) { - s = details3; - details3 = g_strconcat (details3, _(" (Read Only)"), NULL); - g_free (s); + p = s; + s = g_strconcat (s, _(" (Read Only)"), NULL); + g_free (p); } if (gdu_device_is_mounted (device)) { - s = details3; - details3 = g_strconcat (details3, - _(" mounted at "), - gdu_device_get_mount_path (device), - NULL); - g_free (s); + p = s; + s = g_strconcat (s, + _(" mounted at "), + gdu_device_get_mount_path (device), + NULL); + g_free (p); } + g_ptr_array_add (details, s); + + } else if (GDU_IS_VOLUME_HOLE (priv->presentable)) { - details1 = g_strdup_printf (_("%s Unallocated"), strsize); + g_ptr_array_add (details, + g_strdup (strsize_long)); - if (toplevel_device != NULL) { - details2 = g_strdup (gdu_device_get_device_file (toplevel_device)); + g_ptr_array_add (details, + g_strdup (_("Unallocated Space"))); - if (gdu_device_is_read_only (toplevel_device)) { - s = details2; - details2 = g_strconcat (details2, _(" (Read Only)"), NULL); - g_free (s); - } + if (toplevel_device != NULL) { + if (gdu_device_is_read_only (toplevel_device)) + g_ptr_array_add (details, g_strdup_printf (_("%s (Read Only)"), gdu_device_get_device_file (toplevel_device))); + else + g_ptr_array_add (details, g_strdup (gdu_device_get_device_file (toplevel_device))); } } + if (device) g_print ("gdu_device_id_get_type (device) = '%s', gdu_device_partition_get_type (device) = '%s'\n", gdu_device_id_get_type (device), gdu_device_partition_get_type (device)); - if (icon_name) - g_free (icon_name); if (name) g_free (name); - if (strsize) - g_free (strsize); + if (strsize_long) + g_free (strsize_long); + + + for (n = 0; n < 4; n++) { + GtkWidget *label; + const gchar *detail_str; + + switch (n) { + case 0: + label = priv->details1_label; + break; + case 1: + label = priv->details2_label; + break; + case 2: + label = priv->details3_label; + break; + case 3: + label = priv->details4_label; + break; + } + + if (n < details->len) + detail_str = details->pdata[n]; + else + detail_str = ""; - gtk_label_set_markup (GTK_LABEL (priv->details1_label), details1); - gtk_label_set_markup (GTK_LABEL (priv->details2_label), details2); - gtk_label_set_markup (GTK_LABEL (priv->details3_label), details3); - if (details1) - g_free (details1); - if (details2) - g_free (details2); - if (details3) - g_free (details3); + gtk_label_set_markup (GTK_LABEL (label), detail_str); + } + + g_ptr_array_foreach (details, (GFunc) g_free, NULL); + g_ptr_array_free (details, TRUE); /* partition type combo */ @@ -776,6 +817,10 @@ nautilus_gdu_spawn_dialog (GduPresentable *presentable, gtk_box_pack_start (GTK_BOX (vbox3), label, FALSE, TRUE, 0); priv->details3_label = label; + label = gtk_label_new (NULL); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_box_pack_start (GTK_BOX (vbox3), label, FALSE, TRUE, 0); + priv->details4_label = label; /* partition */ |