comparison finch/gntsound.c @ 19159:67fc276e5332

Redid the look to the Sound Prefs
author Eric Polino <aluink@pidgin.im>
date Thu, 12 Jul 2007 21:49:27 +0000
parents 1d4ff2ba5a0b
children fbecc35c23bb
comparison
equal deleted inserted replaced
19158:1d4ff2ba5a0b 19159:67fc276e5332
71 GntWidget *events; 71 GntWidget *events;
72 GntWidget *window; 72 GntWidget *window;
73 GntWidget *selector; 73 GntWidget *selector;
74 74
75 GntWidget *profiles; 75 GntWidget *profiles;
76 GntWidget *new_profile;
76 gchar * original_profile; 77 gchar * original_profile;
77 } SoundPrefDialog; 78 } SoundPrefDialog;
78 79
79 #define DEFAULT_PROFILE "default" 80 #define DEFAULT_PROFILE "default"
80 81
734 735
735 static void 736 static void
736 load_pref_window(const char * profile) 737 load_pref_window(const char * profile)
737 { 738 {
738 gint i; 739 gint i;
739 GList *itr, *list;
740 740
741 finch_sound_set_active_profile(profile); 741 finch_sound_set_active_profile(profile);
742 742
743 gnt_combo_box_set_selected(GNT_COMBO_BOX(pref_dialog->method),(gchar *)purple_prefs_get_string(make_pref("/method"))); 743 gnt_combo_box_set_selected(GNT_COMBO_BOX(pref_dialog->method),(gchar *)purple_prefs_get_string(make_pref("/method")));
744 744
776 } 776 }
777 777
778 /* Can someone double check to make sure there isn't a leak in the way I'm keeping 778 /* Can someone double check to make sure there isn't a leak in the way I'm keeping
779 * track of thest profile suggests in the entry. Thanks! 779 * track of thest profile suggests in the entry. Thanks!
780 */ 780 */
781 list = itr = finch_sound_get_profiles();
782 for(;itr;itr = itr->next){
783 gnt_entry_add_suggest(GNT_ENTRY(pref_dialog->profiles),itr->data);
784 }
785 g_list_foreach(list,(GFunc)g_free,NULL);
786 g_list_free(list);
787
788 gnt_entry_set_text(GNT_ENTRY(pref_dialog->profiles),finch_sound_get_active_profile());
789
790 gnt_widget_draw(pref_dialog->window); 781 gnt_widget_draw(pref_dialog->window);
791 } 782 }
792 783
793 static void 784 static void
794 reload_pref_window(const char *profile) 785 reload_pref_window(const char *profile)
807 gchar * pref = g_strdup_printf(FINCH_PREFS_ROOT "/sound/profiles/%s",profile); 798 gchar * pref = g_strdup_printf(FINCH_PREFS_ROOT "/sound/profiles/%s",profile);
808 799
809 if(!strcmp(profile,DEFAULT_PROFILE)) 800 if(!strcmp(profile,DEFAULT_PROFILE))
810 return; 801 return;
811 802
812 gnt_entry_remove_suggest(GNT_ENTRY(pref_dialog->profiles),profile);
813
814 purple_prefs_remove(pref); 803 purple_prefs_remove(pref);
815 g_free(pref); 804 g_free(pref);
816 805
817 g_free(pref_dialog->original_profile); 806 g_free(pref_dialog->original_profile);
818 pref_dialog->original_profile = g_strdup(DEFAULT_PROFILE); 807 pref_dialog->original_profile = g_strdup(DEFAULT_PROFILE);
819 808
820 reload_pref_window(DEFAULT_PROFILE); 809 reload_pref_window(DEFAULT_PROFILE);
821 } 810 }
822 811
823 static void 812 static void
824 prof_text_load(GntEntry *entry, gpointer null) 813 prof_add_cb(GntEntry *entry, gpointer null)
825 { 814 {
826 const char * profile = gnt_entry_get_text(entry); 815 const char * profile = gnt_entry_get_text(entry);
827 816
828 reload_pref_window(profile); 817 reload_pref_window(profile);
829 818
830 } 819 }
831 820
832 static void 821 static void
833 prof_text_completion(GntEntry *entry, gpointer start, gpointer end, gpointer null)
834 {
835 prof_text_load(entry,null);
836 }
837
838 static void
839 cancel_cb(GntButton *button, gpointer win) 822 cancel_cb(GntButton *button, gpointer win)
840 { 823 {
841 finch_sound_set_active_profile(pref_dialog->original_profile); 824 finch_sound_set_active_profile(pref_dialog->original_profile);
842 gnt_widget_destroy(GNT_WIDGET(win)); 825 gnt_widget_destroy(GNT_WIDGET(win));
843 } 826 }
844 827
845 void 828 void
846 finch_sounds_show_all(void) 829 finch_sounds_show_all(void)
847 { 830 {
848 GntWidget *box, *cmbox, *slider; 831 GntWidget *box, *tmpbox, *splitbox, *cmbox, *slider;
849 GntWidget *entry; 832 GntWidget *entry;
850 GntWidget *chkbox; 833 GntWidget *chkbox;
851 GntWidget *button; 834 GntWidget *button;
852 GntWidget *label; 835 GntWidget *label;
853 GntWidget *tree; 836 GntWidget *tree;
868 gnt_box_set_pad(GNT_BOX(win),0); 851 gnt_box_set_pad(GNT_BOX(win),0);
869 gnt_box_set_toplevel(GNT_BOX(win), TRUE); 852 gnt_box_set_toplevel(GNT_BOX(win), TRUE);
870 gnt_box_set_title(GNT_BOX(win), _("Sound Preferences")); 853 gnt_box_set_title(GNT_BOX(win), _("Sound Preferences"));
871 gnt_box_set_fill(GNT_BOX(win), TRUE); 854 gnt_box_set_fill(GNT_BOX(win), TRUE);
872 gnt_box_set_alignment(GNT_BOX(win),GNT_ALIGN_LEFT); 855 gnt_box_set_alignment(GNT_BOX(win),GNT_ALIGN_LEFT);
856
857 /* Profiles */
858 splitbox = gnt_hbox_new(FALSE);
859
860 box = gnt_vbox_new(FALSE);
861 gnt_box_add_widget(GNT_BOX(box),gnt_label_new_with_format(_("Profiles"),GNT_TEXT_FLAG_BOLD));
862 pref_dialog->profiles = tree = gnt_tree_new();
863 gnt_box_add_widget(GNT_BOX(box),tree);
864
865 pref_dialog->new_profile = entry = gnt_entry_new("");
866 gnt_box_add_widget(GNT_BOX(box),entry);
867
868 tmpbox = gnt_hbox_new(FALSE);
869 button = gnt_button_new("Add");
870 g_signal_connect(G_OBJECT(button),"activate",G_CALLBACK(prof_add_cb),NULL);
871 gnt_box_add_widget(GNT_BOX(tmpbox),button);
872 button = gnt_button_new("Delete");
873 g_signal_connect(G_OBJECT(button),"activate",G_CALLBACK(prof_del_cb),NULL);
874 gnt_box_add_widget(GNT_BOX(tmpbox),button);
875 gnt_box_add_widget(GNT_BOX(box),tmpbox);
876 gnt_box_add_widget(GNT_BOX(splitbox),box);
877
878 gnt_box_add_widget(GNT_BOX(splitbox),gnt_vline_new());
879
880 /* Sound method */
881
882 box = gnt_vbox_new(FALSE);
873 883
874 pref_dialog->method = cmbox = gnt_combo_box_new(); 884 pref_dialog->method = cmbox = gnt_combo_box_new();
875 gnt_tree_set_hash_fns(GNT_TREE(GNT_COMBO_BOX(cmbox)->dropdown), g_str_hash, g_str_equal, NULL); 885 gnt_tree_set_hash_fns(GNT_TREE(GNT_COMBO_BOX(cmbox)->dropdown), g_str_hash, g_str_equal, NULL);
876 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"automatic",_("Automatic")); 886 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"automatic",_("Automatic"));
877 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"alsa","ALSA"); 887 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"alsa","ALSA");
878 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"esd","ESD"); 888 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"esd","ESD");
879 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"beep",_("Console Beep")); 889 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"beep",_("Console Beep"));
880 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"custom",_("Command")); 890 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"custom",_("Command"));
881 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"nosound",_("No Sound")); 891 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"nosound",_("No Sound"));
882 892
883 /* Sound method */
884 label = gnt_label_new_with_format(_("Sound Method"),GNT_TEXT_FLAG_BOLD); 893 label = gnt_label_new_with_format(_("Sound Method"),GNT_TEXT_FLAG_BOLD);
885 gnt_box_add_widget(GNT_BOX(win),label); 894 gnt_box_add_widget(GNT_BOX(box),label);
886 box = gnt_hbox_new(TRUE); 895 tmpbox = gnt_hbox_new(TRUE);
887 gnt_box_set_fill(GNT_BOX(box),FALSE); 896 gnt_box_set_fill(GNT_BOX(tmpbox),FALSE);
888 gnt_box_set_pad(GNT_BOX(box),0); 897 gnt_box_set_pad(GNT_BOX(tmpbox),0);
889 gnt_box_add_widget(GNT_BOX(box),gnt_label_new(_("Method: "))); 898 gnt_box_add_widget(GNT_BOX(tmpbox),gnt_label_new(_("Method: ")));
890 gnt_box_add_widget(GNT_BOX(box),cmbox); 899 gnt_box_add_widget(GNT_BOX(tmpbox),cmbox);
891 gnt_box_add_widget(GNT_BOX(win),box); 900 gnt_box_add_widget(GNT_BOX(box),tmpbox);
892 901
893 box = gnt_hbox_new(TRUE); 902 tmpbox = gnt_hbox_new(TRUE);
894 gnt_box_set_pad(GNT_BOX(box),0); 903 gnt_box_set_pad(GNT_BOX(tmpbox),0);
895 gnt_box_set_fill(GNT_BOX(box),FALSE); 904 gnt_box_set_fill(GNT_BOX(tmpbox),FALSE);
896 gnt_box_add_widget(GNT_BOX(box),gnt_label_new(_("Sound Command\n(%s for filename)"))); 905 gnt_box_add_widget(GNT_BOX(tmpbox),gnt_label_new(_("Sound Command\n(%s for filename)")));
897 pref_dialog->command = entry = gnt_entry_new(""); 906 pref_dialog->command = entry = gnt_entry_new("");
898 gnt_box_add_widget(GNT_BOX(box),entry); 907 gnt_box_add_widget(GNT_BOX(tmpbox),entry);
899 gnt_box_add_widget(GNT_BOX(win),box); 908 gnt_box_add_widget(GNT_BOX(box),tmpbox);
900 909
901 gnt_box_add_widget(GNT_BOX(win), gnt_line_new(FALSE)); 910 gnt_box_add_widget(GNT_BOX(box), gnt_line_new(FALSE));
902 911
903 /* Sound options */ 912 /* Sound options */
904 gnt_box_add_widget(GNT_BOX(win),gnt_label_new_with_format(_("Sound Options"),GNT_TEXT_FLAG_BOLD)); 913 gnt_box_add_widget(GNT_BOX(box),gnt_label_new_with_format(_("Sound Options"),GNT_TEXT_FLAG_BOLD));
905 pref_dialog->conv_focus = chkbox = gnt_check_box_new(_("Sounds when conversation has focus")); 914 pref_dialog->conv_focus = chkbox = gnt_check_box_new(_("Sounds when conversation has focus"));
906 gnt_box_add_widget(GNT_BOX(win),chkbox); 915 gnt_box_add_widget(GNT_BOX(box),chkbox);
907 916
908 box = gnt_hbox_new(TRUE); 917 tmpbox = gnt_hbox_new(TRUE);
909 gnt_box_set_pad(GNT_BOX(box),0); 918 gnt_box_set_pad(GNT_BOX(tmpbox),0);
910 gnt_box_set_fill(GNT_BOX(box),FALSE); 919 gnt_box_set_fill(GNT_BOX(tmpbox),FALSE);
911 gnt_box_add_widget(GNT_BOX(box),gnt_label_new("Enable Sounds:")); 920 gnt_box_add_widget(GNT_BOX(tmpbox),gnt_label_new("Enable Sounds:"));
912 pref_dialog->while_status = cmbox = gnt_combo_box_new(); 921 pref_dialog->while_status = cmbox = gnt_combo_box_new();
913 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),GINT_TO_POINTER(3),_("Always")); 922 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),GINT_TO_POINTER(3),_("Always"));
914 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),GINT_TO_POINTER(1),_("Only when available")); 923 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),GINT_TO_POINTER(1),_("Only when available"));
915 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),GINT_TO_POINTER(2),_("Only when not available")); 924 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),GINT_TO_POINTER(2),_("Only when not available"));
916 gnt_box_add_widget(GNT_BOX(box),cmbox); 925 gnt_box_add_widget(GNT_BOX(tmpbox),cmbox);
917 gnt_box_add_widget(GNT_BOX(win),box); 926 gnt_box_add_widget(GNT_BOX(box),tmpbox);
918 927
919 box = gnt_hbox_new(TRUE); 928 tmpbox = gnt_hbox_new(TRUE);
920 gnt_box_set_pad(GNT_BOX(box),0); 929 gnt_box_set_pad(GNT_BOX(tmpbox),0);
921 gnt_box_set_fill(GNT_BOX(box),FALSE); 930 gnt_box_set_fill(GNT_BOX(tmpbox),FALSE);
922 gnt_box_add_widget(GNT_BOX(box),gnt_label_new(_("Volume(0-100):"))); 931 gnt_box_add_widget(GNT_BOX(tmpbox),gnt_label_new(_("Volume(0-100):")));
923 932
924 pref_dialog->volume = slider = gnt_slider_new(FALSE,100,0); 933 pref_dialog->volume = slider = gnt_slider_new(FALSE,100,0);
925 gnt_slider_set_step(GNT_SLIDER(slider),5); 934 gnt_slider_set_step(GNT_SLIDER(slider),5);
926 label = gnt_label_new(""); 935 label = gnt_label_new("");
927 gnt_slider_reflect_label(GNT_SLIDER(slider),GNT_LABEL(label)); 936 gnt_slider_reflect_label(GNT_SLIDER(slider),GNT_LABEL(label));
928 gnt_box_set_pad(GNT_BOX(box),1); 937 gnt_box_set_pad(GNT_BOX(tmpbox),1);
929 gnt_box_add_widget(GNT_BOX(box),slider); 938 gnt_box_add_widget(GNT_BOX(tmpbox),slider);
930 gnt_box_add_widget(GNT_BOX(box),label); 939 gnt_box_add_widget(GNT_BOX(tmpbox),label);
931 gnt_box_add_widget(GNT_BOX(win),box); 940 gnt_box_add_widget(GNT_BOX(box),tmpbox);
941 gnt_box_add_widget(GNT_BOX(splitbox),box);
942
943 gnt_box_add_widget(GNT_BOX(win),splitbox);
932 944
933 gnt_box_add_widget(GNT_BOX(win), gnt_hline_new()); 945 gnt_box_add_widget(GNT_BOX(win), gnt_hline_new());
934 946
935 /* Sound events */ 947 /* Sound events */
936 gnt_box_add_widget(GNT_BOX(win),gnt_label_new_with_format(_("Sound Events"),GNT_TEXT_FLAG_BOLD)); 948 gnt_box_add_widget(GNT_BOX(win),gnt_label_new_with_format(_("Sound Events"),GNT_TEXT_FLAG_BOLD));
965 gnt_box_add_widget(GNT_BOX(box),button); 977 gnt_box_add_widget(GNT_BOX(box),button);
966 gnt_box_add_widget(GNT_BOX(win),box); 978 gnt_box_add_widget(GNT_BOX(win),box);
967 979
968 gnt_box_add_widget(GNT_BOX(win), gnt_line_new(FALSE)); 980 gnt_box_add_widget(GNT_BOX(win), gnt_line_new(FALSE));
969 981
970 /* Sound profiles */
971 gnt_box_add_widget(GNT_BOX(win),gnt_label_new_with_format(_("Profiles"),GNT_TEXT_FLAG_BOLD));
972 box = gnt_hbox_new(FALSE);
973 pref_dialog->profiles = entry = gnt_entry_new("");
974 gnt_entry_set_word_suggest(GNT_ENTRY(pref_dialog->profiles),TRUE);
975 gnt_box_add_widget(GNT_BOX(box),entry);
976
977 g_signal_connect(G_OBJECT(entry),"activate",G_CALLBACK(prof_text_load),NULL);
978 g_signal_connect(G_OBJECT(entry),"completion",G_CALLBACK(prof_text_completion),NULL);
979 g_signal_connect(G_OBJECT(entry),"lost-focus",G_CALLBACK(prof_text_load),NULL);
980
981 button = gnt_button_new("Delete");
982 g_signal_connect(G_OBJECT(button),"activate",G_CALLBACK(prof_del_cb),NULL);
983 gnt_box_add_widget(GNT_BOX(box),button);
984 gnt_box_add_widget(GNT_BOX(win),box);
985
986 /* Add new stuff before this */ 982 /* Add new stuff before this */
987 box = gnt_hbox_new(FALSE); 983 box = gnt_hbox_new(FALSE);
988 gnt_box_set_pad(GNT_BOX(box),0); 984 gnt_box_set_pad(GNT_BOX(box),0);
989 gnt_box_set_fill(GNT_BOX(box),TRUE); 985 gnt_box_set_fill(GNT_BOX(box),TRUE);
990 button = gnt_button_new(_("Save")); 986 button = gnt_button_new(_("Save"));