Mercurial > pidgin
comparison 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 |
comparison
equal
deleted
inserted
replaced
29818:fd354d0bfbc0 | 29819:10bf97a36be0 |
---|---|
7816 } | 7816 } |
7817 | 7817 |
7818 static void | 7818 static void |
7819 edit_mood_cb(PurpleConnection *gc, PurpleRequestFields *fields) | 7819 edit_mood_cb(PurpleConnection *gc, PurpleRequestFields *fields) |
7820 { | 7820 { |
7821 PurpleRequestField *f; | 7821 PurpleRequestField *mood_field, *text_field; |
7822 GList *l; | 7822 GList *l; |
7823 | 7823 |
7824 f = purple_request_fields_get_field(fields, "mood"); | 7824 mood_field = purple_request_fields_get_field(fields, "mood"); |
7825 l = purple_request_field_list_get_selected(f); | 7825 text_field = purple_request_fields_get_field(fields, "text"); |
7826 l = purple_request_field_list_get_selected(mood_field); | |
7826 | 7827 |
7827 if (l) { | 7828 if (l) { |
7828 const char *mood = purple_request_field_list_get_data(f, l->data); | 7829 const char *mood = purple_request_field_list_get_data(mood_field, l->data); |
7830 const char *text = purple_request_field_string_get_value(text_field); | |
7829 PurpleAccount *account = purple_connection_get_account(gc); | 7831 PurpleAccount *account = purple_connection_get_account(gc); |
7830 | 7832 |
7831 if (mood != NULL && !purple_strequal(mood, "")) { | 7833 if (mood != NULL && !purple_strequal(mood, "")) { |
7832 purple_account_set_status(account, "mood", TRUE, | 7834 if (text) { |
7833 PURPLE_MOOD_NAME, mood, | 7835 purple_account_set_status(account, "mood", TRUE, |
7834 NULL); | 7836 PURPLE_MOOD_NAME, mood, |
7837 PURPLE_MOOD_COMMENT, text, | |
7838 NULL); | |
7839 } else { | |
7840 purple_account_set_status(account, "mood", TRUE, | |
7841 PURPLE_MOOD_NAME, mood, | |
7842 NULL); | |
7843 } | |
7835 } else { | 7844 } else { |
7836 purple_account_set_status(account, "mood", FALSE, NULL); | 7845 purple_account_set_status(account, "mood", FALSE, NULL); |
7837 } | 7846 } |
7838 } | 7847 } |
7839 } | 7848 } |
7845 PurpleStatus *status = purple_presence_get_status(presence, "mood"); | 7854 PurpleStatus *status = purple_presence_get_status(presence, "mood"); |
7846 const char *current_mood; | 7855 const char *current_mood; |
7847 PurpleRequestFields *fields; | 7856 PurpleRequestFields *fields; |
7848 PurpleRequestFieldGroup *g; | 7857 PurpleRequestFieldGroup *g; |
7849 PurpleRequestField *f; | 7858 PurpleRequestField *f; |
7850 char* na_fn; | |
7851 PurpleConnection *gc = purple_account_get_connection(account); | 7859 PurpleConnection *gc = purple_account_get_connection(account); |
7852 PurplePluginProtocolInfo *prpl_info; | 7860 PurplePluginProtocolInfo *prpl_info; |
7853 PurpleMood *mood; | 7861 PurpleMood *mood; |
7854 | 7862 |
7855 g_return_if_fail(gc->prpl != NULL); | 7863 g_return_if_fail(gc->prpl != NULL); |
7859 | 7867 |
7860 fields = purple_request_fields_new(); | 7868 fields = purple_request_fields_new(); |
7861 g = purple_request_field_group_new(NULL); | 7869 g = purple_request_field_group_new(NULL); |
7862 f = purple_request_field_list_new("mood", _("Please select your mood from the list")); | 7870 f = purple_request_field_list_new("mood", _("Please select your mood from the list")); |
7863 | 7871 |
7864 na_fn = g_build_filename("pixmaps", "pidgin", "emblems", "16", "not-authorized.png", NULL); | 7872 purple_request_field_list_add(f, _("None"), ""); |
7865 | |
7866 purple_request_field_list_add_icon(f, _("None"), na_fn, NULL); | |
7867 if (current_mood == NULL) | 7873 if (current_mood == NULL) |
7868 purple_request_field_list_add_selected(f, _("None")); | 7874 purple_request_field_list_add_selected(f, _("None")); |
7869 | 7875 |
7870 g_free(na_fn); | |
7871 | |
7872 /* first item is an empty one for unsetting the mood */ | |
7873 purple_request_field_list_add(f, "", ""); | |
7874 if (purple_strequal(current_mood, "")) | |
7875 purple_request_field_list_add_selected(f, ""); | |
7876 | |
7877 /* TODO: rlaager wants this sorted. */ | 7876 /* TODO: rlaager wants this sorted. */ |
7878 for (mood = prpl_info->get_moods(account); | 7877 for (mood = prpl_info->get_moods(account); |
7879 mood->mood != NULL ; mood++) { | 7878 mood->mood != NULL ; mood++) { |
7880 char *path; | 7879 char *path; |
7881 | 7880 |
7891 purple_request_field_list_add_selected(f, _(mood->description)); | 7890 purple_request_field_list_add_selected(f, _(mood->description)); |
7892 } | 7891 } |
7893 purple_request_field_group_add_field(g, f); | 7892 purple_request_field_group_add_field(g, f); |
7894 | 7893 |
7895 purple_request_fields_add_group(fields, g); | 7894 purple_request_fields_add_group(fields, g); |
7895 | |
7896 /* if the connection allows setting a mood message */ | |
7897 if (gc->flags & PURPLE_CONNECTION_SUPPORT_MOOD_MESSAGES) { | |
7898 g = purple_request_field_group_new(NULL); | |
7899 f = purple_request_field_string_new("text", | |
7900 _("Message (optional)"), NULL, FALSE); | |
7901 purple_request_field_group_add_field(g, f); | |
7902 purple_request_fields_add_group(fields, g); | |
7903 } | |
7896 | 7904 |
7897 purple_request_fields(gc, _("Edit User Mood"), _("Edit User Mood"), | 7905 purple_request_fields(gc, _("Edit User Mood"), _("Edit User Mood"), |
7898 NULL, fields, | 7906 NULL, fields, |
7899 _("OK"), G_CALLBACK(edit_mood_cb), | 7907 _("OK"), G_CALLBACK(edit_mood_cb), |
7900 _("Cancel"), NULL, | 7908 _("Cancel"), NULL, |
8024 prpl_info = plugin ? PURPLE_PLUGIN_PROTOCOL_INFO(plugin) : NULL; | 8032 prpl_info = plugin ? PURPLE_PLUGIN_PROTOCOL_INFO(plugin) : NULL; |
8025 | 8033 |
8026 if (prpl_info && | 8034 if (prpl_info && |
8027 (PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, get_moods) || | 8035 (PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, get_moods) || |
8028 PURPLE_PLUGIN_HAS_ACTIONS(plugin))) { | 8036 PURPLE_PLUGIN_HAS_ACTIONS(plugin))) { |
8029 if (PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, get_moods)) { | 8037 if (PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, get_moods) && |
8038 gc->flags & PURPLE_CONNECTION_SUPPORT_MOODS) { | |
8030 GList *types; | 8039 GList *types; |
8040 | |
8031 for (types = purple_account_get_status_types(account); | 8041 for (types = purple_account_get_status_types(account); |
8032 types != NULL ; types = types->next) { | 8042 types != NULL ; types = types->next) { |
8033 PurpleStatusType *type = types->data; | 8043 PurpleStatusType *type = types->data; |
8034 | 8044 |
8035 if (strcmp(purple_status_type_get_id(type), "mood") != 0) | 8045 if (strcmp(purple_status_type_get_id(type), "mood") != 0) |