[gnome-disk-utility/wip/mdraid] Show array size and unify some formatting routines
- From: David Zeuthen <davidz src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-disk-utility/wip/mdraid] Show array size and unify some formatting routines
- Date: Fri, 7 Sep 2012 18:01:24 +0000 (UTC)
commit fdad7246a5f7abe4d8c101b9475d3dd7564d6a92
Author: David Zeuthen <zeuthen gmail com>
Date: Fri Sep 7 14:01:11 2012 -0400
Show array size and unify some formatting routines
Signed-off-by: David Zeuthen <zeuthen gmail com>
src/disks/gdudevicetreemodel.c | 33 +---------------
src/disks/gduwindow.c | 84 +++++++++++++++++++++++++++++++++++++++-
src/libgdu/gduutils.c | 64 ++++++++++++++++++++++++++++++
src/libgdu/gduutils.h | 5 ++
4 files changed, 153 insertions(+), 33 deletions(-)
---
diff --git a/src/disks/gdudevicetreemodel.c b/src/disks/gdudevicetreemodel.c
index 76c9aa2..67ca522 100644
--- a/src/disks/gdudevicetreemodel.c
+++ b/src/disks/gdudevicetreemodel.c
@@ -1027,7 +1027,6 @@ update_mdraid (GduDeviceTreeModel *model,
gboolean from_timer)
{
UDisksMDRaid *mdraid = NULL;
- const gchar *level;
const gchar *name;
GIcon *icon = NULL;
gchar *desc = NULL;
@@ -1052,37 +1051,9 @@ update_mdraid (GduDeviceTreeModel *model,
sort_key = g_strdup_printf ("01_mdraid_1_%s", udisks_mdraid_get_uuid (mdraid)); /* TODO: sort_key? */
- level = udisks_mdraid_get_level (mdraid);
name = udisks_mdraid_get_name (mdraid);
- if (g_strcmp0 (level, "raid0") == 0)
- {
- desc = g_strdup ("RAID-0 Array");
- }
- else if (g_strcmp0 (level, "raid1") == 0)
- {
- desc = g_strdup ("RAID-1 Array");
- }
- else if (g_strcmp0 (level, "raid4") == 0)
- {
- desc = g_strdup ("RAID-4 Array");
- }
- else if (g_strcmp0 (level, "raid5") == 0)
- {
- desc = g_strdup ("RAID-5 Array");
- }
- else if (g_strcmp0 (level, "raid6") == 0)
- {
- desc = g_strdup ("RAID-6 Array");
- }
- else if (g_strcmp0 (level, "raid10") == 0)
- {
- desc = g_strdup ("RAID-10 Array");
- }
- else
- {
- desc = g_strdup_printf ("RAID (%s)", level);
- }
+ desc = gdu_utils_get_mdraid_desc (model->client, mdraid);
if (name != NULL && strlen (name) > 0)
{
@@ -1094,7 +1065,7 @@ update_mdraid (GduDeviceTreeModel *model,
}
- icon = g_themed_icon_new ("drive-removable-media"); // TODO
+ icon = g_themed_icon_new ("drive-removable-media"); // MD-TODO
/* TODO: once https://bugzilla.gnome.org/show_bug.cgi?id=657194 is resolved, use that instead
* of hard-coding the color
diff --git a/src/disks/gduwindow.c b/src/disks/gduwindow.c
index 9d2e569..6a890ec 100644
--- a/src/disks/gduwindow.c
+++ b/src/disks/gduwindow.c
@@ -521,7 +521,8 @@ set_selected_object (GduWindow *window,
if (object != NULL)
{
if (udisks_object_peek_drive (object) != NULL ||
- udisks_object_peek_block (object) != NULL)
+ udisks_object_peek_block (object) != NULL ||
+ udisks_object_peek_mdraid (object) != NULL)
{
select_details_page (window, object, DETAILS_PAGE_DEVICE, &show_flags);
}
@@ -1657,9 +1658,11 @@ setup_device_page (GduWindow *window,
UDisksObject *object)
{
UDisksDrive *drive;
+ UDisksMDRaid *mdraid;
UDisksBlock *block;
drive = udisks_object_peek_drive (object);
+ mdraid = udisks_object_peek_mdraid (object);
block = udisks_object_peek_block (object);
gdu_volume_grid_set_container_visible (GDU_VOLUME_GRID (window->volume_grid), FALSE);
@@ -1679,6 +1682,11 @@ setup_device_page (GduWindow *window,
g_list_foreach (blocks, (GFunc) g_object_unref, NULL);
g_list_free (blocks);
}
+ else if (mdraid != NULL)
+ {
+ /* MD-TODO */
+ gdu_volume_grid_set_block_object (GDU_VOLUME_GRID (window->volume_grid), NULL);
+ }
else if (block != NULL)
{
gdu_volume_grid_set_block_object (GDU_VOLUME_GRID (window->volume_grid), object);
@@ -1749,6 +1757,72 @@ get_job_progress_text (GduWindow *window,
return s;
}
+/* ---------------------------------------------------------------------------------------------------- */
+
+static void
+update_device_page_for_mdraid (GduWindow *window,
+ UDisksObject *object,
+ UDisksMDRaid *mdraid,
+ ShowFlags *show_flags)
+{
+ GIcon *icon = NULL;
+ gchar *s = NULL;
+ gchar *desc = NULL;
+ gchar *device_desc = NULL;
+ UDisksBlock *block = NULL;
+ guint64 size;
+
+ size = udisks_mdraid_get_size (mdraid);
+
+ block = udisks_client_get_block_for_mdraid (window->client, mdraid);
+
+ icon = g_themed_icon_new ("drive-removable-media"); // MD-TODO
+
+ desc = gdu_utils_get_mdraid_desc (window->client, mdraid);
+
+ if (block != NULL)
+ {
+ device_desc = get_device_file_for_display (block);
+ }
+ else
+ {
+ /* Translators: shown as the device for a RAID array that is not currently running */
+ device_desc = g_strdup (C_("mdraid", "Not Running"));
+ }
+
+ gtk_image_set_from_gicon (GTK_IMAGE (window->devtab_drive_image), icon, GTK_ICON_SIZE_DIALOG);
+ gtk_widget_show (window->devtab_drive_image);
+
+ s = g_strdup_printf ("<big><b>%s</b></big>", desc);
+ gtk_label_set_markup (GTK_LABEL (window->devtab_drive_name_label), s);
+ gtk_widget_show (window->devtab_drive_name_label);
+ g_free (s);
+ s = g_strdup_printf ("<small>%s</small>", device_desc);
+ gtk_label_set_markup (GTK_LABEL (window->devtab_drive_devices_label), s);
+ gtk_widget_show (window->devtab_drive_devices_label);
+ g_free (s);
+
+ gtk_widget_show (window->devtab_drive_box);
+ gtk_widget_show (window->devtab_drive_vbox);
+ gtk_widget_show (window->devtab_drive_buttonbox);
+ gtk_widget_show (window->devtab_drive_generic_button);
+
+
+ set_size (window,
+ "devtab-drive-size-label",
+ "devtab-drive-size-value-label",
+ size, SET_MARKUP_FLAGS_HYPHEN_IF_EMPTY);
+
+ /* -------------------------------------------------- */
+
+ g_free (device_desc);
+ g_free (desc);
+ g_clear_object (&icon);
+
+ g_clear_object (&block);
+}
+
+/* ---------------------------------------------------------------------------------------------------- */
static void
update_device_page_for_drive (GduWindow *window,
@@ -2504,6 +2578,7 @@ update_device_page (GduWindow *window,
GduVolumeGridElementType type;
UDisksBlock *block;
UDisksDrive *drive;
+ UDisksMDRaid *mdraid;
guint64 size;
GList *children;
GList *l;
@@ -2522,8 +2597,10 @@ update_device_page (GduWindow *window,
object = window->current_object;
- drive = udisks_object_peek_drive (window->current_object);
block = udisks_object_peek_block (window->current_object);
+ drive = udisks_object_peek_drive (window->current_object);
+ mdraid = udisks_object_peek_mdraid (window->current_object);
+
type = gdu_volume_grid_get_selected_type (GDU_VOLUME_GRID (window->volume_grid));
size = gdu_volume_grid_get_selected_size (GDU_VOLUME_GRID (window->volume_grid));
@@ -2533,6 +2610,9 @@ update_device_page (GduWindow *window,
if (drive != NULL)
update_device_page_for_drive (window, object, drive, show_flags);
+ if (mdraid != NULL)
+ update_device_page_for_mdraid (window, object, mdraid, show_flags);
+
if (type == GDU_VOLUME_GRID_ELEMENT_TYPE_CONTAINER)
{
if (block != NULL)
diff --git a/src/libgdu/gduutils.c b/src/libgdu/gduutils.c
index b072e16..ea51a6d 100644
--- a/src/libgdu/gduutils.c
+++ b/src/libgdu/gduutils.c
@@ -663,4 +663,68 @@ gdu_utils_is_ntfs_available (void)
return available;
}
+/* ---------------------------------------------------------------------------------------------------- */
+
+gchar *
+gdu_utils_format_mdraid_level (const gchar *level)
+{
+ gchar *ret = NULL;
+
+ if (g_strcmp0 (level, "raid0") == 0)
+ {
+ ret = g_strdup (_("RAID-0 Array"));
+ }
+ else if (g_strcmp0 (level, "raid1") == 0)
+ {
+ ret = g_strdup (_("RAID-1 Array"));
+ }
+ else if (g_strcmp0 (level, "raid4") == 0)
+ {
+ ret = g_strdup (_("RAID-4 Array"));
+ }
+ else if (g_strcmp0 (level, "raid5") == 0)
+ {
+ ret = g_strdup (_("RAID-5 Array"));
+ }
+ else if (g_strcmp0 (level, "raid6") == 0)
+ {
+ ret = g_strdup (_("RAID-6 Array"));
+ }
+ else if (g_strcmp0 (level, "raid10") == 0)
+ {
+ ret = g_strdup (_("RAID-10 Array"));
+ }
+
+ if (ret == NULL)
+ {
+ ret = g_strdup_printf (_("RAID (%s)"), level);
+ }
+ return ret;
+}
+
+/* ---------------------------------------------------------------------------------------------------- */
+
+gchar *
+gdu_utils_get_mdraid_desc (UDisksClient *client,
+ UDisksMDRaid *raid)
+{
+ gchar *s;
+ gchar *s2;
+ gchar *ret;
+ guint64 size;
+ size = udisks_mdraid_get_size (raid);
+ if (size > 0)
+ {
+ s = udisks_client_get_size_for_display (client, size, FALSE, FALSE);
+ s2 = gdu_utils_format_mdraid_level (udisks_mdraid_get_level (raid));
+ ret = g_strdup_printf ("%s %s", s, s2);
+ g_free (s);
+ g_free (s2);
+ }
+ else
+ {
+ ret = gdu_utils_format_mdraid_level (udisks_mdraid_get_level (raid));
+ }
+ return ret;
+}
diff --git a/src/libgdu/gduutils.h b/src/libgdu/gduutils.h
index f30f9bb..285e580 100644
--- a/src/libgdu/gduutils.h
+++ b/src/libgdu/gduutils.h
@@ -57,6 +57,11 @@ gboolean gdu_utils_show_confirmation (GtkWindow *parent_window,
gboolean gdu_utils_is_ntfs_available (void);
+gchar *gdu_utils_format_mdraid_level (const gchar *level);
+
+gchar *gdu_utils_get_mdraid_desc (UDisksClient *client,
+ UDisksMDRaid *raid);
+
G_END_DECLS
#endif /* __GDU_UTILS_H__ */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]