libpurple/purplewhiteboardmanager.c

changeset 42666
5f2110cbe878
parent 42616
a7144db5570a
child 42984
818220289e67
--- a/libpurple/purplewhiteboardmanager.c	Tue Apr 09 22:52:27 2024 -0500
+++ b/libpurple/purplewhiteboardmanager.c	Tue Apr 09 22:58:18 2024 -0500
@@ -26,6 +26,14 @@
 #include "purpleprivate.h"
 
 enum {
+	PROP_0,
+	PROP_ITEM_TYPE,
+	PROP_N_ITEMS,
+	N_PROPERTIES,
+};
+static GParamSpec *properties[N_PROPERTIES] = {NULL, };
+
+enum {
 	SIG_REGISTERED,
 	SIG_UNREGISTERED,
 	N_SIGNALS,
@@ -97,6 +105,27 @@
 }
 
 static void
+purple_whiteboard_manager_get_property(GObject *obj, guint param_id,
+                                       GValue *value, GParamSpec *pspec)
+{
+	PurpleWhiteboardManager *manager = PURPLE_WHITEBOARD_MANAGER(obj);
+
+	switch(param_id) {
+	case PROP_ITEM_TYPE:
+		g_value_set_gtype(value,
+		                  purple_whiteboard_manager_get_item_type(G_LIST_MODEL(manager)));
+		break;
+	case PROP_N_ITEMS:
+		g_value_set_uint(value,
+		                 purple_whiteboard_manager_get_n_items(G_LIST_MODEL(manager)));
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
+		break;
+	}
+}
+
+static void
 purple_whiteboard_manager_init(PurpleWhiteboardManager *manager) {
 	manager->whiteboards = g_ptr_array_new_full(0, g_object_unref);
 }
@@ -106,6 +135,35 @@
 	GObjectClass *obj_class = G_OBJECT_CLASS(klass);
 
 	obj_class->finalize = purple_whiteboard_manager_finalize;
+	obj_class->get_property = purple_whiteboard_manager_get_property;
+
+	/**
+	 * PurpleWhiteboardManager:item-type:
+	 *
+	 * The type of items. See [iface@Gio.ListModel.get_item_type].
+	 *
+	 * Since: 3.0
+	 */
+	properties[PROP_ITEM_TYPE] = g_param_spec_gtype(
+		"item-type", "item-type",
+		"The type of the contained items.",
+		G_TYPE_OBJECT,
+		G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+
+	/**
+	 * PurpleWhiteboardManager:n-items:
+	 *
+	 * The number of items. See [iface@Gio.ListModel.get_n_items].
+	 *
+	 * Since: 3.0
+	 */
+	properties[PROP_N_ITEMS] = g_param_spec_uint(
+		"n-items", "n-items",
+		"The number of contained items.",
+		0, G_MAXUINT, 0,
+		G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+
+	g_object_class_install_properties(obj_class, N_PROPERTIES, properties);
 
 	/**
 	 * PurpleWhiteboardManager::registered:

mercurial