Hey, This is a real small patch for GaimLogBackend that cleans up the way we're getting the buddy icon and alias for the buddy in question. There was a bunch of duplicated code there and we were doing some of the XML work twice. This patch cleans that area up and should make it a little quicker. I'm pretty sure there was a FIXME at one point that pointed out that this part was a little slow. That's all for now. --Mark.
Index: backends/GaimLogBackend.cs
===================================================================
RCS file: /cvs/gnome/dashboard/backends/GaimLogBackend.cs,v
retrieving revision 1.42
diff -u -r1.42 GaimLogBackend.cs
--- backends/GaimLogBackend.cs 4 Mar 2004 07:59:33 -0000 1.42
+++ backends/GaimLogBackend.cs 27 Apr 2004 04:39:08 -0000
@@ -56,8 +56,9 @@
idx.UpdateIndex ();
// Generate matches
- string icon = GetIconForBuddy (idx.Buddyname);
- string name = GetAliasForBuddy (idx.Buddyname);
+ Hashtable BuddyProperties = GetPropertiesOfBuddy (idx.Buddyname);
+ string name = (string)BuddyProperties["alias"];
+ string icon = (string)BuddyProperties["icon"];
for (int i = 0; i < idx.Convs.Count && i < 5; i++) {
Match match = new Match ("IMLog", clue);
@@ -132,61 +133,49 @@
return count;
}
- private string GetIconForBuddy (string buddy)
+
+ private Hashtable GetPropertiesOfBuddy (string buddy)
{
- string icon_path;
- string home_dir = Environment.GetEnvironmentVariable ("HOME");
- string path = Path.Combine (home_dir, ".gaim/blist.xml");
+ string home_dir = Environment.GetEnvironmentVariable ("HOME");
+ string path = Path.Combine (home_dir, ".gaim/blist.xml");
+
+ Console.WriteLine ("Getting properties for buddy: " + buddy);
- icon_path = GetGaimIcon ();
+ Hashtable BuddyProperties = new Hashtable ();
- Console.WriteLine ("Getting icon for buddy " + buddy);
+ string icon_path = "";
+ string alias = buddy;
try {
XmlDocument blist = new XmlDocument ();
blist.Load (path);
- XmlNodeList nodes = blist.SelectNodes ("/gaim/blist/group/person/buddy/name");
+ XmlNodeList nodes = blist.SelectNodes ("/gaim/blist/group/contact/buddy/name");
foreach (XmlNode node in nodes) {
if (String.Compare (node.InnerText.ToLower().Replace(" ",""), buddy.ToLower().Replace(" ","")) == 0) {
XmlNode icon_node = node.ParentNode.SelectSingleNode ("setting[ name='buddy_icon']");
- if (icon_node == null)
- continue;
+ if (icon_node != null)
+ icon_path = icon_node.InnerText;
- return icon_node.InnerText;
+ XmlNode alias_node = node.ParentNode.SelectSingleNode ("alias");
+ if (alias_node != null)
+ alias = alias_node.InnerText;
+
+ break;
}
}
} catch {
- Console.WriteLine ("Exception getting buddy icon");
+ Console.WriteLine ("Exception getting properties for buddy");
}
- return icon_path;
- }
-
- private string GetAliasForBuddy (string buddy)
- {
- string home_dir = Environment.GetEnvironmentVariable ("HOME");
- string path = Path.Combine (home_dir, ".gaim/blist.xml");
-
- try {
- XmlDocument blist = new XmlDocument ();
- blist.Load (path);
-
- XmlNodeList nodes = blist.SelectNodes ("/gaim/blist/group/contact/buddy/name");
- foreach (XmlNode node in nodes) {
- if (String.Compare (node.InnerText.ToLower().Replace(" ",""), buddy.ToLower().Replace(" ","")) == 0) {
- XmlNode alias_node = node.ParentNode.SelectSingleNode ("alias");
- if (alias_node == null)
- continue;
-
- return alias_node.InnerText;
- }
- }
- } catch {
- Console.WriteLine ("Exception getting buddy alias");
+ if (icon_path == "") {
+ icon_path = GetGaimIcon ();
}
- return buddy;
+ BuddyProperties.Add ("alias", alias);
+ BuddyProperties.Add ("icon", icon_path);
+
+ return BuddyProperties;
}
private string GenerateTmpFile (GaimLogIndex idx, int conv_num)
Attachment:
signature.asc
Description: This is a digitally signed message part