Mercurial > pidgin.yaz
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 |