Пример #1
0
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);
}
Пример #2
0
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);
}
Пример #3
0
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);
}
Пример #4
0
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);
}
Пример #5
0
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;
}
Пример #6
0
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());
}
Пример #8
0
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);
}
Пример #9
0
/**
 * 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);
    }
}