comparison finch/gntsound.c @ 19154:01d574f529e0

One leak fix. Mostly cosmetic changes.
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Wed, 11 Jul 2007 17:36:15 +0000
parents 5a6f174bf6dd
children f65c287e466e
comparison
equal deleted inserted replaced
19149:5a6f174bf6dd 19154:01d574f529e0
72 GntWidget *window; 72 GntWidget *window;
73 GntWidget *selector; 73 GntWidget *selector;
74 GntWidget *profiles; 74 GntWidget *profiles;
75 } SoundPrefDialog; 75 } SoundPrefDialog;
76 76
77 SoundPrefDialog *pref_dialog; 77 static SoundPrefDialog *pref_dialog;
78 78
79 #define PLAY_SOUND_TIMEOUT 15000 79 #define PLAY_SOUND_TIMEOUT 15000
80 80
81 static guint mute_login_sounds_timeout = 0; 81 static guint mute_login_sounds_timeout = 0;
82 static gboolean mute_login_sounds = FALSE; 82 static gboolean mute_login_sounds = FALSE;
83 static gchar * pref_string = NULL;
84 83
85 #ifdef USE_GSTREAMER 84 #ifdef USE_GSTREAMER
86 static gboolean gst_init_failed; 85 static gboolean gst_init_failed;
87 #endif /* USE_GSTREAMER */ 86 #endif /* USE_GSTREAMER */
88 87
111 * [FINCH_PREFS_ROOT "/sound/profiles/Home/$NAME"] is created. 110 * [FINCH_PREFS_ROOT "/sound/profiles/Home/$NAME"] is created.
112 */ 111 */
113 static gchar * 112 static gchar *
114 make_pref(const char *name) 113 make_pref(const char *name)
115 { 114 {
116 g_free(pref_string); 115 static char pref_string[512];
117 pref_string = g_strdup_printf(FINCH_PREFS_ROOT "/sound/profiles/%s%s",finch_sound_get_active_profile(),name); 116 g_snprintf(pref_string, sizeof(pref_string),
117 FINCH_PREFS_ROOT "/sound/profiles/%s%s", finch_sound_get_active_profile(), name);
118 return pref_string; 118 return pref_string;
119 } 119 }
120 120
121 121
122 static gboolean 122 static gboolean
189 PurpleMessageFlags flags, PurpleSoundEventID event) 189 PurpleMessageFlags flags, PurpleSoundEventID event)
190 { 190 {
191 if (flags & PURPLE_MESSAGE_DELAYED) 191 if (flags & PURPLE_MESSAGE_DELAYED)
192 return; 192 return;
193 193
194 if (conv==NULL){ 194 if (conv==NULL) {
195 purple_sound_play_event(PURPLE_SOUND_FIRST_RECEIVE, account); 195 purple_sound_play_event(PURPLE_SOUND_FIRST_RECEIVE, account);
196 } 196 } else {
197 else{
198 play_conv_event(conv, event); 197 play_conv_event(conv, event);
199 } 198 }
200 } 199 }
201 200
202 static void 201 static void
272 account_signon_cb(PurpleConnection *gc, gpointer data) 271 account_signon_cb(PurpleConnection *gc, gpointer data)
273 { 272 {
274 if (mute_login_sounds_timeout != 0) 273 if (mute_login_sounds_timeout != 0)
275 g_source_remove(mute_login_sounds_timeout); 274 g_source_remove(mute_login_sounds_timeout);
276 mute_login_sounds = TRUE; 275 mute_login_sounds = TRUE;
277 mute_login_sounds_timeout = purple_timeout_add(10000, unmute_login_sounds_cb, NULL); 276 mute_login_sounds_timeout = purple_timeout_add_seconds(10, unmute_login_sounds_cb, NULL);
278 } 277 }
279 278
280 void * 279 static void *
281 finch_sound_get_handle() 280 finch_sound_get_handle()
282 { 281 {
283 static int handle; 282 static int handle;
284 283
285 return &handle; 284 return &handle;
288 287
289 /* This gets called when the active profile changes */ 288 /* This gets called when the active profile changes */
290 static void 289 static void
291 load_profile(const char *name, PurplePrefType type, gconstpointer val, gpointer null) 290 load_profile(const char *name, PurplePrefType type, gconstpointer val, gpointer null)
292 { 291 {
293 if(!purple_prefs_exists(make_pref(""))){ 292 if(purple_prefs_exists(make_pref("")))
294 purple_prefs_add_none(make_pref("")); 293 return;
295 purple_prefs_add_none(make_pref("/enabled")); 294
296 purple_prefs_add_none(make_pref("/file")); 295 purple_prefs_add_none(make_pref(""));
297 purple_prefs_add_bool(make_pref("/enabled/login"), TRUE); 296 purple_prefs_add_none(make_pref("/enabled"));
298 purple_prefs_add_path(make_pref("/file/login"), ""); 297 purple_prefs_add_none(make_pref("/file"));
299 purple_prefs_add_bool(make_pref("/enabled/logout"), TRUE); 298 purple_prefs_add_bool(make_pref("/enabled/login"), TRUE);
300 purple_prefs_add_path(make_pref("/file/logout"), ""); 299 purple_prefs_add_path(make_pref("/file/login"), "");
301 purple_prefs_add_bool(make_pref("/enabled/im_recv"), TRUE); 300 purple_prefs_add_bool(make_pref("/enabled/logout"), TRUE);
302 purple_prefs_add_path(make_pref("/file/im_recv"), ""); 301 purple_prefs_add_path(make_pref("/file/logout"), "");
303 purple_prefs_add_bool(make_pref("/enabled/first_im_recv"), FALSE); 302 purple_prefs_add_bool(make_pref("/enabled/im_recv"), TRUE);
304 purple_prefs_add_path(make_pref("/file/first_im_recv"), ""); 303 purple_prefs_add_path(make_pref("/file/im_recv"), "");
305 purple_prefs_add_bool(make_pref("/enabled/send_im"), TRUE); 304 purple_prefs_add_bool(make_pref("/enabled/first_im_recv"), FALSE);
306 purple_prefs_add_path(make_pref("/file/send_im"), ""); 305 purple_prefs_add_path(make_pref("/file/first_im_recv"), "");
307 purple_prefs_add_bool(make_pref("/enabled/join_chat"), FALSE); 306 purple_prefs_add_bool(make_pref("/enabled/send_im"), TRUE);
308 purple_prefs_add_path(make_pref("/file/join_chat"), ""); 307 purple_prefs_add_path(make_pref("/file/send_im"), "");
309 purple_prefs_add_bool(make_pref("/enabled/left_chat"), FALSE); 308 purple_prefs_add_bool(make_pref("/enabled/join_chat"), FALSE);
310 purple_prefs_add_path(make_pref("/file/left_chat"), ""); 309 purple_prefs_add_path(make_pref("/file/join_chat"), "");
311 purple_prefs_add_bool(make_pref("/enabled/send_chat_msg"), FALSE); 310 purple_prefs_add_bool(make_pref("/enabled/left_chat"), FALSE);
312 purple_prefs_add_path(make_pref("/file/send_chat_msg"), ""); 311 purple_prefs_add_path(make_pref("/file/left_chat"), "");
313 purple_prefs_add_bool(make_pref("/enabled/chat_msg_recv"), FALSE); 312 purple_prefs_add_bool(make_pref("/enabled/send_chat_msg"), FALSE);
314 purple_prefs_add_path(make_pref("/file/chat_msg_recv"), ""); 313 purple_prefs_add_path(make_pref("/file/send_chat_msg"), "");
315 purple_prefs_add_bool(make_pref("/enabled/nick_said"), FALSE); 314 purple_prefs_add_bool(make_pref("/enabled/chat_msg_recv"), FALSE);
316 purple_prefs_add_path(make_pref("/file/nick_said"), ""); 315 purple_prefs_add_path(make_pref("/file/chat_msg_recv"), "");
317 purple_prefs_add_bool(make_pref("/enabled/pounce_default"), TRUE); 316 purple_prefs_add_bool(make_pref("/enabled/nick_said"), FALSE);
318 purple_prefs_add_path(make_pref("/file/pounce_default"), ""); 317 purple_prefs_add_path(make_pref("/file/nick_said"), "");
319 purple_prefs_add_bool(make_pref("/conv_focus"), TRUE); 318 purple_prefs_add_bool(make_pref("/enabled/pounce_default"), TRUE);
320 purple_prefs_add_bool(make_pref("/mute"), FALSE); 319 purple_prefs_add_path(make_pref("/file/pounce_default"), "");
321 purple_prefs_add_path(make_pref("/command"), ""); 320 purple_prefs_add_bool(make_pref("/conv_focus"), TRUE);
322 purple_prefs_add_string(make_pref("/method"), "automatic"); 321 purple_prefs_add_bool(make_pref("/mute"), FALSE);
323 purple_prefs_add_int(make_pref("/volume"), 50); 322 purple_prefs_add_path(make_pref("/command"), "");
324 } 323 purple_prefs_add_string(make_pref("/method"), "automatic");
324 purple_prefs_add_int(make_pref("/volume"), 50);
325 } 325 }
326 326
327 static void 327 static void
328 finch_sound_init(void) 328 finch_sound_init(void)
329 { 329 {
612 } 612 }
613 613
614 void 614 void
615 finch_sound_set_active_profile(const char *name) 615 finch_sound_set_active_profile(const char *name)
616 { 616 {
617 if(profile_exists(name)){ 617 if(profile_exists(name)) {
618 purple_prefs_set_string(FINCH_PREFS_ROOT "/sound/actprofile",name); 618 purple_prefs_set_string(FINCH_PREFS_ROOT "/sound/actprofile",name);
619 } 619 }
620 } 620 }
621 621
622 622
701 } 701 }
702 702
703 static void 703 static void
704 pref_save_cb(GntWidget *button, gpointer null) 704 pref_save_cb(GntWidget *button, gpointer null)
705 { 705 {
706 706 /* XXX: */
707 } 707 }
708 708
709 static void 709 static void
710 choose_cb(GntWidget *button, gpointer null) 710 choose_cb(GntWidget *button, gpointer null)
711 { 711 {
762 FinchSoundEvent * event = &sounds[i]; 762 FinchSoundEvent * event = &sounds[i];
763 gchar *boolpref; 763 gchar *boolpref;
764 gchar *filepref; 764 gchar *filepref;
765 const char * profile = finch_sound_get_active_profile(); 765 const char * profile = finch_sound_get_active_profile();
766 766
767 boolpref = g_strdup_printf(FINCH_PREFS_ROOT "/sound/profiles/%s/enabled/%s",profile,event->pref);
768
769 filepref = g_strdup_printf(FINCH_PREFS_ROOT "/sound/profiles/%s/file/%s",profile,event->pref); 767 filepref = g_strdup_printf(FINCH_PREFS_ROOT "/sound/profiles/%s/file/%s",profile,event->pref);
770 event->file = g_strdup(purple_prefs_get_path(filepref)); 768 event->file = g_strdup(purple_prefs_get_path(filepref));
771 if(event->label == NULL){ 769 g_free(filepref);
770 if (event->label == NULL) {
772 continue; 771 continue;
773 } 772 }
774 773
774 boolpref = g_strdup_printf(FINCH_PREFS_ROOT "/sound/profiles/%s/enabled/%s",profile,event->pref);
775 gnt_tree_change_text(GNT_TREE(pref_dialog->events),GINT_TO_POINTER(i),0,event->label); 775 gnt_tree_change_text(GNT_TREE(pref_dialog->events),GINT_TO_POINTER(i),0,event->label);
776 gnt_tree_change_text(GNT_TREE(pref_dialog->events),GINT_TO_POINTER(i),1,event->file[0] ? g_path_get_basename(event->file) : "(default)"); 776 gnt_tree_change_text(GNT_TREE(pref_dialog->events),GINT_TO_POINTER(i),1,event->file[0] ? g_path_get_basename(event->file) : "(default)");
777 gnt_tree_set_choice(GNT_TREE(pref_dialog->events),GINT_TO_POINTER(i),purple_prefs_get_bool(boolpref)); 777 gnt_tree_set_choice(GNT_TREE(pref_dialog->events),GINT_TO_POINTER(i),purple_prefs_get_bool(boolpref));
778 g_free(boolpref); 778 g_free(boolpref);
779 g_free(filepref);
780 } 779 }
781 } 780 }
782 781
783 void 782 void
784 finch_sounds_show_all(void) 783 finch_sounds_show_all(void)
785 { 784 {
786 GntWidget *box; GntWidget *cmbox; GntWidget *slider; 785 GntWidget *box, *cmbox, *slider;
787 GntWidget *entry; 786 GntWidget *entry;
788 GntWidget *chkbox; 787 GntWidget *chkbox;
789 GntWidget *button; 788 GntWidget *button;
790 GntWidget *label; 789 GntWidget *label;
791 GntWidget *tree; 790 GntWidget *tree;
792 GntWidget *win; 791 GntWidget *win;
793 792
794 GList *itr,*list; 793 GList *itr,*list;
795 gint i; 794 gint i;
796 795
797 if(pref_dialog){ 796 if(pref_dialog) {
798 gnt_window_present(pref_dialog->window); 797 gnt_window_present(pref_dialog->window);
799 return; 798 return;
800 } 799 }
801 800
802 pref_dialog = g_new0(SoundPrefDialog,1); 801 pref_dialog = g_new0(SoundPrefDialog,1);
815 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"esd","ESD"); 814 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"esd","ESD");
816 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"beep",_("Console Beep")); 815 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"beep",_("Console Beep"));
817 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"custom",_("Command")); 816 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"custom",_("Command"));
818 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"nosound",_("No Sound")); 817 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox),"nosound",_("No Sound"));
819 818
819 /* Sound method */
820 label = gnt_label_new_with_format(_("Sound Method"),GNT_TEXT_FLAG_BOLD); 820 label = gnt_label_new_with_format(_("Sound Method"),GNT_TEXT_FLAG_BOLD);
821 gnt_box_add_widget(GNT_BOX(win),label); 821 gnt_box_add_widget(GNT_BOX(win),label);
822 box = gnt_hbox_new(TRUE); 822 box = gnt_hbox_new(TRUE);
823 gnt_box_set_fill(GNT_BOX(box),FALSE); 823 gnt_box_set_fill(GNT_BOX(box),FALSE);
824 gnt_box_set_pad(GNT_BOX(box),0); 824 gnt_box_set_pad(GNT_BOX(box),0);
834 gnt_box_add_widget(GNT_BOX(box),entry); 834 gnt_box_add_widget(GNT_BOX(box),entry);
835 gnt_box_add_widget(GNT_BOX(win),box); 835 gnt_box_add_widget(GNT_BOX(win),box);
836 836
837 gnt_box_add_widget(GNT_BOX(win), gnt_line_new(FALSE)); 837 gnt_box_add_widget(GNT_BOX(win), gnt_line_new(FALSE));
838 838
839 /* Sound options */
839 gnt_box_add_widget(GNT_BOX(win),gnt_label_new_with_format(_("Sound Options"),GNT_TEXT_FLAG_BOLD)); 840 gnt_box_add_widget(GNT_BOX(win),gnt_label_new_with_format(_("Sound Options"),GNT_TEXT_FLAG_BOLD));
840 pref_dialog->conv_focus = chkbox = gnt_check_box_new(_("Sounds when conversation has focus")); 841 pref_dialog->conv_focus = chkbox = gnt_check_box_new(_("Sounds when conversation has focus"));
841 gnt_box_add_widget(GNT_BOX(win),chkbox); 842 gnt_box_add_widget(GNT_BOX(win),chkbox);
842 843
843 box = gnt_hbox_new(TRUE); 844 box = gnt_hbox_new(TRUE);
863 gnt_box_set_pad(GNT_BOX(box),1); 864 gnt_box_set_pad(GNT_BOX(box),1);
864 gnt_box_add_widget(GNT_BOX(box),slider); 865 gnt_box_add_widget(GNT_BOX(box),slider);
865 gnt_box_add_widget(GNT_BOX(box),label); 866 gnt_box_add_widget(GNT_BOX(box),label);
866 gnt_box_add_widget(GNT_BOX(win),box); 867 gnt_box_add_widget(GNT_BOX(win),box);
867 868
868 gnt_box_add_widget(GNT_BOX(win), gnt_line_new(FALSE)); 869 gnt_box_add_widget(GNT_BOX(win), gnt_hline_new());
869 870
871 /* Sound events */
870 gnt_box_add_widget(GNT_BOX(win),gnt_label_new_with_format(_("Sound Events"),GNT_TEXT_FLAG_BOLD)); 872 gnt_box_add_widget(GNT_BOX(win),gnt_label_new_with_format(_("Sound Events"),GNT_TEXT_FLAG_BOLD));
871 pref_dialog->events = tree = gnt_tree_new_with_columns(2); 873 pref_dialog->events = tree = gnt_tree_new_with_columns(2);
872 gnt_tree_set_column_titles(GNT_TREE(tree),_("Event"),_("File")); 874 gnt_tree_set_column_titles(GNT_TREE(tree),_("Event"),_("File"));
873 gnt_tree_set_show_title(GNT_TREE(tree),TRUE); 875 gnt_tree_set_show_title(GNT_TREE(tree),TRUE);
874 876
899 gnt_box_add_widget(GNT_BOX(box),button); 901 gnt_box_add_widget(GNT_BOX(box),button);
900 gnt_box_add_widget(GNT_BOX(win),box); 902 gnt_box_add_widget(GNT_BOX(win),box);
901 903
902 gnt_box_add_widget(GNT_BOX(win), gnt_line_new(FALSE)); 904 gnt_box_add_widget(GNT_BOX(win), gnt_line_new(FALSE));
903 905
906 /* Sound profiles */
904 gnt_box_add_widget(GNT_BOX(win),gnt_label_new_with_format(_("Profiles"),GNT_TEXT_FLAG_BOLD)); 907 gnt_box_add_widget(GNT_BOX(win),gnt_label_new_with_format(_("Profiles"),GNT_TEXT_FLAG_BOLD));
905 box = gnt_hbox_new(FALSE); 908 box = gnt_hbox_new(FALSE);
906 pref_dialog->profiles = cmbox = gnt_combo_box_new(); 909 pref_dialog->profiles = cmbox = gnt_combo_box_new();
907 list = itr = finch_sound_get_profiles(); 910 list = itr = finch_sound_get_profiles();
908 for(;itr;itr = itr->next){ 911 for(;itr;itr = itr->next){
955 PurpleSoundUiOps * 958 PurpleSoundUiOps *
956 finch_sound_get_ui_ops(void) 959 finch_sound_get_ui_ops(void)
957 { 960 {
958 return &sound_ui_ops; 961 return &sound_ui_ops;
959 } 962 }
963