Mercurial > pidgin
diff pidgin/gtkblist.c @ 29819:10bf97a36be0
propagate from branch 'im.pidgin.pidgin' (head 96b27a20c7250b87761a8bd4f5540bf1fa32b6f4)
to branch 'im.pidgin.cpw.malu.ft_thumbnails' (head 230fd6c21fdf1ed459a653bcd9808880a36204c3)
author | Marcus Lundblad <ml@update.uu.se> |
---|---|
date | Tue, 09 Mar 2010 21:41:55 +0000 |
parents | b0cb194dc139 |
children | 41c53be0e8b5 |
line wrap: on
line diff
--- a/pidgin/gtkblist.c Sun Feb 28 22:56:50 2010 +0000 +++ b/pidgin/gtkblist.c Tue Mar 09 21:41:55 2010 +0000 @@ -7818,20 +7818,29 @@ static void edit_mood_cb(PurpleConnection *gc, PurpleRequestFields *fields) { - PurpleRequestField *f; + PurpleRequestField *mood_field, *text_field; GList *l; - f = purple_request_fields_get_field(fields, "mood"); - l = purple_request_field_list_get_selected(f); + mood_field = purple_request_fields_get_field(fields, "mood"); + text_field = purple_request_fields_get_field(fields, "text"); + l = purple_request_field_list_get_selected(mood_field); if (l) { - const char *mood = purple_request_field_list_get_data(f, l->data); + const char *mood = purple_request_field_list_get_data(mood_field, l->data); + const char *text = purple_request_field_string_get_value(text_field); PurpleAccount *account = purple_connection_get_account(gc); if (mood != NULL && !purple_strequal(mood, "")) { - purple_account_set_status(account, "mood", TRUE, - PURPLE_MOOD_NAME, mood, - NULL); + if (text) { + purple_account_set_status(account, "mood", TRUE, + PURPLE_MOOD_NAME, mood, + PURPLE_MOOD_COMMENT, text, + NULL); + } else { + purple_account_set_status(account, "mood", TRUE, + PURPLE_MOOD_NAME, mood, + NULL); + } } else { purple_account_set_status(account, "mood", FALSE, NULL); } @@ -7847,7 +7856,6 @@ PurpleRequestFields *fields; PurpleRequestFieldGroup *g; PurpleRequestField *f; - char* na_fn; PurpleConnection *gc = purple_account_get_connection(account); PurplePluginProtocolInfo *prpl_info; PurpleMood *mood; @@ -7861,19 +7869,10 @@ g = purple_request_field_group_new(NULL); f = purple_request_field_list_new("mood", _("Please select your mood from the list")); - na_fn = g_build_filename("pixmaps", "pidgin", "emblems", "16", "not-authorized.png", NULL); - - purple_request_field_list_add_icon(f, _("None"), na_fn, NULL); + purple_request_field_list_add(f, _("None"), ""); if (current_mood == NULL) purple_request_field_list_add_selected(f, _("None")); - g_free(na_fn); - - /* first item is an empty one for unsetting the mood */ - purple_request_field_list_add(f, "", ""); - if (purple_strequal(current_mood, "")) - purple_request_field_list_add_selected(f, ""); - /* TODO: rlaager wants this sorted. */ for (mood = prpl_info->get_moods(account); mood->mood != NULL ; mood++) { @@ -7894,6 +7893,15 @@ purple_request_fields_add_group(fields, g); + /* if the connection allows setting a mood message */ + if (gc->flags & PURPLE_CONNECTION_SUPPORT_MOOD_MESSAGES) { + g = purple_request_field_group_new(NULL); + f = purple_request_field_string_new("text", + _("Message (optional)"), NULL, FALSE); + purple_request_field_group_add_field(g, f); + purple_request_fields_add_group(fields, g); + } + purple_request_fields(gc, _("Edit User Mood"), _("Edit User Mood"), NULL, fields, _("OK"), G_CALLBACK(edit_mood_cb), @@ -8026,8 +8034,10 @@ if (prpl_info && (PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, get_moods) || PURPLE_PLUGIN_HAS_ACTIONS(plugin))) { - if (PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, get_moods)) { + if (PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, get_moods) && + gc->flags & PURPLE_CONNECTION_SUPPORT_MOODS) { GList *types; + for (types = purple_account_get_status_types(account); types != NULL ; types = types->next) { PurpleStatusType *type = types->data;