Mercurial > pidgin
comparison finch/gntsound.c @ 19119:086cfcb71b01
Created SoundPrefDialog to store dialog data.
Cleaned up the Sounds pref window to look better.
author | Eric Polino <aluink@pidgin.im> |
---|---|
date | Fri, 29 Jun 2007 01:51:13 +0000 |
parents | cfe8f791d7c1 |
children | 915ef65d68e3 |
comparison
equal
deleted
inserted
replaced
19118:cfe8f791d7c1 | 19119:086cfcb71b01 |
---|---|
55 char *label; | 55 char *label; |
56 char *pref; | 56 char *pref; |
57 char *def; | 57 char *def; |
58 }; | 58 }; |
59 | 59 |
60 typedef struct { | |
61 GntWidget *method; | |
62 GntWidget *command; | |
63 GntWidget *conv_focus; | |
64 GntWidget *while_status; | |
65 GntWidget *volume; | |
66 GntWidget *window; | |
67 } SoundPrefDialog; | |
68 | |
60 static struct { | 69 static struct { |
61 const gchar *method; | 70 const gchar *method; |
62 const gchar *command; | 71 const gchar *command; |
63 gboolean conv_focus; | 72 gboolean conv_focus; |
64 gint while_status; | 73 gint while_status; |
65 gint volume; | 74 gint volume; |
66 GntTree *events; | 75 GntTree *events; |
67 GntWidget *window; | 76 SoundPrefDialog *dialog; |
68 } sound_pref_data; | 77 } sound_pref_data; |
69 | 78 |
70 #define PLAY_SOUND_TIMEOUT 15000 | 79 #define PLAY_SOUND_TIMEOUT 15000 |
71 | 80 |
72 static guint mute_login_sounds_timeout = 0; | 81 static guint mute_login_sounds_timeout = 0; |
586 | 595 |
587 return; | 596 return; |
588 } | 597 } |
589 | 598 |
590 static gboolean | 599 static gboolean |
591 save_cb(GntBindable *data, gpointer null) | 600 save_cb(GntBindable *data, gpointer *win) |
592 { | 601 { |
593 gnt_widget_destroy(sound_pref_data.window); | 602 gnt_widget_destroy(GNT_WIDGET(win)); |
594 return TRUE; | 603 return TRUE; |
595 } | 604 } |
596 | 605 |
597 static gboolean | 606 static gboolean |
598 cancel_cb(GntBindable *data, gpointer null) | 607 cancel_cb(GntBindable *data, gpointer win) |
599 { | 608 { |
600 gnt_widget_destroy(sound_pref_data.window); | 609 gnt_widget_destroy(GNT_WIDGET(win)); |
601 return TRUE; | 610 return TRUE; |
602 } | 611 } |
603 | 612 |
604 static void | 613 static void release_pref_window(GntBindable *data, gpointer null) { |
605 release_pref_window(GntBindable *data, gpointer null) | 614 g_free(sound_pref_data.dialog); |
606 { | 615 sound_pref_data.dialog = NULL; |
607 sound_pref_data.window = NULL; | |
608 } | 616 } |
609 | 617 |
610 void | 618 void |
611 finch_sounds_show_all(void) | 619 finch_sounds_show_all(void) |
612 { | 620 { |
614 GntWidget *cmbox; | 622 GntWidget *cmbox; |
615 GntWidget *entry; | 623 GntWidget *entry; |
616 GntWidget *chkbox; | 624 GntWidget *chkbox; |
617 GntWidget *button; | 625 GntWidget *button; |
618 GntWidget *label; | 626 GntWidget *label; |
627 GntWidget *win; | |
619 gchar *buf; | 628 gchar *buf; |
620 | 629 |
621 if(sound_pref_data.window){ | 630 if(sound_pref_data.dialog){ |
622 /* XXX We should find a way to raise the window back up */ | 631 gnt_window_present(sound_pref_data.dialog->window); |
623 return; | 632 return; |
624 } | 633 } |
625 | 634 |
626 init_pref_data(); | 635 init_pref_data(); |
627 | 636 |
628 sound_pref_data.window = gnt_vbox_new(FALSE); | 637 sound_pref_data.dialog = g_new0(SoundPrefDialog,1); |
629 gnt_box_set_pad(GNT_BOX(sound_pref_data.window),0); | 638 |
630 gnt_box_set_fill(GNT_BOX(sound_pref_data.window),FALSE); | 639 sound_pref_data.dialog->window = win = gnt_window_box_new(FALSE,TRUE); |
631 gnt_box_set_toplevel(GNT_BOX(sound_pref_data.window), TRUE); | 640 gnt_box_set_pad(GNT_BOX(win),0); |
632 gnt_box_set_title(GNT_BOX(sound_pref_data.window),_("Sound Preferences")); | 641 gnt_box_set_fill(GNT_BOX(win),FALSE); |
633 gnt_box_set_fill(GNT_BOX(sound_pref_data.window),TRUE); | 642 gnt_box_set_toplevel(GNT_BOX(win), TRUE); |
634 gnt_box_set_alignment(GNT_BOX(sound_pref_data.window),GNT_ALIGN_MID); | 643 gnt_box_set_title(GNT_BOX(win),_("Sound Preferences")); |
635 gnt_widget_set_name(sound_pref_data.window, "sounds"); | 644 gnt_box_set_fill(GNT_BOX(win),TRUE); |
636 | 645 gnt_box_set_alignment(GNT_BOX(win),GNT_ALIGN_MID); |
637 cmbox = gnt_combo_box_new(); | 646 gnt_widget_set_name(win, "sounds"); |
647 | |
648 sound_pref_data.dialog->method = cmbox = gnt_combo_box_new(); | |
638 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"automatic",_("Automatic")); | 649 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"automatic",_("Automatic")); |
639 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"alsa","ALSA"); | 650 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"alsa","ALSA"); |
640 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"esd","ESD"); | 651 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"esd","ESD"); |
641 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"beep",_("Console Beep")); | 652 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"beep",_("Console Beep")); |
642 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"custom",_("Command")); | 653 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"custom",_("Command")); |
643 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"nosound",_("No Sound")); | 654 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"nosound",_("No Sound")); |
644 gnt_combo_box_set_selected(GNT_COMBO_BOX(cmbox),sound_pref_data.method); | 655 gnt_combo_box_set_selected(GNT_COMBO_BOX(cmbox),sound_pref_data.method); |
645 | 656 |
646 label = gnt_label_new_with_format(_("Sound Method"),GNT_TEXT_FLAG_BOLD); | 657 label = gnt_label_new_with_format(_("Sound Method"),GNT_TEXT_FLAG_BOLD); |
647 gnt_box_add_widget(GNT_BOX(sound_pref_data.window),label); | 658 gnt_box_add_widget(GNT_BOX(win),label); |
648 box = gnt_hbox_new(TRUE); | 659 box = gnt_hbox_new(TRUE); |
649 gnt_box_set_fill(GNT_BOX(box),FALSE); | 660 gnt_box_set_fill(GNT_BOX(box),FALSE); |
650 gnt_box_set_pad(GNT_BOX(box),0); | 661 gnt_box_set_pad(GNT_BOX(box),0); |
651 gnt_box_add_widget(GNT_BOX(box),gnt_label_new(_("Method: "))); | 662 gnt_box_add_widget(GNT_BOX(box),gnt_label_new(_("Method: "))); |
652 gnt_box_add_widget(GNT_BOX(box),cmbox); | 663 gnt_box_add_widget(GNT_BOX(box),cmbox); |
653 gnt_box_add_widget(GNT_BOX(sound_pref_data.window),box); | 664 gnt_box_add_widget(GNT_BOX(win),box); |
654 | 665 |
655 box = gnt_hbox_new(TRUE); | 666 box = gnt_hbox_new(TRUE); |
656 gnt_box_set_pad(GNT_BOX(box),0); | 667 gnt_box_set_pad(GNT_BOX(box),0); |
657 gnt_box_set_fill(GNT_BOX(box),FALSE); | 668 gnt_box_set_fill(GNT_BOX(box),FALSE); |
658 gnt_box_add_widget(GNT_BOX(box),gnt_label_new(_("Sound Command\n%s for filename"))); | 669 gnt_box_add_widget(GNT_BOX(box),gnt_label_new(_("Sound Command\n(%s for filename)"))); |
659 entry = gnt_entry_new(sound_pref_data.command); | 670 sound_pref_data.dialog->command = entry = gnt_entry_new(sound_pref_data.command); |
660 gnt_box_add_widget(GNT_BOX(box),entry); | 671 gnt_box_add_widget(GNT_BOX(box),entry); |
661 gnt_box_add_widget(GNT_BOX(sound_pref_data.window),box); | 672 gnt_box_add_widget(GNT_BOX(win),box); |
662 | 673 |
663 gnt_box_add_widget(GNT_BOX(sound_pref_data.window), gnt_line_new(FALSE)); | 674 gnt_box_add_widget(GNT_BOX(win), gnt_line_new(FALSE)); |
664 | 675 |
665 gnt_box_add_widget(GNT_BOX(sound_pref_data.window),gnt_label_new_with_format(_("Sound Options"),GNT_TEXT_FLAG_BOLD)); | 676 gnt_box_add_widget(GNT_BOX(win),gnt_label_new_with_format(_("Sound Options"),GNT_TEXT_FLAG_BOLD)); |
666 chkbox = gnt_check_box_new("Sounds when conversation has focus"); | 677 sound_pref_data.dialog->conv_focus = chkbox = gnt_check_box_new("Sounds when conversation has focus"); |
667 gnt_check_box_set_checked(GNT_CHECK_BOX(chkbox),sound_pref_data.conv_focus); | 678 gnt_check_box_set_checked(GNT_CHECK_BOX(chkbox),sound_pref_data.conv_focus); |
668 gnt_box_add_widget(GNT_BOX(sound_pref_data.window),chkbox); | 679 gnt_box_add_widget(GNT_BOX(win),chkbox); |
669 | 680 |
670 box = gnt_hbox_new(TRUE); | 681 box = gnt_hbox_new(TRUE); |
671 gnt_box_set_pad(GNT_BOX(box),0); | 682 gnt_box_set_pad(GNT_BOX(box),0); |
672 gnt_box_set_fill(GNT_BOX(box),FALSE); | 683 gnt_box_set_fill(GNT_BOX(box),FALSE); |
673 gnt_box_add_widget(GNT_BOX(box),gnt_label_new("Enable Sounds:")); | 684 gnt_box_add_widget(GNT_BOX(box),gnt_label_new("Enable Sounds:")); |
674 cmbox = gnt_combo_box_new(); | 685 sound_pref_data.dialog->while_status = cmbox = gnt_combo_box_new(); |
675 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"always","Always"); | 686 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"always","Always"); |
676 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"available","Only when available"); | 687 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"available","Only when available"); |
677 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"navailable","Only when not available"); | 688 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"away","Only when not available"); |
678 switch(sound_pref_data.while_status){ | 689 switch(sound_pref_data.while_status){ |
679 case 1:gnt_combo_box_set_selected(GNT_COMBO_BOX(cmbox),"available");break; | 690 case 1:gnt_combo_box_set_selected(GNT_COMBO_BOX(cmbox),"available");break; |
680 case 2:gnt_combo_box_set_selected(GNT_COMBO_BOX(cmbox),"away");break; | 691 case 2:gnt_combo_box_set_selected(GNT_COMBO_BOX(cmbox),"away");break; |
681 default:gnt_combo_box_set_selected(GNT_COMBO_BOX(cmbox),"always");break; | 692 default:gnt_combo_box_set_selected(GNT_COMBO_BOX(cmbox),"always");break; |
682 } | 693 } |
683 gnt_box_add_widget(GNT_BOX(box),cmbox); | 694 gnt_box_add_widget(GNT_BOX(box),cmbox); |
684 gnt_box_add_widget(GNT_BOX(sound_pref_data.window),box); | 695 gnt_box_add_widget(GNT_BOX(win),box); |
685 | 696 |
686 box = gnt_hbox_new(TRUE); | 697 box = gnt_hbox_new(TRUE); |
687 gnt_box_set_pad(GNT_BOX(box),0); | 698 gnt_box_set_pad(GNT_BOX(box),0); |
688 gnt_box_set_fill(GNT_BOX(box),FALSE); | 699 gnt_box_set_fill(GNT_BOX(box),FALSE); |
689 gnt_box_add_widget(GNT_BOX(box),gnt_label_new("Volume(0-100):")); | 700 gnt_box_add_widget(GNT_BOX(box),gnt_label_new("Volume(0-100):")); |
690 | 701 |
691 buf = g_strdup_printf("%d",sound_pref_data.volume); | 702 buf = g_strdup_printf("%d",sound_pref_data.volume); |
692 entry = gnt_entry_new(buf); | 703 sound_pref_data.dialog->volume = entry = gnt_entry_new(buf); |
693 g_free(buf); | 704 g_free(buf); |
705 gnt_widget_set_name(entry,"volume"); | |
694 gnt_box_add_widget(GNT_BOX(box),entry); | 706 gnt_box_add_widget(GNT_BOX(box),entry); |
695 gnt_box_add_widget(GNT_BOX(sound_pref_data.window),box); | 707 gnt_box_add_widget(GNT_BOX(win),box); |
696 | 708 |
697 gnt_box_add_widget(GNT_BOX(sound_pref_data.window), gnt_line_new(FALSE)); | 709 gnt_box_add_widget(GNT_BOX(win), gnt_line_new(FALSE)); |
698 | 710 |
699 gnt_box_add_widget(GNT_BOX(sound_pref_data.window),gnt_label_new_with_format(_("Sound Events"),GNT_TEXT_FLAG_BOLD)); | 711 gnt_box_add_widget(GNT_BOX(win),gnt_label_new_with_format(_("Sound Events"),GNT_TEXT_FLAG_BOLD)); |
700 /* Put events tree here */ | 712 /* Put events tree here */ |
701 | 713 |
702 box = gnt_hbox_new(TRUE); | 714 box = gnt_hbox_new(TRUE); |
703 gnt_box_set_pad(GNT_BOX(box),0); | 715 gnt_box_set_pad(GNT_BOX(box),0); |
704 gnt_box_set_fill(GNT_BOX(box),TRUE); | 716 gnt_box_set_fill(GNT_BOX(box),TRUE); |
706 g_signal_connect(G_OBJECT(button),"activate",G_CALLBACK(save_cb),NULL); | 718 g_signal_connect(G_OBJECT(button),"activate",G_CALLBACK(save_cb),NULL); |
707 gnt_box_add_widget(GNT_BOX(box),button); | 719 gnt_box_add_widget(GNT_BOX(box),button); |
708 button = gnt_button_new("Cancel"); | 720 button = gnt_button_new("Cancel"); |
709 g_signal_connect(G_OBJECT(button),"activate",G_CALLBACK(cancel_cb),NULL); | 721 g_signal_connect(G_OBJECT(button),"activate",G_CALLBACK(cancel_cb),NULL); |
710 gnt_box_add_widget(GNT_BOX(box),button); | 722 gnt_box_add_widget(GNT_BOX(box),button); |
711 gnt_box_add_widget(GNT_BOX(sound_pref_data.window),box); | 723 gnt_box_add_widget(GNT_BOX(win),box); |
712 | 724 |
713 | 725 |
714 g_signal_connect(G_OBJECT(sound_pref_data.window),"destroy",G_CALLBACK(release_pref_window),NULL); | 726 g_signal_connect(G_OBJECT(win),"destroy",G_CALLBACK(release_pref_window),NULL); |
715 | 727 |
716 gnt_widget_show(sound_pref_data.window); | 728 gnt_widget_show(win); |
717 | 729 |
718 } | 730 } |
719 | 731 |
720 static PurpleSoundUiOps sound_ui_ops = | 732 static PurpleSoundUiOps sound_ui_ops = |
721 { | 733 { |