summaryrefslogtreecommitdiff
path: root/libpurple/roomlist.c
diff options
context:
space:
mode:
authorAnkit Vani <a@nevitus.org>2014-02-06 03:09:33 +0530
committerAnkit Vani <a@nevitus.org>2014-02-06 03:09:33 +0530
commit11e55000bfdaaac240650f823258da21fbe351c8 (patch)
tree020c7e55be4d42c2c60643602968acfb82edec9c /libpurple/roomlist.c
parent8a18412ed576c301c060bd7f6f488d8929e34059 (diff)
parentdd03d7feede3c566019b13b1df79cb74b3108100 (diff)
downloadpidgin-11e55000bfdaaac240650f823258da21fbe351c8.tar.gz
Merge gtkdoc-conversion
Diffstat (limited to 'libpurple/roomlist.c')
-rw-r--r--libpurple/roomlist.c60
1 files changed, 31 insertions, 29 deletions
diff --git a/libpurple/roomlist.c b/libpurple/roomlist.c
index b7c6238cc2..e4f6392364 100644
--- a/libpurple/roomlist.c
+++ b/libpurple/roomlist.c
@@ -54,7 +54,7 @@ struct _PurpleRoomlistRoom {
gchar *name; /* The name of the room. */
GList *fields; /* Other fields. */
PurpleRoomlistRoom *parent; /* The parent room, or NULL. */
- gboolean expanded_once; /* A flag the UI uses to avoid multiple expand prpl cbs. */
+ gboolean expanded_once; /* A flag the UI uses to avoid multiple expand protocol cbs. */
};
/*
@@ -156,19 +156,15 @@ void purple_roomlist_room_add(PurpleRoomlist *list, PurpleRoomlistRoom *room)
PurpleRoomlist *purple_roomlist_get_list(PurpleConnection *gc)
{
- PurplePlugin *prpl = NULL;
- PurplePluginProtocolInfo *prpl_info = NULL;
+ PurpleProtocol *protocol = NULL;
g_return_val_if_fail(PURPLE_IS_CONNECTION(gc), NULL);
g_return_val_if_fail(PURPLE_CONNECTION_IS_CONNECTED(gc), NULL);
- prpl = purple_connection_get_prpl(gc);
+ protocol = purple_connection_get_protocol(gc);
- if(prpl != NULL)
- prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
-
- if(prpl_info && prpl_info->roomlist_get_list)
- return prpl_info->roomlist_get_list(gc);
+ if(protocol)
+ return purple_protocol_roomlist_iface_get_list(protocol, gc);
return NULL;
}
@@ -176,8 +172,7 @@ PurpleRoomlist *purple_roomlist_get_list(PurpleConnection *gc)
void purple_roomlist_cancel_get_list(PurpleRoomlist *list)
{
PurpleRoomlistPrivate *priv = PURPLE_ROOMLIST_GET_PRIVATE(list);
- PurplePlugin *prpl = NULL;
- PurplePluginProtocolInfo *prpl_info = NULL;
+ PurpleProtocol *protocol = NULL;
PurpleConnection *gc;
g_return_if_fail(priv != NULL);
@@ -187,20 +182,16 @@ void purple_roomlist_cancel_get_list(PurpleRoomlist *list)
g_return_if_fail(PURPLE_IS_CONNECTION(gc));
if(gc)
- prpl = purple_connection_get_prpl(gc);
-
- if(prpl)
- prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
+ protocol = purple_connection_get_protocol(gc);
- if(prpl_info && prpl_info->roomlist_cancel)
- prpl_info->roomlist_cancel(list);
+ if(protocol)
+ purple_protocol_roomlist_iface_cancel(protocol, list);
}
void purple_roomlist_expand_category(PurpleRoomlist *list, PurpleRoomlistRoom *category)
{
PurpleRoomlistPrivate *priv = PURPLE_ROOMLIST_GET_PRIVATE(list);
- PurplePlugin *prpl = NULL;
- PurplePluginProtocolInfo *prpl_info = NULL;
+ PurpleProtocol *protocol = NULL;
PurpleConnection *gc;
g_return_if_fail(priv != NULL);
@@ -211,13 +202,10 @@ void purple_roomlist_expand_category(PurpleRoomlist *list, PurpleRoomlistRoom *c
g_return_if_fail(PURPLE_IS_CONNECTION(gc));
if(gc)
- prpl = purple_connection_get_prpl(gc);
-
- if(prpl)
- prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
+ protocol = purple_connection_get_protocol(gc);
- if(prpl_info && prpl_info->roomlist_expand_category)
- prpl_info->roomlist_expand_category(list, category);
+ if(protocol)
+ purple_protocol_roomlist_iface_expand_category(protocol, list, category);
}
GList * purple_roomlist_get_fields(PurpleRoomlist *list)
@@ -415,12 +403,26 @@ purple_roomlist_get_type(void)
PurpleRoomlist *purple_roomlist_new(PurpleAccount *account)
{
+ PurpleRoomlist *list;
+ PurpleProtocol *protocol;
+
g_return_val_if_fail(PURPLE_IS_ACCOUNT(account), NULL);
- return g_object_new(PURPLE_TYPE_ROOMLIST,
- "account", account,
- NULL
- );
+ protocol = purple_protocols_find(purple_account_get_protocol_id(account));
+
+ g_return_val_if_fail(PURPLE_IS_PROTOCOL(protocol), NULL);
+
+ if (PURPLE_PROTOCOL_IMPLEMENTS(protocol, FACTORY_IFACE, roomlist_new))
+ list = purple_protocol_factory_iface_roomlist_new(protocol, account);
+ else
+ list = g_object_new(PURPLE_TYPE_ROOMLIST,
+ "account", account,
+ NULL
+ );
+
+ g_return_val_if_fail(list != NULL, NULL);
+
+ return list;
}
/*@}*/