libpurple: forward roomlist to frontend

This commit is contained in:
vitalyster 2015-12-31 00:56:12 +00:00
parent adeeaf1364
commit e872b34aae
3 changed files with 52 additions and 2 deletions

View file

@ -1567,6 +1567,35 @@ static PurpleXferUiOps xferUiOps =
NULL
};
static void RoomlistProgress(PurpleRoomlist *list, gboolean in_progress)
{
if (!in_progress)
{
GList *rooms;
std::list<std::string> m_rooms;
for (rooms = list->rooms; rooms != NULL; rooms = rooms->next)
{
PurpleRoomlistRoom *room = (PurpleRoomlistRoom *)rooms->data;
m_rooms.push_back(room->name);
}
np->handleRoomList("", m_rooms, m_rooms);
}
}
static PurpleRoomlistUiOps roomlist_ui_ops =
{
NULL,
NULL,
NULL,
NULL,
RoomlistProgress,
NULL,
NULL,
NULL,
NULL,
NULL
};
static void transport_core_ui_init(void)
{
purple_blist_set_ui_ops_wrapped(&blistUiOps);
@ -1576,6 +1605,8 @@ static void transport_core_ui_init(void)
purple_xfers_set_ui_ops_wrapped(&xferUiOps);
purple_connections_set_ui_ops_wrapped(&conn_ui_ops);
purple_conversations_set_ui_ops_wrapped(&conversation_ui_ops);
purple_roomlist_set_ui_ops_wrapped(&roomlist_ui_ops);
// #ifndef WIN32
// purple_dnsquery_set_ui_ops_wrapped(getDNSUiOps());
// #endif
@ -1672,7 +1703,8 @@ static void signed_on(PurpleConnection *gc, gpointer unused) {
malloc_trim(0);
#endif
#endif
purple_roomlist_get_list_wrapped(gc);
// For prpl-gg
execute_purple_plugin_action(gc, "Download buddylist from Server");
}
@ -1848,7 +1880,7 @@ static void transportDataReceived(gpointer data, gint source, PurpleInputConditi
if (firstPing) {
firstPing = false;
NetworkPlugin::PluginConfig cfg;
NetworkPlugin::PluginConfig cfg;
cfg.setSupportMUC(true);
if (CONFIG_STRING(config, "service.protocol") == "prpl-telegram") {
cfg.setNeedPassword(false);

View file

@ -100,6 +100,8 @@ purple_xfer_unref_wrapped_fnc purple_xfer_unref_wrapped = NULL;
purple_xfer_ref_wrapped_fnc purple_xfer_ref_wrapped = NULL;
purple_xfers_set_ui_ops_wrapped_fnc purple_xfers_set_ui_ops_wrapped = NULL;
purple_xfers_get_handle_wrapped_fnc purple_xfers_get_handle_wrapped = NULL;
purple_roomlist_set_ui_ops_wrapped_fnc purple_roomlist_set_ui_ops_wrapped = NULL;
purple_roomlist_get_list_wrapped_fnc purple_roomlist_get_list_wrapped = NULL;
purple_imgstore_get_data_wrapped_fnc purple_imgstore_get_data_wrapped = NULL;
purple_imgstore_get_size_wrapped_fnc purple_imgstore_get_size_wrapped = NULL;
purple_imgstore_unref_wrapped_fnc purple_imgstore_unref_wrapped = NULL;
@ -542,6 +544,14 @@ bool resolvePurpleFunctions() {
if (!purple_xfers_get_handle_wrapped)
return false;
purple_roomlist_set_ui_ops_wrapped = (purple_roomlist_set_ui_ops_wrapped_fnc)GetProcAddress(f_hPurple, "purple_roomlist_set_ui_ops");
if (!purple_roomlist_set_ui_ops_wrapped)
return false;
purple_roomlist_get_list_wrapped = (purple_roomlist_get_list_wrapped_fnc)GetProcAddress(f_hPurple, "purple_roomlist_get_list");
if (!purple_roomlist_get_list_wrapped)
return false;
purple_imgstore_get_data_wrapped = (purple_imgstore_get_data_wrapped_fnc)GetProcAddress(f_hPurple, "purple_imgstore_get_data");
if (!purple_imgstore_get_data_wrapped)
return false;

View file

@ -314,6 +314,12 @@ extern purple_xfers_set_ui_ops_wrapped_fnc purple_xfers_set_ui_ops_wrapped;
typedef void * (_cdecl * purple_xfers_get_handle_wrapped_fnc)(void);
extern purple_xfers_get_handle_wrapped_fnc purple_xfers_get_handle_wrapped;
typedef void (_cdecl * purple_roomlist_set_ui_ops_wrapped_fnc)(PurpleRoomlistUiOps *ops);
extern purple_roomlist_set_ui_ops_wrapped_fnc purple_roomlist_set_ui_ops_wrapped;
typedef PurpleRoomlist * (_cdecl * purple_roomlist_get_list_wrapped_fnc)(PurpleConnection *con);
extern purple_roomlist_get_list_wrapped_fnc purple_roomlist_get_list_wrapped;
typedef gconstpointer (_cdecl * purple_imgstore_get_data_wrapped_fnc)(PurpleStoredImage *img);
extern purple_imgstore_get_data_wrapped_fnc purple_imgstore_get_data_wrapped;
@ -560,6 +566,8 @@ extern wpurple_g_io_channel_win32_new_socket_wrapped_fnc wpurple_g_io_channel_wi
#define purple_xfer_ref_wrapped purple_xfer_ref
#define purple_xfers_set_ui_ops_wrapped purple_xfers_set_ui_ops
#define purple_xfers_get_handle_wrapped purple_xfers_get_handle
#define purple_roomlist_set_ui_ops_wrapped purple_roomlist_set_ui_ops
#define purple_roomlist_get_list_wrapped purple_roomlist_get_list
#define purple_imgstore_get_data_wrapped purple_imgstore_get_data
#define purple_imgstore_get_size_wrapped purple_imgstore_get_size
#define purple_imgstore_unref_wrapped purple_imgstore_unref