[gtk+] gtkplacesview: add a loading property



commit 036ba25eb19569a51f68bb2bf9648b10e2e7020a
Author: Carlos Soriano <csoriano gnome org>
Date:   Wed Aug 19 14:46:34 2015 +0200

    gtkplacesview: add a loading property
    
    So clients of the view can know if the view is busy.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=753786

 gtk/gtkplacesview.c        |   39 +++++++++++++++++++++++++++++++++++++++
 gtk/gtkplacesviewprivate.h |    3 +++
 2 files changed, 42 insertions(+), 0 deletions(-)
---
diff --git a/gtk/gtkplacesview.c b/gtk/gtkplacesview.c
index f4369b6..deece3e 100644
--- a/gtk/gtkplacesview.c
+++ b/gtk/gtkplacesview.c
@@ -84,6 +84,7 @@ struct _GtkPlacesViewPrivate
   guint                          entry_pulse_timeout_id;
   guint                          connecting_to_server : 1;
   guint                          fetching_networks : 1;
+  guint                          loading : 1;
 };
 
 static void        mount_volume                                  (GtkPlacesView *view,
@@ -106,6 +107,7 @@ enum {
   PROP_0,
   PROP_LOCAL_ONLY,
   PROP_OPEN_FLAGS,
+  PROP_LOADING,
   LAST_PROP
 };
 
@@ -410,6 +412,10 @@ gtk_places_view_get_property (GObject    *object,
       g_value_set_boolean (value, gtk_places_view_get_local_only (self));
       break;
 
+    case PROP_LOADING:
+      g_value_set_boolean (value, gtk_places_view_get_loading (self));
+      break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
     }
@@ -965,6 +971,9 @@ network_enumeration_next_files_finished (GObject      *source_object,
     /* avoid to update widgets if the operation was cancelled in finalize */
     if (priv->listbox != NULL)
       update_network_state (view);
+
+  priv->loading = FALSE;
+  g_object_notify_by_pspec (G_OBJECT (view), properties[PROP_LOADING]);
 }
 
 static void
@@ -1045,6 +1054,9 @@ update_places (GtkPlacesView *view)
   priv->network_placeholder = NULL;
   priv->network_header_spinner = NULL;
 
+  priv->loading = TRUE;
+  g_object_notify_by_pspec (G_OBJECT (view), properties[PROP_LOADING]);
+
   /* Add "Computer" row */
   file = g_file_new_for_path ("/");
   icon = g_themed_icon_new_with_default_fallbacks ("drive-harddisk");
@@ -2156,6 +2168,13 @@ gtk_places_view_class_init (GtkPlacesViewClass *klass)
                                 FALSE,
                                 G_PARAM_READWRITE);
 
+  properties[PROP_LOADING] =
+          g_param_spec_boolean ("loading",
+                                P_("Loading"),
+                                P_("Whether the view is loading locations"),
+                                FALSE,
+                                G_PARAM_READABLE);
+
   properties[PROP_OPEN_FLAGS] =
           g_param_spec_flags ("open-flags",
                               P_("Open Flags"),
@@ -2334,6 +2353,26 @@ gtk_places_view_set_search_query (GtkPlacesView *view,
 }
 
 /**
+ * gtk_places_view_get_loading:
+ * @view: a #GtkPlacesView
+ *
+ * Returns %TRUE if the view is loading locations.
+ *
+ * Since: 3.18
+ */
+gboolean
+gtk_places_view_get_loading (GtkPlacesView *view)
+{
+  GtkPlacesViewPrivate *priv;
+
+  g_return_val_if_fail (GTK_IS_PLACES_VIEW (view), FALSE);
+
+  priv = gtk_places_view_get_instance_private (view);
+
+  return priv->loading;
+}
+
+/**
  * gtk_places_view_get_local_only:
  * @view: a #GtkPlacesView
  *
diff --git a/gtk/gtkplacesviewprivate.h b/gtk/gtkplacesviewprivate.h
index 17f55fd..00eab93 100644
--- a/gtk/gtkplacesviewprivate.h
+++ b/gtk/gtkplacesviewprivate.h
@@ -86,6 +86,9 @@ void               gtk_places_view_set_local_only                (GtkPlacesView
                                                                   gboolean               local_only);
 
 GDK_AVAILABLE_IN_3_18
+gboolean           gtk_places_view_get_loading                   (GtkPlacesView         *view);
+
+GDK_AVAILABLE_IN_3_18
 GtkWidget *        gtk_places_view_new                           (void);
 
 G_END_DECLS


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