[gnome-disk-utility/udisks2-port] Simplify update logic



commit bcd25b49c4dbf3c366b70390829b185c7797463b
Author: David Zeuthen <davidz redhat com>
Date:   Mon Oct 24 13:44:02 2011 -0400

    Simplify update logic
    
    Signed-off-by: David Zeuthen <davidz redhat com>

 src/palimpsest/gdudevicetreemodel.c |  115 ++-------------------------
 src/palimpsest/gduvolumegrid.c      |  126 +++---------------------------
 src/palimpsest/gduwindow.c          |  146 +++++------------------------------
 3 files changed, 39 insertions(+), 348 deletions(-)
---
diff --git a/src/palimpsest/gdudevicetreemodel.c b/src/palimpsest/gdudevicetreemodel.c
index eb53051..e061a4a 100644
--- a/src/palimpsest/gdudevicetreemodel.c
+++ b/src/palimpsest/gdudevicetreemodel.c
@@ -56,52 +56,16 @@ G_DEFINE_TYPE (GduDeviceTreeModel, gdu_device_tree_model, GTK_TYPE_TREE_STORE);
 
 static void coldplug (GduDeviceTreeModel *model);
 
-static void on_object_added (GDBusObjectManager  *manager,
-                             GDBusObject         *object,
-                             gpointer             user_data);
-
-static void on_object_removed (GDBusObjectManager  *manager,
-                               GDBusObject         *object,
-                               gpointer             user_data);
-
-static void on_interface_added (GDBusObjectManager  *manager,
-                                GDBusObject         *object,
-                                GDBusInterface      *interface,
-                                gpointer             user_data);
-
-static void on_interface_removed (GDBusObjectManager  *manager,
-                                  GDBusObject         *object,
-                                  GDBusInterface      *interface,
-                                  gpointer             user_data);
-
-static void on_interface_proxy_properties_changed (GDBusObjectManagerClient   *manager,
-                                                   GDBusObjectProxy           *object_proxy,
-                                                   GDBusProxy                 *interface_proxy,
-                                                   GVariant                   *changed_properties,
-                                                   const gchar *const         *invalidated_properties,
-                                                   gpointer                    user_data);
+static void on_client_changed (UDisksClient  *client,
+                               gpointer       user_data);
 
 static void
 gdu_device_tree_model_finalize (GObject *object)
 {
   GduDeviceTreeModel *model = GDU_DEVICE_TREE_MODEL (object);
-  GDBusObjectManager *object_manager;
 
-  object_manager = udisks_client_get_object_manager (model->client);
-  g_signal_handlers_disconnect_by_func (object_manager,
-                                        G_CALLBACK (on_object_added),
-                                        model);
-  g_signal_handlers_disconnect_by_func (object_manager,
-                                        G_CALLBACK (on_object_removed),
-                                        model);
-  g_signal_handlers_disconnect_by_func (object_manager,
-                                        G_CALLBACK (on_interface_added),
-                                        model);
-  g_signal_handlers_disconnect_by_func (object_manager,
-                                        G_CALLBACK (on_interface_removed),
-                                        model);
-  g_signal_handlers_disconnect_by_func (object_manager,
-                                        G_CALLBACK (on_interface_proxy_properties_changed),
+  g_signal_handlers_disconnect_by_func (model->client,
+                                        G_CALLBACK (on_client_changed),
                                         model);
 
   g_list_foreach (model->current_drives, (GFunc) g_object_unref, NULL);
@@ -323,7 +287,6 @@ gdu_device_tree_model_constructed (GObject *object)
 {
   GduDeviceTreeModel *model = GDU_DEVICE_TREE_MODEL (object);
   GType types[GDU_DEVICE_TREE_MODEL_N_COLUMNS];
-  GDBusObjectManager *object_manager;
 
   types[0] = G_TYPE_STRING;
   types[1] = G_TYPE_BOOLEAN;
@@ -339,26 +302,9 @@ gdu_device_tree_model_constructed (GObject *object)
 
   g_assert (gtk_tree_model_get_flags (GTK_TREE_MODEL (model)) & GTK_TREE_MODEL_ITERS_PERSIST);
 
-  object_manager = udisks_client_get_object_manager (model->client);
-  g_signal_connect (object_manager,
-                    "object-added",
-                    G_CALLBACK (on_object_added),
-                    model);
-  g_signal_connect (object_manager,
-                    "object-removed",
-                    G_CALLBACK (on_object_removed),
-                    model);
-  g_signal_connect (object_manager,
-                    "interface-added",
-                    G_CALLBACK (on_interface_added),
-                    model);
-  g_signal_connect (object_manager,
-                    "interface-removed",
-                    G_CALLBACK (on_interface_removed),
-                    model);
-  g_signal_connect (object_manager,
-                    "interface-proxy-properties-changed",
-                    G_CALLBACK (on_interface_proxy_properties_changed),
+  g_signal_connect (model->client,
+                    "changed",
+                    G_CALLBACK (on_client_changed),
                     model);
   coldplug (model);
 
@@ -934,52 +880,9 @@ coldplug (GduDeviceTreeModel *model)
 }
 
 static void
-on_object_added (GDBusObjectManager  *manager,
-                 GDBusObject         *object,
-                 gpointer             user_data)
+on_client_changed (UDisksClient  *client,
+                   gpointer       user_data)
 {
   GduDeviceTreeModel *model = GDU_DEVICE_TREE_MODEL (user_data);
   update_all (model);
 }
-
-static void
-on_object_removed (GDBusObjectManager  *manager,
-                   GDBusObject         *object,
-                   gpointer             user_data)
-{
-  GduDeviceTreeModel *model = GDU_DEVICE_TREE_MODEL (user_data);
-  update_all (model);
-}
-
-static void
-on_interface_added (GDBusObjectManager  *manager,
-                    GDBusObject         *object,
-                    GDBusInterface      *interface,
-                    gpointer             user_data)
-{
-  GduDeviceTreeModel *model = GDU_DEVICE_TREE_MODEL (user_data);
-  update_all (model);
-}
-
-static void
-on_interface_removed (GDBusObjectManager  *manager,
-                      GDBusObject         *object,
-                      GDBusInterface      *interface,
-                      gpointer             user_data)
-{
-  GduDeviceTreeModel *model = GDU_DEVICE_TREE_MODEL (user_data);
-  update_all (model);
-}
-
-static void
-on_interface_proxy_properties_changed (GDBusObjectManagerClient   *manager,
-                                       GDBusObjectProxy           *object_proxy,
-                                       GDBusProxy                 *interface_proxy,
-                                       GVariant                   *changed_properties,
-                                       const gchar *const         *invalidated_properties,
-                                       gpointer                    user_data)
-{
-  GduDeviceTreeModel *model = GDU_DEVICE_TREE_MODEL (user_data);
-  update_all (model);
-}
-
diff --git a/src/palimpsest/gduvolumegrid.c b/src/palimpsest/gduvolumegrid.c
index b5e0956..6c951e2 100644
--- a/src/palimpsest/gduvolumegrid.c
+++ b/src/palimpsest/gduvolumegrid.c
@@ -140,31 +140,6 @@ enum
 
 static guint signals[LAST_SIGNAL] = {0};
 
-static void on_object_added (GDBusObjectManager  *manager,
-                             GDBusObject         *object,
-                             gpointer             user_data);
-
-static void on_object_removed (GDBusObjectManager  *manager,
-                               GDBusObject         *object,
-                               gpointer             user_data);
-
-static void on_interface_added (GDBusObjectManager  *manager,
-                                GDBusObject         *object,
-                                GDBusInterface      *interface,
-                                gpointer             user_data);
-
-static void on_interface_removed (GDBusObjectManager  *manager,
-                                  GDBusObject         *object,
-                                  GDBusInterface      *interface,
-                                  gpointer             user_data);
-
-static void on_interface_proxy_properties_changed (GDBusObjectManagerClient   *manager,
-                                                   GDBusObjectProxy           *object_proxy,
-                                                   GDBusProxy                 *interface_proxy,
-                                                   GVariant                   *changed_properties,
-                                                   const gchar *const         *invalidated_properties,
-                                                   gpointer                    user_data);
-
 G_DEFINE_TYPE (GduVolumeGrid, gdu_volume_grid, GTK_TYPE_WIDGET)
 
 static guint get_depth (GList *elements);
@@ -184,31 +159,20 @@ static GridElement *find_element_for_position (GduVolumeGrid *grid,
 static gboolean gdu_volume_grid_draw (GtkWidget *widget,
                                       cairo_t   *cr);
 
+static void on_client_changed (UDisksClient   *client,
+                               gpointer        user_data);
+
 static void
 gdu_volume_grid_finalize (GObject *object)
 {
   GduVolumeGrid *grid = GDU_VOLUME_GRID (object);
-  GDBusObjectManager *object_manager;
 
   if (grid->container_icon != NULL)
     g_object_unref (grid->container_icon);
   g_free (grid->container_markup);
 
-  object_manager = udisks_client_get_object_manager (grid->client);
-  g_signal_handlers_disconnect_by_func (object_manager,
-                                        G_CALLBACK (on_object_added),
-                                        grid);
-  g_signal_handlers_disconnect_by_func (object_manager,
-                                        G_CALLBACK (on_object_removed),
-                                        grid);
-  g_signal_handlers_disconnect_by_func (object_manager,
-                                        G_CALLBACK (on_interface_added),
-                                        grid);
-  g_signal_handlers_disconnect_by_func (object_manager,
-                                        G_CALLBACK (on_interface_removed),
-                                        grid);
-  g_signal_handlers_disconnect_by_func (object_manager,
-                                        G_CALLBACK (on_interface_proxy_properties_changed),
+  g_signal_handlers_disconnect_by_func (grid->client,
+                                        G_CALLBACK (on_client_changed),
                                         grid);
 
   g_list_foreach (grid->elements, (GFunc) grid_element_free, NULL);
@@ -279,28 +243,10 @@ static void
 gdu_volume_grid_constructed (GObject *object)
 {
   GduVolumeGrid *grid = GDU_VOLUME_GRID (object);
-  GDBusObjectManager *object_manager;
 
-  object_manager = udisks_client_get_object_manager (grid->client);
-  g_signal_connect (object_manager,
-                    "object-added",
-                    G_CALLBACK (on_object_added),
-                    grid);
-  g_signal_connect (object_manager,
-                    "object-removed",
-                    G_CALLBACK (on_object_removed),
-                    grid);
-  g_signal_connect (object_manager,
-                    "interface-added",
-                    G_CALLBACK (on_interface_added),
-                    grid);
-  g_signal_connect (object_manager,
-                    "interface-removed",
-                    G_CALLBACK (on_interface_removed),
-                    grid);
-  g_signal_connect (object_manager,
-                    "interface-proxy-properties-changed",
-                    G_CALLBACK (on_interface_proxy_properties_changed),
+  g_signal_connect (grid->client,
+                    "changed",
+                    G_CALLBACK (on_client_changed),
                     grid);
 
   recompute_grid (grid);
@@ -2115,61 +2061,11 @@ gdu_volume_grid_includes_object (GduVolumeGrid   *grid,
 /* ---------------------------------------------------------------------------------------------------- */
 
 static void
-maybe_update (GduVolumeGrid    *grid,
-              UDisksObject      *object)
-{
-  if (gdu_volume_grid_includes_object (grid, object))
-    recompute_grid (grid);
-}
-
-static void
-on_object_added (GDBusObjectManager  *manager,
-                 GDBusObject         *object,
-                 gpointer             user_data)
+on_client_changed (UDisksClient   *client,
+                   gpointer        user_data)
 {
   GduVolumeGrid *grid = GDU_VOLUME_GRID (user_data);
-  maybe_update (grid, UDISKS_OBJECT (object));
-}
-
-static void
-on_object_removed (GDBusObjectManager  *manager,
-                   GDBusObject         *object,
-                   gpointer             user_data)
-{
-  GduVolumeGrid *grid = GDU_VOLUME_GRID (user_data);
-  maybe_update (grid, UDISKS_OBJECT (object));
-}
-
-static void
-on_interface_added (GDBusObjectManager  *manager,
-                    GDBusObject         *object,
-                    GDBusInterface      *interface,
-                    gpointer             user_data)
-{
-  GduVolumeGrid *grid = GDU_VOLUME_GRID (user_data);
-  maybe_update (grid, UDISKS_OBJECT (object));
-}
-
-static void
-on_interface_removed (GDBusObjectManager  *manager,
-                      GDBusObject         *object,
-                      GDBusInterface      *interface,
-                      gpointer             user_data)
-{
-  GduVolumeGrid *grid = GDU_VOLUME_GRID (user_data);
-  maybe_update (grid, UDISKS_OBJECT (object));
-}
-
-static void
-on_interface_proxy_properties_changed (GDBusObjectManagerClient   *manager,
-                                       GDBusObjectProxy           *object_proxy,
-                                       GDBusProxy                 *interface_proxy,
-                                       GVariant                   *changed_properties,
-                                       const gchar *const         *invalidated_properties,
-                                       gpointer                    user_data)
-{
-  GduVolumeGrid *grid = GDU_VOLUME_GRID (user_data);
-  maybe_update (grid, UDISKS_OBJECT (object_proxy));
+  recompute_grid (grid);
 }
 
 /* ---------------------------------------------------------------------------------------------------- */
diff --git a/src/palimpsest/gduwindow.c b/src/palimpsest/gduwindow.c
index bdb9893..3a3304f 100644
--- a/src/palimpsest/gduwindow.c
+++ b/src/palimpsest/gduwindow.c
@@ -213,56 +213,20 @@ gdu_window_init (GduWindow *window)
                                                      NULL);
 }
 
-static void on_object_added (GDBusObjectManager  *manager,
-                             GDBusObject         *object,
-                             gpointer             user_data);
-
-static void on_object_removed (GDBusObjectManager  *manager,
-                               GDBusObject         *object,
-                               gpointer             user_data);
-
-static void on_interface_added (GDBusObjectManager  *manager,
-                                GDBusObject         *object,
-                                GDBusInterface      *interface,
-                                gpointer             user_data);
-
-static void on_interface_removed (GDBusObjectManager  *manager,
-                                  GDBusObject         *object,
-                                  GDBusInterface      *interface,
-                                  gpointer             user_data);
-
-static void on_interface_proxy_properties_changed (GDBusObjectManagerClient   *manager,
-                                                   GDBusObjectProxy           *object_proxy,
-                                                   GDBusProxy                 *interface_proxy,
-                                                   GVariant                   *changed_properties,
-                                                   const gchar *const         *invalidated_properties,
-                                                   gpointer                    user_data);
+static void on_client_changed (UDisksClient  *client,
+                               gpointer       user_data);
 
 static void
 gdu_window_finalize (GObject *object)
 {
   GduWindow *window = GDU_WINDOW (object);
-  GDBusObjectManager *object_manager;
 
   gtk_window_remove_mnemonic (GTK_WINDOW (window),
                               'd',
                               window->device_treeview);
 
-  object_manager = udisks_client_get_object_manager (window->client);
-  g_signal_handlers_disconnect_by_func (object_manager,
-                                        G_CALLBACK (on_object_added),
-                                        window);
-  g_signal_handlers_disconnect_by_func (object_manager,
-                                        G_CALLBACK (on_object_removed),
-                                        window);
-  g_signal_handlers_disconnect_by_func (object_manager,
-                                        G_CALLBACK (on_interface_added),
-                                        window);
-  g_signal_handlers_disconnect_by_func (object_manager,
-                                        G_CALLBACK (on_interface_removed),
-                                        window);
-  g_signal_handlers_disconnect_by_func (object_manager,
-                                        G_CALLBACK (on_interface_proxy_properties_changed),
+  g_signal_handlers_disconnect_by_func (window->client,
+                                        G_CALLBACK (on_client_changed),
                                         window);
 
   if (window->current_object != NULL)
@@ -693,7 +657,6 @@ gdu_window_constructed (GObject *object)
   GtkCellRenderer *renderer;
   GtkTreeSelection *selection;
   GtkStyleContext *context;
-  GDBusObjectManager *object_manager;
   GList *children, *l;
   guint n;
 
@@ -798,26 +761,9 @@ gdu_window_constructed (GObject *object)
                     window);
   gtk_tree_view_expand_all (GTK_TREE_VIEW (window->device_treeview));
 
-  object_manager = udisks_client_get_object_manager (window->client);
-  g_signal_connect (object_manager,
-                    "object-added",
-                    G_CALLBACK (on_object_added),
-                    window);
-  g_signal_connect (object_manager,
-                    "object-removed",
-                    G_CALLBACK (on_object_removed),
-                    window);
-  g_signal_connect (object_manager,
-                    "interface-added",
-                    G_CALLBACK (on_interface_added),
-                    window);
-  g_signal_connect (object_manager,
-                    "interface-removed",
-                    G_CALLBACK (on_interface_removed),
-                    window);
-  g_signal_connect (object_manager,
-                    "interface-proxy-properties-changed",
-                    G_CALLBACK (on_interface_proxy_properties_changed),
+  g_signal_connect (window->client,
+                    "changed",
+                    G_CALLBACK (on_client_changed),
                     window);
 
   /* set up non-standard widgets that isn't in the .ui file */
@@ -1216,9 +1162,10 @@ select_details_page (GduWindow      *window,
 }
 
 static void
-update_all (GduWindow     *window,
-            UDisksObject  *object)
+update_all (GduWindow     *window)
 {
+  ShowFlags show_flags;
+
   switch (window->current_page)
     {
     case DETAILS_PAGE_NOT_SELECTED:
@@ -1230,75 +1177,20 @@ update_all (GduWindow     *window,
       break;
 
     case DETAILS_PAGE_DEVICE:
-      /* this is a little too inclusive.. */
-      if (object != NULL)
-        {
-          if (object == window->current_object ||
-              gdu_volume_grid_includes_object (GDU_VOLUME_GRID (window->volume_grid), object))
-            {
-              ShowFlags show_flags;
-              show_flags = SHOW_FLAGS_NONE;
-              update_details_page (window, window->current_page, &show_flags);
-              update_for_show_flags (window, show_flags);
-            }
-        }
+      show_flags = SHOW_FLAGS_NONE;
+      update_details_page (window, window->current_page, &show_flags);
+      update_for_show_flags (window, show_flags);
       break;
     }
 }
 
 static void
-on_object_added (GDBusObjectManager  *manager,
-                 GDBusObject         *object,
-                 gpointer             user_data)
-{
-  GduWindow *window = GDU_WINDOW (user_data);
-  // g_debug ("on_object_added %s", g_dbus_object_get_object_path (G_DBUS_OBJECT (object)));
-  update_all (window, UDISKS_OBJECT (object));
-}
-
-static void
-on_object_removed (GDBusObjectManager  *manager,
-                   GDBusObject         *object,
-                   gpointer             user_data)
-{
-  GduWindow *window = GDU_WINDOW (user_data);
-  // g_debug ("on_object_removed %s", g_dbus_object_get_object_path (G_DBUS_OBJECT (object)));
-  update_all (window, UDISKS_OBJECT (object));
-}
-
-static void
-on_interface_added (GDBusObjectManager  *manager,
-                    GDBusObject         *object,
-                    GDBusInterface      *interface,
-                    gpointer             user_data)
-{
-  GduWindow *window = GDU_WINDOW (user_data);
-  // g_debug ("on_interface_added %s", g_dbus_object_get_object_path (G_DBUS_OBJECT (object)));
-  update_all (window, UDISKS_OBJECT (object));
-}
-
-static void
-on_interface_removed (GDBusObjectManager  *manager,
-                      GDBusObject         *object,
-                      GDBusInterface      *interface,
-                      gpointer             user_data)
-{
-  GduWindow *window = GDU_WINDOW (user_data);
-  // g_debug ("on_interface_removed %s", g_dbus_object_get_object_path (G_DBUS_OBJECT (object)));
-  update_all (window, UDISKS_OBJECT (object));
-}
-
-static void
-on_interface_proxy_properties_changed (GDBusObjectManagerClient   *manager,
-                                       GDBusObjectProxy           *object_proxy,
-                                       GDBusProxy                 *interface_proxy,
-                                       GVariant                   *changed_properties,
-                                       const gchar *const         *invalidated_properties,
-                                       gpointer                    user_data)
+on_client_changed (UDisksClient   *client,
+                   gpointer        user_data)
 {
   GduWindow *window = GDU_WINDOW (user_data);
-  // g_debug ("on_interface_proxy_properties_changed %s", g_dbus_object_get_object_path (G_DBUS_OBJECT (object_proxy)));
-  update_all (window, UDISKS_OBJECT (object_proxy));
+  //g_debug ("on_client_changed");
+  update_all (window);
 }
 
 static void
@@ -1306,8 +1198,8 @@ on_volume_grid_changed (GduVolumeGrid  *grid,
                         gpointer        user_data)
 {
   GduWindow *window = GDU_WINDOW (user_data);
-  // g_debug ("on_volume_grid_changed");
-  update_all (window, gdu_volume_grid_get_block_object (GDU_VOLUME_GRID (window->volume_grid)));
+  //g_debug ("on_volume_grid_changed");
+  update_all (window);
 }
 
 /* ---------------------------------------------------------------------------------------------------- */



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