| 762 if ((type < 0) || (type >= GAIM_STATUS_NUM_PRIMITIVES)) |
762 if ((type < 0) || (type >= GAIM_STATUS_NUM_PRIMITIVES)) |
| 763 return; |
763 return; |
| 764 |
764 |
| 765 /* TODO: Should save the previous status as a transient status? */ |
765 /* TODO: Should save the previous status as a transient status? */ |
| 766 |
766 |
| 767 /* Save the newly selected status to prefs.xml and status.xml */ |
767 if (status_box->account) { |
| 768 /* TODO: This should be saved as transient. */ |
768 const GList *l = gaim_account_get_status_types(status_box->account); |
| 769 saved_status = gaim_savedstatus_find(_("Default")); |
769 gint active; |
| 770 if (saved_status == NULL) |
770 GaimStatusType *status_type; |
| 771 saved_status = gaim_savedstatus_new(_("Default"), type); |
771 |
| 772 gaim_savedstatus_set_type(saved_status, type); |
772 g_object_get(G_OBJECT(status_box), "active", &active, NULL); |
| 773 gaim_savedstatus_set_message(saved_status, message); |
773 |
| 774 gaim_prefs_set_string("/core/status/current", _("Default")); |
774 status_type = g_list_nth_data((GList *)l, active); |
| 775 |
775 if (message) |
| 776 /* Set the status for each account */ |
776 gaim_account_set_status(status_box->account, gaim_status_type_get_id(status_type), |
| 777 gaim_savedstatus_activate(saved_status); |
777 TRUE, "message", message, NULL); |
| |
778 else |
| |
779 gaim_account_set_status(status_box->account, gaim_status_type_get_id(status_type), |
| |
780 TRUE, NULL); |
| |
781 |
| |
782 } else { |
| |
783 /* Save the newly selected status to prefs.xml and status.xml */ |
| |
784 /* TODO: This should be saved as transient. */ |
| |
785 saved_status = gaim_savedstatus_find(_("Default")); |
| |
786 if (saved_status == NULL) |
| |
787 saved_status = gaim_savedstatus_new(_("Default"), type); |
| |
788 gaim_savedstatus_set_type(saved_status, type); |
| |
789 gaim_savedstatus_set_message(saved_status, message); |
| |
790 gaim_prefs_set_string("/core/status/current", _("Default")); |
| |
791 |
| |
792 /* Set the status for each account */ |
| |
793 gaim_savedstatus_activate(saved_status); |
| |
794 } |
| 778 |
795 |
| 779 g_free(title); |
796 g_free(title); |
| 780 g_free(message); |
797 g_free(message); |
| 781 } |
798 } |
| 782 |
799 |
| 872 } |
889 } |
| 873 else |
890 else |
| 874 { |
891 { |
| 875 gtk_widget_hide_all(status_box->vbox); |
892 gtk_widget_hide_all(status_box->vbox); |
| 876 if (GTK_WIDGET_IS_SENSITIVE(GTK_WIDGET(status_box))) |
893 if (GTK_WIDGET_IS_SENSITIVE(GTK_WIDGET(status_box))) |
| 877 activate_currently_selected_status(status_box); |
894 activate_currently_selected_status(status_box); /* This is where we actually set the status */ |
| 878 } |
895 } |
| 879 gtk_gaim_status_box_refresh(status_box); |
896 gtk_gaim_status_box_refresh(status_box); |
| 880 } |
897 } |
| 881 |
898 |
| 882 static void imhtml_changed_cb(GtkTextBuffer *buffer, void *data) |
899 static void imhtml_changed_cb(GtkTextBuffer *buffer, void *data) |