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)