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
This commit is contained in:
Carlos Soriano 2015-08-19 14:46:34 +02:00
parent 89a34210cb
commit 036ba25eb1
2 changed files with 42 additions and 0 deletions

View File

@ -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"),
@ -2333,6 +2352,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

View File

@ -85,6 +85,9 @@ GDK_AVAILABLE_IN_3_18
void gtk_places_view_set_local_only (GtkPlacesView *view,
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);