[gtk/wip/otte/listmodels: 19/21] directorylist: Add ::item-type and ::n-items
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/wip/otte/listmodels: 19/21] directorylist: Add ::item-type and ::n-items
- Date: Sat, 11 Jun 2022 06:11:53 +0000 (UTC)
commit e06149ade7b7839e6fa2a51a0be2f4b5d37b5fd7
Author: Benjamin Otte <otte redhat com>
Date: Sat Jun 11 07:08:23 2022 +0200
directorylist: Add ::item-type and ::n-items
gtk/gtkdirectorylist.c | 43 ++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 42 insertions(+), 1 deletion(-)
---
diff --git a/gtk/gtkdirectorylist.c b/gtk/gtkdirectorylist.c
index c725de1853..af7ee3e4c5 100644
--- a/gtk/gtkdirectorylist.c
+++ b/gtk/gtkdirectorylist.c
@@ -60,8 +60,11 @@ enum {
PROP_ERROR,
PROP_FILE,
PROP_IO_PRIORITY,
+ PROP_ITEM_TYPE,
PROP_LOADING,
PROP_MONITORED,
+ PROP_N_ITEMS,
+
NUM_PROPERTIES
};
@@ -204,6 +207,10 @@ gtk_directory_list_get_property (GObject *object,
g_value_set_int (value, self->io_priority);
break;
+ case PROP_ITEM_TYPE:
+ g_value_set_gtype (value, G_TYPE_FILE_INFO);
+ break;
+
case PROP_LOADING:
g_value_set_boolean (value, gtk_directory_list_is_loading (self));
break;
@@ -212,6 +219,10 @@ gtk_directory_list_get_property (GObject *object,
g_value_set_boolean (value, gtk_directory_list_get_monitored (self));
break;
+ case PROP_N_ITEMS:
+ g_value_set_uint (value, g_sequence_get_length (self->items));
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -312,6 +323,18 @@ gtk_directory_list_class_init (GtkDirectoryListClass *class)
-G_MAXINT, G_MAXINT, G_PRIORITY_DEFAULT,
GTK_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
+ /**
+ * GtkDirectoryList:item-type:
+ *
+ * The type of items. See [func@Gio.ListModel.get_item_type].
+ *
+ * Since: 4.8
+ **/
+ properties[PROP_ITEM_TYPE] =
+ g_param_spec_gtype ("item-type", NULL, NULL,
+ G_TYPE_FILE_INFO,
+ G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+
/**
* GtkDirectoryList:loading: (attributes org.gtk.Property.get=gtk_directory_list_is_loading)
*
@@ -332,6 +355,18 @@ gtk_directory_list_class_init (GtkDirectoryListClass *class)
TRUE,
GTK_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
+ /**
+ * GtkDirectoryList:n-items:
+ *
+ * The number of items. See [method@Gio.ListModel.get_n_items].
+ *
+ * Since: 4.8
+ **/
+ properties[PROP_N_ITEMS] =
+ g_param_spec_uint ("n-items", NULL, NULL,
+ 0, G_MAXUINT, 0,
+ G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+
g_object_class_install_properties (gobject_class, NUM_PROPERTIES, properties);
}
@@ -380,6 +415,7 @@ gtk_directory_list_clear_items (GtkDirectoryList *self)
g_sequence_get_end_iter (self->items));
g_list_model_items_changed (G_LIST_MODEL (self), 0, n_items, 0);
+ g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_N_ITEMS]);
}
if (self->error)
@@ -462,7 +498,10 @@ gtk_directory_list_got_files_cb (GObject *source,
self);
if (n > 0)
- g_list_model_items_changed (G_LIST_MODEL (self), g_sequence_get_length (self->items) - n, 0, n);
+ {
+ g_list_model_items_changed (G_LIST_MODEL (self), g_sequence_get_length (self->items) - n, 0, n);
+ g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_N_ITEMS]);
+ }
}
static void
@@ -580,6 +619,7 @@ handle_event (QueuedEvent *event)
position = g_sequence_get_length (self->items);
g_sequence_append (self->items, g_object_ref (info));
g_list_model_items_changed (G_LIST_MODEL (self), position, 0, 1);
+ g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_N_ITEMS]);
}
break;
@@ -591,6 +631,7 @@ handle_event (QueuedEvent *event)
position = g_sequence_iter_get_position (iter);
g_sequence_remove (iter);
g_list_model_items_changed (G_LIST_MODEL (self), position, 1, 0);
+ g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_N_ITEMS]);
}
break;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]