summaryrefslogtreecommitdiff
path: root/libpurple/purpleroomlistroom.h
diff options
context:
space:
mode:
authorGary Kramlich <grim@reaperworld.com>2022-05-02 21:57:35 -0500
committerGary Kramlich <grim@reaperworld.com>2022-05-02 21:57:35 -0500
commit5846c056422c18ab516c60b44eb399c877ffc824 (patch)
tree24a21fa95b14044766af8cf633f0132fd31e0252 /libpurple/purpleroomlistroom.h
parentbecd2ccaa215780aec0aed16b00b18b89c15102d (diff)
downloadpidgin-5846c056422c18ab516c60b44eb399c877ffc824.tar.gz
Rework the way roomlists work so we can more easily port them to GTK4
Testing Done: Joined rooms on XMPP via the buttons, double clicking, and the context menu. Reviewed at https://reviews.imfreedom.org/r/1293/
Diffstat (limited to 'libpurple/purpleroomlistroom.h')
-rw-r--r--libpurple/purpleroomlistroom.h183
1 files changed, 183 insertions, 0 deletions
diff --git a/libpurple/purpleroomlistroom.h b/libpurple/purpleroomlistroom.h
new file mode 100644
index 0000000000..d8bf52d612
--- /dev/null
+++ b/libpurple/purpleroomlistroom.h
@@ -0,0 +1,183 @@
+/*
+ * Purple - Internet Messaging Library
+ * Copyright (C) Pidgin Developers <devel@pidgin.im>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, see <https://www.gnu.org/licenses/>.
+ */
+
+#if !defined(PURPLE_GLOBAL_HEADER_INSIDE) && !defined(PURPLE_COMPILATION)
+# error "only <purple.h> may be included directly"
+#endif
+
+#ifndef PURPLE_ROOMLIST_ROOM_H
+#define PURPLE_ROOMLIST_ROOM_H
+
+#include <glib.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define PURPLE_TYPE_ROOMLIST_ROOM (purple_roomlist_room_get_type())
+
+/**
+ * purple_roomlist_room_get_type:
+ *
+ * Gets the #GType of #PurpleRoomlistRoom.
+ *
+ * Returns: The #GType of #PurpleRoomlistRoom.
+ *
+ * Since: 3.0.0
+ */
+
+/**
+ * PurpleRoomlistRoom:
+ *
+ * #PurpleRoomlistRoom keeps track of all #PurpleConversation's inside
+ * of libpurple and allows searching of them.
+ *
+ * Since: 3.0.0
+ */
+G_DECLARE_DERIVABLE_TYPE(PurpleRoomlistRoom, purple_roomlist_room, PURPLE,
+ ROOMLIST_ROOM, GObject)
+
+struct _PurpleRoomlistRoomClass {
+ /*< private >*/
+ GObjectClass parent;
+
+ gpointer reserved[4];
+};
+
+/**
+ * purple_roomlist_room_new:
+ * @name: The name for the room.
+ * @description: The description or topic of the room.
+ *
+ * Creates a new room to be added to a [class@Purple.Roomlist].
+ *
+ * Since: 3.0.0
+ */
+PurpleRoomlistRoom *purple_roomlist_room_new(const gchar *name, const gchar *description);
+
+/**
+ * purple_roomlist_room_get_name:
+ * @room: The instance.
+ *
+ * Gets the name of @room.
+ *
+ * Returns: The name of @room.
+ *
+ * Since: 3.0.0
+ */
+const gchar *purple_roomlist_room_get_name(PurpleRoomlistRoom *room);
+
+/**
+ * purple_roomlist_room_get_description:
+ * @room: The instance.
+ *
+ * Gets the description of @room.
+ *
+ * Returns: The description of @room.
+ *
+ * Since: 3.0.0
+ */
+const gchar *purple_roomlist_room_get_description(PurpleRoomlistRoom *room);
+
+/**
+ * purple_roomlist_get_category:
+ * @room: The instance.
+ *
+ * Gets the category of @room. It is up to the user interface on whether or not
+ * this will be used.
+ *
+ * Returns: The category of @room if set otherwise %NULL.
+ *
+ * Since: 3.0.0
+ */
+const gchar *purple_roomlist_room_get_category(PurpleRoomlistRoom *room);
+
+/**
+ * purple_roomlist_room_set_category:
+ * @room: The instance.
+ * @category: (nullable): The new category.
+ *
+ * Sets the category of @room.
+ *
+ * Since: 3.0.0
+ */
+void purple_roomlist_room_set_category(PurpleRoomlistRoom *room, const gchar *category);
+
+/**
+ * purple_roomlist_room_get_user_count:
+ * @room: The instance.
+ *
+ * Gets the number of users in @room.
+ *
+ * Returns: The number of users in @room if set, otherwise 0.
+ *
+ * Since: 3.0.0
+ */
+const guint purple_roomlist_room_get_user_count(PurpleRoomlistRoom *room);
+
+/**
+ * purple_roomlist_room_set_user_count:
+ * @room: The instance.
+ * @user_count: The new user count.
+ *
+ * Sets the user count of @room to @user_count.
+ *
+ * Since: 3.0.0
+ */
+void purple_roomlist_room_set_user_count(PurpleRoomlistRoom *room, guint user_count);
+
+/**
+ * purple_roomlist_room_add_field:
+ * @room: This instance.
+ * @field: The name of the field. This should be a static string.
+ * @value: The value of the field. This should be a copy of the value.
+ *
+ * Adds a new field to @room with the name of @field and value of @value.
+ *
+ * Since: 3.0.0
+ */
+void purple_roomlist_room_add_field(PurpleRoomlistRoom *room, const gchar *field, const gchar *value);
+
+/**
+ * purple_roomlist_room_get_field:
+ * @room: The instance.
+ * @field: The name of the field to get.
+ *
+ * Gets the value of the field named @field in @room.
+ *
+ * Returns: The value of @field.
+ *
+ * Since: 3.0.0
+ */
+const gchar *purple_roomlist_room_get_field(PurpleRoomlistRoom *room, const gchar *field);
+
+/**
+ * purple_roomlist_room_get_components:
+ * @room: The instance.
+ *
+ * Gets the components that can be passed to purple_serv_join_chat() to join
+ * the room.
+ *
+ * Returns: (transfer none): The components used to join the room.
+ *
+ * Since: 3.0.0
+ */
+GHashTable *purple_roomlist_room_get_components(PurpleRoomlistRoom *room);
+
+G_END_DECLS
+
+#endif /* PURPLE_ROOMLIST_ROOM_H */