Mercurial > pidgin.yaz
diff src/dialogs.c @ 832:0142b4c66394
[gaim-migrate @ 842]
redesigned the away messages page
committer: Tailor Script <tailor@pidgin.im>
| author | Eric Warmenhoven <eric@warmenhoven.org> |
|---|---|
| date | Sat, 02 Sep 2000 10:41:53 +0000 |
| parents | 9108277c95e9 |
| children | 113205ae7e72 |
line wrap: on
line diff
--- a/src/dialogs.c Sat Sep 02 09:02:47 2000 +0000 +++ b/src/dialogs.c Sat Sep 02 10:41:53 2000 +0000 @@ -82,6 +82,7 @@ GtkWidget *entry; GtkWidget *text; GtkWidget *checkbx; + struct away_message *mess; }; @@ -2815,7 +2816,10 @@ guint text_len; gchar *away_message; - am = g_new0(struct away_message, 1); + if (!ca->mess) + am = g_new0(struct away_message, 1); + else + am = ca->mess; g_snprintf(am->name, sizeof(am->name), "%s", gtk_entry_get_text(GTK_ENTRY(ca->entry))); text_len = gtk_text_get_length(GTK_TEXT(ca->text)); away_message = gtk_editable_get_chars(GTK_EDITABLE(ca->text), 0, text_len); @@ -2823,50 +2827,22 @@ g_snprintf(am->message, sizeof(am->message), "%s", away_message); g_free(away_message); - away_messages = g_list_append(away_messages, am); + if (!ca->mess) { + away_messages = g_list_append(away_messages, am); + if (GTK_TOGGLE_BUTTON(ca->checkbx)->active) + do_away_message(NULL, am); + } + save_prefs(); do_away_menu(); + if (prefs_away_list != NULL) + gtk_list_select_item(GTK_LIST(prefs_away_list), g_list_index(away_messages, am)); destroy_dialog(NULL, ca->window); return; } -void create_mess(GtkWidget *widget, struct create_away *ca) -{ - struct away_message *b; - gchar *away_message; - guint text_len; - int is_checked; - - /* Grab the appropriate data */ - b = g_new0(struct away_message, 1); - g_snprintf(b->name, sizeof(b->name), "%s", gtk_entry_get_text(GTK_ENTRY(ca->entry))); - - /* Get proper Length */ - text_len = gtk_text_get_length(GTK_TEXT(ca->text)); - away_message = gtk_editable_get_chars(GTK_EDITABLE(ca->text), 0, text_len); - - g_snprintf(b->message, sizeof(b->message), "%s", away_message); - g_free(away_message); - is_checked = GTK_TOGGLE_BUTTON(ca->checkbx)->active; - - if (is_checked) { - away_messages = g_list_append(away_messages, b); - save_prefs(); - do_away_menu(); - if (prefs_away_list != NULL) - gtk_list_select_item(GTK_LIST(prefs_away_list), g_list_index(away_messages, b)); - } - - /* stick it on the away list */ - if (!strlen(b->name)) - g_snprintf(b->name, sizeof(b->name), "I'm away!"); - do_away_message(NULL, b); - - destroy_dialog(NULL, ca->window); -} - void create_away_mess(GtkWidget *widget, void *dummy) { GtkWidget *bbox; @@ -2925,22 +2901,8 @@ gtk_widget_show(ca->text); gtk_box_pack_start(GTK_BOX(bbox), sw, TRUE, TRUE, 5); - /* Checkbox for showing away msg */ - ca->checkbx = gtk_check_button_new_with_label(_("Save for later use")); - - if (!dummy) /* this only exits if we're comming from the prefs dialog */ - { - gtk_widget_show(ca->checkbx); - - button = picture_button(ca->window, _("Away"), save_xpm); - gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(create_mess), ca); - - } - else - { - button = picture_button(ca->window, _("Save"), save_xpm); - gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(save_away_mess), ca); - } + button = picture_button(ca->window, _("Save"), save_xpm); + gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(save_away_mess), ca); gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 5); @@ -2951,7 +2913,6 @@ /* pack boxes where they belong */ gtk_box_pack_start(GTK_BOX(fbox), titlebox, TRUE, TRUE, 5); gtk_box_pack_start(GTK_BOX(fbox), bbox, TRUE, TRUE, 5); - gtk_box_pack_start(GTK_BOX(fbox), ca->checkbx, TRUE, TRUE, 5); gtk_container_add(GTK_CONTAINER(frame), fbox); gtk_container_set_border_width(GTK_CONTAINER(frame), 5); gtk_box_pack_start(GTK_BOX(tbox), frame, TRUE, TRUE, 0); @@ -2959,9 +2920,21 @@ gtk_container_add(GTK_CONTAINER(ca->window), tbox); + if (dummy && GTK_LIST(prefs_away_list)->selection) { + GtkWidget *item = GTK_LIST(prefs_away_list)->selection->data; + struct away_message *amt = gtk_object_get_user_data(GTK_OBJECT(item)); + int pos = 0; + gtk_entry_set_text(GTK_ENTRY(ca->entry), amt->name); + gtk_editable_insert_text(GTK_EDITABLE(ca->text), amt->message, strlen(amt->message), &pos); + ca->mess = amt; + } else { + /* Checkbox for showing away msg */ + ca->checkbx = gtk_check_button_new_with_label(_("Make Away Now")); + gtk_box_pack_start(GTK_BOX(fbox), ca->checkbx, TRUE, TRUE, 5); + gtk_widget_show(ca->checkbx); + } + /* let the world see what we have done. */ - if (!dummy) - gtk_widget_show(ca->checkbx); gtk_widget_show(label); gtk_widget_show(ca->entry); gtk_widget_show(titlebox);
