void tgp_blist_buddy_set_id (PurpleBuddy *buddy, tgl_peer_id_t id) { int uid = tgl_get_peer_id (id), type = tgl_get_peer_type (id); assert (type == TGL_PEER_ENCR_CHAT || type == TGL_PEER_USER); purple_blist_node_set_int (&buddy->node, TGP_BUDDY_KEY_PEER_ID, uid); purple_blist_node_set_int (&buddy->node, TGP_BUDDY_KEY_PEER_TYPE, type); }
static void _purple_events_ui_events_selection(PurpleBlistNode *node, PurpleRequestFields *request) { guint i; gboolean v; for ( i = 0 ; _purple_events_ui_events[i] != NULL ; ++i ) { v = purple_request_fields_get_bool(request, _purple_events_ui_events[i]); purple_blist_node_set_int(node, _purple_events_ui_events[i], v ? 1 : -1); } purple_blist_node_set_int(node, "events", 1); }
static void save_cb(PurpleBlistNode *node, int choice) { if (PURPLE_BLIST_NODE_IS_BUDDY(node)) node = purple_blist_node_get_parent(node); g_return_if_fail(PURPLE_BLIST_NODE_IS_CONTACT(node)); purple_blist_node_set_int(node, "autoaccept", choice); }
static void _purple_events_ui_disable_all_events(PurpleBlistNode *node) { node = _purple_events_ui_get_good_node(node); if ( node == NULL ) return; purple_blist_node_set_int(node, "events", -1); }
void lh_util_add_buddy(const gchar *group, PurpleGroup *purple_group, const gchar *buddy, const gchar *alias, PurpleAccount *account, const gchar *buddynotes, gint signed_on, gint signed_off, gint lastseen, gint last_seen, const gchar *gf_theme, const gchar *icon_file, gchar *lastsaid) { PurpleBuddy *purple_buddy = NULL; PurpleBlistNode *node = NULL; purple_buddy = purple_buddy_new(account, buddy, alias); node = (PurpleBlistNode *)purple_buddy; purple_blist_add_buddy(purple_buddy, NULL, purple_group, NULL); #if PURPLE_VERSION_CHECK(3,0,0) purple_account_add_buddy(account, purple_buddy, NULL); #else purple_account_add_buddy(account, purple_buddy); #endif if(buddynotes) purple_blist_node_set_string(node, "notes", buddynotes); if(signed_on) purple_blist_node_set_int(node, "signedon", signed_on); if(signed_off) purple_blist_node_set_int(node, "signedoff", signed_off); if(lastseen) purple_blist_node_set_int(node, "lastseen", lastseen); if(last_seen) purple_blist_node_set_int(node, "last_seen", last_seen); if(gf_theme) purple_blist_node_set_string(node, "guifications-theme", gf_theme); if(icon_file) purple_blist_node_set_string(node, "buddy_icon", icon_file); if(lastsaid) purple_blist_node_set_string(node, "lastsaid", lastsaid); purple_debug_info("listhandler: import", "group: %s\tbuddy: %s\talias: %s\thas been added to the list\n", group, buddy, alias ? alias : "NULL"); return; }
Contact *QuetzalContactsFactory::addContact(const QString &id, const QVariantMap &data) { QByteArray group = data.value(QLatin1String("group")).toString().toUtf8(); if (group.isEmpty()) { // For compatibility with other implementations // Looks like libpurple doesn't support multiple groups // Or does it at some unknown way group = data.value(QLatin1String("tags")).toStringList().value(0).toUtf8(); } QString name = data.value(QLatin1String("name")).toString(); const char *groupName = group.isEmpty() ? "Buddies" : group.constData(); PurpleGroup *pg = purple_find_group(groupName); if (!pg) { pg = purple_group_new(groupName); purple_blist_add_group(pg, quetzal_blist_get_last_sibling(purple_blist_get_root())); } PurpleContact *pc = purple_contact_new(); purple_blist_add_contact(pc, pg, quetzal_blist_get_last_child(PURPLE_BLIST_NODE(pg))); PurpleBuddy *buddy = purple_buddy_new(m_account->purple(), id.toUtf8().constData(), name.toUtf8().constData()); PurpleBlistNode *node = PURPLE_BLIST_NODE(buddy); purple_blist_add_buddy(buddy, pc, pg, quetzal_blist_get_last_child(PURPLE_BLIST_NODE(pc))); QMapIterator<QString, QVariant> it(data.value(QLatin1String("quetzal_settings")).toMap()); while (it.hasNext()) { it.next(); QByteArray key = it.key().toUtf8(); QVariant::Type type = it.value().type(); if (type == QVariant::Bool) { purple_blist_node_set_bool(node, key.constData(), it.value().toBool()); } else if (type == QVariant::Int || type == QVariant::UInt || type == QVariant::LongLong || type == QVariant::ULongLong) { purple_blist_node_set_int(node, key.constData(), it.value().toInt()); } else { purple_blist_node_set_string(node, key.constData(), it.value().toString().toUtf8()); } } QuetzalContact *contact = reinterpret_cast<QuetzalContact*>(node->ui_data); contact->update(buddy); return contact; }
static void buddy_set_priority_cb(PurpleBlistNode *node, gpointer priority) { purple_blist_node_set_int(node, "extended_sort_method_priority", GPOINTER_TO_INT(priority)); pidgin_blist_refresh(purple_get_blist()); }
static void flist_set_channel_bool_blist(FListAccount *fla, const gchar *channel, const gchar *key, gboolean value) { PurpleChat *chat = flist_get_chat(fla, channel); purple_blist_node_set_int(&(chat->node), key, value ? 1 : -1); }
/** * Store a field of information about a buddy. * * @param key_str Key to store. * @param value_str Value string, either user takes ownership of this string * or it is freed if MsimUser doesn't store the string. * @param user User to store data in. Existing data will be replaced. */ static void msim_store_user_info_each(const gchar *key_str, gchar *value_str, MsimUser *user) { if (g_str_equal(key_str, "UserID") || g_str_equal(key_str, "ContactID")) { /* Save to buddy list, if it exists, for quick cached uid lookup with msim_uid2username_from_blist(). */ user->id = atol(value_str); g_free(value_str); if (user->buddy) { purple_debug_info("msim", "associating uid %s with username %s\n", key_str, user->buddy->name); purple_blist_node_set_int(&user->buddy->node, "UserID", user->id); } /* Need to store in MsimUser, too? What if not on blist? */ } else if (g_str_equal(key_str, "Age")) { user->age = atol(value_str); g_free(value_str); } else if (g_str_equal(key_str, "Gender")) { g_free(user->gender); user->gender = value_str; } else if (g_str_equal(key_str, "Location")) { g_free(user->location); user->location = value_str; } else if (g_str_equal(key_str, "TotalFriends")) { user->total_friends = atol(value_str); g_free(value_str); } else if (g_str_equal(key_str, "DisplayName")) { g_free(user->display_name); user->display_name = value_str; } else if (g_str_equal(key_str, "BandName")) { msim_set_artist_or_title(user, value_str, NULL); g_free(value_str); } else if (g_str_equal(key_str, "SongName")) { msim_set_artist_or_title(user, NULL, value_str); g_free(value_str); } else if (g_str_equal(key_str, "UserName") || g_str_equal(key_str, "IMName") || g_str_equal(key_str, "NickName")) { /* Ignore because PurpleBuddy knows this already */ g_free(value_str); } else if (g_str_equal(key_str, "ImageURL") || g_str_equal(key_str, "AvatarURL")) { const gchar *previous_url; if (user->temporary_user) { /* This user will be destroyed soon; don't try to look up its image or avatar, * since that won't return immediately and we will end up accessing freed data. */ g_free(value_str); return; } if (user->temporary_user) { /* This user will be destroyed soon; don't try to look up its image or avatar, * since that won't return immediately and we will end up accessing freed data. */ g_free(value_str); return; } g_free(user->image_url); user->image_url = value_str; /* Instead of showing 'no photo' picture, show nothing. */ if (g_str_equal(user->image_url, "http://x.myspace.com/images/no_pic.gif")) { purple_buddy_icons_set_for_user(user->buddy->account, user->buddy->name, NULL, 0, NULL); return; } /* TODO: use ETag for checksum */ previous_url = purple_buddy_icons_get_checksum_for_user(user->buddy); /* Only download if URL changed */ if (!previous_url || !g_str_equal(previous_url, user->image_url)) { purple_util_fetch_url(user->image_url, TRUE, NULL, TRUE, msim_downloaded_buddy_icon, (gpointer)user); } } else if (g_str_equal(key_str, "LastImageUpdated")) { /* TODO: use somewhere */ user->last_image_updated = atol(value_str); g_free(value_str); } else if (g_str_equal(key_str, "Headline")) { g_free(user->headline); user->headline = value_str; } else { /* TODO: other fields in MsimUser */ gchar *msg; msg = g_strdup_printf("msim_store_user_info_each: unknown field %s=%s", key_str, value_str); g_free(value_str); msim_unrecognized(NULL, NULL, msg); g_free(msg); } }