pidgin: f7d26d95: Add a purple_account_get_name_for_displa...

deryni at pidgin.im deryni at pidgin.im
Tue Sep 8 08:52:54 EDT 2009


-----------------------------------------------------------------
Revision: f7d26d95395d5013710b12cfdfcf131aa1033e0c
Ancestor: 7648401c87cc8f2913749424f6b22c79e3d1a345
Author: deryni at pidgin.im
Date: 2009-08-15T05:10:07
Branch: im.pidgin.pidgin
URL: http://d.pidgin.im/viewmtn/revision/info/f7d26d95395d5013710b12cfdfcf131aa1033e0c

Modified files:
        ChangeLog.API libpurple/account.c libpurple/account.h

ChangeLog: 

Add a purple_account_get_name_for_display function (I'm not a huge fan of that
name but didn't want to use get_display_name as that means something else for
connections).

This wants to be used in places where we need to display an identifier for the
account to the user and honor the appropriate aliases/etc.

Refs #8391

-------------- next part --------------
============================================================
--- ChangeLog.API	cf717ca4347c54f8e7960a8b203dc13e09373db3
+++ ChangeLog.API	963205d77d6862edca4bca15d41d4f501d7e430e
@@ -22,6 +22,7 @@ version 2.6.0 (??/??/2009):
 		  and fwrite for saving a file locally. These allow a UI to stream a
 		  file through a socket without buffering the file on the local disk.
 		* Jabber plugin signals (see jabber-signals.dox)
+		* purple_account_get_name_for_display
 		* purple_account_remove_setting
 		* purple_buddy_destroy
 		* purple_buddy_get_protocol_data
============================================================
--- libpurple/account.c	ed1447e356c599eaf779b947205a136748e80eb4
+++ libpurple/account.c	e9d750c925baf05e60d13fe8efbb4ad305e8f802
@@ -2016,6 +2016,42 @@ purple_account_get_connection(const Purp
 	return account->gc;
 }
 
+const gchar *
+purple_account_get_name_for_display(const PurpleAccount *account)
+{
+	PurpleBuddy *self = NULL;
+	PurpleConnection *gc = NULL;
+	const gchar *name = NULL, *username = NULL, *displayname = NULL;
+
+	name = purple_account_get_alias(account);
+
+	if (name) {
+		return name;
+	}
+
+	username = purple_account_get_username(account);
+	self = purple_find_buddy((PurpleAccount *)account, username);
+
+	if (self) {
+		const gchar *calias= purple_buddy_get_contact_alias(self);
+
+		/* We don't want to return the buddy name if the buddy/contact
+		 * doesn't have an alias set. */
+		if (!purple_strequal(username, calias)) {
+			return calias;
+		}
+	}
+
+	gc = purple_account_get_connection(account);
+	displayname = purple_connection_get_display_name(gc);
+
+	if (displayname) {
+		return displayname;
+	}
+
+	return username;
+}
+
 gboolean
 purple_account_get_remember_password(const PurpleAccount *account)
 {
============================================================
--- libpurple/account.h	ea27697ac2f242986507da6d4844daf5af06dbc2
+++ libpurple/account.h	6ab74931ed59e9af3bf1d3c724b3d8066342a27a
@@ -630,6 +630,20 @@ PurpleConnection *purple_account_get_con
 PurpleConnection *purple_account_get_connection(const PurpleAccount *account);
 
 /**
+ * Returns a name for this account appropriate for display to the user. In
+ * order of preference: the account's alias; the contact or buddy alias (if
+ * the account exists on its own buddy list); the connection's display name;
+ * the account's username.
+ *
+ * @param account The account.
+ *
+ * @return The name to display.
+ *
+ * @since 2.6.0
+ */
+const gchar *purple_account_get_name_for_display(const PurpleAccount *account);
+
+/**
  * Returns whether or not this account should save its password.
  *
  * @param account The account.


More information about the Commits mailing list