cpw.rekkanoryo.icqxstatus: b5fd6f2f: Fix up the X-Status code in many ways:

rlaager at pidgin.im rlaager at pidgin.im
Sun Nov 16 14:21:07 EST 2008


-----------------------------------------------------------------
Revision: b5fd6f2fadbb5d67222c4f3930f6b50932dffd86
Ancestor: 8f0618dd82359218f300c52160940b14b3ad6dfb
Author: rlaager at pidgin.im
Date: 2008-11-16T08:39:34
Branch: im.pidgin.cpw.rekkanoryo.icqxstatus
URL: http://d.pidgin.im/viewmtn/revision/info/b5fd6f2fadbb5d67222c4f3930f6b50932dffd86

Renamed entries:
        pidgin/pixmaps/emblems/16/mobile.png to pidgin/pixmaps/emotes/small/16/mobile.png
Modified files:
        .mtn-ignore libpurple/protocols/oscar/family_locate.c
        libpurple/protocols/oscar/oscar.c pidgin/pixmaps/Makefile.am
        pidgin/pixmaps/emotes/small/16/Makefile.am
        pidgin/pixmaps/emotes/small/16/small.theme.in po/POTFILES.in

ChangeLog: 

Fix up the X-Status code in many ways:
  * Clean up the descriptions to be consistently of the form, "I am _____."
  * Properly mark the descriptions for translation.
  * Utilize the files from small smiley theme as much as possible.  Through
    a Makefile rule, they will be copied from emotes/small/16/ to
    emblems/16 at build time and then installed as usual.  This is slightly
    hackish, but ensures that our icons are consistent and saves manual
    copying work and duplication of source files in the repository.
    + As part of this, mobile.png was moved to emotes/small/16, as it is
      needed in both places.
  * Call these things "Custom Status Icon"s (adding "Status") in the UI.
  * Add icqmood0 = shopping, based on testing with ICQ6. Thanks John!!!
  * Change the xstatus_crap icon to xstatus_typing to match ICQ 6.  The other
    typing icon was left alone, except that the name was set to NULL so we
    wouldn't get duplicates in the list.
  * Change the xstatus_iron (Pro7 TV icon) to xstatus_suit, using the 'person
    wearing a suit' icon from N3fr0n to match ICQ6.  I named this icon,
    somewhat arbitrarily, "At the office".
  * The PDA icon is now the same as the hiptop, but hopefully that won't cause
    any confusion.  Also, the custom icon is now higher priority than the
    hiptop icon.
  * The music icon is the ("tune") emblem, not the emoticon.  This seems more
    consistent, given that we're talking about buddy list emblems.
  * The "Googling" icon has been renamed to "Searching the web" to avoid the
    trademark.
  * The "zzz" icon is now an icon for smoking, which seems to fit with the
    official client's icon as posted in #4508.  Other clients may show a
    marijuana leaf.  Oh well.

-------------- next part --------------
============================================================
--- .mtn-ignore	f437f06f6284b73badc7a2834bf180923f906c2d
+++ .mtn-ignore	02e4c734f42a2870e926c5bae6ded092df294806
@@ -37,6 +37,28 @@ pidgin/pidgin$
 pidgin-.*.tar.bz2
 pidgin-*.*.*-win32bin$
 pidgin/pidgin$
+pidgin/pixmaps/emblems/16/angry.png
+pidgin/pixmaps/emblems/16/beer.png
+pidgin/pixmaps/emblems/16/busy.png
+pidgin/pixmaps/emblems/16/camera.png
+pidgin/pixmaps/emblems/16/cigarette.png
+pidgin/pixmaps/emblems/16/coffee.png
+pidgin/pixmaps/emblems/16/console.png
+pidgin/pixmaps/emblems/16/love.png
+pidgin/pixmaps/emblems/16/meeting.png
+pidgin/pixmaps/emblems/16/mobile.png
+pidgin/pixmaps/emblems/16/musical-note.png
+pidgin/pixmaps/emblems/16/party.png
+pidgin/pixmaps/emblems/16/phone.png
+pidgin/pixmaps/emblems/16/plate.png
+pidgin/pixmaps/emblems/16/question.png
+pidgin/pixmaps/emblems/16/search.png
+pidgin/pixmaps/emblems/16/sick.png
+pidgin/pixmaps/emblems/16/sleepy.png
+pidgin/pixmaps/emblems/16/smile-big.png
+pidgin/pixmaps/emblems/16/thinking.png
+pidgin/pixmaps/emblems/16/tv.png
+pidgin/pixmaps/emblems/16/yawn.png
 pidgin/pixmaps/emotes/default/24/theme
 pidgin/pixmaps/emotes/none/theme
 pidgin/pixmaps/emotes/small/16/theme
============================================================
--- libpurple/protocols/oscar/family_locate.c	f7eed21b345c8530789dd0d2ce28138fc9917c9e
+++ libpurple/protocols/oscar/family_locate.c	4e744868e8766368455c0b5bfe45f7b0f8789651
@@ -264,139 +264,146 @@ static const struct {
 	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}},
 
-	{"xstatus_thinking", "Thinking",
+	{"thinking", N_("Thinking"),
 	 {0x3f, 0xb0, 0xbd, 0x36, 0xaf, 0x3b, 0x4a, 0x60,
 	  0x9e, 0xef, 0xcf, 0x19, 0x0f, 0x6a, 0x5a, 0x7f}},
 
-	{"xstatus_busy", "Busy",
+	{"busy", N_("Busy"),
 	 {0x48, 0x8e, 0x14, 0x89, 0x8a, 0xca, 0x4a, 0x08,
 	  0x82, 0xaa, 0x77, 0xce, 0x7a, 0x16, 0x52, 0x08}},
 
-	{"xstatus_shopping", "Shopping",
+	{"xstatus_shopping", N_("Shopping"),
 	 {0x63, 0x62, 0x73, 0x37, 0xa0, 0x3f, 0x49, 0xff,
 	  0x80, 0xe5, 0xf7, 0x09, 0xcd, 0xe0, 0xa4, 0xee}},
 
-	{"xstatus_typing", "Typing",
+	/* This was in the original patch, but isn't what the official client
+	 * (ICQ 6) sets when you choose its typewriter icon. */
+	{"xstatus_typing", NULL,
 	 {0x63, 0x4f, 0x6b, 0xd8 ,0xad, 0xd2, 0x4a, 0xa1,
 	  0xaa, 0xb9, 0x11, 0x5b, 0xc2, 0x6d, 0x05, 0xa1}},
 
-	{"xstatus_question", "Question Mark",
+	{"question", N_("Questioning"),
 	 {0x63, 0x14, 0x36, 0xff, 0x3f, 0x8a, 0x40, 0xd0,
 	  0xa5, 0xcb, 0x7b, 0x66, 0xe0, 0x51, 0xb3, 0x64}},
 
-	{"xstatus_angry", "Angry",
+	{"angry", N_("Angry"),
 	 {0x01, 0xd8, 0xd7, 0xee, 0xac, 0x3b, 0x49, 0x2a,
 	  0xa5, 0x8d, 0xd3, 0xd8, 0x77, 0xe6, 0x6b, 0x92}},
 
-	{"xstatus_eating", "Eating",
+	{"plate", N_("Eating"),
 	 {0xf8, 0xe8, 0xd7, 0xb2, 0x82, 0xc4, 0x41, 0x42,
 	  0x90, 0xf8, 0x10, 0xc6, 0xce, 0x0a, 0x89, 0xa6}},
-	  
-	{"xstatus_cinema", "Cinema",
+
+	/* Shooting Film (or Pictures) */
+	{"camera", N_("Shooting"),
 	 {0x10, 0x7a, 0x9a, 0x18, 0x12, 0x32, 0x4d, 0xa4,
 	  0xb6, 0xcd, 0x08, 0x79, 0xdb, 0x78, 0x0f, 0x09}},
-	
-	{"xstatus_sick", "Sick",
+
+	{"sick", N_("Sick"),
 	 {0x1f, 0x7a, 0x40, 0x71, 0xbf, 0x3b, 0x4e, 0x60,
 	  0xbc, 0x32, 0x4c, 0x57, 0x87, 0xb0, 0x4c, 0xf1}},
-	
-	{"xstatus_crap", "Unknown 1",
+
+	{"xstatus_typing", N_("Typing"),
 	 {0x2c, 0xe0, 0xe4, 0xe5, 0x7c, 0x64, 0x43, 0x70,
 	  0x9c, 0x3a, 0x7a, 0x1c, 0xe8, 0x78, 0xa7, 0xdc}},
-	  
-	{"xstatus_iron", "Unknown 2",
+
+	{"xstatus_suit", N_("At the office"),
 	 {0xb7, 0x08, 0x67, 0xf5, 0x38, 0x25, 0x43, 0x27,
 	  0xa1, 0xff, 0xcf, 0x4c, 0xc1, 0x93, 0x97, 0x97}},
-	
-	{"xstatus_bathing", "Bathing",
+
+	{"xstatus_bathing", N_("Taking a bath"),
 	 {0x5a, 0x58, 0x1e, 0xa1, 0xe5, 0x80, 0x43, 0x0c,
 	  0xa0, 0x6f, 0x61, 0x22, 0x98, 0xb7, 0xe4, 0xc7}},
-	  
-	{"xstatus_tv", "Watching TV",
+
+	{"tv", N_("Watching TV"),
 	 {0x80, 0x53, 0x7d, 0xe2, 0xa4, 0x67, 0x4a, 0x76,
 	  0xb3, 0x54, 0x6d, 0xfd, 0x07, 0x5f, 0x5e, 0xc6}},
-	
-	{"xstatus_fun", "Having fun",
+
+	{"smile-big", N_("Having fun"),
 	 {0x6f, 0x49, 0x30, 0x98, 0x4f, 0x7c, 0x4a, 0xff,
 	  0xa2, 0x76, 0x34, 0xa0, 0x3b, 0xce, 0xae, 0xa7}},
 
-	{"xstatus_sleeping", "Sleeping",
+	{"sleepy", N_("Sleeping"),
 	 {0x78, 0x5e, 0x8c, 0x48, 0x40, 0xd3, 0x4c, 0x65,
 	  0x88, 0x6f, 0x04, 0xcf, 0x3f, 0x3f, 0x43, 0xdf}},
-	
-	{"xstatus_pda", "PDA device",
+
+	{"hiptop", N_("Using a PDA"),
 	 {0x10, 0x11, 0x17, 0xc9, 0xa3, 0xb0, 0x40, 0xf9,
 	  0x81, 0xac, 0x49, 0xe1, 0x59, 0xfb, 0xd5, 0xd4}},
 
-	{"xstatus_heart", "In love",
+	{"love", N_("In love"),
 	 {0xdd, 0xcf, 0x0e, 0xa9, 0x71, 0x95, 0x40, 0x48,
 	  0xa9, 0xc6, 0x41, 0x32, 0x06, 0xd6, 0xf2, 0x80}},
 
-	{"xstatus_tired", "Tired",
+	/* Sleepy / Tired */
+	{"yawn", N_("Sleepy"),
 	 {0x83, 0xc9, 0xb7, 0x8e, 0x77, 0xe7, 0x43, 0x78,
 	  0xb2, 0xc5, 0xfb, 0x6c, 0xfc, 0xc3, 0x5b, 0xec}},
 
-	{"xstatus_friends", "Friends",
+	{"meeting", N_("Meeting friends"),
 	 {0xf1, 0x8a, 0xb5, 0x2e, 0xdc, 0x57, 0x49, 0x1d,
 	  0x99, 0xdc, 0x64, 0x44, 0x50, 0x24, 0x57, 0xaf}},
 
-	{"xstatus_phone", "On the phone",
+	{"phone", N_("On the phone"),
 	 {0x12, 0x92, 0xe5, 0x50, 0x1b, 0x64, 0x4f, 0x66,
 	  0xb2, 0x06, 0xb2, 0x9a, 0xf3, 0x78, 0xe4, 0x8d}},
 
-	{"xstatus_surfing", "Surfing",
+	{"xstatus_surfing", N_("Surfing"),
 	 {0xa6, 0xed, 0x55, 0x7e, 0x6b, 0xf7, 0x44, 0xd4,
 	  0xa5, 0xd4, 0xd2, 0xe7, 0xd9, 0x5c, 0xe8, 0x1f}},
 
-	{"xstatus_mobile", "Cell phone",
+	/* "I am mobile." / "John is mobile." */
+	{"mobile", N_("Mobile"),
 	 {0x16, 0x0c, 0x60, 0xbb, 0xdd, 0x44, 0x43, 0xf3,
 	  0x91, 0x40, 0x05, 0x0f, 0x00, 0xe6, 0xc0, 0x09}},
 
-	{"xstatus_google", "Googling",
+	{"search", N_("Searching the web"),
 	 {0xd4, 0xe2, 0xb0, 0xba, 0x33, 0x4e, 0x4f, 0xa5,
 	  0x98, 0xd0, 0x11, 0x7d, 0xbf, 0x4d, 0x3c, 0xc8}},
 
-	{"xstatus_party", "Party",
+	{"party", N_("At a party"),
 	 {0xe6, 0x01, 0xe4, 0x1c, 0x33, 0x73, 0x4b, 0xd1,
 	  0xbc, 0x06, 0x81, 0x1d, 0x6c, 0x32, 0x3d, 0x81}},
 
-	{"xstatus_coffee", "Coffee",
+	{"coffee", N_("Having Coffee"),
 	 {0x1b, 0x78, 0xae, 0x31, 0xfa, 0x0b, 0x4d, 0x38,
 	  0x93, 0xd1, 0x99, 0x7e, 0xee, 0xaf, 0xb2, 0x18}},
 
-	{"xstatus_gaming", "Playing",
+	/* Playing video games */
+	{"console", N_("Gaming"),
 	 {0xd4, 0xa6, 0x11, 0xd0, 0x8f, 0x01, 0x4e, 0xc0,
 	  0x92, 0x23, 0xc5, 0xb6, 0xbe, 0xc6, 0xcc, 0xf0}},
-	
-	{"xstatus_internet", "Internet",
+
+	{"xstatus_internet", N_("Browsing the web"),
 	 {0x12, 0xd0, 0x7e, 0x3e, 0xf8, 0x85, 0x48, 0x9e,
 	  0x8e, 0x97, 0xa7, 0x2a, 0x65, 0x51, 0xe5, 0x8d}},
-	
-	{"xstatus_zzz", "Snoozing",
+
+	{"cigarette", N_("Smoking"),
 	 {0x64, 0x43, 0xc6, 0xaf, 0x22, 0x60, 0x45, 0x17,
 	  0xb5, 0x8c, 0xd7, 0xdf, 0x8e, 0x29, 0x03, 0x52}},
-	
-	{"xstatus_writing", "Writing",
+
+	{"xstatus_writing", N_("Writing"),
 	 {0x00, 0x72, 0xd9, 0x08, 0x4a, 0xd1, 0x43, 0xdd,
 	  0x91, 0x99, 0x6f, 0x02, 0x69, 0x66, 0x02, 0x6f}},
-	
-	{"xstatus_beer", "Drinking",
+
+	/* Drinking [Alcohol] */
+	{"beer", N_("Drinking"),
 	 {0x8c, 0x50, 0xdb, 0xae, 0x81, 0xed, 0x47, 0x86,
 	  0xac, 0xca, 0x16, 0xcc, 0x32, 0x13, 0xc7, 0xb7}},
-	
-	{"xstatus_music", "Music",
+
+	{"music", N_("Listening to music"),
 	 {0x61, 0xbe, 0xe0, 0xdd, 0x8b, 0xdd, 0x47, 0x5d,
 	  0x8d, 0xee, 0x5f, 0x4b, 0xaa, 0xcf, 0x19, 0xa7}},
-	
-	{"xstatus_studying", "Studying",
+
+	{"xstatus_studying", N_("Studying"),
 	 {0x60, 0x9d, 0x52, 0xf8, 0xa2, 0x9a, 0x49, 0xa6,
 	  0xb2, 0xa0, 0x25, 0x24, 0xc5, 0xe9, 0xd2, 0x60}},
-	
-	{"xstatus_engineering", "Engineering",
+
+	{"xstatus_working", N_("Working"),
 	 {0xba, 0x74, 0xdb, 0x3e, 0x9e, 0x24, 0x43, 0x4b,
 	  0x87, 0xb6, 0x2f, 0x6b, 0x8d, 0xfe, 0xe5, 0x0f}},
-	
-	{"xstatus_crapping", "In the restroom",
+
+	{"xstatus_restroom", N_("In the restroom"),
 	 {0x16, 0xf5, 0xb7, 0x6f, 0xa9, 0xd2, 0x40, 0x35,
 	  0x8c, 0xc5, 0xc0, 0x84, 0x70, 0x3c, 0x98, 0xfa}}
 };
@@ -652,7 +659,7 @@ aim_get_custom_icon(OscarData *od, ByteS
 
 		for (i = 1; i < AIM_CUSTOM_ICONS_COUNT; i++) {
 			if (memcmp(&aim_custom_icons[i].data, cap, 0x10) == 0) {
-				purple_debug_misc("oscar", "Custom user icon: %s\n", aim_custom_icons[i].descriptivename);		
+				purple_debug_misc("oscar", "Custom status icon: %s\n", aim_custom_icons[i].descriptivename);		
 				result = i;
 				break; /* should only match once... */
 			}
@@ -759,6 +766,7 @@ static const struct {
 	char *mood;
 	gint32 icon_num;
 } icqmoods[ICQMOODS_COUNT] = {
+	{"icqmood0", 3},
 	{"icqmood1", 12},
 	{"icqmood2", 18},
 	{"icqmood3", 24},
@@ -1082,6 +1090,15 @@ aim_info_extract(OscarData *od, ByteStre
 
 						mood = byte_stream_getstr(bs, length2);
 
+						/* The official clients allow
+						 * you to set your custom icon
+						 * to the "default" icon, to
+						 * allow setting a status
+						 * message.  We'll ignore it.
+						 */
+						if (!*mood)
+							break;
+
 						for (i = 0; i < ICQMOODS_COUNT; i++)
 							if (!strcmp(mood, icqmoods[i].mood)) {
 								icon_num = icqmoods[i].icon_num;
@@ -1091,7 +1108,7 @@ aim_info_extract(OscarData *od, ByteStre
 						if (icon_num >= 0)
 							outinfo->customicon = icon_num;
 						else
-							purple_debug_warning("oscar", "Unknown icqmood: %s", mood);
+							purple_debug_warning("oscar", "Unknown icqmood: %s\n", mood);
 
 						g_free(mood);
 					} break;
============================================================
--- libpurple/protocols/oscar/oscar.c	c06cdc0eeef800597ff6dfc016c2eb9dbb2d8917
+++ libpurple/protocols/oscar/oscar.c	7a9ad63aa6d3e924de524635a05d7a1f5d07cbbe
@@ -2458,25 +2458,28 @@ incomingim_chan2(OscarData *od, FlapConn
 
 	else if (args->type & OSCAR_CAPABILITY_ICQSERVERRELAY)
 	{
-		purple_debug_error("oscar", "Got an ICQ Server Relay message of "
+		purple_debug_info("oscar", "Got an ICQ Server Relay message of "
 				"type %d\n", args->info.rtfmsg.msgtype);
-		purple_debug_error("oscar", "Sending X-Status Reply\n");
+		purple_debug_info("oscar", "Sending X-Status Reply\n");
 
 		if(args->info.rtfmsg.msgtype == 26)
 		icq_relay_xstatus(od, userinfo->sn, args->cookie);
 		
 		if(args->info.rtfmsg.msgtype == 1)
 		{
-		if(rtfmsg)
-		serv_got_im(gc, userinfo->sn, rtfmsg, flags,
-		time(NULL));
-		else
-		serv_got_im(gc, userinfo->sn, args->info.rtfmsg.rtfmsg, flags,
-		time(NULL));
-		
+			if(rtfmsg)
+			{
+				serv_got_im(gc, userinfo->sn, rtfmsg, flags,
+				            time(NULL));
+			}
+			else
+			{
+				serv_got_im(gc, userinfo->sn,
+				            args->info.rtfmsg.rtfmsg, flags,
+				            time(NULL));
+			}
 		}
 	}
-
 	else
 	{
 		purple_debug_error("oscar", "Unknown request class %hu\n",
@@ -5850,17 +5853,19 @@ const char *oscar_list_emblem(PurpleBudd
 	}
 
 	if (userinfo != NULL ) {
+		const char *icon;
 		if (userinfo->flags & AIM_FLAG_ADMINISTRATOR)
 			return "admin";
 		if (userinfo->flags & AIM_FLAG_ACTIVEBUDDY)
 			return "bot";
-		if (userinfo->capabilities & OSCAR_CAPABILITY_HIPTOP)
-			return "hiptop";
 		if (userinfo->capabilities & OSCAR_CAPABILITY_SECUREIM)
 			return "secure";
 		if (userinfo->icqinfo.status & AIM_ICQ_STATE_BIRTHDAY)
 			return "birthday";
-		return aim_get_custom_icon_filename(userinfo->customicon);
+		if ((icon = aim_get_custom_icon_filename(userinfo->customicon)))
+			return icon;
+		if (userinfo->capabilities & OSCAR_CAPABILITY_HIPTOP)
+			return "hiptop";
 	}
 	return NULL;
 }
@@ -6782,33 +6787,44 @@ oscar_show_icq_custom_icons(PurplePlugin
 
 	g = purple_request_field_group_new(NULL);
 	
-	f = purple_request_field_list_new("customicon", _("XStatus"));
+	f = purple_request_field_list_new("customicon", _("Choose a custom status icon"));
 
 	na_fn = g_build_filename("pixmaps", "pidgin", "emblems", "16", "not-authorized.png", NULL);
 
 	purple_request_field_list_add_icon(f, _("None"), na_fn, GINT_TO_POINTER(-1));
 	if (customicon == 0)
 		purple_request_field_list_add_selected(f, _("None"));
-	
+
 	g_free(na_fn);
-	
+
+	/* TODO: rlaager wants this sorted. */
 	for (i = 1; i < aim_get_custom_icons_count(); i++) {
-		char* icon_path = g_strdup_printf("%s.png", aim_get_custom_icon_filename(i));
-		char* filename = g_build_filename("pixmaps", "pidgin", "emblems", "16", icon_path, NULL);
+		const char *icon_filename = aim_get_custom_icon_filename(i);
+		const char *icon_desc = aim_get_custom_icon_descriptivename(i);
+		char *icon_path;
+		char *filename;
 
-		purple_request_field_list_add_icon(f, _(aim_get_custom_icon_descriptivename(i)), filename, GINT_TO_POINTER(i));
+		if (icon_filename == NULL || icon_desc == NULL)
+			continue;
 
-		if (customicon == i)
-			purple_request_field_list_add_selected(f, _(aim_get_custom_icon_descriptivename(i)));
+		icon_path = g_strdup_printf("%s.png", icon_filename);
+		filename = g_build_filename("pixmaps", "pidgin",
+		                            "emblems", "16",
+		                             icon_path, NULL);
+		g_free(icon_path);
 
+		purple_request_field_list_add_icon(f, _(icon_desc),
+				filename, GINT_TO_POINTER(i));
 		g_free(filename);
-		g_free(icon_path);
+
+		if (customicon == i)
+			purple_request_field_list_add_selected(f, _(icon_desc));
 	}
 	purple_request_field_group_add_field(g, f);
 	
 	purple_request_fields_add_group(fields, g);
 	
-	purple_request_fields(gc, _("Set Custom Icon"), _("Set Custom Icon"),
+	purple_request_fields(gc, _("Custom Status Icon"), _("Custom Status Icon"),
 						NULL, fields,
 						_("OK"), G_CALLBACK(oscar_show_icq_custom_icons_cb),
 						_("Cancel"), NULL,
@@ -6860,7 +6876,7 @@ oscar_actions(PurplePlugin *plugin, gpoi
 				oscar_show_icq_privacy_opts);
 		menu = g_list_prepend(menu, act);
 		
-		act = purple_plugin_action_new(_("Set Custom Icon..."),
+		act = purple_plugin_action_new(_("Set Custom Status Icon..."),
 				oscar_show_icq_custom_icons);
 		menu = g_list_prepend(menu, act);
 	}
============================================================
--- pidgin/pixmaps/Makefile.am	9af6766accd12b9a047c17ec1d5834e642555469
+++ pidgin/pixmaps/Makefile.am	9ed76469cc10aaf63d22e9e93b2498d97ed4ce95
@@ -106,7 +106,51 @@ EMBLEMS_16_SCALABLE = \
 		emblems/16/scalable/video.svg \
 		emblems/16/scalable/voice.svg
 
+
+# Magic to copy files from emotes/small/16 to emblems/16.
+# This is necessary because UIs expect emblems in one place and
+# smiley themes in another, but we don't want to duplicate these
+# images in the source.
+emblems/16/%.png: emotes/small/16/%.png
+	rm -f $@
+	cp -f $< $@
+
+emblems/16/busy.png: status/16/busy.png
+	rm -f $@
+	cp -f $< $@
+
+# The copied emblems.
+# Ensure these are in .mtn-ignore.
+EMBLEMS_16_COPIED = \
+		emblems/16/angry.png \
+		emblems/16/busy.png \
+		emblems/16/beer.png \
+		emblems/16/camera.png \
+		emblems/16/cigarette.png \
+		emblems/16/coffee.png \
+		emblems/16/console.png \
+		emblems/16/love.png \
+		emblems/16/meeting.png \
+		emblems/16/mobile.png \
+		emblems/16/musical-note.png \
+		emblems/16/party.png \
+		emblems/16/phone.png \
+		emblems/16/plate.png \
+		emblems/16/question.png \
+		emblems/16/search.png \
+		emblems/16/sick.png \
+		emblems/16/sleepy.png \
+		emblems/16/smile-big.png \
+		emblems/16/thinking.png \
+		emblems/16/tv.png \
+		emblems/16/yawn.png
+
+
+# Non-copied emblems.
+# Ensure these filenames don't clash with files in emotes/small/16 or
+# bad things will happen!
 EMBLEMS_16 = \
+		$(EMBLEMS_16_COPIED) \
 		emblems/16/aol-client.png \
 		emblems/16/birthday.png \
 		emblems/16/blocked.png \
@@ -128,40 +172,16 @@ EMBLEMS_16 = \
 		emblems/16/unavailable.png \
 		emblems/16/video.png \
 		emblems/16/voice.png \
-		emblems/16/xstatus_angry.png \
 		emblems/16/xstatus_bathing.png \
-		emblems/16/xstatus_beer.png \
-		emblems/16/xstatus_busy.png \
-		emblems/16/xstatus_cinema.png \
-		emblems/16/xstatus_coffee.png \
-		emblems/16/xstatus_crap.png \
-		emblems/16/xstatus_crapping.png \
-		emblems/16/xstatus_eating.png \
-		emblems/16/xstatus_engineering.png \
-		emblems/16/xstatus_friends.png \
-		emblems/16/xstatus_fun.png \
-		emblems/16/xstatus_gaming.png \
-		emblems/16/xstatus_google.png \
-		emblems/16/xstatus_heart.png \
 		emblems/16/xstatus_internet.png \
-		emblems/16/xstatus_iron.png \
-		emblems/16/xstatus_mobile.png \
-		emblems/16/xstatus_music.png \
-		emblems/16/xstatus_party.png \
-		emblems/16/xstatus_pda.png \
-		emblems/16/xstatus_phone.png \
-		emblems/16/xstatus_question.png \
+		emblems/16/xstatus_restroom.png \
 		emblems/16/xstatus_shopping.png \
-		emblems/16/xstatus_sick.png \
-		emblems/16/xstatus_sleeping.png \
 		emblems/16/xstatus_studying.png \
+		emblems/16/xstatus_suit.png \
 		emblems/16/xstatus_surfing.png \
-		emblems/16/xstatus_thinking.png \
-		emblems/16/xstatus_tired.png \
-		emblems/16/xstatus_tv.png \
 		emblems/16/xstatus_typing.png \
-		emblems/16/xstatus_writing.png \
-		emblems/16/xstatus_zzz.png
+		emblems/16/xstatus_working.png \
+		emblems/16/xstatus_writing.png
 
 
 EMOTES_DEFAULT_24_SCALABLE = \
============================================================
--- pidgin/pixmaps/emotes/small/16/Makefile.am	2db8cda05e235edffe394531b47cd5095c9f4d26
+++ pidgin/pixmaps/emotes/small/16/Makefile.am	ef3867ee0cc77677d4c9849df49ec5e35e419bd1
@@ -18,6 +18,7 @@ SMILEYS = \
     kiss.png \
     love.png \
     meeting.png \
+    mobile.png \
     musical-note.png \
     nerdy.png \
     neutral.png \
============================================================
--- pidgin/pixmaps/emotes/small/16/small.theme.in	828291a2fba33429dc21e4638e678d17ac17aa0a
+++ pidgin/pixmaps/emotes/small/16/small.theme.in	8a938e2e7333512801c2a2e771959f0522776475
@@ -57,6 +57,7 @@ plate.png           (pl)
 beer.png            (B)     (b)
 sick.png            +o(
 plate.png           (pl)
+mobile.png          (mp)
 dont-know.png       :^)
 thinking.png        *-)
 party.png           <:o)
============================================================
--- po/POTFILES.in	6a4c9381340f26e03cf34134a6b6685a0c56359a
+++ po/POTFILES.in	659cf094f1a768c58a4d3e6af9bd9dbb14b688b3
@@ -124,6 +124,7 @@ libpurple/protocols/oscar/family_chatnav
 libpurple/protocols/novell/nmuser.c
 libpurple/protocols/novell/novell.c
 libpurple/protocols/oscar/family_chatnav.c
+libpurple/protocols/oscar/family_locate.c
 libpurple/protocols/oscar/flap_connection.c
 libpurple/protocols/oscar/libaim.c
 libpurple/protocols/oscar/libicq.c


More information about the Commits mailing list