static gint compare_last_name(PurpleBlistNode *node1, PurpleBlistNode *node2) {
	const char *name1=NULL, *name2=NULL;
	const char *tmp=NULL;

	if(PURPLE_BLIST_NODE_IS_CONTACT(node1)) {
		name1 = purple_contact_get_alias((PurpleContact *)node1);
	}
	if(!name1) {
		name1 = PURPLE_BLIST_NODE_NAME(node1);
	}

	if(PURPLE_BLIST_NODE_IS_CONTACT(node2)) {
		name2 = purple_contact_get_alias((PurpleContact *)node2);
	}
	if(!name2) {
		name2 = PURPLE_BLIST_NODE_NAME(node2);
	}
	
	/* Searches for last space in name and, if found, sorts based on characters remaining */
	tmp = strrchr(name1, ' ');
	if(tmp != NULL) {
		name1 = tmp;
	}

	tmp = strrchr(name2, ' ');
	if(tmp != NULL) {
		name2 = tmp;
	}

	return purple_utf8_strcasecmp(name1, name2);
}
Exemple #2
0
void BuddyListContact::ContactContextMenu::onChangeAlias(
    Button& /*activator*/)
{
  PurpleContact *contact = parent_contact->getPurpleContact();
  CppConsUI::InputDialog *dialog = new CppConsUI::InputDialog(
      _("Alias"), purple_contact_get_alias(contact));
  dialog->signal_response.connect(sigc::mem_fun(this,
        &ContactContextMenu::changeAliasResponseHandler));
  dialog->show();
}
static gint compare_name(PurpleBlistNode *node1, PurpleBlistNode *node2) {
	const char *name1=NULL, *name2=NULL;

	if(PURPLE_BLIST_NODE_IS_CONTACT(node1)) {
		name1 = purple_contact_get_alias((PurpleContact *)node1);
	}
	if(!name1) {
		name1 = PURPLE_BLIST_NODE_NAME(node1);
	}

	if(PURPLE_BLIST_NODE_IS_CONTACT(node2)) {
		name2 = purple_contact_get_alias((PurpleContact *)node2);
	}
	if(!name2) {
		name2 = PURPLE_BLIST_NODE_NAME(node2);
	}

	return purple_utf8_strcasecmp(name1, name2);
}
Exemple #4
0
void BuddyListContact::ContactContextMenu::onRemove(Button& /*activator*/)
{
  PurpleContact *contact = parent_contact->getPurpleContact();
  char *msg = g_strdup_printf(
      _("Are you sure you want to delete contact %s from the list?"),
      purple_contact_get_alias(contact));
  CppConsUI::MessageDialog *dialog = new CppConsUI::MessageDialog(
      _("Contact deletion"), msg);
  g_free(msg);
  dialog->signal_response.connect(sigc::mem_fun(this,
        &ContactContextMenu::removeResponseHandler));
  dialog->show();
}
Exemple #5
0
static void buddy_ticker_update_contact(PurpleContact *contact) {
	TickerData *td = buddy_ticker_find_contact(contact);

	if (!td)
		return;

	/* pop up the ticker window again */
	buddy_ticker_create_window();
	if (purple_contact_get_priority_buddy(contact) == NULL)
		buddy_ticker_remove(td);
	else {
		buddy_ticker_set_pixmap(contact);
		gtk_label_set_text(GTK_LABEL(td->label), purple_contact_get_alias(contact));
	}
}
Exemple #6
0
static void
set_auto_accept_settings(PurpleBlistNode *node, gpointer plugin)
{
	char *message;

	if (PURPLE_BLIST_NODE_IS_BUDDY(node))
		node = purple_blist_node_get_parent(node);
	g_return_if_fail(PURPLE_BLIST_NODE_IS_CONTACT(node));

	message = g_strdup_printf(_("When a file-transfer request arrives from %s"),
					purple_contact_get_alias((PurpleContact *)node));
	purple_request_choice(plugin, _("Set Autoaccept Setting"), message,
						NULL, purple_blist_node_get_int(node, "autoaccept"),
						_("_Save"), G_CALLBACK(save_cb),
						_("_Cancel"), NULL,
						NULL, NULL, NULL,
						node,
						_("Ask"), FT_ASK,
						_("Auto Accept"), FT_ACCEPT,
						_("Auto Reject"), FT_REJECT,
						NULL, purple_contact_get_alias((PurpleContact *)node), NULL,
						NULL);
	g_free(message);
}
Exemple #7
0
void BuddyListContact::update()
{
  BuddyListNode::update();

  PurpleBuddy *buddy = purple_contact_get_priority_buddy(contact);
  if (!buddy) {
    /* The contact does not have any associated buddy, ignore it until it gets
     * a buddy assigned. */
    setText("*Contact*");
    setVisibility(false);
    return;
  }

  // format contact size
  char *size;
  if (contact->currentsize > 1)
    size = g_strdup_printf(" (%d)", contact->currentsize);
  else
    size = NULL;

  // format contact label
  const char *alias = purple_contact_get_alias(contact);
  const char *status = getBuddyStatus(buddy);
  char *text;
  if (status[0])
    text = g_strdup_printf("%s %s%s", status, alias, size ? size : "");
  else
    text = g_strdup_printf("%s%s", alias, size ? size : "");
  setText(text);
  g_free(size);
  g_free(text);

  sortIn();

  updateColorScheme();

  if (!purple_account_is_connected(purple_buddy_get_account(buddy))) {
    // hide if account is offline
    setVisibility(false);
  }
  else
    setVisibility(BUDDYLIST->getShowOfflineBuddiesPref() || status[0]);

  updateFilterVisibility(alias);
}
Exemple #8
0
static void buddy_ticker_add_buddy(PurpleBuddy *b) {
	GtkWidget *hbox;
	TickerData *td;
	PurpleContact *contact;

	contact = purple_buddy_get_contact(b);

	buddy_ticker_create_window();

	if (!ticker)
		return;

	if (buddy_ticker_find_contact(contact))
	{
		buddy_ticker_update_contact(contact);
		return;
	}

	td = g_new0(TickerData, 1);
	td->contact = contact;
	tickerbuds = g_list_append(tickerbuds, td);

	td->ebox = gtk_event_box_new();
	gtk_ticker_add(GTK_TICKER(ticker), td->ebox);
	hbox = gtk_hbox_new(FALSE, 0);
	gtk_container_add(GTK_CONTAINER(td->ebox), hbox);
	buddy_ticker_set_pixmap(contact);
	gtk_box_pack_start(GTK_BOX(hbox), td->icon, FALSE, FALSE, 0);

	g_signal_connect(G_OBJECT(td->ebox), "button-press-event",
		G_CALLBACK(buddy_click_cb), contact);

	td->label = gtk_label_new(purple_contact_get_alias(contact));
	gtk_box_pack_start(GTK_BOX(hbox), td->label, FALSE, FALSE, 2);

	gtk_widget_show_all(td->ebox);
	gtk_widget_show(tickerwindow);

	/*
	 * Update the icon in a few seconds (after the open door icon has
	 * changed).  This is somewhat ugly.
	 */
	td->timeout = g_timeout_add(11000, buddy_ticker_set_pixmap_cb, td);
}
Exemple #9
0
const char *BuddyListContact::toString() const
{
  return purple_contact_get_alias(contact);
}