static PurpleRoomlist *irc_roomlist_get_list(PurpleConnection *gc) { struct irc_conn *irc; GList *fields = NULL; PurpleRoomlistField *f; char *buf; irc = gc->proto_data; if (irc->roomlist) purple_roomlist_unref(irc->roomlist); irc->roomlist = purple_roomlist_new(purple_connection_get_account(gc)); f = purple_roomlist_field_new(PURPLE_ROOMLIST_FIELD_STRING, "", "channel", TRUE); fields = g_list_append(fields, f); f = purple_roomlist_field_new(PURPLE_ROOMLIST_FIELD_INT, _("Users"), "users", FALSE); fields = g_list_append(fields, f); f = purple_roomlist_field_new(PURPLE_ROOMLIST_FIELD_STRING, _("Topic"), "topic", FALSE); fields = g_list_append(fields, f); purple_roomlist_set_fields(irc->roomlist, fields); buf = irc_format(irc, "v", "LIST"); irc_send(irc, buf); g_free(buf); return irc->roomlist; }
/* get a list of qq groups */ PurpleRoomlist *qq_roomlist_get_list(PurpleConnection *gc) { GList *fields; qq_data *qd; PurpleRoomlist *rl; PurpleRoomlistField *f; qd = (qq_data *) gc->proto_data; fields = NULL; rl = purple_roomlist_new(purple_connection_get_account(gc)); qd->roomlist = rl; f = purple_roomlist_field_new(PURPLE_ROOMLIST_FIELD_STRING, _("Group ID"), QQ_ROOM_KEY_EXTERNAL_ID, FALSE); fields = g_list_append(fields, f); f = purple_roomlist_field_new(PURPLE_ROOMLIST_FIELD_STRING, "", QQ_ROOM_KEY_INTERNAL_ID, TRUE); fields = g_list_append(fields, f); fields = g_list_append(fields, f); purple_roomlist_set_fields(rl, fields); purple_roomlist_set_in_progress(qd->roomlist, TRUE); purple_request_input(gc, _("QQ Qun"), _("Please enter Qun number"), _("You can only search for permanent Qun\n"), NULL, FALSE, FALSE, NULL, _("Search"), G_CALLBACK(_qq_group_search_callback), _("Cancel"), G_CALLBACK(_qq_group_search_cancel_callback), purple_connection_get_account(gc), NULL, NULL, gc); return qd->roomlist; }
PurpleRoomlist *jabber_roomlist_get_list(PurpleConnection *gc) { JabberStream *js = gc->proto_data; GList *fields = NULL; PurpleRoomlistField *f; if(js->roomlist) purple_roomlist_unref(js->roomlist); js->roomlist = purple_roomlist_new(purple_connection_get_account(js->gc)); f = purple_roomlist_field_new(PURPLE_ROOMLIST_FIELD_STRING, "", "room", TRUE); fields = g_list_append(fields, f); f = purple_roomlist_field_new(PURPLE_ROOMLIST_FIELD_STRING, "", "server", TRUE); fields = g_list_append(fields, f); f = purple_roomlist_field_new(PURPLE_ROOMLIST_FIELD_STRING, _("Description"), "description", FALSE); fields = g_list_append(fields, f); purple_roomlist_set_fields(js->roomlist, fields); purple_request_input(gc, _("Enter a Conference Server"), _("Enter a Conference Server"), _("Select a conference server to query"), js->chat_servers ? js->chat_servers->data : NULL, FALSE, FALSE, NULL, _("Find Rooms"), PURPLE_CALLBACK(roomlist_ok_cb), _("Cancel"), PURPLE_CALLBACK(roomlist_cancel_cb), purple_connection_get_account(gc), NULL, NULL, js); return js->roomlist; }
static PurpleRoomlist * purplemot_roomlist_get_list(PurpleConnection *gc) { const char *username = gc->account->username; PurpleRoomlist *roomlist = purple_roomlist_new(gc->account); GList *fields = NULL; PurpleRoomlistField *field; GList *chats; GList *seen_ids = NULL; purple_debug_info("purplemot", "%s asks for room list; returning:\n", username); /* set up the room list */ field = purple_roomlist_field_new(PURPLE_ROOMLIST_FIELD_STRING, "room", "room", TRUE /* hidden */); fields = g_list_append(fields, field); field = purple_roomlist_field_new(PURPLE_ROOMLIST_FIELD_INT, "Id", "Id", FALSE); fields = g_list_append(fields, field); purple_roomlist_set_fields(roomlist, fields); /* add each chat room. the chat ids are cached in seen_ids so that each room * is only returned once, even if multiple users are in it. */ for (chats = purple_get_chats(); chats; chats = g_list_next(chats)) { PurpleConversation *conv = (PurpleConversation *)chats->data; PurpleRoomlistRoom *room; const char *name = conv->name; int id = purple_conversation_get_chat_data(conv)->id; /* have we already added this room? */ if (g_list_find_custom(seen_ids, name, (GCompareFunc)strcmp)) continue; /* yes! try the next one. */ /* This cast is OK because this list is only staying around for the life * of this function and none of the conversations are being deleted * in that timespan. */ seen_ids = g_list_prepend(seen_ids, (char *)name); /* no, it's new. */ purple_debug_info("purplemot", "%s (%d), ", name, id); room = purple_roomlist_room_new(PURPLE_ROOMLIST_ROOMTYPE_ROOM, name, NULL); purple_roomlist_room_add_field(roomlist, room, name); purple_roomlist_room_add_field(roomlist, room, &id); purple_roomlist_room_add(roomlist, room); } g_list_free(seen_ids); purple_timeout_add(1 /* ms */, purplemot_finish_get_roomlist, roomlist); return roomlist; }
PurpleRoomlist * campfire_roomlist_get_list(PurpleConnection * gc) { CampfireConn *campfire = gc->proto_data; GList *fields = NULL; PurpleRoomlistField *f; purple_debug_info("campfire", "initiating ROOMLIST GET LIST\n"); if (campfire->roomlist) { purple_roomlist_unref(campfire->roomlist); } campfire->roomlist = purple_roomlist_new(purple_connection_get_account(gc)); /*f = purple_roomlist_field_new(PURPLE_ROOMLIST_FIELD_STRING, "", "room", TRUE); */ /*fields = g_list_append(fields, f); */ f = purple_roomlist_field_new(PURPLE_ROOMLIST_FIELD_STRING, _("Topic"), "topic", FALSE); fields = g_list_append(fields, f); f = purple_roomlist_field_new(PURPLE_ROOMLIST_FIELD_STRING, "", "id", TRUE); fields = g_list_append(fields, f); purple_roomlist_set_fields(campfire->roomlist, fields); purple_roomlist_set_in_progress(campfire->roomlist, TRUE); campfire_room_query(campfire); /*purple_roomlist_set_in_progress(campfire->roomlist, FALSE); */ /*purple_roomlist_unref(campfire->roomlist); */ /*campfire->roomlist = NULL; */ return campfire->roomlist; }
PurpleRoomlist *tgprpl_roomlist_get_list (PurpleConnection *gc) { debug ("tgprpl_roomlist_get_list()"); connection_data *conn = purple_connection_get_protocol_data (gc); GList *fields = NULL; if (conn->roomlist) { purple_roomlist_unref (conn->roomlist); } conn->roomlist = purple_roomlist_new (purple_connection_get_account (gc)); PurpleRoomlistField *f = purple_roomlist_field_new (PURPLE_ROOMLIST_FIELD_STRING, "", "id", TRUE); fields = g_list_append (fields, f); f = purple_roomlist_field_new (PURPLE_ROOMLIST_FIELD_INT, _("Users in chat"), "users", FALSE); fields = g_list_append (fields, f); purple_roomlist_set_fields (conn->roomlist, fields); tgl_peer_iterator_ex (conn->TLS, tgp_chat_roomlist_it, conn); return conn->roomlist; }
PurpleRoomlist * ggp_chat_roomlist_get_list(PurpleConnection *gc) { ggp_chat_session_data *sdata = ggp_chat_get_sdata(gc); PurpleRoomlist *roomlist; GList *fields = NULL; int i; purple_debug_info("gg", "ggp_chat_roomlist_get_list\n"); roomlist = purple_roomlist_new(purple_connection_get_account(gc)); fields = g_list_append(fields, purple_roomlist_field_new( PURPLE_ROOMLIST_FIELD_STRING, _("Conference identifier"), "id", TRUE)); fields = g_list_append(fields, purple_roomlist_field_new( PURPLE_ROOMLIST_FIELD_STRING, _("Start Date"), "date", FALSE)); fields = g_list_append(fields, purple_roomlist_field_new( PURPLE_ROOMLIST_FIELD_INT, _("User Count"), "users", FALSE)); fields = g_list_append(fields, purple_roomlist_field_new( PURPLE_ROOMLIST_FIELD_STRING, _("Status"), "status", FALSE)); purple_roomlist_set_fields(roomlist, fields); for (i = sdata->chats_count - 1; i >= 0 ; i--) { PurpleRoomlistRoom *room; ggp_chat_local_info *chat = &sdata->chats[i]; const gchar *name; time_t date; const gchar *status; int count = chat->participants_count; date = (uint32_t)(chat->id >> 32); if (chat->conv) status = _("Joined"); else if (chat->left) /* Translators: For Gadu-Gadu, this is one possible status for a chat room. It means you had previously joined the chat room but you have since left it. You cannot rejoin without another invitation. */ status = _("Chat left"); else { status = _("Can join chat"); count--; } name = ggp_chat_get_name_from_id(chat->id); room = purple_roomlist_room_new(PURPLE_ROOMLIST_ROOMTYPE_ROOM, name, NULL); purple_roomlist_room_add_field(roomlist, room, name); purple_roomlist_room_add_field(roomlist, room, purple_date_format_full(localtime(&date))); purple_roomlist_room_add_field(roomlist, room, GINT_TO_POINTER(count)); purple_roomlist_room_add_field(roomlist, room, status); purple_roomlist_room_add(roomlist, room); } /* TODO * purple_roomlist_set_in_progress(roomlist, FALSE); */ g_object_ref(roomlist); purple_timeout_add(1, ggp_chat_roomlist_get_list_finish, roomlist); return roomlist; }