comparison libpurple/protocols/jabber/presence.c @ 20570:5913725cbcd6

Use an independant status type for 'current media' stuff, instead of using status attributes. This includes changes in both xmpp and msn. Also, in MSN, CurrentMedia is sent with PSM if you turn on the status and set the attributes on the account.
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Thu, 20 Sep 2007 16:30:17 +0000
parents 5103485b4b26
children c97e3ab9ef11
comparison
equal deleted inserted replaced
20569:7393ee28c819 20570:5913725cbcd6
102 int primitive; 102 int primitive;
103 xmlnode *presence, *x, *photo; 103 xmlnode *presence, *x, *photo;
104 char *stripped = NULL; 104 char *stripped = NULL;
105 JabberBuddyState state; 105 JabberBuddyState state;
106 int priority; 106 int priority;
107 const char *artist, *title, *source, *uri, *track; 107 const char *artist = NULL, *title = NULL, *source = NULL, *uri = NULL, *track = NULL;
108 int length; 108 int length = -1;
109 gboolean allowBuzz; 109 gboolean allowBuzz;
110 PurpleStatus *tune;
110 111
111 if(NULL == status) { 112 if(NULL == status) {
112 PurplePresence *gpresence = purple_account_get_presence(account); 113 PurplePresence *gpresence = purple_account_get_presence(account);
113 status = purple_presence_get_active_status(gpresence); 114 status = purple_presence_get_active_status(gpresence);
114 } 115 }
170 js->old_priority = priority; 171 js->old_priority = priority;
171 g_free(stripped); 172 g_free(stripped);
172 } 173 }
173 174
174 /* next, check if there are any changes to the tune values */ 175 /* next, check if there are any changes to the tune values */
175 artist = purple_status_get_attr_string(status, PURPLE_TUNE_ARTIST); 176 tune = purple_presence_get_status(purple_status_get_presence(status), "tune");
176 title = purple_status_get_attr_string(status, PURPLE_TUNE_TITLE); 177 if (tune && purple_status_is_active(tune)) {
177 source = purple_status_get_attr_string(status, PURPLE_TUNE_ALBUM); 178 artist = purple_status_get_attr_string(tune, PURPLE_TUNE_ARTIST);
178 uri = purple_status_get_attr_string(status, PURPLE_TUNE_URL); 179 title = purple_status_get_attr_string(tune, PURPLE_TUNE_TITLE);
179 track = purple_status_get_attr_string(status, PURPLE_TUNE_TRACK); 180 source = purple_status_get_attr_string(tune, PURPLE_TUNE_ALBUM);
180 length = (!purple_status_get_attr_value(status, PURPLE_TUNE_TIME))?-1:purple_status_get_attr_int(status, PURPLE_TUNE_TIME); 181 uri = purple_status_get_attr_string(tune, PURPLE_TUNE_URL);
182 track = purple_status_get_attr_string(tune, PURPLE_TUNE_TRACK);
183 length = (!purple_status_get_attr_value(tune, PURPLE_TUNE_TIME)) ? -1 :
184 purple_status_get_attr_int(tune, PURPLE_TUNE_TIME);
185 }
181 186
182 if(CHANGED(artist, js->old_artist) || CHANGED(title, js->old_title) || CHANGED(source, js->old_source) || 187 if(CHANGED(artist, js->old_artist) || CHANGED(title, js->old_title) || CHANGED(source, js->old_source) ||
183 CHANGED(uri, js->old_uri) || CHANGED(track, js->old_track) || (length != js->old_length)) { 188 CHANGED(uri, js->old_uri) || CHANGED(track, js->old_track) || (length != js->old_length)) {
184 PurpleJabberTuneInfo tuneinfo = { 189 PurpleJabberTuneInfo tuneinfo = {
185 (char*)artist, 190 (char*)artist,