Mercurial > pidgin
diff src/gtksavedstatuses.c @ 10419:c9b1f3fac753
[gaim-migrate @ 11670]
Added some GaimStatusPrimitive<-->text mapping functions
Renamed the GaimStatusSaved data types to GaimSavedStatus
Modifying a status will now bring up an editor thing with the
correct values set
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Sun, 26 Dec 2004 02:03:14 +0000 |
parents | bed2c96bc1fb |
children | 854c972ea863 |
line wrap: on
line diff
--- a/src/gtksavedstatuses.c Sun Dec 26 00:46:26 2004 +0000 +++ b/src/gtksavedstatuses.c Sun Dec 26 02:03:14 2004 +0000 @@ -98,10 +98,10 @@ /* TODO: Save the status */ } -/* TODO: Can this menu be created more automatically? */ static GtkWidget * -create_status_type_menu() +create_status_type_menu(GaimStatusPrimitive type) { + int i; GtkWidget *dropdown; GtkWidget *menu; GtkWidget *item; @@ -109,31 +109,14 @@ dropdown = gtk_option_menu_new(); menu = gtk_menu_new(); - /* GAIM_STATUS_AVAILABLE */ - item = gtk_menu_item_new_with_label(_("Available")); - gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); - gtk_widget_show(item); - - /* GAIM_STATUS_UNAVAILABLE */ - item = gtk_menu_item_new_with_label(_("Unavailable")); - gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); - gtk_widget_show(item); + for (i = 0; i < GAIM_STATUS_NUM_PRIMITIVES; i++) + { + item = gtk_menu_item_new_with_label(gaim_primitive_get_name_from_type(i)); + gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); + gtk_widget_show(item); + } - /* GAIM_STATUS_HIDDEN */ - item = gtk_menu_item_new_with_label(_("Hidden")); - gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); - gtk_widget_show(item); - - /* GAIM_STATUS_AWAY */ - item = gtk_menu_item_new_with_label(_("Away")); - gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); - gtk_widget_show(item); - - /* GAIM_STATUS_EXTENDED_AWAY */ - item = gtk_menu_item_new_with_label(_("Extended Away")); - gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); - gtk_widget_show(item); - + gtk_menu_set_active(GTK_MENU(menu), type); gtk_option_menu_set_menu(GTK_OPTION_MENU(dropdown), menu); gtk_widget_show(menu); @@ -234,7 +217,7 @@ } void -gaim_gtk_status_editor_show(void) +gaim_gtk_status_editor_show(GaimSavedStatus *status) { StatusEditor *dialog; GtkSizeGroup *sg; @@ -284,7 +267,10 @@ gtk_size_group_add_widget(sg, label); entry = gtk_entry_new(); - gtk_entry_set_text(GTK_ENTRY(entry), _("Out of the office")); + if (status != NULL) + gtk_entry_set_text(GTK_ENTRY(entry), gaim_savedstatus_get_title(status)); + else + gtk_entry_set_text(GTK_ENTRY(entry), _("Out of the office")); gtk_box_pack_start(GTK_BOX(hbox), entry, TRUE, TRUE, 0); gtk_widget_show(entry); @@ -299,7 +285,10 @@ gtk_widget_show(label); gtk_size_group_add_widget(sg, label); - dropdown = create_status_type_menu(); + if (status != NULL) + dropdown = create_status_type_menu(gaim_savedstatus_get_type(status)); + else + dropdown = create_status_type_menu(GAIM_STATUS_AWAY); gtk_box_pack_start(GTK_BOX(hbox), dropdown, TRUE, TRUE, 0); gtk_widget_show(dropdown); @@ -318,6 +307,10 @@ gtk_box_pack_start(GTK_BOX(hbox), frame, TRUE, TRUE, 0); gtk_widget_show(frame); + if (status != NULL) + gtk_imhtml_append_text(GTK_IMHTML(text), + gaim_savedstatus_get_message(status), 0); + /* Custom status message disclosure */ disclosure = gaim_disclosure_new(_("Use a different status for some accounts"), _("Use a different status for some accounts")); @@ -426,7 +419,7 @@ static void status_window_add_cb(GtkButton *button, gpointer user_data) { - gaim_gtk_status_editor_show(); + gaim_gtk_status_editor_show(NULL); } static void @@ -434,12 +427,12 @@ GtkTreeIter *iter, gpointer user_data) { const char *title; - GaimStatusSaved *status; + GaimSavedStatus *status; gtk_tree_model_get(model, iter, STATUS_WINDOW_COLUMN_TITLE, &title, -1); - status = gaim_savedstatuses_find(title); - /* TODO: Need to show a status editor pre-populated with this status */ + status = gaim_savedstatus_find(title); + gaim_gtk_status_editor_show(status); } static void @@ -461,7 +454,7 @@ if (status_window_find_savedstatus(&iter, title)) gtk_list_store_remove(status_window->model, &iter); - gaim_savedstatuses_delete(title); + gaim_savedstatus_delete(title); g_free(title); } @@ -520,7 +513,7 @@ { GtkTreeIter iter; const GList *saved_statuses; - GaimStatusSaved *saved_status; + GaimSavedStatus *saved_status; char *message; gtk_list_store_clear(dialog->model); @@ -528,14 +521,14 @@ for (saved_statuses = gaim_savedstatuses_get_all(); saved_statuses != NULL; saved_statuses = g_list_next(saved_statuses)) { - saved_status = (GaimStatusSaved *)saved_statuses->data; - message = gaim_markup_strip_html(gaim_savedstatuses_get_message(saved_status)); + saved_status = (GaimSavedStatus *)saved_statuses->data; + message = gaim_markup_strip_html(gaim_savedstatus_get_message(saved_status)); if (strlen(message) > 70) strcpy(&message[68], "..."); gtk_list_store_append(dialog->model, &iter); gtk_list_store_set(dialog->model, &iter, - STATUS_WINDOW_COLUMN_TITLE, gaim_savedstatuses_get_title(saved_status), + STATUS_WINDOW_COLUMN_TITLE, gaim_savedstatus_get_title(saved_status), STATUS_WINDOW_COLUMN_MESSAGE, message, -1); free(message);