Add item-type and n-items properties to PurplePresenceManager

Tue, 09 Apr 2024 22:49:24 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Tue, 09 Apr 2024 22:49:24 -0500
changeset 42664
88cf3cdfd5d9
parent 42663
e4e10a90e4a2
child 42665
bd9e01f23bf4

Add item-type and n-items properties to PurplePresenceManager

Testing Done:
Compiled

Bugs closed: PIDGIN-17856

Reviewed at https://reviews.imfreedom.org/r/3061/

libpurple/purplepresencemanager.c file | annotate | diff | comparison | revisions
--- a/libpurple/purplepresencemanager.c	Tue Apr 09 22:41:55 2024 -0500
+++ b/libpurple/purplepresencemanager.c	Tue Apr 09 22:49:24 2024 -0500
@@ -38,6 +38,8 @@
 
 enum {
 	PROP_0,
+	PROP_ITEM_TYPE,
+	PROP_N_ITEMS,
 	PROP_PATH,
 	PROP_ACTIVE,
 	N_PROPERTIES,
@@ -387,17 +389,23 @@
 	PurplePresenceManager *manager = PURPLE_PRESENCE_MANAGER(obj);
 
 	switch(param_id) {
-		case PROP_PATH:
-			g_value_set_string(value,
-			                   purple_presence_manager_get_path(manager));
-			break;
-		case PROP_ACTIVE:
-			g_value_set_object(value,
-			                   purple_presence_manager_get_active(manager));
-			break;
-		default:
-			G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
-			break;
+	case PROP_ITEM_TYPE:
+		g_value_set_gtype(value,
+		                  purple_presence_manager_get_item_type(G_LIST_MODEL(manager)));
+		break;
+	case PROP_N_ITEMS:
+		g_value_set_uint(value,
+		                 purple_presence_manager_get_n_items(G_LIST_MODEL(manager)));
+		break;
+	case PROP_PATH:
+		g_value_set_string(value, purple_presence_manager_get_path(manager));
+		break;
+	case PROP_ACTIVE:
+		g_value_set_object(value, purple_presence_manager_get_active(manager));
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
+		break;
 	}
 }
 
@@ -408,17 +416,17 @@
 	PurplePresenceManager *manager = PURPLE_PRESENCE_MANAGER(obj);
 
 	switch(param_id) {
-		case PROP_PATH:
-			purple_presence_manager_set_path(manager,
-			                                 g_value_get_string(value));
-			break;
-		case PROP_ACTIVE:
-			purple_presence_manager_set_active(manager,
-			                                   g_value_get_object(value));
-			break;
-		default:
-			G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
-			break;
+	case PROP_PATH:
+		purple_presence_manager_set_path(manager,
+		                                 g_value_get_string(value));
+		break;
+	case PROP_ACTIVE:
+		purple_presence_manager_set_active(manager,
+		                                   g_value_get_object(value));
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
+		break;
 	}
 }
 
@@ -438,6 +446,32 @@
 	obj_class->set_property = purple_presence_manager_set_property;
 
 	/**
+	 * PurplePresenceManager: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);
+
+	/**
+	 * PurplePresenceManager: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);
+
+	/**
 	 * PurplePresenceManager:path:
 	 *
 	 * The directory path where settings should be stored. If this is %NULL

mercurial