Mercurial > pidgin
annotate finch/gntsound.c @ 20570:5913725cbcd6
Use an independant status type for 'current media' stuff, instead of using
status attributes. This includes changes in both xmpp and msn.
Also, in MSN, CurrentMedia is sent with PSM if you turn on the status and
set the attributes on the account.
author | Sadrul Habib Chowdhury <imadil@gmail.com> |
---|---|
date | Thu, 20 Sep 2007 16:30:17 +0000 |
parents | 6bf32c9e15a7 |
children | c38d72677c8a |
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 "internal.h" |
27 #include "finch.h" | |
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}, |
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
107 {PURPLE_SOUND_CHAT_NICK, N_("Someone says your screen name 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; | |
145 chat = purple_conversation_get_chat_data(conv); | |
146 | |
19163
1e4630ee4b2a
Fix some crashes when adding new profiles with the same name.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19162
diff
changeset
|
147 if (chat == NULL) |
19100 | 148 return ret; |
149 | |
150 nick = g_strdup(purple_normalize(conv->account, chat->nick)); | |
151 name = g_strdup(purple_normalize(conv->account, aname)); | |
152 | |
153 if (g_utf8_collate(nick, name) == 0) | |
154 ret = TRUE; | |
155 | |
156 g_free(nick); | |
157 g_free(name); | |
158 | |
159 return ret; | |
160 } | |
161 | |
162 /* | |
163 * play a sound event for a conversation, honoring make_sound flag | |
164 * of conversation and checking for focus if conv_focus pref is set | |
165 */ | |
166 static void | |
167 play_conv_event(PurpleConversation *conv, PurpleSoundEventID event) | |
168 { | |
169 /* If we should not play the sound for some reason, then exit early */ | |
170 if (conv != NULL) | |
171 { | |
172 FinchConv *gntconv; | |
173 gboolean has_focus; | |
174 | |
175 gntconv = FINCH_CONV(conv); | |
176 | |
177 has_focus = purple_conversation_has_focus(conv); | |
178 | |
19447
1a9b30a95fa6
Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19411
diff
changeset
|
179 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
|
180 (has_focus && !purple_prefs_get_bool(make_pref("/conv_focus")))) |
19100 | 181 { |
182 return; | |
183 } | |
184 } | |
185 | |
186 purple_sound_play_event(event, conv ? purple_conversation_get_account(conv) : NULL); | |
187 } | |
188 | |
189 static void | |
190 buddy_state_cb(PurpleBuddy *buddy, PurpleSoundEventID event) | |
191 { | |
192 purple_sound_play_event(event, purple_buddy_get_account(buddy)); | |
193 } | |
194 | |
195 static void | |
196 im_msg_received_cb(PurpleAccount *account, char *sender, | |
197 char *message, PurpleConversation *conv, | |
198 PurpleMessageFlags flags, PurpleSoundEventID event) | |
199 { | |
200 if (flags & PURPLE_MESSAGE_DELAYED) | |
201 return; | |
202 | |
19163
1e4630ee4b2a
Fix some crashes when adding new profiles with the same name.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19162
diff
changeset
|
203 if (conv == NULL) { |
19100 | 204 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
|
205 } else { |
19100 | 206 play_conv_event(conv, event); |
207 } | |
208 } | |
209 | |
210 static void | |
211 im_msg_sent_cb(PurpleAccount *account, const char *receiver, | |
212 const char *message, PurpleSoundEventID event) | |
213 { | |
214 PurpleConversation *conv = purple_find_conversation_with_account( | |
215 PURPLE_CONV_TYPE_ANY, receiver, account); | |
216 play_conv_event(conv, event); | |
217 } | |
218 | |
219 static void | |
220 chat_buddy_join_cb(PurpleConversation *conv, const char *name, | |
221 PurpleConvChatBuddyFlags flags, gboolean new_arrival, | |
222 PurpleSoundEventID event) | |
223 { | |
224 if (new_arrival && !chat_nick_matches_name(conv, name)) | |
225 play_conv_event(conv, event); | |
226 } | |
227 | |
228 static void | |
229 chat_buddy_left_cb(PurpleConversation *conv, const char *name, | |
230 const char *reason, PurpleSoundEventID event) | |
231 { | |
232 if (!chat_nick_matches_name(conv, name)) | |
233 play_conv_event(conv, event); | |
234 } | |
235 | |
236 static void | |
237 chat_msg_sent_cb(PurpleAccount *account, const char *message, | |
238 int id, PurpleSoundEventID event) | |
239 { | |
240 PurpleConnection *conn = purple_account_get_connection(account); | |
241 PurpleConversation *conv = NULL; | |
242 | |
243 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
|
244 conv = purple_find_chat(conn, id); |
19100 | 245 |
246 play_conv_event(conv, event); | |
247 } | |
248 | |
249 static void | |
250 chat_msg_received_cb(PurpleAccount *account, char *sender, | |
251 char *message, PurpleConversation *conv, | |
252 PurpleMessageFlags flags, PurpleSoundEventID event) | |
253 { | |
254 PurpleConvChat *chat; | |
255 | |
256 if (flags & PURPLE_MESSAGE_DELAYED) | |
257 return; | |
258 | |
259 chat = purple_conversation_get_chat_data(conv); | |
260 g_return_if_fail(chat != NULL); | |
261 | |
262 if (purple_conv_chat_is_user_ignored(chat, sender)) | |
263 return; | |
264 | |
265 if (chat_nick_matches_name(conv, sender)) | |
266 return; | |
267 | |
268 if (flags & PURPLE_MESSAGE_NICK || purple_utf8_has_word(message, chat->nick)) | |
269 play_conv_event(conv, PURPLE_SOUND_CHAT_NICK); | |
270 else | |
271 play_conv_event(conv, event); | |
272 } | |
273 | |
274 /* | |
275 * We mute sounds for the 10 seconds after you log in so that | |
276 * you don't get flooded with sounds when the blist shows all | |
277 * your buddies logging in. | |
278 */ | |
279 static void | |
280 account_signon_cb(PurpleConnection *gc, gpointer data) | |
281 { | |
282 if (mute_login_sounds_timeout != 0) | |
283 g_source_remove(mute_login_sounds_timeout); | |
284 mute_login_sounds = TRUE; | |
19154
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
285 mute_login_sounds_timeout = purple_timeout_add_seconds(10, unmute_login_sounds_cb, NULL); |
19100 | 286 } |
287 | |
19177
19a4594e939c
Fix a memory leak.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19170
diff
changeset
|
288 static void * |
19100 | 289 finch_sound_get_handle() |
290 { | |
291 static int handle; | |
292 | |
293 return &handle; | |
294 } | |
295 | |
19146 | 296 |
297 /* This gets called when the active profile changes */ | |
298 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
|
299 initialize_profile(const char *name, PurplePrefType type, gconstpointer val, gpointer null) |
19146 | 300 { |
19163
1e4630ee4b2a
Fix some crashes when adding new profiles with the same name.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19162
diff
changeset
|
301 if (purple_prefs_exists(make_pref(""))) |
19154
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
302 return; |
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
303 |
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
304 purple_prefs_add_none(make_pref("")); |
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
305 purple_prefs_add_none(make_pref("/enabled")); |
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
306 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
|
307 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
|
308 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
|
309 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
|
310 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
|
311 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
|
312 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
|
313 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
|
314 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
|
315 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
|
316 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
|
317 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
|
318 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
|
319 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
|
320 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
|
321 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
|
322 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
|
323 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
|
324 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
|
325 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
|
326 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
|
327 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
|
328 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
|
329 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
|
330 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
|
331 purple_prefs_add_path(make_pref("/command"), ""); |
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
332 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
|
333 purple_prefs_add_int(make_pref("/volume"), 50); |
19146 | 334 } |
335 | |
19100 | 336 static void |
337 finch_sound_init(void) | |
338 { | |
339 void *gnt_sound_handle = finch_sound_get_handle(); | |
340 void *blist_handle = purple_blist_get_handle(); | |
341 void *conv_handle = purple_conversations_get_handle(); | |
342 #ifdef USE_GSTREAMER | |
343 GError *error = NULL; | |
344 #endif | |
345 | |
346 purple_signal_connect(purple_connections_get_handle(), "signed-on", | |
347 gnt_sound_handle, PURPLE_CALLBACK(account_signon_cb), | |
348 NULL); | |
349 | |
350 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
|
351 purple_prefs_add_string(FINCH_PREFS_ROOT "/sound/actprofile", DEFAULT_PROFILE); |
19146 | 352 purple_prefs_add_none(FINCH_PREFS_ROOT "/sound/profiles"); |
19100 | 353 |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
354 purple_prefs_connect_callback(gnt_sound_handle, FINCH_PREFS_ROOT "/sound/actprofile", initialize_profile, NULL); |
19146 | 355 purple_prefs_trigger_callback(FINCH_PREFS_ROOT "/sound/actprofile"); |
356 | |
357 | |
19100 | 358 #ifdef USE_GSTREAMER |
359 purple_debug_info("sound", "Initializing sound output drivers.\n"); | |
360 if ((gst_init_failed = !gst_init_check(NULL, NULL, &error))) { | |
361 purple_notify_error(NULL, _("GStreamer Failure"), | |
362 _("GStreamer failed to initialize."), | |
363 error ? error->message : ""); | |
364 if (error) { | |
365 g_error_free(error); | |
366 error = NULL; | |
367 } | |
368 } | |
369 #endif /* USE_GSTREAMER */ | |
370 | |
371 purple_signal_connect(blist_handle, "buddy-signed-on", | |
372 gnt_sound_handle, PURPLE_CALLBACK(buddy_state_cb), | |
373 GINT_TO_POINTER(PURPLE_SOUND_BUDDY_ARRIVE)); | |
374 purple_signal_connect(blist_handle, "buddy-signed-off", | |
375 gnt_sound_handle, PURPLE_CALLBACK(buddy_state_cb), | |
376 GINT_TO_POINTER(PURPLE_SOUND_BUDDY_LEAVE)); | |
377 purple_signal_connect(conv_handle, "received-im-msg", | |
378 gnt_sound_handle, PURPLE_CALLBACK(im_msg_received_cb), | |
379 GINT_TO_POINTER(PURPLE_SOUND_RECEIVE)); | |
380 purple_signal_connect(conv_handle, "sent-im-msg", | |
381 gnt_sound_handle, PURPLE_CALLBACK(im_msg_sent_cb), | |
382 GINT_TO_POINTER(PURPLE_SOUND_SEND)); | |
383 purple_signal_connect(conv_handle, "chat-buddy-joined", | |
384 gnt_sound_handle, PURPLE_CALLBACK(chat_buddy_join_cb), | |
385 GINT_TO_POINTER(PURPLE_SOUND_CHAT_JOIN)); | |
386 purple_signal_connect(conv_handle, "chat-buddy-left", | |
387 gnt_sound_handle, PURPLE_CALLBACK(chat_buddy_left_cb), | |
388 GINT_TO_POINTER(PURPLE_SOUND_CHAT_LEAVE)); | |
389 purple_signal_connect(conv_handle, "sent-chat-msg", | |
390 gnt_sound_handle, PURPLE_CALLBACK(chat_msg_sent_cb), | |
391 GINT_TO_POINTER(PURPLE_SOUND_CHAT_YOU_SAY)); | |
392 purple_signal_connect(conv_handle, "received-chat-msg", | |
393 gnt_sound_handle, PURPLE_CALLBACK(chat_msg_received_cb), | |
394 GINT_TO_POINTER(PURPLE_SOUND_CHAT_SAY)); | |
395 } | |
396 | |
397 static void | |
398 finch_sound_uninit(void) | |
399 { | |
400 #ifdef USE_GSTREAMER | |
401 if (!gst_init_failed) | |
402 gst_deinit(); | |
403 #endif | |
404 | |
405 purple_signals_disconnect_by_handle(finch_sound_get_handle()); | |
406 } | |
407 | |
408 #ifdef USE_GSTREAMER | |
409 static gboolean | |
410 bus_call (GstBus *bus, GstMessage *msg, gpointer data) | |
411 { | |
412 GstElement *play = data; | |
413 GError *err = NULL; | |
414 | |
415 switch (GST_MESSAGE_TYPE (msg)) { | |
416 case GST_MESSAGE_ERROR: | |
417 gst_message_parse_error(msg, &err, NULL); | |
19185
cdb0fbe5de7b
Print debug messages appropriately.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19184
diff
changeset
|
418 purple_debug_error("gstreamer", "%s\n", err->message); |
19100 | 419 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
|
420 /* 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
|
421 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
|
422 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
|
423 gst_object_unref(GST_OBJECT(play)); |
19100 | 424 break; |
425 case GST_MESSAGE_WARNING: | |
426 gst_message_parse_warning(msg, &err, NULL); | |
19185
cdb0fbe5de7b
Print debug messages appropriately.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19184
diff
changeset
|
427 purple_debug_warning("gstreamer", "%s\n", err->message); |
19100 | 428 g_error_free(err); |
429 break; | |
430 default: | |
431 break; | |
432 } | |
433 return TRUE; | |
434 } | |
435 #endif | |
436 | |
437 static void | |
438 finch_sound_play_file(const char *filename) | |
439 { | |
440 const char *method; | |
441 #ifdef USE_GSTREAMER | |
442 float volume; | |
443 char *uri; | |
444 GstElement *sink = NULL; | |
445 GstElement *play = NULL; | |
446 GstBus *bus = NULL; | |
447 #endif | |
19146 | 448 if (purple_prefs_get_bool(make_pref("/mute"))) |
19100 | 449 return; |
450 | |
19146 | 451 method = purple_prefs_get_string(make_pref("/method")); |
19100 | 452 |
19294
ed80bace0934
leak fix, and fix nosound
Richard Nelson <wabz@pidgin.im>
parents:
19185
diff
changeset
|
453 if (!strcmp(method, "nosound")) { |
19100 | 454 return; |
455 } else if (!strcmp(method, "beep")) { | |
456 beep(); | |
457 return; | |
458 } | |
459 | |
460 if (!g_file_test(filename, G_FILE_TEST_EXISTS)) { | |
461 purple_debug_error("gntsound", "sound file (%s) does not exist.\n", filename); | |
462 return; | |
463 } | |
464 | |
465 #ifndef _WIN32 | |
466 if (!strcmp(method, "custom")) { | |
467 const char *sound_cmd; | |
468 char *command; | |
469 char *esc_filename; | |
470 GError *error = NULL; | |
471 | |
19146 | 472 sound_cmd = purple_prefs_get_path(make_pref("/command")); |
19100 | 473 |
474 if (!sound_cmd || *sound_cmd == '\0') { | |
475 purple_debug_error("gntsound", | |
476 "'Command' sound method has been chosen, " | |
477 "but no command has been set."); | |
478 return; | |
479 } | |
480 | |
481 esc_filename = g_shell_quote(filename); | |
482 | |
19163
1e4630ee4b2a
Fix some crashes when adding new profiles with the same name.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19162
diff
changeset
|
483 if (strstr(sound_cmd, "%s")) |
19100 | 484 command = purple_strreplace(sound_cmd, "%s", esc_filename); |
485 else | |
486 command = g_strdup_printf("%s %s", sound_cmd, esc_filename); | |
487 | |
19163
1e4630ee4b2a
Fix some crashes when adding new profiles with the same name.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19162
diff
changeset
|
488 if (!g_spawn_command_line_async(command, &error)) { |
19100 | 489 purple_debug_error("gntsound", "sound command could not be launched: %s\n", error->message); |
490 g_error_free(error); | |
491 } | |
492 | |
493 g_free(esc_filename); | |
494 g_free(command); | |
495 return; | |
496 } | |
497 #ifdef USE_GSTREAMER | |
498 if (gst_init_failed) /* Perhaps do beep instead? */ | |
499 return; | |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
500 volume = (float)(CLAMP(purple_prefs_get_int(make_pref("/volume")), 0, 100)) / 50; |
19100 | 501 if (!strcmp(method, "automatic")) { |
502 if (purple_running_gnome()) { | |
503 sink = gst_element_factory_make("gconfaudiosink", "sink"); | |
504 } | |
505 if (!sink) | |
506 sink = gst_element_factory_make("autoaudiosink", "sink"); | |
507 if (!sink) { | |
508 purple_debug_error("sound", "Unable to create GStreamer audiosink.\n"); | |
509 return; | |
510 } | |
511 } else if (!strcmp(method, "esd")) { | |
512 sink = gst_element_factory_make("esdsink", "sink"); | |
513 if (!sink) { | |
514 purple_debug_error("sound", "Unable to create GStreamer audiosink.\n"); | |
515 return; | |
516 } | |
517 } else if (!strcmp(method, "alsa")) { | |
518 sink = gst_element_factory_make("alsasink", "sink"); | |
519 if (!sink) { | |
520 purple_debug_error("sound", "Unable to create GStreamer audiosink.\n"); | |
521 return; | |
522 } | |
523 } else { | |
524 purple_debug_error("sound", "Unknown sound method '%s'\n", method); | |
525 return; | |
526 } | |
527 | |
528 play = gst_element_factory_make("playbin", "play"); | |
529 | |
530 if (play == NULL) { | |
531 return; | |
532 } | |
533 | |
534 uri = g_strdup_printf("file://%s", filename); | |
535 | |
536 g_object_set(G_OBJECT(play), "uri", uri, | |
537 "volume", volume, | |
538 "audio-sink", sink, NULL); | |
539 | |
540 bus = gst_pipeline_get_bus(GST_PIPELINE(play)); | |
541 gst_bus_add_watch(bus, bus_call, play); | |
542 | |
543 gst_element_set_state(play, GST_STATE_PLAYING); | |
544 | |
545 gst_object_unref(bus); | |
546 g_free(uri); | |
547 | |
548 #else /* USE_GSTREAMER */ | |
549 beep(); | |
550 return; | |
551 #endif /* USE_GSTREAMER */ | |
552 #else /* _WIN32 */ | |
553 purple_debug_info("sound", "Playing %s\n", filename); | |
554 | |
555 if (G_WIN32_HAVE_WIDECHAR_API ()) { | |
556 wchar_t *wc_filename = g_utf8_to_utf16(filename, | |
557 -1, NULL, NULL, NULL); | |
558 if (!PlaySoundW(wc_filename, NULL, SND_ASYNC | SND_FILENAME)) | |
559 purple_debug(PURPLE_DEBUG_ERROR, "sound", "Error playing sound.\n"); | |
560 g_free(wc_filename); | |
561 } else { | |
562 char *l_filename = g_locale_from_utf8(filename, | |
563 -1, NULL, NULL, NULL); | |
564 if (!PlaySoundA(l_filename, NULL, SND_ASYNC | SND_FILENAME)) | |
565 purple_debug(PURPLE_DEBUG_ERROR, "sound", "Error playing sound.\n"); | |
566 g_free(l_filename); | |
567 } | |
568 #endif /* _WIN32 */ | |
569 } | |
570 | |
571 static void | |
572 finch_sound_play_event(PurpleSoundEventID event) | |
573 { | |
574 char *enable_pref; | |
575 char *file_pref; | |
576 if ((event == PURPLE_SOUND_BUDDY_ARRIVE) && mute_login_sounds) | |
577 return; | |
578 | |
579 if (event >= PURPLE_NUM_SOUNDS) { | |
580 purple_debug_error("sound", "got request for unknown sound: %d\n", event); | |
581 return; | |
582 } | |
583 | |
19146 | 584 enable_pref = g_strdup_printf(FINCH_PREFS_ROOT "/sound/profiles/%s/enabled/%s", |
585 finch_sound_get_active_profile(), | |
19100 | 586 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
|
587 file_pref = g_strdup_printf(FINCH_PREFS_ROOT "/sound/profiles/%s/file/%s", finch_sound_get_active_profile(), sounds[event].pref); |
19100 | 588 |
589 /* check NULL for sounds that don't have an option, ie buddy pounce */ | |
590 if (purple_prefs_get_bool(enable_pref)) { | |
591 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
|
592 if (!filename || !strlen(filename)) { |
19100 | 593 g_free(filename); |
19115 | 594 /* XXX Consider creating a constant for "sounds/purple" to be shared with Pidgin */ |
595 filename = g_build_filename(DATADIR, "sounds", "purple", sounds[event].def, NULL); | |
19100 | 596 } |
597 | |
598 purple_sound_play_file(filename, NULL); | |
599 g_free(filename); | |
600 } | |
601 | |
602 g_free(enable_pref); | |
603 g_free(file_pref); | |
604 } | |
605 | |
19146 | 606 GList * |
607 finch_sound_get_profiles() | |
608 { | |
19156
f65c287e466e
Update the way _get_children_names is used.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19154
diff
changeset
|
609 GList *list = NULL, *iter; |
f65c287e466e
Update the way _get_children_names is used.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19154
diff
changeset
|
610 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
|
611 while (iter) { |
f65c287e466e
Update the way _get_children_names is used.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19154
diff
changeset
|
612 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
|
613 g_free(iter->data); |
f65c287e466e
Update the way _get_children_names is used.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19154
diff
changeset
|
614 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
|
615 } |
f65c287e466e
Update the way _get_children_names is used.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19154
diff
changeset
|
616 return list; |
19146 | 617 } |
618 | |
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
|
619 /* This will also create it if it doesn't exist */ |
19146 | 620 void |
621 finch_sound_set_active_profile(const char *name) | |
622 { | |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
623 purple_prefs_set_string(FINCH_PREFS_ROOT "/sound/actprofile", name); |
19146 | 624 } |
625 | |
19177
19a4594e939c
Fix a memory leak.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19170
diff
changeset
|
626 static gboolean |
19170
315fd66bb08f
Whitespace fix.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19167
diff
changeset
|
627 finch_sound_profile_exists(const char *name) |
315fd66bb08f
Whitespace fix.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19167
diff
changeset
|
628 { |
19160
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
629 gchar * tmp; |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
630 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
|
631 g_free(tmp); |
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
632 return ret; |
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
633 } |
19146 | 634 |
19130
d5a0b09470ee
Cleaned up a few poorly written "activate" callbacks.
Eric Polino <aluink@pidgin.im>
parents:
19129
diff
changeset
|
635 static void |
d5a0b09470ee
Cleaned up a few poorly written "activate" callbacks.
Eric Polino <aluink@pidgin.im>
parents:
19129
diff
changeset
|
636 save_cb(GntWidget *button, gpointer win) |
19118
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
637 { |
19134
0e4eeb6f6284
merged FinchSoundPrefEvent with FinchSoundEvent and removed id from FSE
Eric Polino <aluink@pidgin.im>
parents:
19132
diff
changeset
|
638 GList * itr; |
19131
5da541d974a4
Fixed Cancel button callback
Eric Polino <aluink@pidgin.im>
parents:
19130
diff
changeset
|
639 |
19146 | 640 purple_prefs_set_string(make_pref("/method"), gnt_combo_box_get_selected_data(GNT_COMBO_BOX(pref_dialog->method))); |
641 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
|
642 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
|
643 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
|
644 purple_prefs_set_int(make_pref("/volume"), gnt_slider_get_value(GNT_SLIDER(pref_dialog->volume))); |
19129 | 645 |
19163
1e4630ee4b2a
Fix some crashes when adding new profiles with the same name.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19162
diff
changeset
|
646 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
|
647 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
|
648 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
|
649 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
|
650 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
|
651 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
|
652 g_free(filepref); |
19137 | 653 g_free(boolpref); |
19131
5da541d974a4
Fixed Cancel button callback
Eric Polino <aluink@pidgin.im>
parents:
19130
diff
changeset
|
654 } |
19119
086cfcb71b01
Created SoundPrefDialog to store dialog data.
Eric Polino <aluink@pidgin.im>
parents:
19118
diff
changeset
|
655 gnt_widget_destroy(GNT_WIDGET(win)); |
19118
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
656 } |
19141
fb880d1adb40
Fix a potential bug.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19139
diff
changeset
|
657 |
19130
d5a0b09470ee
Cleaned up a few poorly written "activate" callbacks.
Eric Polino <aluink@pidgin.im>
parents:
19129
diff
changeset
|
658 static void |
19141
fb880d1adb40
Fix a potential bug.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19139
diff
changeset
|
659 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
|
660 { |
19141
fb880d1adb40
Fix a potential bug.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19139
diff
changeset
|
661 FinchSoundEvent *event = data; |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
662 |
19134
0e4eeb6f6284
merged FinchSoundPrefEvent with FinchSoundEvent and removed id from FSE
Eric Polino <aluink@pidgin.im>
parents:
19132
diff
changeset
|
663 g_free(event->file); |
19141
fb880d1adb40
Fix a potential bug.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19139
diff
changeset
|
664 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
|
665 |
19141
fb880d1adb40
Fix a potential bug.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19139
diff
changeset
|
666 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
|
667 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
|
668 |
19141
fb880d1adb40
Fix a potential bug.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19139
diff
changeset
|
669 gnt_widget_destroy(GNT_WIDGET(w)); |
19118
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
670 } |
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
671 |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
672 static void |
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
673 test_cb(GntWidget *button, gpointer null) |
19118
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
674 { |
19134
0e4eeb6f6284
merged FinchSoundPrefEvent with FinchSoundEvent and removed id from FSE
Eric Polino <aluink@pidgin.im>
parents:
19132
diff
changeset
|
675 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
|
676 FinchSoundEvent * event = &sounds[id]; |
19402
e95555316216
Use the changed volume when 'Test'ing.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19384
diff
changeset
|
677 char *enabled, *file, *tmpfile, *volpref; |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
678 gboolean temp_value; |
19402
e95555316216
Use the changed volume when 'Test'ing.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19384
diff
changeset
|
679 int volume; |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
680 |
19184
6902517cdfe6
Fix a couple of memory leaks.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19183
diff
changeset
|
681 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
|
682 finch_sound_get_active_profile(), event->pref); |
6902517cdfe6
Fix a couple of memory leaks.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19183
diff
changeset
|
683 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
|
684 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
|
685 volpref = g_strdup(make_pref("/volume")); |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
686 |
19184
6902517cdfe6
Fix a couple of memory leaks.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19183
diff
changeset
|
687 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
|
688 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
|
689 volume = purple_prefs_get_int(volpref); |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
690 |
19760
96d4a3238029
Fix a small bug in sound-test, thanks to igungor in #pidgin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
691 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
|
692 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
|
693 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
|
694 |
19134
0e4eeb6f6284
merged FinchSoundPrefEvent with FinchSoundEvent and removed id from FSE
Eric Polino <aluink@pidgin.im>
parents:
19132
diff
changeset
|
695 purple_sound_play_event(id, NULL); |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
696 |
19184
6902517cdfe6
Fix a couple of memory leaks.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19183
diff
changeset
|
697 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
|
698 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
|
699 purple_prefs_set_int(volpref, volume); |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
700 |
19184
6902517cdfe6
Fix a couple of memory leaks.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19183
diff
changeset
|
701 g_free(enabled); |
6902517cdfe6
Fix a couple of memory leaks.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19183
diff
changeset
|
702 g_free(file); |
6902517cdfe6
Fix a couple of memory leaks.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19183
diff
changeset
|
703 g_free(tmpfile); |
19402
e95555316216
Use the changed volume when 'Test'ing.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19384
diff
changeset
|
704 g_free(volpref); |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
705 } |
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
706 |
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
707 static void |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
708 reset_cb(GntWidget *button, gpointer null) |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
709 { |
19134
0e4eeb6f6284
merged FinchSoundPrefEvent with FinchSoundEvent and removed id from FSE
Eric Polino <aluink@pidgin.im>
parents:
19132
diff
changeset
|
710 /* Don't dereference this pointer ! */ |
0e4eeb6f6284
merged FinchSoundPrefEvent with FinchSoundEvent and removed id from FSE
Eric Polino <aluink@pidgin.im>
parents:
19132
diff
changeset
|
711 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
|
712 |
19134
0e4eeb6f6284
merged FinchSoundPrefEvent with FinchSoundEvent and removed id from FSE
Eric Polino <aluink@pidgin.im>
parents:
19132
diff
changeset
|
713 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
|
714 g_free(event->file); |
0e4eeb6f6284
merged FinchSoundPrefEvent with FinchSoundEvent and removed id from FSE
Eric Polino <aluink@pidgin.im>
parents:
19132
diff
changeset
|
715 event->file = NULL; |
19183
772670b9e9f8
Mark a string for translation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19182
diff
changeset
|
716 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
|
717 } |
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
718 |
19146 | 719 |
720 static void | |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
721 choose_cb(GntWidget *button, gpointer null) |
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
722 { |
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
723 GntWidget *w = gnt_file_sel_new(); |
19141
fb880d1adb40
Fix a potential bug.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19139
diff
changeset
|
724 GntFileSel *sel = GNT_FILE_SEL(w); |
fb880d1adb40
Fix a potential bug.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19139
diff
changeset
|
725 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
|
726 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
|
727 char *path = NULL; |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
728 |
19184
6902517cdfe6
Fix a couple of memory leaks.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19183
diff
changeset
|
729 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
|
730 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
|
731 (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
|
732 : purple_home_dir()); |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
733 |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
734 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
|
735 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
|
736 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
|
737 |
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 /* 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
|
739 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
|
740 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
|
741 |
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
|
742 pref_dialog->selector = w; |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
743 |
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
744 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
|
745 g_free(path); |
19118
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
746 } |
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
747 |
19128 | 748 static void |
749 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
|
750 { |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
751 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
|
752 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
|
753 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
|
754 FinchSoundEvent * e = &sounds[id]; |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
755 g_free(e->file); |
19184
6902517cdfe6
Fix a couple of memory leaks.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19183
diff
changeset
|
756 e->file = NULL; |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
757 } |
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
|
758 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
|
759 gnt_widget_destroy(pref_dialog->selector); |
19294
ed80bace0934
leak fix, and fix nosound
Richard Nelson <wabz@pidgin.im>
parents:
19185
diff
changeset
|
760 g_free(pref_dialog->original_profile); |
19128 | 761 g_free(pref_dialog); |
762 pref_dialog = NULL; | |
19118
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
763 } |
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
764 |
19146 | 765 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
|
766 load_pref_window(const char * profile) |
19146 | 767 { |
768 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
|
769 |
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
770 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
|
771 |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
772 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
|
773 |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
774 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
|
775 |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
776 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
|
777 |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
778 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
|
779 |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
780 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
|
781 |
19163
1e4630ee4b2a
Fix some crashes when adding new profiles with the same name.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19162
diff
changeset
|
782 for (i = 0; i < PURPLE_NUM_SOUNDS; i++) { |
19146 | 783 FinchSoundEvent * event = &sounds[i]; |
784 gchar *boolpref; | |
19184
6902517cdfe6
Fix a couple of memory leaks.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19183
diff
changeset
|
785 gchar *filepref, *basename = NULL; |
19146 | 786 const char * profile = finch_sound_get_active_profile(); |
787 | |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
788 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
|
789 |
19184
6902517cdfe6
Fix a couple of memory leaks.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19183
diff
changeset
|
790 g_free(event->file); |
19146 | 791 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
|
792 |
19154
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
793 g_free(filepref); |
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
794 if (event->label == NULL) { |
19146 | 795 continue; |
796 } | |
797 | |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
798 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
|
799 |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
800 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
|
801 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
|
802 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
|
803 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
|
804 |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
805 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
|
806 |
19146 | 807 g_free(boolpref); |
808 } | |
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
|
809 |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
810 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
|
811 |
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
|
812 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
|
813 } |
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
814 |
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
815 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
|
816 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
|
817 { |
19163
1e4630ee4b2a
Fix some crashes when adding new profiles with the same name.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19162
diff
changeset
|
818 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
|
819 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
|
820 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
|
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 |
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 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
|
824 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
|
825 { |
19167
42fc16a234ec
Deleting profile is now from the entry.
Eric Polino <aluink@pidgin.im>
parents:
19166
diff
changeset
|
826 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
|
827 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
|
828 |
19163
1e4630ee4b2a
Fix some crashes when adding new profiles with the same name.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19162
diff
changeset
|
829 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
|
830 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
|
831 |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
832 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
|
833 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
|
834 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
|
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(pref_dialog->original_profile, profile)) { |
19160
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
837 g_free(pref_dialog->original_profile); |
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
838 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
|
839 } |
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
840 |
19170
315fd66bb08f
Whitespace fix.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19167
diff
changeset
|
841 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
|
842 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
|
843 |
19170
315fd66bb08f
Whitespace fix.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19167
diff
changeset
|
844 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
|
845 } |
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
846 |
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
847 static void |
19160
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
848 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
|
849 { |
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
850 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
|
851 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
|
852 if (!finch_sound_profile_exists(profile)) { |
19160
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
853 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
|
854 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
|
855 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
|
856 row, |
1e4630ee4b2a
Fix some crashes when adding new profiles with the same name.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19162
diff
changeset
|
857 NULL, NULL); |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
858 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
|
859 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
|
860 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
|
861 } else |
1e4630ee4b2a
Fix some crashes when adding new profiles with the same name.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19162
diff
changeset
|
862 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
|
863 } |
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
864 |
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
865 static void |
19160
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
866 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
|
867 { |
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
868 reload_pref_window(newkey); |
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
869 } |
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
870 |
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
871 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
|
872 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
|
873 { |
1d4ff2ba5a0b
Added sound profiles. First revision that's anywhere near stable, _shouldn't_ crash though.
Eric Polino <aluink@pidgin.im>
parents:
19157
diff
changeset
|
874 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
|
875 gnt_widget_destroy(GNT_WIDGET(win)); |
19146 | 876 } |
877 | |
19117
907c41608ada
Added Sounds to the actions list
Eric Polino <aluink@pidgin.im>
parents:
19115
diff
changeset
|
878 void |
19118
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
879 finch_sounds_show_all(void) |
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
880 { |
19159
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
881 GntWidget *box, *tmpbox, *splitbox, *cmbox, *slider; |
19117
907c41608ada
Added Sounds to the actions list
Eric Polino <aluink@pidgin.im>
parents:
19115
diff
changeset
|
882 GntWidget *entry; |
19118
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
883 GntWidget *chkbox; |
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
884 GntWidget *button; |
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
885 GntWidget *label; |
19131
5da541d974a4
Fixed Cancel button callback
Eric Polino <aluink@pidgin.im>
parents:
19130
diff
changeset
|
886 GntWidget *tree; |
19119
086cfcb71b01
Created SoundPrefDialog to store dialog data.
Eric Polino <aluink@pidgin.im>
parents:
19118
diff
changeset
|
887 GntWidget *win; |
19118
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
888 |
19131
5da541d974a4
Fixed Cancel button callback
Eric Polino <aluink@pidgin.im>
parents:
19130
diff
changeset
|
889 gint i; |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
890 GList *itr, *list; |
19127
f34e11e41122
Made sound_pref_data a pointer
Eric Polino <aluink@pidgin.im>
parents:
19126
diff
changeset
|
891 |
19163
1e4630ee4b2a
Fix some crashes when adding new profiles with the same name.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19162
diff
changeset
|
892 if (pref_dialog) { |
19128 | 893 gnt_window_present(pref_dialog->window); |
19118
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
894 return; |
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
895 } |
cfe8f791d7c1
Added more to the Sounds Preferences
Eric Polino <aluink@pidgin.im>
parents:
19117
diff
changeset
|
896 |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
897 pref_dialog = g_new0(SoundPrefDialog, 1); |
19117
907c41608ada
Added Sounds to the actions list
Eric Polino <aluink@pidgin.im>
parents:
19115
diff
changeset
|
898 |
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
|
899 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
|
900 |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
901 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
|
902 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
|
903 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
|
904 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
|
905 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
|
906 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
|
907 |
19159
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
908 /* Profiles */ |
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
909 splitbox = gnt_hbox_new(FALSE); |
19162
e1678c435944
Reduce some of the paddings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19161
diff
changeset
|
910 gnt_box_set_pad(GNT_BOX(splitbox), 0); |
e1678c435944
Reduce some of the paddings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19161
diff
changeset
|
911 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
|
912 |
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
913 box = gnt_vbox_new(FALSE); |
19162
e1678c435944
Reduce some of the paddings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19161
diff
changeset
|
914 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
|
915 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
|
916 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
|
917 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
|
918 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
|
919 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
|
920 |
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
921 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
|
922 for (; itr; itr = itr->next) { |
19182 | 923 /* Do not free itr->data. It's the stored as a key for the tree, and will |
924 * be freed when the tree is destroyed. */ | |
925 gnt_tree_add_row_after(GNT_TREE(tree), itr->data, | |
926 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
|
927 } |
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
928 g_list_free(list); |
fbecc35c23bb
Profiles now work with the new layout
Eric Polino <aluink@pidgin.im>
parents:
19159
diff
changeset
|
929 |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
930 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
|
931 |
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
932 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
|
933 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
|
934 |
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
935 tmpbox = gnt_hbox_new(FALSE); |
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
936 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
|
937 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
|
938 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
|
939 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
|
940 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
|
941 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
|
942 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
|
943 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
|
944 |
19161
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(splitbox), gnt_vline_new()); |
19159
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
946 |
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
947 /* Sound method */ |
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
948 |
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
949 box = gnt_vbox_new(FALSE); |
19162
e1678c435944
Reduce some of the paddings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19161
diff
changeset
|
950 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
|
951 |
19128 | 952 pref_dialog->method = cmbox = gnt_combo_box_new(); |
19129 | 953 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
|
954 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
|
955 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
|
956 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
|
957 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
|
958 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
|
959 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
|
960 |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
961 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
|
962 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
|
963 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
|
964 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
|
965 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
|
966 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
|
967 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
|
968 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
|
969 |
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_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
|
972 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
|
973 gnt_box_add_widget(GNT_BOX(tmpbox), gnt_label_new(_("Sound Command\n(%s for filename)"))); |
19146 | 974 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
|
975 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
|
976 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
|
977 |
19159
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
978 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
|
979 |
19154
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
980 /* Sound options */ |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
981 gnt_box_add_widget(GNT_BOX(box), gnt_label_new_with_format(_("Sound Options"), GNT_TEXT_FLAG_BOLD)); |
19129 | 982 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
|
983 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
|
984 |
19159
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
985 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
|
986 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
|
987 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
|
988 gnt_box_add_widget(GNT_BOX(tmpbox), gnt_label_new("Enable Sounds:")); |
19128 | 989 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
|
990 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
|
991 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
|
992 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
|
993 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
|
994 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
|
995 |
19159
67fc276e5332
Redid the look to the Sound Prefs
Eric Polino <aluink@pidgin.im>
parents:
19158
diff
changeset
|
996 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
|
997 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
|
998 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
|
999 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
|
1000 |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
1001 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
|
1002 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
|
1003 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
|
1004 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
|
1005 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
|
1006 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
|
1007 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
|
1008 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
|
1009 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
|
1010 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
|
1011 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
|
1012 |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
1013 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
|
1014 |
19154
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
1015 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
|
1016 |
19154
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
1017 /* Sound events */ |
19161
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(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
|
1019 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
|
1020 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
|
1021 gnt_tree_set_show_title(GNT_TREE(tree), TRUE); |
19131
5da541d974a4
Fixed Cancel button callback
Eric Polino <aluink@pidgin.im>
parents:
19130
diff
changeset
|
1022 |
19163
1e4630ee4b2a
Fix some crashes when adding new profiles with the same name.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19162
diff
changeset
|
1023 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
|
1024 FinchSoundEvent * event = &sounds[i]; |
19146 | 1025 |
19163
1e4630ee4b2a
Fix some crashes when adding new profiles with the same name.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19162
diff
changeset
|
1026 if (event->label == NULL) { |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
1027 continue; |
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
1028 } |
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
1029 |
19134
0e4eeb6f6284
merged FinchSoundPrefEvent with FinchSoundEvent and removed id from FSE
Eric Polino <aluink@pidgin.im>
parents:
19132
diff
changeset
|
1030 gnt_tree_add_choice(GNT_TREE(tree), GINT_TO_POINTER(i), |
19161
4521c558796e
In case some decide to get anal about spaces after commas.
Eric Polino <aluink@pidgin.im>
parents:
19160
diff
changeset
|
1031 gnt_tree_create_row(GNT_TREE(tree), "", ""), |
19131
5da541d974a4
Fixed Cancel button callback
Eric Polino <aluink@pidgin.im>
parents:
19130
diff
changeset
|
1032 NULL, NULL); |
5da541d974a4
Fixed Cancel button callback
Eric Polino <aluink@pidgin.im>
parents:
19130
diff
changeset
|
1033 } |
5da541d974a4
Fixed Cancel button callback
Eric Polino <aluink@pidgin.im>
parents:
19130
diff
changeset
|
1034 |
19132
1b942e21ec1b
Some more work to the sound prefs
Eric Polino <aluink@pidgin.im>
parents:
19131
diff
changeset
|
1035 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
|
1036 gnt_box_add_widget(GNT_BOX(win), tree); |
19131
5da541d974a4
Fixed Cancel button callback
Eric Polino <aluink@pidgin.im>
parents:
19130
diff
changeset
|
1037 |
19141
fb880d1adb40
Fix a potential bug.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19139
diff
changeset
|
1038 box = gnt_hbox_new(FALSE); |
19142
5f2bcb110f00
Mark some strings for translation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19141
diff
changeset
|
1039 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
|
1040 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
|
1041 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
|
1042 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
|
1043 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
|
1044 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
|
1045 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
|
1046 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
|
1047 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
|
1048 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
|
1049 |
19146 | 1050 gnt_box_add_widget(GNT_BOX(win), gnt_line_new(FALSE)); |
1051 | |
1052 /* Add new stuff before this */ | |
19141
fb880d1adb40
Fix a potential bug.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19139
diff
changeset
|
1053 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
|
1054 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
|
1055 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
|
1056 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
|
1057 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
|
1058 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
|
1059 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
|
1060 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
|
1061 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
|
1062 |
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(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
|
1064 |
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
|
1065 load_pref_window(finch_sound_get_active_profile()); |
19146 | 1066 |
19119
086cfcb71b01
Created SoundPrefDialog to store dialog data.
Eric Polino <aluink@pidgin.im>
parents:
19118
diff
changeset
|
1067 gnt_widget_show(win); |
19447
1a9b30a95fa6
Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19411
diff
changeset
|
1068 } |
1a9b30a95fa6
Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19411
diff
changeset
|
1069 |
1a9b30a95fa6
Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19411
diff
changeset
|
1070 gboolean finch_sound_is_enabled(void) |
1a9b30a95fa6
Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19411
diff
changeset
|
1071 { |
1a9b30a95fa6
Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19411
diff
changeset
|
1072 const char *pref = make_pref("/method"); |
1a9b30a95fa6
Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19411
diff
changeset
|
1073 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
|
1074 |
1a9b30a95fa6
Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19411
diff
changeset
|
1075 if (!method) |
1a9b30a95fa6
Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19411
diff
changeset
|
1076 return FALSE; |
1a9b30a95fa6
Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19411
diff
changeset
|
1077 if (strcmp(method, "nosound") == 0) |
1a9b30a95fa6
Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19411
diff
changeset
|
1078 return FALSE; |
1a9b30a95fa6
Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19411
diff
changeset
|
1079 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
|
1080 return FALSE; |
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 return TRUE; |
1a9b30a95fa6
Fix #2767 (per-conversation/chat mute option).
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19411
diff
changeset
|
1083 } |
19117
907c41608ada
Added Sounds to the actions list
Eric Polino <aluink@pidgin.im>
parents:
19115
diff
changeset
|
1084 |
19100 | 1085 static PurpleSoundUiOps sound_ui_ops = |
1086 { | |
1087 finch_sound_init, | |
1088 finch_sound_uninit, | |
1089 finch_sound_play_file, | |
1090 finch_sound_play_event, | |
1091 NULL, | |
1092 NULL, | |
1093 NULL, | |
1094 NULL | |
1095 }; | |
1096 | |
1097 PurpleSoundUiOps * | |
1098 finch_sound_get_ui_ops(void) | |
1099 { | |
1100 return &sound_ui_ops; | |
1101 } | |
19154
01d574f529e0
One leak fix. Mostly cosmetic changes.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19149
diff
changeset
|
1102 |