[gnome-disk-utility/wip/mdraid] Show "RAID Array is not running" instead of "No Media"



commit 6fac7a1a6bfff5b2d4d6d9df4f9b88854d0eda3e
Author: David Zeuthen <zeuthen gmail com>
Date:   Wed Sep 12 12:14:28 2012 -0400

    Show "RAID Array is not running" instead of "No Media"
    
    Signed-off-by: David Zeuthen <zeuthen gmail com>

 src/disks/gduvolumegrid.c |   61 +++++++++++++++++++++++++++++++++++++++++++-
 src/disks/gduvolumegrid.h |    4 +++
 src/disks/gduwindow.c     |    6 ++++
 3 files changed, 69 insertions(+), 2 deletions(-)
---
diff --git a/src/disks/gduvolumegrid.c b/src/disks/gduvolumegrid.c
index 299a365..35bc54e 100644
--- a/src/disks/gduvolumegrid.c
+++ b/src/disks/gduvolumegrid.c
@@ -92,6 +92,8 @@ struct _GduVolumeGrid
   GridElement *focused;
 
   gboolean animating_spinner;
+
+  gchar *no_media_string;
 };
 
 struct _GduVolumeGridClass
@@ -107,6 +109,7 @@ enum
   PROP_0,
   PROP_CLIENT,
   PROP_BLOCK_OBJECT,
+  PROP_NO_MEDIA_STRING,
 };
 
 enum
@@ -155,6 +158,8 @@ gdu_volume_grid_finalize (GObject *object)
     g_object_unref (grid->block_object);
   g_object_unref (grid->client);
 
+  g_free (grid->no_media_string);
+
   G_OBJECT_CLASS (gdu_volume_grid_parent_class)->finalize (object);
 }
 
@@ -176,6 +181,10 @@ gdu_volume_grid_get_property (GObject    *object,
       g_value_set_object (value, grid->block_object);
       break;
 
+    case PROP_NO_MEDIA_STRING:
+      g_value_set_string (value, grid->no_media_string);
+      break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
       break;
@@ -200,6 +209,10 @@ gdu_volume_grid_set_property (GObject      *object,
       gdu_volume_grid_set_block_object (grid, g_value_get_object (value));
       break;
 
+    case PROP_NO_MEDIA_STRING:
+      gdu_volume_grid_set_no_media_string (grid, g_value_get_string (value));
+      break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
       break;
@@ -511,6 +524,17 @@ gdu_volume_grid_class_init (GduVolumeGridClass *klass)
                                                         G_PARAM_WRITABLE |
                                                         G_PARAM_STATIC_STRINGS));
 
+  g_object_class_install_property (gobject_class,
+                                   PROP_NO_MEDIA_STRING,
+                                   g_param_spec_string ("no-media-string",
+                                                        "No Media String",
+                                                        "The string to show when there is no media or block device",
+                                                        _("No Media"),
+                                                        G_PARAM_READABLE |
+                                                        G_PARAM_WRITABLE |
+                                                        G_PARAM_CONSTRUCT |
+                                                        G_PARAM_STATIC_STRINGS));
+
   signals[CHANGED_SIGNAL] = g_signal_new ("changed",
                                           GDU_TYPE_VOLUME_GRID,
                                           G_SIGNAL_RUN_LAST,
@@ -724,6 +748,7 @@ render_element (GduVolumeGrid *grid,
   GtkStateFlags state;
   GtkJunctionSides sides;
   GtkBorder border;
+  const gchar *markup;
 
   animate_spinner = FALSE;
 
@@ -851,7 +876,10 @@ render_element (GduVolumeGrid *grid,
 
   /* text */
   layout = pango_cairo_create_layout (cr);
-  pango_layout_set_markup (layout, element->markup != NULL ? element->markup : "", -1);
+  markup = element->markup;
+  if (markup == NULL)
+    markup = grid->no_media_string;
+  pango_layout_set_markup (layout, markup, -1);
   desc = pango_font_description_from_string ("Sans 7.0");
   pango_layout_set_font_description (layout, desc);
   pango_font_description_free (desc);
@@ -1532,7 +1560,7 @@ grid_element_set_details (GduVolumeGrid  *grid,
 
     case GDU_VOLUME_GRID_ELEMENT_TYPE_NO_MEDIA:
       {
-        element->markup = g_strdup (_("No Media"));
+        element->markup = NULL; /* means that grid->no_media_string will be used */
 
         if (grid->block_object != NULL)
           {
@@ -1808,3 +1836,32 @@ on_client_changed (UDisksClient   *client,
   GduVolumeGrid *grid = GDU_VOLUME_GRID (user_data);
   recompute_grid (grid);
 }
+
+/* ---------------------------------------------------------------------------------------------------- */
+
+void
+gdu_volume_grid_set_no_media_string   (GduVolumeGrid       *grid,
+                                       const gchar         *str)
+{
+  g_return_if_fail (GDU_IS_VOLUME_GRID (grid));
+  if (g_strcmp0 (grid->no_media_string, str) == 0)
+    goto out;
+
+  g_free (grid->no_media_string);
+  grid->no_media_string = g_strdup (str);
+
+  g_object_notify (G_OBJECT (grid), "no-media-string");
+
+  gtk_widget_queue_draw (GTK_WIDGET (grid));
+
+ out:
+  ;
+}
+
+const gchar *
+gdu_volume_grid_get_no_media_string   (GduVolumeGrid      *grid)
+{
+  g_return_val_if_fail (GDU_IS_VOLUME_GRID (grid), NULL);
+  return grid->no_media_string;
+}
+
diff --git a/src/disks/gduvolumegrid.h b/src/disks/gduvolumegrid.h
index b749391..0489d48 100644
--- a/src/disks/gduvolumegrid.h
+++ b/src/disks/gduvolumegrid.h
@@ -25,6 +25,10 @@ void                      gdu_volume_grid_set_block_object      (GduVolumeGrid
                                                                  UDisksObject        *block_device);
 UDisksObject             *gdu_volume_grid_get_block_object      (GduVolumeGrid      *grid);
 
+void                      gdu_volume_grid_set_no_media_string   (GduVolumeGrid       *grid,
+                                                                 const gchar         *str);
+const gchar              *gdu_volume_grid_get_no_media_string   (GduVolumeGrid      *grid);
+
 gboolean                  gdu_volume_grid_includes_object       (GduVolumeGrid       *grid,
                                                                  UDisksObject        *object);
 gboolean                  gdu_volume_grid_select_object         (GduVolumeGrid       *grid,
diff --git a/src/disks/gduwindow.c b/src/disks/gduwindow.c
index ff6bcc0..9453581 100644
--- a/src/disks/gduwindow.c
+++ b/src/disks/gduwindow.c
@@ -1821,6 +1821,9 @@ update_device_page_for_mdraid (GduWindow      *window,
   gchar *level_desc = NULL;
   char hostname[512];
 
+  gdu_volume_grid_set_no_media_string (GDU_VOLUME_GRID (window->volume_grid),
+                                       _("RAID Array is not running"));
+
   size = udisks_mdraid_get_size (mdraid);
   num_devices = udisks_mdraid_get_num_devices (mdraid);
   block = udisks_client_get_block_for_mdraid (window->client, mdraid);
@@ -1973,6 +1976,9 @@ update_device_page_for_drive (GduWindow      *window,
   const gchar *serial;
   GList *jobs;
 
+  gdu_volume_grid_set_no_media_string (GDU_VOLUME_GRID (window->volume_grid),
+                                       _("No Media"));
+
   //g_debug ("In update_device_page_for_drive() - selected=%s",
   //         object != NULL ? g_dbus_object_get_object_path (object) : "<nothing>");
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]