Mercurial > pidgin
annotate finch/gntsound.c @ 28868:f75c1323c996
*** Plucked rev 3976bac9dc1aafa42217dda56118316cb2fed956 (8e1d807c1aadfb510e14f047d2cf00e0c06be465):
If a buddy is deleted less than 11 seconds after they sign on or off, and
there is a conversation open with that buddy, the PurpleBuddy will be
dereferenced after it has been freed. This avoids that by duplicating the
required details from the PurpleBuddy for use in the status_timeout callback.
author | Daniel Atallah <daniel.atallah@gmail.com> |
---|---|
date | Thu, 07 Jan 2010 23:48:56 +0000 |
parents | 3723ac957c77 |
children | d6dff41a6d4c |
rev | line source |
---|---|
19100 | 1 /** |
19170
315fd66bb08f
Whitespace fix.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19167
diff
changeset
|
2 * @file gntsound.c GNT Sound API |
315fd66bb08f
Whitespace fix.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19167
diff
changeset
|
3 * @ingroup finch |
20074
6bf32c9e15a7
remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@gmail.com>
parents:
19760
diff
changeset
|
4 */ |
6bf32c9e15a7
remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@gmail.com>
parents:
19760
diff
changeset
|
5 |
6bf32c9e15a7
remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@gmail.com>
parents:
19760
diff
changeset
|
6 /* finch |
19170
315fd66bb08f
Whitespace fix.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19167
diff
changeset
|
7 * |
315fd66bb08f
Whitespace fix.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19167
diff
changeset
|
8 * Finch is the legal property of its developers, whose names are too numerous |
315fd66bb08f
Whitespace fix.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19167
diff
changeset
|
9 * to list here. Please refer to the COPYRIGHT file distributed with this |
315fd66bb08f
Whitespace fix.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19167
diff
changeset
|
10 * source distribution. |
315fd66bb08f
Whitespace fix.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19167
diff
changeset
|
11 * |
315fd66bb08f
Whitespace fix.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19167
diff
changeset
|
12 * This program is free software; you can redistribute it and/or modify |
315fd66bb08f
Whitespace fix.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19167
diff
changeset
|
13 * it under the terms of the GNU General Public License as published by |
315fd66bb08f
Whitespace fix.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19167
diff
changeset
|
14 * the Free Software Foundation; either version 2 of the License, or |
315fd66bb08f
Whitespace fix.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19167
diff
changeset
|
15 * (at your option) any later version. |
315fd66bb08f
Whitespace fix.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19167
diff
changeset
|
16 * |
315fd66bb08f
Whitespace fix.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19167
diff
changeset
|
17 * This program is distributed in the hope that it will be useful, |
315fd66bb08f
Whitespace fix.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19167
diff
changeset
|
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
315fd66bb08f
Whitespace fix.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19167
diff
changeset
|
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
315fd66bb08f
Whitespace fix.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19167
diff
changeset
|
20 * GNU General Public License for more details. |
315fd66bb08f
Whitespace fix.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19167
diff
changeset
|
21 * |
315fd66bb08f
Whitespace fix.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19167
diff
changeset
|
22 * You should have received a copy of the GNU General Public License |
315fd66bb08f
Whitespace fix.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19167
diff
changeset
|
23 * along with this program; if not, write to the Free Software |
19681
44b4e8bd759b
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
19447
diff
changeset
|
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
19170
315fd66bb08f
Whitespace fix.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19167
diff
changeset
|
25 */ |
19100 | 26 #include "finch.h" |
27587
f7c5bb2f6623
Don't include an internal header in the public finch headers.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
22924
diff
changeset
|
27 #include <internal.h> |
19100 | 28 |
29 #ifdef _WIN32 | |
30 #include <windows.h> | |
31 #include <mmsystem.h> | |
32 #endif | |
33 | |
34 #ifdef USE_GSTREAMER | |
35 #include <gst/gst.h> | |
36 #endif /* USE_GSTREAMER */ | |
37 | |
38 #include "debug.h" | |
39 #include "notify.h" | |
40 #include "prefs.h" | |
41 #include "sound.h" | |
42 #include "util.h" | |
43 | |
19447
1a9b30a95fa6
Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19411
diff
changeset
|
44 #include "gntconv.h" |
1a9b30a95fa6
Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19411
diff
changeset
|
45 |
19117
907c41608ada
Added Sounds to the actions list
Eric Polino <aluink@pidgin.im>
parents:
19115
diff
changeset
|
46 #include "gntbox.h" |
907c41608ada
Added Sounds to the actions list
Eric Polino <aluink@pidgin.im>
parents:
19115
diff
changeset
|
47 #include "gntwindow.h" |
907c41608ada
Added Sounds to the actions list
Eric Polino <aluink@pidgin.im>
parents:
19115
diff
changeset
|
48 #include "gntcombobox.h" |
907c41608ada
Added Sounds to the actions list
Eric Polino <aluink@pidgin.im>
parents:
19115
diff
changeset
|
49 #include "gntlabel.h" |
19100 | 50 #include "gntconv.h" |
51 #include "gntsound.h" | |
19117
907c41608ada
Added Sounds to the actions list
Eric Polino <aluink@pidgin.im>
parents:
19115
diff
changeset
|
52 #include "gntwidget.h" |
907c41608ada
Added Sounds to the actions list
Eric Polino <aluink@pidgin.im>
parents:
19115
diff
changeset
|
53 #include "gntentry.h" |
907c41608ada
Added Sounds to the actions list
Eric Polino <aluink@pidgin.im>
parents:
19115
diff
changeset
|
54 #include "gntcheckbox.h" |
19118
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
55 #include "gntline.h" |
19125
915ef65d68e3
Changed the volume changer to a GntSlider.
Eric Polino <aluink@pidgin.im>
parents:
19119
diff
changeset
|
56 #include "gntslider.h" |
19131
5da541d974a4
Fixed Cancel button callback
Eric Polino <aluink@pidgin.im>
parents:
19130
diff
changeset
|
57 #include "gnttree.h" |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
58 #include "gntfilesel.h" |
19100 | 59 |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
60 typedef struct { |
19141
fb880d1adb40
Fix a potential bug.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19139
diff
changeset
|
61 PurpleSoundEventID id; |
19100 | 62 char *label; |
63 char *pref; | |
64 char *def; | |
19134
0e4eeb6f6284
merged FinchSoundPrefEvent with FinchSoundEvent and removed id from FSE
Eric Polino <aluink@pidgin.im>
parents:
19132
diff
changeset
|
65 char *file; |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
66 } FinchSoundEvent; |
19100 | 67 |
19119
086cfcb71b01
Created SoundPrefDialog to store dialog data.
Eric Polino <aluink@pidgin.im>
parents:
19118
diff
changeset
|
68 typedef struct { |
086cfcb71b01
Created SoundPrefDialog to store dialog data.
Eric Polino <aluink@pidgin.im>
parents:
19118
diff
changeset
|
69 GntWidget *method; |
086cfcb71b01
Created SoundPrefDialog to store dialog data.
Eric Polino <aluink@pidgin.im>
parents:
19118
diff
changeset
|
70 GntWidget *command; |
086cfcb71b01
Created SoundPrefDialog to store dialog data.
Eric Polino <aluink@pidgin.im>
parents:
19118
diff
changeset
|
71 GntWidget *conv_focus; |
086cfcb71b01
Created SoundPrefDialog to store dialog data.
Eric Polino <aluink@pidgin.im>
parents:
19118
diff
changeset
|
72 GntWidget *while_status; |
086cfcb71b01
Created SoundPrefDialog to store dialog data.
Eric Polino <aluink@pidgin.im>
parents:
19118
diff
changeset
|
73 GntWidget *volume; |
19131
5da541d974a4
Fixed Cancel button callback
Eric Polino <aluink@pidgin.im>
parents:
19130
diff
changeset
|
74 GntWidget *events; |
19119
086cfcb71b01
Created SoundPrefDialog to store dialog data.
Eric Polino <aluink@pidgin.im>
parents:
19118
diff
changeset
|
75 GntWidget *window; |
19143
3bec25803a00
Fix a potential crash if the file-selector window is closed after the pref-window.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19142
diff
changeset
|
76 GntWidget *selector; |
19158
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
77 |
19146 | 78 GntWidget *profiles; |
19159
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
79 GntWidget *new_profile; |
19158
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
80 gchar * original_profile; |
19119
086cfcb71b01
Created SoundPrefDialog to store dialog data.
Eric Polino <aluink@pidgin.im>
parents:
19118
diff
changeset
|
81 } SoundPrefDialog; |
086cfcb71b01
Created SoundPrefDialog to store dialog data.
Eric Polino <aluink@pidgin.im>
parents:
19118
diff
changeset
|
82 |
19158
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
83 #define DEFAULT_PROFILE "default" |
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
84 |
19154
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
85 static SoundPrefDialog *pref_dialog; |
19118
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
86 |
19100 | 87 #define PLAY_SOUND_TIMEOUT 15000 |
88 | |
89 static guint mute_login_sounds_timeout = 0; | |
90 static gboolean mute_login_sounds = FALSE; | |
91 | |
92 #ifdef USE_GSTREAMER | |
93 static gboolean gst_init_failed; | |
94 #endif /* USE_GSTREAMER */ | |
95 | |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
96 static FinchSoundEvent sounds[PURPLE_NUM_SOUNDS] = { |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
97 {PURPLE_SOUND_BUDDY_ARRIVE, N_("Buddy logs in"), "login", "login.wav", NULL}, |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
98 {PURPLE_SOUND_BUDDY_LEAVE, N_("Buddy logs out"), "logout", "logout.wav", NULL}, |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
99 {PURPLE_SOUND_RECEIVE, N_("Message received"), "im_recv", "receive.wav", NULL}, |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
100 {PURPLE_SOUND_FIRST_RECEIVE, N_("Message received begins conversation"), "first_im_recv", "receive.wav", NULL}, |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
101 {PURPLE_SOUND_SEND, N_("Message sent"), "send_im", "send.wav", NULL}, |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
102 {PURPLE_SOUND_CHAT_JOIN, N_("Person enters chat"), "join_chat", "login.wav", NULL}, |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
103 {PURPLE_SOUND_CHAT_LEAVE, N_("Person leaves chat"), "left_chat", "logout.wav", NULL}, |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
104 {PURPLE_SOUND_CHAT_YOU_SAY, N_("You talk in chat"), "send_chat_msg", "send.wav", NULL}, |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
105 {PURPLE_SOUND_CHAT_SAY, N_("Others talk in chat"), "chat_msg_recv", "receive.wav", NULL}, |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
106 {PURPLE_SOUND_POUNCE_DEFAULT, NULL, "pounce_default", "alert.wav", NULL}, |
22794
cc8903c59d6b
Change the string "screen name" to "username" everywhere. I think most
Mark Doliner <mark@kingant.net>
parents:
22432
diff
changeset
|
107 {PURPLE_SOUND_CHAT_NICK, N_("Someone says your username in chat"), "nick_said", "alert.wav", NULL} |
19100 | 108 }; |
109 | |
19146 | 110 const char * |
111 finch_sound_get_active_profile() | |
112 { | |
113 return purple_prefs_get_string(FINCH_PREFS_ROOT "/sound/actprofile"); | |
114 } | |
115 | |
116 /* This method creates a pref name based on the current active profile. | |
117 * So if "Home" is the current active profile the pref name | |
118 * [FINCH_PREFS_ROOT "/sound/profiles/Home/$NAME"] is created. | |
119 */ | |
120 static gchar * | |
121 make_pref(const char *name) | |
122 { | |
19154
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
123 static char pref_string[512]; |
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
124 g_snprintf(pref_string, sizeof(pref_string), |
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
125 FINCH_PREFS_ROOT "/sound/profiles/%s%s", finch_sound_get_active_profile(), name); |
19146 | 126 return pref_string; |
127 } | |
128 | |
129 | |
19100 | 130 static gboolean |
131 unmute_login_sounds_cb(gpointer data) | |
132 { | |
133 mute_login_sounds = FALSE; | |
134 mute_login_sounds_timeout = 0; | |
135 return FALSE; | |
136 } | |
137 | |
138 static gboolean | |
139 chat_nick_matches_name(PurpleConversation *conv, const char *aname) | |
140 { | |
141 PurpleConvChat *chat = NULL; | |
142 char *nick = NULL; | |
143 char *name = NULL; | |
144 gboolean ret = FALSE; | |
22215
07c2b8fa7bb4
Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22007
diff
changeset
|
145 PurpleAccount *account; |
07c2b8fa7bb4
Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22007
diff
changeset
|
146 |
19100 | 147 chat = purple_conversation_get_chat_data(conv); |
19163
1e4630ee4b2a
Fix some crashes when adding new profiles with the same name.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19162
diff
changeset
|
148 if (chat == NULL) |
19100 | 149 return ret; |
150 | |
22215
07c2b8fa7bb4
Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22007
diff
changeset
|
151 account = purple_conversation_get_account(conv); |
07c2b8fa7bb4
Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22007
diff
changeset
|
152 nick = g_strdup(purple_normalize(account, chat->nick)); |
07c2b8fa7bb4
Update finch to not touch the internals of PurpleConversation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22007
diff
changeset
|
153 name = g_strdup(purple_normalize(account, aname)); |
19100 | 154 |
155 if (g_utf8_collate(nick, name) == 0) | |
156 ret = TRUE; | |
157 | |
158 g_free(nick); | |
159 g_free(name); | |
160 | |
161 return ret; | |
162 } | |
163 | |
164 /* | |
165 * play a sound event for a conversation, honoring make_sound flag | |
166 * of conversation and checking for focus if conv_focus pref is set | |
167 */ | |
168 static void | |
169 play_conv_event(PurpleConversation *conv, PurpleSoundEventID event) | |
170 { | |
171 /* If we should not play the sound for some reason, then exit early */ | |
172 if (conv != NULL) | |
173 { | |
174 FinchConv *gntconv; | |
175 gboolean has_focus; | |
176 | |
177 gntconv = FINCH_CONV(conv); | |
178 | |
179 has_focus = purple_conversation_has_focus(conv); | |
180 | |
19447
1a9b30a95fa6
Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19411
diff
changeset
|
181 if ((gntconv->flags & FINCH_CONV_NO_SOUND) || |
1a9b30a95fa6
Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19411
diff
changeset
|
182 (has_focus && !purple_prefs_get_bool(make_pref("/conv_focus")))) |
19100 | 183 { |
184 return; | |
185 } | |
186 } | |
187 | |
188 purple_sound_play_event(event, conv ? purple_conversation_get_account(conv) : NULL); | |
189 } | |
190 | |
191 static void | |
192 buddy_state_cb(PurpleBuddy *buddy, PurpleSoundEventID event) | |
193 { | |
194 purple_sound_play_event(event, purple_buddy_get_account(buddy)); | |
195 } | |
196 | |
197 static void | |
198 im_msg_received_cb(PurpleAccount *account, char *sender, | |
199 char *message, PurpleConversation *conv, | |
200 PurpleMessageFlags flags, PurpleSoundEventID event) | |
201 { | |
202 if (flags & PURPLE_MESSAGE_DELAYED) | |
203 return; | |
204 | |
19163
1e4630ee4b2a
Fix some crashes when adding new profiles with the same name.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19162
diff
changeset
|
205 if (conv == NULL) { |
19100 | 206 purple_sound_play_event(PURPLE_SOUND_FIRST_RECEIVE, account); |
19154
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
207 } else { |
19100 | 208 play_conv_event(conv, event); |
209 } | |
210 } | |
211 | |
212 static void | |
213 im_msg_sent_cb(PurpleAccount *account, const char *receiver, | |
214 const char *message, PurpleSoundEventID event) | |
215 { | |
216 PurpleConversation *conv = purple_find_conversation_with_account( | |
27688
3723ac957c77
Minor cleanup: This callback is also IM-only.
Paul Aurich <paul@darkrain42.org>
parents:
27587
diff
changeset
|
217 PURPLE_CONV_TYPE_IM, receiver, account); |
19100 | 218 play_conv_event(conv, event); |
219 } | |
220 | |
221 static void | |
222 chat_buddy_join_cb(PurpleConversation *conv, const char *name, | |
223 PurpleConvChatBuddyFlags flags, gboolean new_arrival, | |
224 PurpleSoundEventID event) | |
225 { | |
226 if (new_arrival && !chat_nick_matches_name(conv, name)) | |
227 play_conv_event(conv, event); | |
228 } | |
229 | |
230 static void | |
231 chat_buddy_left_cb(PurpleConversation *conv, const char *name, | |
232 const char *reason, PurpleSoundEventID event) | |
233 { | |
234 if (!chat_nick_matches_name(conv, name)) | |
235 play_conv_event(conv, event); | |
236 } | |
237 | |
238 static void | |
239 chat_msg_sent_cb(PurpleAccount *account, const char *message, | |
240 int id, PurpleSoundEventID event) | |
241 { | |
242 PurpleConnection *conn = purple_account_get_connection(account); | |
243 PurpleConversation *conv = NULL; | |
244 | |
245 if (conn!=NULL) | |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
246 conv = purple_find_chat(conn, id); |
19100 | 247 |
248 play_conv_event(conv, event); | |
249 } | |
250 | |
251 static void | |
252 chat_msg_received_cb(PurpleAccount *account, char *sender, | |
253 char *message, PurpleConversation *conv, | |
254 PurpleMessageFlags flags, PurpleSoundEventID event) | |
255 { | |
256 PurpleConvChat *chat; | |
257 | |
258 if (flags & PURPLE_MESSAGE_DELAYED) | |
259 return; | |
260 | |
261 chat = purple_conversation_get_chat_data(conv); | |
262 g_return_if_fail(chat != NULL); | |
263 | |
264 if (purple_conv_chat_is_user_ignored(chat, sender)) | |
265 return; | |
266 | |
267 if (chat_nick_matches_name(conv, sender)) | |
268 return; | |
269 | |
270 if (flags & PURPLE_MESSAGE_NICK || purple_utf8_has_word(message, chat->nick)) | |
271 play_conv_event(conv, PURPLE_SOUND_CHAT_NICK); | |
272 else | |
273 play_conv_event(conv, event); | |
274 } | |
275 | |
276 /* | |
277 * We mute sounds for the 10 seconds after you log in so that | |
278 * you don't get flooded with sounds when the blist shows all | |
279 * your buddies logging in. | |
280 */ | |
281 static void | |
282 account_signon_cb(PurpleConnection *gc, gpointer data) | |
283 { | |
284 if (mute_login_sounds_timeout != 0) | |
285 g_source_remove(mute_login_sounds_timeout); | |
286 mute_login_sounds = TRUE; | |
19154
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
287 mute_login_sounds_timeout = purple_timeout_add_seconds(10, unmute_login_sounds_cb, NULL); |
19100 | 288 } |
289 | |
19177
19a4594e939c
Fix a memory leak.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19170
diff
changeset
|
290 static void * |
22007
c38d72677c8a
Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@wiktel.com>
parents:
20074
diff
changeset
|
291 finch_sound_get_handle(void) |
19100 | 292 { |
293 static int handle; | |
294 | |
295 return &handle; | |
296 } | |
297 | |
19146 | 298 |
299 /* This gets called when the active profile changes */ | |
300 static void | |
19158
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
301 initialize_profile(const char *name, PurplePrefType type, gconstpointer val, gpointer null) |
19146 | 302 { |
19163
1e4630ee4b2a
Fix some crashes when adding new profiles with the same name.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19162
diff
changeset
|
303 if (purple_prefs_exists(make_pref(""))) |
19154
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
304 return; |
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
305 |
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
306 purple_prefs_add_none(make_pref("")); |
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
307 purple_prefs_add_none(make_pref("/enabled")); |
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
308 purple_prefs_add_none(make_pref("/file")); |
19298
b748d2408661
Don't enable the sounds by default.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19294
diff
changeset
|
309 purple_prefs_add_bool(make_pref("/enabled/login"), FALSE); |
19154
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
310 purple_prefs_add_path(make_pref("/file/login"), ""); |
19298
b748d2408661
Don't enable the sounds by default.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19294
diff
changeset
|
311 purple_prefs_add_bool(make_pref("/enabled/logout"), FALSE); |
19154
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
312 purple_prefs_add_path(make_pref("/file/logout"), ""); |
19298
b748d2408661
Don't enable the sounds by default.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19294
diff
changeset
|
313 purple_prefs_add_bool(make_pref("/enabled/im_recv"), FALSE); |
19154
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
314 purple_prefs_add_path(make_pref("/file/im_recv"), ""); |
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
315 purple_prefs_add_bool(make_pref("/enabled/first_im_recv"), FALSE); |
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
316 purple_prefs_add_path(make_pref("/file/first_im_recv"), ""); |
19298
b748d2408661
Don't enable the sounds by default.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19294
diff
changeset
|
317 purple_prefs_add_bool(make_pref("/enabled/send_im"), FALSE); |
19154
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
318 purple_prefs_add_path(make_pref("/file/send_im"), ""); |
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
319 purple_prefs_add_bool(make_pref("/enabled/join_chat"), FALSE); |
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
320 purple_prefs_add_path(make_pref("/file/join_chat"), ""); |
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
321 purple_prefs_add_bool(make_pref("/enabled/left_chat"), FALSE); |
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
322 purple_prefs_add_path(make_pref("/file/left_chat"), ""); |
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
323 purple_prefs_add_bool(make_pref("/enabled/send_chat_msg"), FALSE); |
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
324 purple_prefs_add_path(make_pref("/file/send_chat_msg"), ""); |
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
325 purple_prefs_add_bool(make_pref("/enabled/chat_msg_recv"), FALSE); |
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
326 purple_prefs_add_path(make_pref("/file/chat_msg_recv"), ""); |
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
327 purple_prefs_add_bool(make_pref("/enabled/nick_said"), FALSE); |
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
328 purple_prefs_add_path(make_pref("/file/nick_said"), ""); |
19298
b748d2408661
Don't enable the sounds by default.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19294
diff
changeset
|
329 purple_prefs_add_bool(make_pref("/enabled/pounce_default"), FALSE); |
19154
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
330 purple_prefs_add_path(make_pref("/file/pounce_default"), ""); |
19298
b748d2408661
Don't enable the sounds by default.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19294
diff
changeset
|
331 purple_prefs_add_bool(make_pref("/conv_focus"), FALSE); |
19154
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
332 purple_prefs_add_bool(make_pref("/mute"), FALSE); |
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
333 purple_prefs_add_path(make_pref("/command"), ""); |
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
334 purple_prefs_add_string(make_pref("/method"), "automatic"); |
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
335 purple_prefs_add_int(make_pref("/volume"), 50); |
19146 | 336 } |
337 | |
19100 | 338 static void |
339 finch_sound_init(void) | |
340 { | |
341 void *gnt_sound_handle = finch_sound_get_handle(); | |
342 void *blist_handle = purple_blist_get_handle(); | |
343 void *conv_handle = purple_conversations_get_handle(); | |
344 #ifdef USE_GSTREAMER | |
345 GError *error = NULL; | |
346 #endif | |
347 | |
348 purple_signal_connect(purple_connections_get_handle(), "signed-on", | |
349 gnt_sound_handle, PURPLE_CALLBACK(account_signon_cb), | |
350 NULL); | |
351 | |
352 purple_prefs_add_none(FINCH_PREFS_ROOT "/sound"); | |
19158
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
353 purple_prefs_add_string(FINCH_PREFS_ROOT "/sound/actprofile", DEFAULT_PROFILE); |
19146 | 354 purple_prefs_add_none(FINCH_PREFS_ROOT "/sound/profiles"); |
19100 | 355 |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
356 purple_prefs_connect_callback(gnt_sound_handle, FINCH_PREFS_ROOT "/sound/actprofile", initialize_profile, NULL); |
19146 | 357 purple_prefs_trigger_callback(FINCH_PREFS_ROOT "/sound/actprofile"); |
358 | |
359 | |
19100 | 360 #ifdef USE_GSTREAMER |
361 purple_debug_info("sound", "Initializing sound output drivers.\n"); | |
22432
b7be2d6f96a3
finch port of e4b22781 ('Tell gstreamer not to fork').
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22218
diff
changeset
|
362 #if (GST_VERSION_MAJOR > 0 || \ |
b7be2d6f96a3
finch port of e4b22781 ('Tell gstreamer not to fork').
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22218
diff
changeset
|
363 (GST_VERSION_MAJOR == 0 && GST_VERSION_MINOR > 10) || \ |
b7be2d6f96a3
finch port of e4b22781 ('Tell gstreamer not to fork').
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22218
diff
changeset
|
364 (GST_VERSION_MAJOR == 0 && GST_VERSION_MINOR == 10 && GST_VERSION_MICRO >= 10)) |
b7be2d6f96a3
finch port of e4b22781 ('Tell gstreamer not to fork').
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22218
diff
changeset
|
365 gst_registry_fork_set_enabled(FALSE); |
b7be2d6f96a3
finch port of e4b22781 ('Tell gstreamer not to fork').
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22218
diff
changeset
|
366 #endif |
19100 | 367 if ((gst_init_failed = !gst_init_check(NULL, NULL, &error))) { |
368 purple_notify_error(NULL, _("GStreamer Failure"), | |
369 _("GStreamer failed to initialize."), | |
370 error ? error->message : ""); | |
371 if (error) { | |
372 g_error_free(error); | |
373 error = NULL; | |
374 } | |
375 } | |
376 #endif /* USE_GSTREAMER */ | |
377 | |
378 purple_signal_connect(blist_handle, "buddy-signed-on", | |
379 gnt_sound_handle, PURPLE_CALLBACK(buddy_state_cb), | |
380 GINT_TO_POINTER(PURPLE_SOUND_BUDDY_ARRIVE)); | |
381 purple_signal_connect(blist_handle, "buddy-signed-off", | |
382 gnt_sound_handle, PURPLE_CALLBACK(buddy_state_cb), | |
383 GINT_TO_POINTER(PURPLE_SOUND_BUDDY_LEAVE)); | |
384 purple_signal_connect(conv_handle, "received-im-msg", | |
385 gnt_sound_handle, PURPLE_CALLBACK(im_msg_received_cb), | |
386 GINT_TO_POINTER(PURPLE_SOUND_RECEIVE)); | |
387 purple_signal_connect(conv_handle, "sent-im-msg", | |
388 gnt_sound_handle, PURPLE_CALLBACK(im_msg_sent_cb), | |
389 GINT_TO_POINTER(PURPLE_SOUND_SEND)); | |
390 purple_signal_connect(conv_handle, "chat-buddy-joined", | |
391 gnt_sound_handle, PURPLE_CALLBACK(chat_buddy_join_cb), | |
392 GINT_TO_POINTER(PURPLE_SOUND_CHAT_JOIN)); | |
393 purple_signal_connect(conv_handle, "chat-buddy-left", | |
394 gnt_sound_handle, PURPLE_CALLBACK(chat_buddy_left_cb), | |
395 GINT_TO_POINTER(PURPLE_SOUND_CHAT_LEAVE)); | |
396 purple_signal_connect(conv_handle, "sent-chat-msg", | |
397 gnt_sound_handle, PURPLE_CALLBACK(chat_msg_sent_cb), | |
398 GINT_TO_POINTER(PURPLE_SOUND_CHAT_YOU_SAY)); | |
399 purple_signal_connect(conv_handle, "received-chat-msg", | |
400 gnt_sound_handle, PURPLE_CALLBACK(chat_msg_received_cb), | |
401 GINT_TO_POINTER(PURPLE_SOUND_CHAT_SAY)); | |
402 } | |
403 | |
404 static void | |
405 finch_sound_uninit(void) | |
406 { | |
407 #ifdef USE_GSTREAMER | |
408 if (!gst_init_failed) | |
409 gst_deinit(); | |
410 #endif | |
411 | |
412 purple_signals_disconnect_by_handle(finch_sound_get_handle()); | |
413 } | |
414 | |
415 #ifdef USE_GSTREAMER | |
416 static gboolean | |
417 bus_call (GstBus *bus, GstMessage *msg, gpointer data) | |
418 { | |
419 GstElement *play = data; | |
420 GError *err = NULL; | |
421 | |
422 switch (GST_MESSAGE_TYPE (msg)) { | |
423 case GST_MESSAGE_ERROR: | |
424 gst_message_parse_error(msg, &err, NULL); | |
19185
cdb0fbe5de7b
Print debug messages appropriately.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19184
diff
changeset
|
425 purple_debug_error("gstreamer", "%s\n", err->message); |
19100 | 426 g_error_free(err); |
19384
630938110521
Cleanup playbin on error. Thanks, Elliott Sales de Andrade. Fixes #2663
Sean Egan <seanegan@gmail.com>
parents:
19298
diff
changeset
|
427 /* fall-through and clean up */ |
630938110521
Cleanup playbin on error. Thanks, Elliott Sales de Andrade. Fixes #2663
Sean Egan <seanegan@gmail.com>
parents:
19298
diff
changeset
|
428 case GST_MESSAGE_EOS: |
630938110521
Cleanup playbin on error. Thanks, Elliott Sales de Andrade. Fixes #2663
Sean Egan <seanegan@gmail.com>
parents:
19298
diff
changeset
|
429 gst_element_set_state(play, GST_STATE_NULL); |
630938110521
Cleanup playbin on error. Thanks, Elliott Sales de Andrade. Fixes #2663
Sean Egan <seanegan@gmail.com>
parents:
19298
diff
changeset
|
430 gst_object_unref(GST_OBJECT(play)); |
19100 | 431 break; |
432 case GST_MESSAGE_WARNING: | |
433 gst_message_parse_warning(msg, &err, NULL); | |
19185
cdb0fbe5de7b
Print debug messages appropriately.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19184
diff
changeset
|
434 purple_debug_warning("gstreamer", "%s\n", err->message); |
19100 | 435 g_error_free(err); |
436 break; | |
437 default: | |
438 break; | |
439 } | |
440 return TRUE; | |
441 } | |
442 #endif | |
443 | |
444 static void | |
445 finch_sound_play_file(const char *filename) | |
446 { | |
447 const char *method; | |
448 #ifdef USE_GSTREAMER | |
449 float volume; | |
450 char *uri; | |
451 GstElement *sink = NULL; | |
452 GstElement *play = NULL; | |
453 GstBus *bus = NULL; | |
454 #endif | |
19146 | 455 if (purple_prefs_get_bool(make_pref("/mute"))) |
19100 | 456 return; |
457 | |
19146 | 458 method = purple_prefs_get_string(make_pref("/method")); |
19100 | 459 |
19294
ed80bace0934
leak fix, and fix nosound
Richard Nelson <wabz@pidgin.im>
parents:
19185
diff
changeset
|
460 if (!strcmp(method, "nosound")) { |
19100 | 461 return; |
462 } else if (!strcmp(method, "beep")) { | |
463 beep(); | |
464 return; | |
465 } | |
466 | |
467 if (!g_file_test(filename, G_FILE_TEST_EXISTS)) { | |
468 purple_debug_error("gntsound", "sound file (%s) does not exist.\n", filename); | |
469 return; | |
470 } | |
471 | |
472 #ifndef _WIN32 | |
473 if (!strcmp(method, "custom")) { | |
474 const char *sound_cmd; | |
475 char *command; | |
476 char *esc_filename; | |
477 GError *error = NULL; | |
478 | |
19146 | 479 sound_cmd = purple_prefs_get_path(make_pref("/command")); |
19100 | 480 |
481 if (!sound_cmd || *sound_cmd == '\0') { | |
482 purple_debug_error("gntsound", | |
483 "'Command' sound method has been chosen, " | |
484 "but no command has been set."); | |
485 return; | |
486 } | |
487 | |
488 esc_filename = g_shell_quote(filename); | |
489 | |
19163
1e4630ee4b2a
Fix some crashes when adding new profiles with the same name.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19162
diff
changeset
|
490 if (strstr(sound_cmd, "%s")) |
19100 | 491 command = purple_strreplace(sound_cmd, "%s", esc_filename); |
492 else | |
493 command = g_strdup_printf("%s %s", sound_cmd, esc_filename); | |
494 | |
19163
1e4630ee4b2a
Fix some crashes when adding new profiles with the same name.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19162
diff
changeset
|
495 if (!g_spawn_command_line_async(command, &error)) { |
19100 | 496 purple_debug_error("gntsound", "sound command could not be launched: %s\n", error->message); |
497 g_error_free(error); | |
498 } | |
499 | |
500 g_free(esc_filename); | |
501 g_free(command); | |
502 return; | |
503 } | |
504 #ifdef USE_GSTREAMER | |
505 if (gst_init_failed) /* Perhaps do beep instead? */ | |
506 return; | |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
507 volume = (float)(CLAMP(purple_prefs_get_int(make_pref("/volume")), 0, 100)) / 50; |
19100 | 508 if (!strcmp(method, "automatic")) { |
509 if (purple_running_gnome()) { | |
510 sink = gst_element_factory_make("gconfaudiosink", "sink"); | |
511 } | |
512 if (!sink) | |
513 sink = gst_element_factory_make("autoaudiosink", "sink"); | |
514 if (!sink) { | |
515 purple_debug_error("sound", "Unable to create GStreamer audiosink.\n"); | |
516 return; | |
517 } | |
518 } else if (!strcmp(method, "esd")) { | |
519 sink = gst_element_factory_make("esdsink", "sink"); | |
520 if (!sink) { | |
521 purple_debug_error("sound", "Unable to create GStreamer audiosink.\n"); | |
522 return; | |
523 } | |
524 } else if (!strcmp(method, "alsa")) { | |
525 sink = gst_element_factory_make("alsasink", "sink"); | |
526 if (!sink) { | |
527 purple_debug_error("sound", "Unable to create GStreamer audiosink.\n"); | |
528 return; | |
529 } | |
530 } else { | |
531 purple_debug_error("sound", "Unknown sound method '%s'\n", method); | |
532 return; | |
533 } | |
534 | |
535 play = gst_element_factory_make("playbin", "play"); | |
536 | |
537 if (play == NULL) { | |
538 return; | |
539 } | |
540 | |
541 uri = g_strdup_printf("file://%s", filename); | |
542 | |
543 g_object_set(G_OBJECT(play), "uri", uri, | |
544 "volume", volume, | |
545 "audio-sink", sink, NULL); | |
546 | |
547 bus = gst_pipeline_get_bus(GST_PIPELINE(play)); | |
548 gst_bus_add_watch(bus, bus_call, play); | |
549 | |
550 gst_element_set_state(play, GST_STATE_PLAYING); | |
551 | |
552 gst_object_unref(bus); | |
553 g_free(uri); | |
554 | |
555 #else /* USE_GSTREAMER */ | |
556 beep(); | |
557 return; | |
558 #endif /* USE_GSTREAMER */ | |
559 #else /* _WIN32 */ | |
560 purple_debug_info("sound", "Playing %s\n", filename); | |
561 | |
562 if (G_WIN32_HAVE_WIDECHAR_API ()) { | |
563 wchar_t *wc_filename = g_utf8_to_utf16(filename, | |
564 -1, NULL, NULL, NULL); | |
565 if (!PlaySoundW(wc_filename, NULL, SND_ASYNC | SND_FILENAME)) | |
566 purple_debug(PURPLE_DEBUG_ERROR, "sound", "Error playing sound.\n"); | |
567 g_free(wc_filename); | |
568 } else { | |
569 char *l_filename = g_locale_from_utf8(filename, | |
570 -1, NULL, NULL, NULL); | |
571 if (!PlaySoundA(l_filename, NULL, SND_ASYNC | SND_FILENAME)) | |
572 purple_debug(PURPLE_DEBUG_ERROR, "sound", "Error playing sound.\n"); | |
573 g_free(l_filename); | |
574 } | |
575 #endif /* _WIN32 */ | |
576 } | |
577 | |
578 static void | |
579 finch_sound_play_event(PurpleSoundEventID event) | |
580 { | |
581 char *enable_pref; | |
582 char *file_pref; | |
583 if ((event == PURPLE_SOUND_BUDDY_ARRIVE) && mute_login_sounds) | |
584 return; | |
585 | |
586 if (event >= PURPLE_NUM_SOUNDS) { | |
587 purple_debug_error("sound", "got request for unknown sound: %d\n", event); | |
588 return; | |
589 } | |
590 | |
19146 | 591 enable_pref = g_strdup_printf(FINCH_PREFS_ROOT "/sound/profiles/%s/enabled/%s", |
592 finch_sound_get_active_profile(), | |
19100 | 593 sounds[event].pref); |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
594 file_pref = g_strdup_printf(FINCH_PREFS_ROOT "/sound/profiles/%s/file/%s", finch_sound_get_active_profile(), sounds[event].pref); |
19100 | 595 |
596 /* check NULL for sounds that don't have an option, ie buddy pounce */ | |
597 if (purple_prefs_get_bool(enable_pref)) { | |
598 char *filename = g_strdup(purple_prefs_get_path(file_pref)); | |
19163
1e4630ee4b2a
Fix some crashes when adding new profiles with the same name.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19162
diff
changeset
|
599 if (!filename || !strlen(filename)) { |
19100 | 600 g_free(filename); |
19115 | 601 /* XXX Consider creating a constant for "sounds/purple" to be shared with Pidgin */ |
602 filename = g_build_filename(DATADIR, "sounds", "purple", sounds[event].def, NULL); | |
19100 | 603 } |
604 | |
605 purple_sound_play_file(filename, NULL); | |
606 g_free(filename); | |
607 } | |
608 | |
609 g_free(enable_pref); | |
610 g_free(file_pref); | |
611 } | |
612 | |
19146 | 613 GList * |
614 finch_sound_get_profiles() | |
615 { | |
19156
f65c287e466e
Update the way _get_children_names is used.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19154
diff
changeset
|
616 GList *list = NULL, *iter; |
f65c287e466e
Update the way _get_children_names is used.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19154
diff
changeset
|
617 iter = purple_prefs_get_children_names(FINCH_PREFS_ROOT "/sound/profiles"); |
f65c287e466e
Update the way _get_children_names is used.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19154
diff
changeset
|
618 while (iter) { |
f65c287e466e
Update the way _get_children_names is used.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19154
diff
changeset
|
619 list = g_list_append(list, g_strdup(strrchr(iter->data, '/') + 1)); |
f65c287e466e
Update the way _get_children_names is used.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19154
diff
changeset
|
620 g_free(iter->data); |
f65c287e466e
Update the way _get_children_names is used.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19154
diff
changeset
|
621 iter = g_list_delete_link(iter, iter); |
f65c287e466e
Update the way _get_children_names is used.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19154
diff
changeset
|
622 } |
f65c287e466e
Update the way _get_children_names is used.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19154
diff
changeset
|
623 return list; |
19146 | 624 } |
625 | |
19158
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
626 /* This will also create it if it doesn't exist */ |
19146 | 627 void |
628 finch_sound_set_active_profile(const char *name) | |
629 { | |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
630 purple_prefs_set_string(FINCH_PREFS_ROOT "/sound/actprofile", name); |
19146 | 631 } |
632 | |
19177
19a4594e939c
Fix a memory leak.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19170
diff
changeset
|
633 static gboolean |
19170
315fd66bb08f
Whitespace fix.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19167
diff
changeset
|
634 finch_sound_profile_exists(const char *name) |
315fd66bb08f
Whitespace fix.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19167
diff
changeset
|
635 { |
19160
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
636 gchar * tmp; |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
637 gboolean ret = purple_prefs_exists(tmp = g_strdup_printf(FINCH_PREFS_ROOT "/sound/profiles/%s", name)); |
19160
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
638 g_free(tmp); |
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
639 return ret; |
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
640 } |
19146 | 641 |
19130
d5a0b09470ee
Cleaned up a few poorly written "activate" callbacks.
Eric Polino <aluink@pidgin.im>
parents:
19129
diff
changeset
|
642 static void |
d5a0b09470ee
Cleaned up a few poorly written "activate" callbacks.
Eric Polino <aluink@pidgin.im>
parents:
19129
diff
changeset
|
643 save_cb(GntWidget *button, gpointer win) |
19118
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
644 { |
19134
0e4eeb6f6284
merged FinchSoundPrefEvent with FinchSoundEvent and removed id from FSE
Eric Polino <aluink@pidgin.im>
parents:
19132
diff
changeset
|
645 GList * itr; |
19131
5da541d974a4
Fixed Cancel button callback
Eric Polino <aluink@pidgin.im>
parents:
19130
diff
changeset
|
646 |
19146 | 647 purple_prefs_set_string(make_pref("/method"), gnt_combo_box_get_selected_data(GNT_COMBO_BOX(pref_dialog->method))); |
648 purple_prefs_set_path(make_pref("/command"), gnt_entry_get_text(GNT_ENTRY(pref_dialog->command))); | |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
649 purple_prefs_set_bool(make_pref("/conv_focus"), gnt_check_box_get_checked(GNT_CHECK_BOX(pref_dialog->conv_focus))); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
650 purple_prefs_set_int("/purple/sound/while_status", GPOINTER_TO_INT(gnt_combo_box_get_selected_data(GNT_COMBO_BOX(pref_dialog->while_status)))); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
651 purple_prefs_set_int(make_pref("/volume"), gnt_slider_get_value(GNT_SLIDER(pref_dialog->volume))); |
19129 | 652 |
19163
1e4630ee4b2a
Fix some crashes when adding new profiles with the same name.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19162
diff
changeset
|
653 for (itr = gnt_tree_get_rows(GNT_TREE(pref_dialog->events)); itr; itr = itr->next) { |
19134
0e4eeb6f6284
merged FinchSoundPrefEvent with FinchSoundEvent and removed id from FSE
Eric Polino <aluink@pidgin.im>
parents:
19132
diff
changeset
|
654 FinchSoundEvent * event = &sounds[GPOINTER_TO_INT(itr->data)]; |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
655 char * filepref = g_strdup_printf(FINCH_PREFS_ROOT "/sound/profiles/%s/file/%s", finch_sound_get_active_profile(), event->pref); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
656 char * boolpref = g_strdup_printf(FINCH_PREFS_ROOT "/sound/profiles/%s/enabled/%s", finch_sound_get_active_profile(), event->pref); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
657 purple_prefs_set_bool(boolpref, gnt_tree_get_choice(GNT_TREE(pref_dialog->events), itr->data)); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
658 purple_prefs_set_path(filepref, event->file ? event->file : ""); |
19134
0e4eeb6f6284
merged FinchSoundPrefEvent with FinchSoundEvent and removed id from FSE
Eric Polino <aluink@pidgin.im>
parents:
19132
diff
changeset
|
659 g_free(filepref); |
19137 | 660 g_free(boolpref); |
19131
5da541d974a4
Fixed Cancel button callback
Eric Polino <aluink@pidgin.im>
parents:
19130
diff
changeset
|
661 } |
19119
086cfcb71b01
Created SoundPrefDialog to store dialog data.
Eric Polino <aluink@pidgin.im>
parents:
19118
diff
changeset
|
662 gnt_widget_destroy(GNT_WIDGET(win)); |
19118
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
663 } |
19141
fb880d1adb40
Fix a potential bug.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19139
diff
changeset
|
664 |
19130
d5a0b09470ee
Cleaned up a few poorly written "activate" callbacks.
Eric Polino <aluink@pidgin.im>
parents:
19129
diff
changeset
|
665 static void |
19141
fb880d1adb40
Fix a potential bug.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19139
diff
changeset
|
666 file_cb(GntFileSel *w, const char *path, const char *file, gpointer data) |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
667 { |
19141
fb880d1adb40
Fix a potential bug.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19139
diff
changeset
|
668 FinchSoundEvent *event = data; |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
669 |
19134
0e4eeb6f6284
merged FinchSoundPrefEvent with FinchSoundEvent and removed id from FSE
Eric Polino <aluink@pidgin.im>
parents:
19132
diff
changeset
|
670 g_free(event->file); |
19141
fb880d1adb40
Fix a potential bug.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19139
diff
changeset
|
671 event->file = g_strdup(path); |
19139
2d0925800d72
Made the display of files for sound events cleaner
Eric Polino <aluink@pidgin.im>
parents:
19137
diff
changeset
|
672 |
19141
fb880d1adb40
Fix a potential bug.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19139
diff
changeset
|
673 gnt_tree_change_text(GNT_TREE(pref_dialog->events), GINT_TO_POINTER(event->id), 1, file); |
19184
6902517cdfe6
Fix a couple of memory leaks.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19183
diff
changeset
|
674 gnt_tree_set_choice(GNT_TREE(pref_dialog->events), GINT_TO_POINTER(event->id), TRUE); |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
675 |
19141
fb880d1adb40
Fix a potential bug.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19139
diff
changeset
|
676 gnt_widget_destroy(GNT_WIDGET(w)); |
19118
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
677 } |
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
678 |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
679 static void |
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
680 test_cb(GntWidget *button, gpointer null) |
19118
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
681 { |
19134
0e4eeb6f6284
merged FinchSoundPrefEvent with FinchSoundEvent and removed id from FSE
Eric Polino <aluink@pidgin.im>
parents:
19132
diff
changeset
|
682 PurpleSoundEventID id = GPOINTER_TO_INT(gnt_tree_get_selection_data(GNT_TREE(pref_dialog->events))); |
0e4eeb6f6284
merged FinchSoundPrefEvent with FinchSoundEvent and removed id from FSE
Eric Polino <aluink@pidgin.im>
parents:
19132
diff
changeset
|
683 FinchSoundEvent * event = &sounds[id]; |
19402
e95555316216
Use the changed volume when 'Test'ing.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19384
diff
changeset
|
684 char *enabled, *file, *tmpfile, *volpref; |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
685 gboolean temp_value; |
19402
e95555316216
Use the changed volume when 'Test'ing.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19384
diff
changeset
|
686 int volume; |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
687 |
19184
6902517cdfe6
Fix a couple of memory leaks.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19183
diff
changeset
|
688 enabled = g_strdup_printf(FINCH_PREFS_ROOT "/sound/profiles/%s/enabled/%s", |
6902517cdfe6
Fix a couple of memory leaks.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19183
diff
changeset
|
689 finch_sound_get_active_profile(), event->pref); |
6902517cdfe6
Fix a couple of memory leaks.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19183
diff
changeset
|
690 file = g_strdup_printf(FINCH_PREFS_ROOT "/sound/profiles/%s/file/%s", |
6902517cdfe6
Fix a couple of memory leaks.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19183
diff
changeset
|
691 finch_sound_get_active_profile(), event->pref); |
19402
e95555316216
Use the changed volume when 'Test'ing.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19384
diff
changeset
|
692 volpref = g_strdup(make_pref("/volume")); |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
693 |
19184
6902517cdfe6
Fix a couple of memory leaks.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19183
diff
changeset
|
694 temp_value = purple_prefs_get_bool(enabled); |
19760
96d4a3238029
Fix a small bug in sound-test, thanks to igungor in #pidgin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
695 tmpfile = g_strdup(purple_prefs_get_path(file)); |
19402
e95555316216
Use the changed volume when 'Test'ing.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19384
diff
changeset
|
696 volume = purple_prefs_get_int(volpref); |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
697 |
19760
96d4a3238029
Fix a small bug in sound-test, thanks to igungor in #pidgin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
698 purple_prefs_set_path(file, event->file); |
19184
6902517cdfe6
Fix a couple of memory leaks.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19183
diff
changeset
|
699 if (!temp_value) purple_prefs_set_bool(enabled, TRUE); |
19402
e95555316216
Use the changed volume when 'Test'ing.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19384
diff
changeset
|
700 purple_prefs_set_int(volpref, gnt_slider_get_value(GNT_SLIDER(pref_dialog->volume))); |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
701 |
19134
0e4eeb6f6284
merged FinchSoundPrefEvent with FinchSoundEvent and removed id from FSE
Eric Polino <aluink@pidgin.im>
parents:
19132
diff
changeset
|
702 purple_sound_play_event(id, NULL); |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
703 |
19184
6902517cdfe6
Fix a couple of memory leaks.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19183
diff
changeset
|
704 if (!temp_value) purple_prefs_set_bool(enabled, FALSE); |
19760
96d4a3238029
Fix a small bug in sound-test, thanks to igungor in #pidgin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
705 purple_prefs_set_path(file, tmpfile); |
19402
e95555316216
Use the changed volume when 'Test'ing.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19384
diff
changeset
|
706 purple_prefs_set_int(volpref, volume); |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
707 |
19184
6902517cdfe6
Fix a couple of memory leaks.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19183
diff
changeset
|
708 g_free(enabled); |
6902517cdfe6
Fix a couple of memory leaks.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19183
diff
changeset
|
709 g_free(file); |
6902517cdfe6
Fix a couple of memory leaks.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19183
diff
changeset
|
710 g_free(tmpfile); |
19402
e95555316216
Use the changed volume when 'Test'ing.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19384
diff
changeset
|
711 g_free(volpref); |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
712 } |
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
713 |
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
714 static void |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
715 reset_cb(GntWidget *button, gpointer null) |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
716 { |
19134
0e4eeb6f6284
merged FinchSoundPrefEvent with FinchSoundEvent and removed id from FSE
Eric Polino <aluink@pidgin.im>
parents:
19132
diff
changeset
|
717 /* Don't dereference this pointer ! */ |
0e4eeb6f6284
merged FinchSoundPrefEvent with FinchSoundEvent and removed id from FSE
Eric Polino <aluink@pidgin.im>
parents:
19132
diff
changeset
|
718 gpointer key = gnt_tree_get_selection_data(GNT_TREE(pref_dialog->events)); |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
719 |
19134
0e4eeb6f6284
merged FinchSoundPrefEvent with FinchSoundEvent and removed id from FSE
Eric Polino <aluink@pidgin.im>
parents:
19132
diff
changeset
|
720 FinchSoundEvent * event = &sounds[GPOINTER_TO_INT(key)]; |
0e4eeb6f6284
merged FinchSoundPrefEvent with FinchSoundEvent and removed id from FSE
Eric Polino <aluink@pidgin.im>
parents:
19132
diff
changeset
|
721 g_free(event->file); |
0e4eeb6f6284
merged FinchSoundPrefEvent with FinchSoundEvent and removed id from FSE
Eric Polino <aluink@pidgin.im>
parents:
19132
diff
changeset
|
722 event->file = NULL; |
19183
772670b9e9f8
Mark a string for translation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19182
diff
changeset
|
723 gnt_tree_change_text(GNT_TREE(pref_dialog->events), key, 1, _("(default)")); |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
724 } |
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
725 |
19146 | 726 |
727 static void | |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
728 choose_cb(GntWidget *button, gpointer null) |
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
729 { |
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
730 GntWidget *w = gnt_file_sel_new(); |
19141
fb880d1adb40
Fix a potential bug.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19139
diff
changeset
|
731 GntFileSel *sel = GNT_FILE_SEL(w); |
fb880d1adb40
Fix a potential bug.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19139
diff
changeset
|
732 PurpleSoundEventID id = GPOINTER_TO_INT(gnt_tree_get_selection_data(GNT_TREE(pref_dialog->events))); |
fb880d1adb40
Fix a potential bug.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19139
diff
changeset
|
733 FinchSoundEvent * event = &sounds[id]; |
19143
3bec25803a00
Fix a potential crash if the file-selector window is closed after the pref-window.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19142
diff
changeset
|
734 char *path = NULL; |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
735 |
19184
6902517cdfe6
Fix a couple of memory leaks.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19183
diff
changeset
|
736 gnt_box_set_title(GNT_BOX(w), _("Select Sound File ...")); |
19141
fb880d1adb40
Fix a potential bug.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19139
diff
changeset
|
737 gnt_file_sel_set_current_location(sel, |
19143
3bec25803a00
Fix a potential crash if the file-selector window is closed after the pref-window.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19142
diff
changeset
|
738 (event && event->file) ? (path = g_path_get_dirname(event->file)) |
3bec25803a00
Fix a potential crash if the file-selector window is closed after the pref-window.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19142
diff
changeset
|
739 : purple_home_dir()); |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
740 |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
741 g_signal_connect_swapped(G_OBJECT(sel->cancel), "activate", G_CALLBACK(gnt_widget_destroy), sel); |
19141
fb880d1adb40
Fix a potential bug.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19139
diff
changeset
|
742 g_signal_connect(G_OBJECT(sel), "file_selected", G_CALLBACK(file_cb), event); |
19143
3bec25803a00
Fix a potential crash if the file-selector window is closed after the pref-window.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19142
diff
changeset
|
743 g_signal_connect_swapped(G_OBJECT(sel), "destroy", G_CALLBACK(g_nullify_pointer), &pref_dialog->selector); |
3bec25803a00
Fix a potential crash if the file-selector window is closed after the pref-window.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19142
diff
changeset
|
744 |
3bec25803a00
Fix a potential crash if the file-selector window is closed after the pref-window.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19142
diff
changeset
|
745 /* If there's an already open file-selector, close that one. */ |
3bec25803a00
Fix a potential crash if the file-selector window is closed after the pref-window.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19142
diff
changeset
|
746 if (pref_dialog->selector) |
3bec25803a00
Fix a potential crash if the file-selector window is closed after the pref-window.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19142
diff
changeset
|
747 gnt_widget_destroy(pref_dialog->selector); |
3bec25803a00
Fix a potential crash if the file-selector window is closed after the pref-window.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19142
diff
changeset
|
748 |
3bec25803a00
Fix a potential crash if the file-selector window is closed after the pref-window.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19142
diff
changeset
|
749 pref_dialog->selector = w; |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
750 |
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
751 gnt_widget_show(w); |
19143
3bec25803a00
Fix a potential crash if the file-selector window is closed after the pref-window.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19142
diff
changeset
|
752 g_free(path); |
19118
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
753 } |
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
754 |
19128 | 755 static void |
756 release_pref_dialog(GntBindable *data, gpointer null) | |
19125
915ef65d68e3
Changed the volume changer to a GntSlider.
Eric Polino <aluink@pidgin.im>
parents:
19119
diff
changeset
|
757 { |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
758 GList * itr; |
19163
1e4630ee4b2a
Fix some crashes when adding new profiles with the same name.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19162
diff
changeset
|
759 for (itr = gnt_tree_get_rows(GNT_TREE(pref_dialog->events)); itr; itr = itr->next) { |
19134
0e4eeb6f6284
merged FinchSoundPrefEvent with FinchSoundEvent and removed id from FSE
Eric Polino <aluink@pidgin.im>
parents:
19132
diff
changeset
|
760 PurpleSoundEventID id = GPOINTER_TO_INT(itr->data); |
0e4eeb6f6284
merged FinchSoundPrefEvent with FinchSoundEvent and removed id from FSE
Eric Polino <aluink@pidgin.im>
parents:
19132
diff
changeset
|
761 FinchSoundEvent * e = &sounds[id]; |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
762 g_free(e->file); |
19184
6902517cdfe6
Fix a couple of memory leaks.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19183
diff
changeset
|
763 e->file = NULL; |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
764 } |
19143
3bec25803a00
Fix a potential crash if the file-selector window is closed after the pref-window.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19142
diff
changeset
|
765 if (pref_dialog->selector) |
3bec25803a00
Fix a potential crash if the file-selector window is closed after the pref-window.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19142
diff
changeset
|
766 gnt_widget_destroy(pref_dialog->selector); |
19294
ed80bace0934
leak fix, and fix nosound
Richard Nelson <wabz@pidgin.im>
parents:
19185
diff
changeset
|
767 g_free(pref_dialog->original_profile); |
19128 | 768 g_free(pref_dialog); |
769 pref_dialog = NULL; | |
19118
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
770 } |
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
771 |
19146 | 772 static void |
19158
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
773 load_pref_window(const char * profile) |
19146 | 774 { |
775 gint i; | |
19158
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
776 |
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
777 finch_sound_set_active_profile(profile); |
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
778 |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
779 gnt_combo_box_set_selected(GNT_COMBO_BOX(pref_dialog->method), (gchar *)purple_prefs_get_string(make_pref("/method"))); |
19158
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
780 |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
781 gnt_entry_set_text(GNT_ENTRY(pref_dialog->command), purple_prefs_get_path(make_pref("/command"))); |
19158
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
782 |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
783 gnt_check_box_set_checked(GNT_CHECK_BOX(pref_dialog->conv_focus), purple_prefs_get_bool(make_pref("/conv_focus"))); |
19158
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
784 |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
785 gnt_combo_box_set_selected(GNT_COMBO_BOX(pref_dialog->while_status), GINT_TO_POINTER(purple_prefs_get_int("/purple" "/sound/while_status"))); |
19158
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
786 |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
787 gnt_slider_set_value(GNT_SLIDER(pref_dialog->volume), CLAMP(purple_prefs_get_int(make_pref("/volume")), 0, 100)); |
19158
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
788 |
19163
1e4630ee4b2a
Fix some crashes when adding new profiles with the same name.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19162
diff
changeset
|
789 for (i = 0; i < PURPLE_NUM_SOUNDS; i++) { |
19146 | 790 FinchSoundEvent * event = &sounds[i]; |
791 gchar *boolpref; | |
19184
6902517cdfe6
Fix a couple of memory leaks.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19183
diff
changeset
|
792 gchar *filepref, *basename = NULL; |
19146 | 793 const char * profile = finch_sound_get_active_profile(); |
794 | |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
795 filepref = g_strdup_printf(FINCH_PREFS_ROOT "/sound/profiles/%s/file/%s", profile, event->pref); |
19158
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
796 |
19184
6902517cdfe6
Fix a couple of memory leaks.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19183
diff
changeset
|
797 g_free(event->file); |
19146 | 798 event->file = g_strdup(purple_prefs_get_path(filepref)); |
19158
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
799 |
19154
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
800 g_free(filepref); |
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
801 if (event->label == NULL) { |
19146 | 802 continue; |
803 } | |
804 | |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
805 boolpref = g_strdup_printf(FINCH_PREFS_ROOT "/sound/profiles/%s/enabled/%s", profile, event->pref); |
19158
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
806 |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
807 gnt_tree_change_text(GNT_TREE(pref_dialog->events), GINT_TO_POINTER(i), 0, event->label); |
19184
6902517cdfe6
Fix a couple of memory leaks.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19183
diff
changeset
|
808 gnt_tree_change_text(GNT_TREE(pref_dialog->events), GINT_TO_POINTER(i), 1, |
6902517cdfe6
Fix a couple of memory leaks.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19183
diff
changeset
|
809 event->file[0] ? (basename = g_path_get_basename(event->file)) : _("(default)")); |
6902517cdfe6
Fix a couple of memory leaks.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19183
diff
changeset
|
810 g_free(basename); |
19158
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
811 |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
812 gnt_tree_set_choice(GNT_TREE(pref_dialog->events), GINT_TO_POINTER(i), purple_prefs_get_bool(boolpref)); |
19158
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
813 |
19146 | 814 g_free(boolpref); |
815 } | |
19158
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
816 |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
817 gnt_tree_set_selected(GNT_TREE(pref_dialog->profiles), (gchar *)finch_sound_get_active_profile()); |
19160
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
818 |
19158
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
819 gnt_widget_draw(pref_dialog->window); |
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
820 } |
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
821 |
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
822 static void |
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
823 reload_pref_window(const char *profile) |
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
824 { |
19163
1e4630ee4b2a
Fix some crashes when adding new profiles with the same name.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19162
diff
changeset
|
825 if (!strcmp(profile, finch_sound_get_active_profile())) |
19158
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
826 return; |
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
827 load_pref_window(profile); |
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
828 } |
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
829 |
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
830 static void |
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
831 prof_del_cb(GntWidget *button, gpointer null) |
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
832 { |
19167
42fc16a234ec
Deleting profile is now from the entry.
Eric Polino <aluink@pidgin.im>
parents:
19166
diff
changeset
|
833 const char * profile = gnt_entry_get_text(GNT_ENTRY(pref_dialog->new_profile)); |
19160
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
834 gchar * pref; |
19158
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
835 |
19163
1e4630ee4b2a
Fix some crashes when adding new profiles with the same name.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19162
diff
changeset
|
836 if (!strcmp(profile, DEFAULT_PROFILE)) |
19158
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
837 return; |
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
838 |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
839 pref = g_strdup_printf(FINCH_PREFS_ROOT "/sound/profiles/%s", profile); |
19158
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
840 purple_prefs_remove(pref); |
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
841 g_free(pref); |
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
842 |
19163
1e4630ee4b2a
Fix some crashes when adding new profiles with the same name.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19162
diff
changeset
|
843 if (!strcmp(pref_dialog->original_profile, profile)) { |
19160
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
844 g_free(pref_dialog->original_profile); |
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
845 pref_dialog->original_profile = g_strdup(DEFAULT_PROFILE); |
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
846 } |
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
847 |
19170
315fd66bb08f
Whitespace fix.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19167
diff
changeset
|
848 if(!strcmp(profile, finch_sound_get_active_profile())) |
19166
7781dcecbd47
Reset to the default profile when the active profile is deleted.
Eric Polino <aluink@pidgin.im>
parents:
19165
diff
changeset
|
849 reload_pref_window(DEFAULT_PROFILE); |
7781dcecbd47
Reset to the default profile when the active profile is deleted.
Eric Polino <aluink@pidgin.im>
parents:
19165
diff
changeset
|
850 |
19170
315fd66bb08f
Whitespace fix.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19167
diff
changeset
|
851 gnt_tree_remove(GNT_TREE(pref_dialog->profiles), (gchar *) profile); |
19158
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
852 } |
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
853 |
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
854 static void |
19160
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
855 prof_add_cb(GntButton *button, GntEntry * entry) |
19158
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
856 { |
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
857 const char * profile = gnt_entry_get_text(entry); |
19160
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
858 GntTreeRow * row; |
19163
1e4630ee4b2a
Fix some crashes when adding new profiles with the same name.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19162
diff
changeset
|
859 if (!finch_sound_profile_exists(profile)) { |
19160
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
860 gpointer key = g_strdup(profile); |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
861 row = gnt_tree_create_row(GNT_TREE(pref_dialog->profiles), profile); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
862 gnt_tree_add_row_after(GNT_TREE(pref_dialog->profiles), key, |
19163
1e4630ee4b2a
Fix some crashes when adding new profiles with the same name.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19162
diff
changeset
|
863 row, |
1e4630ee4b2a
Fix some crashes when adding new profiles with the same name.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19162
diff
changeset
|
864 NULL, NULL); |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
865 gnt_entry_set_text(entry, ""); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
866 gnt_tree_set_selected(GNT_TREE(pref_dialog->profiles), key); |
19163
1e4630ee4b2a
Fix some crashes when adding new profiles with the same name.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19162
diff
changeset
|
867 finch_sound_set_active_profile(key); |
1e4630ee4b2a
Fix some crashes when adding new profiles with the same name.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19162
diff
changeset
|
868 } else |
1e4630ee4b2a
Fix some crashes when adding new profiles with the same name.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19162
diff
changeset
|
869 reload_pref_window(profile); |
19158
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
870 } |
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
871 |
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
872 static void |
19160
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
873 prof_load_cb(GntTree *tree, gpointer oldkey, gpointer newkey, gpointer null) |
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
874 { |
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
875 reload_pref_window(newkey); |
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
876 } |
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
877 |
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
878 static void |
19158
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
879 cancel_cb(GntButton *button, gpointer win) |
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
880 { |
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
881 finch_sound_set_active_profile(pref_dialog->original_profile); |
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
882 gnt_widget_destroy(GNT_WIDGET(win)); |
19146 | 883 } |
884 | |
19117
907c41608ada
Added Sounds to the actions list
Eric Polino <aluink@pidgin.im>
parents:
19115
diff
changeset
|
885 void |
19118
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
886 finch_sounds_show_all(void) |
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
887 { |
19159
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
888 GntWidget *box, *tmpbox, *splitbox, *cmbox, *slider; |
19117
907c41608ada
Added Sounds to the actions list
Eric Polino <aluink@pidgin.im>
parents:
19115
diff
changeset
|
889 GntWidget *entry; |
19118
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
890 GntWidget *chkbox; |
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
891 GntWidget *button; |
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
892 GntWidget *label; |
19131
5da541d974a4
Fixed Cancel button callback
Eric Polino <aluink@pidgin.im>
parents:
19130
diff
changeset
|
893 GntWidget *tree; |
19119
086cfcb71b01
Created SoundPrefDialog to store dialog data.
Eric Polino <aluink@pidgin.im>
parents:
19118
diff
changeset
|
894 GntWidget *win; |
19118
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
895 |
19131
5da541d974a4
Fixed Cancel button callback
Eric Polino <aluink@pidgin.im>
parents:
19130
diff
changeset
|
896 gint i; |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
897 GList *itr, *list; |
19127
f34e11e41122
Made sound_pref_data a pointer
Eric Polino <aluink@pidgin.im>
parents:
19126
diff
changeset
|
898 |
19163
1e4630ee4b2a
Fix some crashes when adding new profiles with the same name.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19162
diff
changeset
|
899 if (pref_dialog) { |
19128 | 900 gnt_window_present(pref_dialog->window); |
19118
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
901 return; |
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
902 } |
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
903 |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
904 pref_dialog = g_new0(SoundPrefDialog, 1); |
19117
907c41608ada
Added Sounds to the actions list
Eric Polino <aluink@pidgin.im>
parents:
19115
diff
changeset
|
905 |
19158
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
906 pref_dialog->original_profile = g_strdup(finch_sound_get_active_profile()); |
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
907 |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
908 pref_dialog->window = win = gnt_window_box_new(FALSE, TRUE); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
909 gnt_box_set_pad(GNT_BOX(win), 0); |
19119
086cfcb71b01
Created SoundPrefDialog to store dialog data.
Eric Polino <aluink@pidgin.im>
parents:
19118
diff
changeset
|
910 gnt_box_set_toplevel(GNT_BOX(win), TRUE); |
19142
5f2bcb110f00
Mark some strings for translation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19141
diff
changeset
|
911 gnt_box_set_title(GNT_BOX(win), _("Sound Preferences")); |
5f2bcb110f00
Mark some strings for translation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19141
diff
changeset
|
912 gnt_box_set_fill(GNT_BOX(win), TRUE); |
19165
d2a88d84fbac
This makes things look nicer.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19164
diff
changeset
|
913 gnt_box_set_alignment(GNT_BOX(win), GNT_ALIGN_MID); |
19119
086cfcb71b01
Created SoundPrefDialog to store dialog data.
Eric Polino <aluink@pidgin.im>
parents:
19118
diff
changeset
|
914 |
19159
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
915 /* Profiles */ |
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
916 splitbox = gnt_hbox_new(FALSE); |
19162
e1678c435944
Reduce some of the paddings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19161
diff
changeset
|
917 gnt_box_set_pad(GNT_BOX(splitbox), 0); |
e1678c435944
Reduce some of the paddings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19161
diff
changeset
|
918 gnt_box_set_alignment(GNT_BOX(splitbox), GNT_ALIGN_TOP); |
19159
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
919 |
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
920 box = gnt_vbox_new(FALSE); |
19162
e1678c435944
Reduce some of the paddings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19161
diff
changeset
|
921 gnt_box_set_pad(GNT_BOX(box), 0); |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
922 gnt_box_add_widget(GNT_BOX(box), gnt_label_new_with_format(_("Profiles"), GNT_TEXT_FLAG_BOLD)); |
19159
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
923 pref_dialog->profiles = tree = gnt_tree_new(); |
19160
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
924 gnt_tree_set_hash_fns(GNT_TREE(tree), g_str_hash, g_str_equal, g_free); |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
925 gnt_tree_set_compare_func(GNT_TREE(tree), (GCompareFunc)g_ascii_strcasecmp); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
926 g_signal_connect(G_OBJECT(tree), "selection-changed", G_CALLBACK(prof_load_cb), NULL); |
19160
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
927 |
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
928 itr = list = finch_sound_get_profiles(); |
19163
1e4630ee4b2a
Fix some crashes when adding new profiles with the same name.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19162
diff
changeset
|
929 for (; itr; itr = itr->next) { |
19182 | 930 /* Do not free itr->data. It's the stored as a key for the tree, and will |
931 * be freed when the tree is destroyed. */ | |
932 gnt_tree_add_row_after(GNT_TREE(tree), itr->data, | |
933 gnt_tree_create_row(GNT_TREE(tree), itr->data), NULL, NULL); | |
19160
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
934 } |
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
935 g_list_free(list); |
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
936 |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
937 gnt_box_add_widget(GNT_BOX(box), tree); |
19159
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
938 |
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
939 pref_dialog->new_profile = entry = gnt_entry_new(""); |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
940 gnt_box_add_widget(GNT_BOX(box), entry); |
19159
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
941 |
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
942 tmpbox = gnt_hbox_new(FALSE); |
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
943 button = gnt_button_new("Add"); |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
944 g_signal_connect(G_OBJECT(button), "activate", G_CALLBACK(prof_add_cb), entry); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
945 gnt_box_add_widget(GNT_BOX(tmpbox), button); |
19159
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
946 button = gnt_button_new("Delete"); |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
947 g_signal_connect(G_OBJECT(button), "activate", G_CALLBACK(prof_del_cb), NULL); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
948 gnt_box_add_widget(GNT_BOX(tmpbox), button); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
949 gnt_box_add_widget(GNT_BOX(box), tmpbox); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
950 gnt_box_add_widget(GNT_BOX(splitbox), box); |
19159
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
951 |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
952 gnt_box_add_widget(GNT_BOX(splitbox), gnt_vline_new()); |
19159
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
953 |
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
954 /* Sound method */ |
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
955 |
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
956 box = gnt_vbox_new(FALSE); |
19162
e1678c435944
Reduce some of the paddings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19161
diff
changeset
|
957 gnt_box_set_pad(GNT_BOX(box), 0); |
19159
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
958 |
19128 | 959 pref_dialog->method = cmbox = gnt_combo_box_new(); |
19129 | 960 gnt_tree_set_hash_fns(GNT_TREE(GNT_COMBO_BOX(cmbox)->dropdown), g_str_hash, g_str_equal, NULL); |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
961 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox), "automatic", _("Automatic")); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
962 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox), "alsa", "ALSA"); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
963 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox), "esd", "ESD"); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
964 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox), "beep", _("Console Beep")); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
965 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox), "custom", _("Command")); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
966 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox), "nosound", _("No Sound")); |
19117
907c41608ada
Added Sounds to the actions list
Eric Polino <aluink@pidgin.im>
parents:
19115
diff
changeset
|
967 |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
968 label = gnt_label_new_with_format(_("Sound Method"), GNT_TEXT_FLAG_BOLD); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
969 gnt_box_add_widget(GNT_BOX(box), label); |
19159
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
970 tmpbox = gnt_hbox_new(TRUE); |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
971 gnt_box_set_fill(GNT_BOX(tmpbox), FALSE); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
972 gnt_box_set_pad(GNT_BOX(tmpbox), 0); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
973 gnt_box_add_widget(GNT_BOX(tmpbox), gnt_label_new(_("Method: "))); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
974 gnt_box_add_widget(GNT_BOX(tmpbox), cmbox); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
975 gnt_box_add_widget(GNT_BOX(box), tmpbox); |
19117
907c41608ada
Added Sounds to the actions list
Eric Polino <aluink@pidgin.im>
parents:
19115
diff
changeset
|
976 |
19159
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
977 tmpbox = gnt_hbox_new(TRUE); |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
978 gnt_box_set_pad(GNT_BOX(tmpbox), 0); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
979 gnt_box_set_fill(GNT_BOX(tmpbox), FALSE); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
980 gnt_box_add_widget(GNT_BOX(tmpbox), gnt_label_new(_("Sound Command\n(%s for filename)"))); |
19146 | 981 pref_dialog->command = entry = gnt_entry_new(""); |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
982 gnt_box_add_widget(GNT_BOX(tmpbox), entry); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
983 gnt_box_add_widget(GNT_BOX(box), tmpbox); |
19118
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
984 |
19159
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
985 gnt_box_add_widget(GNT_BOX(box), gnt_line_new(FALSE)); |
19118
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
986 |
19154
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
987 /* Sound options */ |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
988 gnt_box_add_widget(GNT_BOX(box), gnt_label_new_with_format(_("Sound Options"), GNT_TEXT_FLAG_BOLD)); |
19129 | 989 pref_dialog->conv_focus = chkbox = gnt_check_box_new(_("Sounds when conversation has focus")); |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
990 gnt_box_add_widget(GNT_BOX(box), chkbox); |
19118
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
991 |
19159
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
992 tmpbox = gnt_hbox_new(TRUE); |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
993 gnt_box_set_pad(GNT_BOX(tmpbox), 0); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
994 gnt_box_set_fill(GNT_BOX(tmpbox), FALSE); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
995 gnt_box_add_widget(GNT_BOX(tmpbox), gnt_label_new("Enable Sounds:")); |
19128 | 996 pref_dialog->while_status = cmbox = gnt_combo_box_new(); |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
997 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox), GINT_TO_POINTER(3), _("Always")); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
998 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox), GINT_TO_POINTER(1), _("Only when available")); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
999 gnt_combo_box_add_data(GNT_COMBO_BOX(cmbox), GINT_TO_POINTER(2), _("Only when not available")); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
1000 gnt_box_add_widget(GNT_BOX(tmpbox), cmbox); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
1001 gnt_box_add_widget(GNT_BOX(box), tmpbox); |
19117
907c41608ada
Added Sounds to the actions list
Eric Polino <aluink@pidgin.im>
parents:
19115
diff
changeset
|
1002 |
19159
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
1003 tmpbox = gnt_hbox_new(TRUE); |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
1004 gnt_box_set_pad(GNT_BOX(tmpbox), 0); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
1005 gnt_box_set_fill(GNT_BOX(tmpbox), FALSE); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
1006 gnt_box_add_widget(GNT_BOX(tmpbox), gnt_label_new(_("Volume(0-100):"))); |
19118
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
1007 |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
1008 pref_dialog->volume = slider = gnt_slider_new(FALSE, 100, 0); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
1009 gnt_slider_set_step(GNT_SLIDER(slider), 5); |
19411
b80379b1f3c6
Specify small and large step values for the volume slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19402
diff
changeset
|
1010 gnt_slider_set_small_step(GNT_SLIDER(slider), 1); |
b80379b1f3c6
Specify small and large step values for the volume slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19402
diff
changeset
|
1011 gnt_slider_set_large_step(GNT_SLIDER(slider), 20); |
19125
915ef65d68e3
Changed the volume changer to a GntSlider.
Eric Polino <aluink@pidgin.im>
parents:
19119
diff
changeset
|
1012 label = gnt_label_new(""); |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
1013 gnt_slider_reflect_label(GNT_SLIDER(slider), GNT_LABEL(label)); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
1014 gnt_box_set_pad(GNT_BOX(tmpbox), 1); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
1015 gnt_box_add_widget(GNT_BOX(tmpbox), slider); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
1016 gnt_box_add_widget(GNT_BOX(tmpbox), label); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
1017 gnt_box_add_widget(GNT_BOX(box), tmpbox); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
1018 gnt_box_add_widget(GNT_BOX(splitbox), box); |
19159
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
1019 |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
1020 gnt_box_add_widget(GNT_BOX(win), splitbox); |
19118
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
1021 |
19154
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
1022 gnt_box_add_widget(GNT_BOX(win), gnt_hline_new()); |
19118
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
1023 |
19154
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
1024 /* Sound events */ |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
1025 gnt_box_add_widget(GNT_BOX(win), gnt_label_new_with_format(_("Sound Events"), GNT_TEXT_FLAG_BOLD)); |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
1026 pref_dialog->events = tree = gnt_tree_new_with_columns(2); |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
1027 gnt_tree_set_column_titles(GNT_TREE(tree), _("Event"), _("File")); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
1028 gnt_tree_set_show_title(GNT_TREE(tree), TRUE); |
19131
5da541d974a4
Fixed Cancel button callback
Eric Polino <aluink@pidgin.im>
parents:
19130
diff
changeset
|
1029 |
19163
1e4630ee4b2a
Fix some crashes when adding new profiles with the same name.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19162
diff
changeset
|
1030 for (i = 0; i < PURPLE_NUM_SOUNDS; i++) { |
19134
0e4eeb6f6284
merged FinchSoundPrefEvent with FinchSoundEvent and removed id from FSE
Eric Polino <aluink@pidgin.im>
parents:
19132
diff
changeset
|
1031 FinchSoundEvent * event = &sounds[i]; |
22924
7228a48eda76
This should make the column widths a bit better. Thanks to vekin in
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22794
diff
changeset
|
1032 |
19163
1e4630ee4b2a
Fix some crashes when adding new profiles with the same name.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19162
diff
changeset
|
1033 if (event->label == NULL) { |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
1034 continue; |
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
1035 } |
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
1036 |
19134
0e4eeb6f6284
merged FinchSoundPrefEvent with FinchSoundEvent and removed id from FSE
Eric Polino <aluink@pidgin.im>
parents:
19132
diff
changeset
|
1037 gnt_tree_add_choice(GNT_TREE(tree), GINT_TO_POINTER(i), |
22924
7228a48eda76
This should make the column widths a bit better. Thanks to vekin in
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22794
diff
changeset
|
1038 gnt_tree_create_row(GNT_TREE(tree), event->label, event->def), |
19131
5da541d974a4
Fixed Cancel button callback
Eric Polino <aluink@pidgin.im>
parents:
19130
diff
changeset
|
1039 NULL, NULL); |
5da541d974a4
Fixed Cancel button callback
Eric Polino <aluink@pidgin.im>
parents:
19130
diff
changeset
|
1040 } |
5da541d974a4
Fixed Cancel button callback
Eric Polino <aluink@pidgin.im>
parents:
19130
diff
changeset
|
1041 |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
1042 gnt_tree_adjust_columns(GNT_TREE(tree)); |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
1043 gnt_box_add_widget(GNT_BOX(win), tree); |
19131
5da541d974a4
Fixed Cancel button callback
Eric Polino <aluink@pidgin.im>
parents:
19130
diff
changeset
|
1044 |
19141
fb880d1adb40
Fix a potential bug.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19139
diff
changeset
|
1045 box = gnt_hbox_new(FALSE); |
19142
5f2bcb110f00
Mark some strings for translation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19141
diff
changeset
|
1046 button = gnt_button_new(_("Test")); |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
1047 g_signal_connect(G_OBJECT(button), "activate", G_CALLBACK(test_cb), NULL); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
1048 gnt_box_add_widget(GNT_BOX(box), button); |
19142
5f2bcb110f00
Mark some strings for translation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19141
diff
changeset
|
1049 button = gnt_button_new(_("Reset")); |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
1050 g_signal_connect(G_OBJECT(button), "activate", G_CALLBACK(reset_cb), NULL); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
1051 gnt_box_add_widget(GNT_BOX(box), button); |
19142
5f2bcb110f00
Mark some strings for translation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19141
diff
changeset
|
1052 button = gnt_button_new(_("Choose...")); |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
1053 g_signal_connect(G_OBJECT(button), "activate", G_CALLBACK(choose_cb), NULL); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
1054 gnt_box_add_widget(GNT_BOX(box), button); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
1055 gnt_box_add_widget(GNT_BOX(win), box); |
19118
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
1056 |
19146 | 1057 gnt_box_add_widget(GNT_BOX(win), gnt_line_new(FALSE)); |
1058 | |
1059 /* Add new stuff before this */ | |
19141
fb880d1adb40
Fix a potential bug.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19139
diff
changeset
|
1060 box = gnt_hbox_new(FALSE); |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
1061 gnt_box_set_fill(GNT_BOX(box), TRUE); |
19142
5f2bcb110f00
Mark some strings for translation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19141
diff
changeset
|
1062 button = gnt_button_new(_("Save")); |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
1063 g_signal_connect(G_OBJECT(button), "activate", G_CALLBACK(save_cb), win); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
1064 gnt_box_add_widget(GNT_BOX(box), button); |
19142
5f2bcb110f00
Mark some strings for translation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19141
diff
changeset
|
1065 button = gnt_button_new(_("Cancel")); |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
1066 g_signal_connect(G_OBJECT(button), "activate", G_CALLBACK(cancel_cb), win); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
1067 gnt_box_add_widget(GNT_BOX(box), button); |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
1068 gnt_box_add_widget(GNT_BOX(win), box); |
19117
907c41608ada
Added Sounds to the actions list
Eric Polino <aluink@pidgin.im>
parents:
19115
diff
changeset
|
1069 |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
1070 g_signal_connect(G_OBJECT(win), "destroy", G_CALLBACK(release_pref_dialog), NULL); |
19118
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
1071 |
19158
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
1072 load_pref_window(finch_sound_get_active_profile()); |
19146 | 1073 |
19119
086cfcb71b01
Created SoundPrefDialog to store dialog data.
Eric Polino <aluink@pidgin.im>
parents:
19118
diff
changeset
|
1074 gnt_widget_show(win); |
19447
1a9b30a95fa6
Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19411
diff
changeset
|
1075 } |
1a9b30a95fa6
Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19411
diff
changeset
|
1076 |
1a9b30a95fa6
Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19411
diff
changeset
|
1077 gboolean finch_sound_is_enabled(void) |
1a9b30a95fa6
Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19411
diff
changeset
|
1078 { |
1a9b30a95fa6
Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19411
diff
changeset
|
1079 const char *pref = make_pref("/method"); |
1a9b30a95fa6
Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19411
diff
changeset
|
1080 const char *method = purple_prefs_get_string(pref); |
1a9b30a95fa6
Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19411
diff
changeset
|
1081 |
1a9b30a95fa6
Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19411
diff
changeset
|
1082 if (!method) |
1a9b30a95fa6
Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19411
diff
changeset
|
1083 return FALSE; |
1a9b30a95fa6
Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19411
diff
changeset
|
1084 if (strcmp(method, "nosound") == 0) |
1a9b30a95fa6
Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19411
diff
changeset
|
1085 return FALSE; |
1a9b30a95fa6
Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19411
diff
changeset
|
1086 if (purple_prefs_get_int(make_pref("/volume")) <= 0) |
1a9b30a95fa6
Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19411
diff
changeset
|
1087 return FALSE; |
1a9b30a95fa6
Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19411
diff
changeset
|
1088 |
1a9b30a95fa6
Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19411
diff
changeset
|
1089 return TRUE; |
1a9b30a95fa6
Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19411
diff
changeset
|
1090 } |
19117
907c41608ada
Added Sounds to the actions list
Eric Polino <aluink@pidgin.im>
parents:
19115
diff
changeset
|
1091 |
19100 | 1092 static PurpleSoundUiOps sound_ui_ops = |
1093 { | |
1094 finch_sound_init, | |
1095 finch_sound_uninit, | |
1096 finch_sound_play_file, | |
1097 finch_sound_play_event, | |
1098 NULL, | |
1099 NULL, | |
1100 NULL, | |
1101 NULL | |
1102 }; | |
1103 | |
1104 PurpleSoundUiOps * | |
1105 finch_sound_get_ui_ops(void) | |
1106 { | |
1107 return &sound_ui_ops; | |
1108 } | |
19154
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
1109 |