コード例 #1
0
/* stolen from autoaccept.c and gtkblist.c files. */
void
buddy_context_menu_add_item (PurpleBlistNode * node, GList ** menu,
                             PurplePlugin * plugin) {
    PurplePluginProtocolInfo *prpl_info;

    if (PURPLE_BLIST_NODE_IS_BUDDY (node)) {
        prpl_info =
            PURPLE_PLUGIN_PROTOCOL_INFO (((PurpleBuddy *) node)->account->
                                         gc->prpl);
        if (prpl_info && prpl_info->send_file) {
            if (!prpl_info->can_receive_file ||
                prpl_info->can_receive_file (((PurpleBuddy *) node)->
                                             account->gc,
                                             ((PurpleBuddy *) node)->name)) {
                PurpleMenuAction *action;

                if (!PURPLE_BLIST_NODE_IS_BUDDY (node)
                    && !PURPLE_BLIST_NODE_IS_CONTACT (node)
                    && !(purple_blist_node_get_flags (node) &
                         PURPLE_BLIST_NODE_FLAG_NO_SAVE))
                    return;

                action =
                    purple_menu_action_new (SCREENSHOT_SEND_MENUITEM_LABEL,
                                            PURPLE_CALLBACK
                                            (on_blist_context_menu_send_capture),
                                            plugin, NULL);
                (*menu) = g_list_prepend (*menu, action);       /* add */
            }
        }
    }
}
コード例 #2
0
static gint compare_account(PurpleBlistNode *node1, PurpleBlistNode *node2) {
	GList *cur;
	PurpleAccount *acc1=NULL, *acc2=NULL, *account;

	if(!node1 || !node2) return 0;

	if(PURPLE_BLIST_NODE_IS_CHAT(node1)) {
		acc1 = ((PurpleChat *)node1)->account;
	} else if(PURPLE_BLIST_NODE_IS_BUDDY(node1)) {
		acc1 = ((PurpleBuddy *)node1)->account;
	} else if(PURPLE_BLIST_NODE_IS_CONTACT(node1)) {
		acc1 = (purple_contact_get_priority_buddy((PurpleContact *)node1))->account;
	}

	if(PURPLE_BLIST_NODE_IS_CHAT(node2)) {
		acc2 = ((PurpleChat *)node2)->account;
	} else if(PURPLE_BLIST_NODE_IS_BUDDY(node2)) {
		acc2 = ((PurpleBuddy *)node2)->account;
	} else if(PURPLE_BLIST_NODE_IS_CONTACT(node2)) {
		acc2 = (purple_contact_get_priority_buddy((PurpleContact *)node2))->account;
	}

	for(cur = purple_accounts_get_all(); cur; cur = cur->next) {
		account = cur->data;
		if(account == acc1 && account == acc2) {
			return 0;
		} else if(account == acc1) {
			return -1;
		} else if(account == acc2) {
			return 1;
		}
	}

	return 0;
}
コード例 #3
0
static gint compare_protocol(PurpleBlistNode *node1, PurpleBlistNode *node2) {
	PurpleAccount *acc1=NULL, *acc2=NULL;

	if(!node1) {
		return 0;
	}

	if(PURPLE_BLIST_NODE_IS_CHAT(node1)) {
		acc1 = ((PurpleChat *)node1)->account;
	} else if(PURPLE_BLIST_NODE_IS_BUDDY(node1)) {
		acc1 = ((PurpleBuddy *)node1)->account;
	} else if(PURPLE_BLIST_NODE_IS_CONTACT(node1)) {
		acc1 = (purple_contact_get_priority_buddy((PurpleContact *)node1))->account;
	}

	if(node2) {
		if(PURPLE_BLIST_NODE_IS_CHAT(node2)) {
			acc2 = ((PurpleChat *)node2)->account;
		} else if(PURPLE_BLIST_NODE_IS_BUDDY(node2)) {
			acc2 = ((PurpleBuddy *)node2)->account;
		} else if(PURPLE_BLIST_NODE_IS_CONTACT(node2)) {
			acc2 = (purple_contact_get_priority_buddy((PurpleContact *)node2))->account;
		}
	}

	return purple_utf8_strcasecmp(
		purple_account_get_protocol_id(acc1),
		acc2 ? purple_account_get_protocol_id(acc2) : NULL
	);
}
コード例 #4
0
static gint compare_logsize(PurpleBlistNode *node1, PurpleBlistNode *node2) {
	PurpleBlistNode *child;
	int logsize1=0, logsize2=0;
	
	if(PURPLE_BLIST_NODE_IS_CONTACT(node1)) {
		for (child = node1->child; child; child = child->next) {
			if(PURPLE_BLIST_NODE_IS_BUDDY(child)) {
				logsize1 += purple_log_get_total_size(
					PURPLE_LOG_IM,
					((PurpleBuddy*)(child))->name, ((PurpleBuddy*)(child))->account
				);
			}
		}
	}
	if(PURPLE_BLIST_NODE_IS_BUDDY(node1)) {
		logsize1 = purple_log_get_total_size(
			PURPLE_LOG_IM,
			PURPLE_BLIST_NODE_NAME(node1), ((PurpleBuddy *)node1)->account
		);
	}
	if(PURPLE_BLIST_NODE_IS_CHAT(node1)) {
		logsize1 = purple_log_get_total_size(
			PURPLE_LOG_CHAT,
			PURPLE_BLIST_NODE_NAME(node1), ((PurpleChat *)node1)->account
		);
	}

	if(PURPLE_BLIST_NODE_IS_CONTACT(node2)) {
		for (child = node2->child; child; child = child->next) {
			if(PURPLE_BLIST_NODE_IS_BUDDY(child)) {
				logsize2 += purple_log_get_total_size(
					PURPLE_LOG_IM,
					((PurpleBuddy*)(child))->name, ((PurpleBuddy*)(child))->account
				);
			}
		}
	}
	if(PURPLE_BLIST_NODE_IS_BUDDY(node2)) {
		logsize2 = purple_log_get_total_size(
			PURPLE_LOG_IM,
			PURPLE_BLIST_NODE_NAME(node2), ((PurpleBuddy *)node2)->account
		);
	}
	if(PURPLE_BLIST_NODE_IS_CHAT(node2)) {
		logsize2 = purple_log_get_total_size(
			PURPLE_LOG_CHAT,
			PURPLE_BLIST_NODE_NAME(node2), ((PurpleChat *)node2)->account
		);
	}
	
	if(logsize1 > logsize2) return -1;
	if(logsize2 > logsize1) return 1;
	return 0;
}
コード例 #5
0
ファイル: ticker.c プロジェクト: gotomypc/pidgin_whiteboard
static void buddy_ticker_show(void)
{
	PurpleBlistNode *gnode, *cnode, *bnode;
	PurpleBuddy *b;

	for(gnode = purple_blist_get_root();
	    gnode;
	    gnode = purple_blist_node_get_sibling_next(gnode))
	{
		if(!PURPLE_BLIST_NODE_IS_GROUP(gnode))
			continue;
		for(cnode = purple_blist_node_get_first_child(gnode);
		    cnode;
		    cnode = purple_blist_node_get_sibling_next(cnode))
		{
			if(!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
				continue;
			for(bnode = purple_blist_node_get_first_child(cnode);
			    bnode;
			    bnode = purple_blist_node_get_sibling_next(bnode))
			{
				if(!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
					continue;
				b = (PurpleBuddy *)bnode;
				if(PURPLE_BUDDY_IS_ONLINE(b))
					buddy_ticker_add_buddy(b);
			}
		}
	}
}
コード例 #6
0
ファイル: fb_blist.c プロジェクト: bf4/pidgin-mac
void fb_blist_poke_buddy(PurpleBlistNode *node, gpointer data)
{
    PurpleBuddy *buddy;
    FacebookBuddy *fbuddy;
    FacebookAccount *fba;
    gchar *postdata;

    if(!PURPLE_BLIST_NODE_IS_BUDDY(node))
        return;
    buddy = (PurpleBuddy *) node;
    if (!buddy)
        return;
    fbuddy = buddy->proto_data;
    if (!fbuddy)
        return;
    fba = fbuddy->fba;
    if (!fba)
        return;

    postdata = g_strdup_printf("uid=%d&pokeback=0&post_form_id=%s", fbuddy->uid, fba->post_form_id);

    fb_post_or_get(fba, FB_METHOD_POST, NULL, "/ajax/poke.php",
                   postdata, NULL, NULL, FALSE);

    g_free(postdata);
}
コード例 #7
0
ファイル: blist.c プロジェクト: crater2150/mimoc
/*
 * \brief Update a node in the buddy list.
 *
 * This function is called from libpurple to inform us a node in the
 * buddy_list needs updating. So this function invokes rebuilding
 * account_<protocol_id>_<account_name>/contacts and updates the
 * status_messsage_of_<buddy_id> file in the appropriate account-directory.
 *
 * \param list The list the changed node belongs to
 * \param node The changed node
 */
static void update(PurpleBuddyList *list, PurpleBlistNode *node)
{
	if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
		write_buddy_list_to_disk();
		write_buddys_status_message_to_disk(PURPLE_BUDDY(node));
	}
}
コード例 #8
0
ファイル: buddy.c プロジェクト: dylex/pidgin
static void
silcpurple_buddy_showkey(PurpleBlistNode *node, gpointer data)
{
	PurpleBuddy *b;
	PurpleConnection *gc;
	SilcPurple sg;
	SilcPublicKey public_key;
	const char *pkfile;

	g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));

	b = (PurpleBuddy *) node;
	gc = purple_account_get_connection(b->account);
	sg = gc->proto_data;

	pkfile = purple_blist_node_get_string(node, "public-key");
	if (!silc_pkcs_load_public_key(pkfile, &public_key, SILC_PKCS_FILE_PEM) &&
	    !silc_pkcs_load_public_key(pkfile, &public_key, SILC_PKCS_FILE_BIN)) {
		purple_notify_error(gc,
				  _("Show Public Key"),
				  _("Could not load public key"), NULL);
		return;
	}

	silcpurple_show_public_key(sg, b->name, public_key, NULL, NULL);
	silc_pkcs_public_key_free(public_key);
}
コード例 #9
0
ファイル: migrate.c プロジェクト: Javran/purple-plugin-pack
static void
lh_migrate_build_lists(void)
{
    PurpleBuddyList *blist = NULL;
    PurpleBlistNode *root = NULL, *g = NULL, *c = NULL, *b = NULL;

    blist = purple_get_blist();
    root = blist->root;

    /* walk the blist tree and build a list of the buddies and a list of
     * the groups corresponding to each buddy */
    /* group level */
    for(g = root; g && PURPLE_BLIST_NODE_IS_GROUP(g); g = g->next)
        /* contact level */
        for(c = g->child; c && PURPLE_BLIST_NODE_IS_CONTACT(c); c = c->next)
            /* buddy level */
            for(b = c->child; b && PURPLE_BLIST_NODE_IS_BUDDY(b); b = b->next) {
                PurpleGroup *tmp_group = purple_group_new(((PurpleGroup *)g)->name);
                PurpleBuddy *tmp_buddy = (PurpleBuddy *)b;

                /* if this buddy is on the source account then add it
                 * to the GLists */
                if(purple_buddy_get_account(tmp_buddy) == source_account) {
                    PurpleBuddy *tmp_buddy_2 = purple_buddy_new(target_account,
                                               purple_buddy_get_name(tmp_buddy),
                                               purple_buddy_get_alias(tmp_buddy));

                    groups = g_list_prepend(groups, tmp_group);
                    buddies = g_list_prepend(buddies, tmp_buddy_2);
                }
            }

    return;
}
コード例 #10
0
ファイル: buddy.c プロジェクト: dylex/pidgin
static void
silcpurple_buddy_resetkey(PurpleBlistNode *node, gpointer data)
{
	PurpleBuddy *b;
	PurpleConnection *gc;
        SilcPurple sg;
	char *nickname;
	SilcClientEntry *clients;
	SilcUInt32 clients_count;

	g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));

	b = (PurpleBuddy *) node;
	gc = purple_account_get_connection(b->account);
	sg = gc->proto_data;

	if (!silc_parse_userfqdn(b->name, &nickname, NULL))
		return;

	/* Find client entry */
	clients = silc_client_get_clients_local(sg->client, sg->conn,
						nickname, b->name,
						&clients_count);
	if (!clients) {
		silc_free(nickname);
		return;
	}

	clients[0]->prv_resp = FALSE;
	silc_client_del_private_message_key(sg->client, sg->conn,
					    clients[0]);
	silc_free(clients);
	silc_free(nickname);
}
コード例 #11
0
ファイル: netsoul.c プロジェクト: Bocaa/netsoul-purple
static void netsoul_close (PurpleConnection *gc)
{
  PurpleBlistNode *gnode, *cnode, *bnode;
  NetsoulData	*ns = gc->proto_data;

  purple_debug_info("netsoul", "netsoul_close\n");

  for(gnode = purple_get_blist()->root; gnode; gnode = gnode->next) {
    if(!PURPLE_BLIST_NODE_IS_GROUP(gnode)) continue;
    for(cnode = gnode->child; cnode; cnode = cnode->next) {
      if(!PURPLE_BLIST_NODE_IS_CONTACT(cnode)) continue;
      for(bnode = cnode->child; bnode; bnode = bnode->next) {
	if(!PURPLE_BLIST_NODE_IS_BUDDY(bnode)) continue;
	if(((PurpleBuddy*)bnode)->account == gc->account)
	{
	  PurpleBuddy *buddy = (PurpleBuddy*)bnode;
	  if (buddy)
	    purple_buddy_icon_unref(purple_buddy_get_icon(buddy));
	}
      }
    }
  }

  g_free(ns->challenge);
  g_free(ns->host);
  close(ns->fd);
  g_free(ns);
  purple_input_remove(gc->inpa);
}
コード例 #12
0
ファイル: buddy.c プロジェクト: dylex/pidgin
void silcpurple_send_buddylist(PurpleConnection *gc)
{
	PurpleBuddyList *blist;
	PurpleBlistNode *gnode, *cnode, *bnode;
	PurpleBuddy *buddy;
	PurpleAccount *account;

	account = purple_connection_get_account(gc);

	if ((blist = purple_get_blist()) != NULL)
	{
		for (gnode = blist->root; gnode != NULL; gnode = gnode->next)
		{
			if (!PURPLE_BLIST_NODE_IS_GROUP(gnode))
				continue;
			for (cnode = gnode->child; cnode != NULL; cnode = cnode->next)
			{
				if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
					continue;
				for (bnode = cnode->child; bnode != NULL; bnode = bnode->next)
				{
					if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
						continue;
					buddy = (PurpleBuddy *)bnode;
					if (purple_buddy_get_account(buddy) == account)
						silcpurple_add_buddy_i(gc, buddy, TRUE);
				}
			}
		}
	}
}
コード例 #13
0
ファイル: gntrequest.c プロジェクト: bf4/pidgin-mac
static GntWidget*
create_string_field(PurpleRequestField *field, GntWidget **screenname)
{
	const char *hint = purple_request_field_get_type_hint(field);
	GntWidget *entry = gnt_entry_new(
			purple_request_field_string_get_default_value(field));
	gnt_entry_set_masked(GNT_ENTRY(entry),
			purple_request_field_string_is_masked(field));
	if (hint && purple_str_has_prefix(hint, "screenname")) {
		PurpleBlistNode *node = purple_blist_get_root();
		gboolean offline = purple_str_has_suffix(hint, "all");
		for (; node; node = purple_blist_node_next(node, offline)) {
			if (!PURPLE_BLIST_NODE_IS_BUDDY(node))
				continue;
			gnt_entry_add_suggest(GNT_ENTRY(entry), purple_buddy_get_name((PurpleBuddy*)node));
		}
		gnt_entry_set_always_suggest(GNT_ENTRY(entry), TRUE);
		if (screenname)
			*screenname = entry;
	} else if (hint && !strcmp(hint, "group")) {
		PurpleBlistNode *node;
		for (node = purple_blist_get_root(); node;
				node = purple_blist_node_get_sibling_next(node)) {
			if (PURPLE_BLIST_NODE_IS_GROUP(node))
				gnt_entry_add_suggest(GNT_ENTRY(entry), purple_group_get_name((PurpleGroup *)node));
		}
	}
	return entry;
}
コード例 #14
0
ファイル: napster.c プロジェクト: rgenoud/purple-plugin-pack
/* 208 - MSG_CLIENT_ADD_HOTLIST_SEQ */
static void
nap_send_buddylist(PurpleConnection *gc) {
    PurpleBuddyList *blist;
    PurpleBlistNode *gnode, *cnode, *bnode;
    PurpleBuddy *buddy;

    if ((blist = purple_get_blist()) != NULL)
    {
        for (gnode = blist->root; gnode != NULL; gnode = gnode->next)
        {
            if (!PURPLE_BLIST_NODE_IS_GROUP(gnode))
                continue;
            for (cnode = gnode->child; cnode != NULL; cnode = cnode->next)
            {
                if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
                    continue;
                for (bnode = cnode->child; bnode != NULL; bnode = bnode->next)
                {
                    if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
                        continue;
                    buddy = (PurpleBuddy *)bnode;
                    nap_write_packet(gc, 208, "%s", buddy->name);
                }
            }
        }
    }
}
コード例 #15
0
ファイル: wa_purple.c プロジェクト: yah0o2010/whatsapp-purple
static GList *waprpl_blist_node_menu(PurpleBlistNode *node) {
  if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
    return NULL;
  } else {
    return NULL;
  }
}
コード例 #16
0
static void extended_buddy_menu_cb(PurpleBlistNode *node, GList **menu) {
	PurpleMenuAction *action = NULL;
	GList *submenu = NULL;

	if(
		!PURPLE_BLIST_NODE_IS_CONTACT(node) &&
		!PURPLE_BLIST_NODE_IS_BUDDY(node) &&
		!PURPLE_BLIST_NODE_IS_CHAT(node)
	) {
		return;
	}

	if(purple_blist_node_get_flags(node) & PURPLE_BLIST_NODE_FLAG_NO_SAVE) {
		return;
	}

	if(
		purple_prefs_get_int(PLUGIN_PREFS_PREFIX "/sort1") != SORT_METHOD_PRIORITY &&
		purple_prefs_get_int(PLUGIN_PREFS_PREFIX "/sort2") != SORT_METHOD_PRIORITY &&
		purple_prefs_get_int(PLUGIN_PREFS_PREFIX "/sort3") != SORT_METHOD_PRIORITY
	) {
		return;
	}

	submenu = menu_append(submenu, node, PRIORITY_VERY_HIGH, _("Very High"));
	submenu = menu_append(submenu, node, PRIORITY_HIGH, _("High"));
	submenu = menu_append(submenu, node, PRIORITY_NORMAL, _("Normal"));
	submenu = menu_append(submenu, node, PRIORITY_LOW, _("Low"));
	submenu = menu_append(submenu, node, PRIORITY_VERY_LOW, _("Very Low"));

	action = purple_menu_action_new(_("Set Priority"), NULL, NULL, submenu);
	*menu = g_list_append(*menu, action);
}
コード例 #17
0
static gint compare_onoffline(PurpleBlistNode *node1, PurpleBlistNode *node2) {
	PurpleBuddy *buddy1=NULL, *buddy2=NULL;
	
	if(!node1) {
		return 0;
	}
	if(!node2) {
		return 0;
	}

	if(PURPLE_BLIST_NODE_IS_CHAT(node1) && PURPLE_BLIST_NODE_IS_CHAT(node2)) {
		return 0;
	} else if(PURPLE_BLIST_NODE_IS_CHAT(node1)) {
		return 1;
	} else if(PURPLE_BLIST_NODE_IS_CHAT(node2)) {
		return -1;
	}

	if(PURPLE_BLIST_NODE_IS_CONTACT(node1)) {
		buddy1 = purple_contact_get_priority_buddy((PurpleContact *)node1);
	} else if(PURPLE_BLIST_NODE_IS_BUDDY(node1)) {
		buddy1 = (PurpleBuddy *)node1;
	}

	if(PURPLE_BLIST_NODE_IS_CONTACT(node2)) {
		buddy2 = purple_contact_get_priority_buddy((PurpleContact *)node2);
	} else if(PURPLE_BLIST_NODE_IS_BUDDY(node2)) {
		buddy2 = (PurpleBuddy *)node2;
	}

	if(PURPLE_BUDDY_IS_ONLINE(buddy1)) {
		if(PURPLE_BUDDY_IS_ONLINE(buddy2)) {
			return 0;
		} else {
			return -1;
		}
	} else {
		if(PURPLE_BUDDY_IS_ONLINE(buddy2)) {
			return 1;
		} else {
			return 0;
		}
	}

	return 0;
}
コード例 #18
0
static gint compare_onofflinetime(PurpleBlistNode *node1, PurpleBlistNode *node2) {
	PurpleBuddy *buddy1=NULL, *buddy2=NULL;
	int t1=0, t2=0;
	
	if(!node1) {
		return 0;
	}

	if(PURPLE_BLIST_NODE_IS_CHAT(node1) && PURPLE_BLIST_NODE_IS_CHAT(node2)) {
		return 0;
	} else if(PURPLE_BLIST_NODE_IS_CHAT(node1)) {
		return 1;
	} else if(PURPLE_BLIST_NODE_IS_CHAT(node2)) {
		return -1;
	}

	if(PURPLE_BLIST_NODE_IS_CONTACT(node1)) {
		buddy1 = purple_contact_get_priority_buddy((PurpleContact *)node1);
	} else if(PURPLE_BLIST_NODE_IS_BUDDY(node1)) {
		buddy1 = (PurpleBuddy *)node1;
	}
	if(PURPLE_BUDDY_IS_ONLINE(buddy1)) {
		t1 = purple_presence_get_login_time(purple_buddy_get_presence(buddy1));
	} else {
		t1 = purple_blist_node_get_int((PurpleBlistNode *)buddy1, "last_seen");
	}

	if(PURPLE_BLIST_NODE_IS_CONTACT(node2)) {
		buddy2 = purple_contact_get_priority_buddy((PurpleContact *)node2);
	} else if(PURPLE_BLIST_NODE_IS_BUDDY(node2)) {
		buddy2 = (PurpleBuddy *)node2;
	}
	if(PURPLE_BUDDY_IS_ONLINE(buddy2)) {
		t2 = purple_presence_get_login_time(purple_buddy_get_presence(buddy2));
	} else {
		t2 = purple_blist_node_get_int((PurpleBlistNode *)buddy2, "last_seen");
	}
	
	if(t1 > t2) {
		return -1;
	}
	if(t2 > t1) {
		return 1;
	}
	return 0;
}
コード例 #19
0
ファイル: autoaccept.c プロジェクト: Draghtnod/pidgin
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);
}
コード例 #20
0
ファイル: netsoul.c プロジェクト: Bocaa/netsoul-purple
/*
** Si on a un clic droit sur un buddy dans la buddy liste,
** on va rajouter quelques champ dans le menu
*/
static GList *netsoul_blist_node_menu(PurpleBlistNode *node)
{
  if (PURPLE_BLIST_NODE_IS_BUDDY(node))
    {
      return ns_buddy_menu((PurpleBuddy *) node);
    }
  else
    return NULL;
}
コード例 #21
0
ファイル: qq.c プロジェクト: anchowee/AdiumQQ
/* buddy-related menu shown up with right-click */
static GList *qq_blist_node_menu(PurpleBlistNode * node)
{
	if(PURPLE_BLIST_NODE_IS_CHAT(node))
		return qq_chat_menu(node);

	if(PURPLE_BLIST_NODE_IS_BUDDY(node))
		return qq_buddy_menu((PurpleBuddy *) node);

	return NULL;
}
コード例 #22
0
ファイル: gntpounce.c プロジェクト: CkNoSFeRaTU/pidgin
static void
setup_buddy_list_suggestion(GntEntry *entry, gboolean offline)
{
	PurpleBlistNode *node = purple_blist_get_root();
	for (; node; node = purple_blist_node_next(node, offline)) {
		if (!PURPLE_BLIST_NODE_IS_BUDDY(node))
			continue;
		gnt_entry_add_suggest(entry, purple_buddy_get_name((PurpleBuddy*)node));
	}
}
コード例 #23
0
ファイル: purple_ruby.c プロジェクト: strelok1111/purple_ruby
static void update_blist(PurpleBuddyList *list, PurpleBlistNode *node)
{
	if (blist_update_handler != Qnil && PURPLE_BLIST_NODE_IS_BUDDY(node)) {
		PurpleBuddy *buddy = (PurpleBuddy *)node;
		check_callback(blist_update_handler, "blist_update_handler");
		VALUE args[2];
		args[0] = RB_BLIST_BUDDY(buddy);
		args[1] = Data_Wrap_Struct(cAccount, NULL, NULL, purple_buddy_get_account(buddy));
		rb_funcall2(blist_update_handler, CALL, 2, args);		
	}
}
コード例 #24
0
ファイル: qq.c プロジェクト: anchowee/AdiumQQ
static void qq_add_buddy_from_menu_cb(PurpleBlistNode *node, gpointer data)
{
	PurpleBuddy *buddy;
	PurpleConnection *gc;

	g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));

	buddy = (PurpleBuddy *) node;
	gc = purple_account_get_connection(purple_buddy_get_account(buddy));

	qq_add_buddy(gc, buddy, NULL);
}
コード例 #25
0
/* buddy-related menu shown up with right-click */
static GList *np_blist_node_menu(PurpleBlistNode * node)
{
    purple_debug_warning("np","\n===>");

	if(PURPLE_BLIST_NODE_IS_CHAT(node))
		return np_chat_menu(node);
    
	if(PURPLE_BLIST_NODE_IS_BUDDY(node))
		return np_buddy_menu((PurpleBuddy *) node);
    
	return NULL;
}
コード例 #26
0
ファイル: authorization.c プロジェクト: Draghtnod/pidgin
void
oscar_auth_sendrequest_menu(PurpleBlistNode *node, gpointer ignored)
{
	PurpleBuddy *buddy;
	PurpleConnection *gc;

	g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));

	buddy = (PurpleBuddy *) node;
	gc = purple_account_get_connection(purple_buddy_get_account(buddy));
	oscar_auth_sendrequest(gc, purple_buddy_get_name(buddy), NULL);
}
コード例 #27
0
ファイル: buddy.c プロジェクト: dylex/pidgin
static void
silcpurple_buddy_getkey_menu(PurpleBlistNode *node, gpointer data)
{
	PurpleBuddy *buddy;
	PurpleConnection *gc;

	g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));

	buddy = (PurpleBuddy *) node;
	gc = purple_account_get_connection(buddy->account);

	silcpurple_buddy_getkey(gc, buddy->name);
}
コード例 #28
0
ファイル: autoaccept.c プロジェクト: Draghtnod/pidgin
static void
context_menu(PurpleBlistNode *node, GList **menu, gpointer plugin)
{
	PurpleMenuAction *action;

	if (!PURPLE_BLIST_NODE_IS_BUDDY(node) && !PURPLE_BLIST_NODE_IS_CONTACT(node) &&
		!(purple_blist_node_get_flags(node) & PURPLE_BLIST_NODE_FLAG_NO_SAVE))
		return;

	action = purple_menu_action_new(_("Autoaccept File Transfers..."),
					PURPLE_CALLBACK(set_auto_accept_settings), plugin, NULL);
	(*menu) = g_list_prepend(*menu, action);
}
コード例 #29
0
ファイル: ui.c プロジェクト: sardemff7/purple-events
static PurpleBlistNode *
_purple_events_ui_get_good_node(PurpleBlistNode *node)
{
    if ( PURPLE_BLIST_NODE_IS_CONTACT(node) )
        return node;

    if ( PURPLE_BLIST_NODE_IS_BUDDY(node) )
        return PURPLE_BLIST_NODE(purple_buddy_get_contact(PURPLE_BUDDY(node)));

    if ( PURPLE_BLIST_NODE_IS_GROUP(node) )
        return node;

    return NULL;
}
コード例 #30
0
ファイル: qq.c プロジェクト: anchowee/AdiumQQ
/* TODO: re-enable this */
static void _qq_menu_send_file(PurpleBlistNode * node, gpointer ignored)
{
	PurpleBuddy *buddy;
	PurpleConnection *gc;
	qq_buddy_data *bd;

	g_return_if_fail (PURPLE_BLIST_NODE_IS_BUDDY (node));
	buddy = (PurpleBuddy *) node;
	bd = (qq_buddy_data *) buddy->proto_data;
	/*	if (is_online (bd->status)) { */
	gc = purple_account_get_connection (buddy->account);
	g_return_if_fail (gc != NULL && gc->proto_data != NULL);
	qq_send_file(gc, buddy->name, NULL);
	/*	} */
}