]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/xul/staff_client/chrome/content/util/sound.js
Rework constants for audio to be more dynamic. We can now specify a specific sound...
[working/Evergreen.git] / Open-ILS / xul / staff_client / chrome / content / util / sound.js
1 dump('entering util/sound.js\n');
2
3 if (typeof util == 'undefined') util = {};
4 util.sound = function () {
5
6     try {
7         netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
8         var SOUNDContractID = "@mozilla.org/sound;1";
9         var SOUNDIID        = Components.interfaces.nsISound;
10         this.SOUND          = Components.classes[SOUNDContractID].createInstance(SOUNDIID);
11         this.SOUND.init(); // not necessary, but helps avoid delays?
12
13     } catch(E) {
14         dump('util.sound constructor: ' + E + '\n');
15     }
16
17     return this;
18 };
19
20 util.sound.prototype = {
21
22     'xp_url_init' : function (aURL) {
23         try {
24             netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
25             var URLContractID   = "@mozilla.org/network/standard-url;1";
26             var URLIID          = Components.classes[URLContractID].createInstance( );
27             var URL             = URLIID.QueryInterface(Components.interfaces.nsIURL);
28             if (aURL) {
29                 URL.spec = aURL;
30             }
31             return URL;
32         } catch(E) {
33             alert('xp_url_init(): ' + E);
34         }
35     },
36
37     'play_url' : function(url) {
38
39         if (!url) { return; /* sound of silence */ }
40
41         var obj = this;
42         try {
43             netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
44             JSAN.use('OpenILS.data'); var data = new OpenILS.data(); data.init({'via':'stash'});
45             var url2 = obj.xp_url_init( data.server + url );
46             dump('SOUND: file = ' + url + '\n');
47             if (typeof data.no_sound == 'undefined' || data.no_sound == false || data.no_sound == 'false') obj.SOUND.play( url2 );
48         } catch(E) {
49             try { if (data.no_sound == 'undefined' || data.no_sound == false || data.no_sound == 'false') obj.SOUND.beep(); } catch(F) { 
50                 dump('beep(): ' + F + '\n');
51             }
52             dump('play_url(): ' + E + '\n');
53         }
54     },
55
56     'event' : function event(evt) {
57         var key = 'AUDIO_' + arguments.callee.name + '_' + evt.textcode;
58         dump('SOUND: key = ' + key + '\n');
59         this.play_url( urls[key] );
60     },
61
62     'good' : function good(e){
63         var key = 'AUDIO_' + arguments.callee.name;
64         dump('SOUND: key = ' + key + '\n');
65         this.play_url( urls[key] );
66     },
67
68     'bad' : function bad(e){
69         var key = 'AUDIO_' + arguments.callee.name;
70         dump('SOUND: key = ' + key + '\n');
71         this.play_url( urls[key] );
72     },
73
74     'horrible' : function horrible(e){
75         var key = 'AUDIO_' + arguments.callee.name;
76         dump('SOUND: key = ' + key + '\n');
77         this.play_url( urls[key] );
78     },
79
80     'circ_good' : function circ_good(e){
81         var key = 'AUDIO_' + arguments.callee.name;
82         dump('SOUND: key = ' + key + '\n');
83         this.play_url( urls[key] );
84     },
85
86     'circ_bad' : function circ_bad(e){
87         var key = 'AUDIO_' + arguments.callee.name;
88         dump('SOUND: key = ' + key + '\n');
89         this.play_url( urls[key] );
90     }
91 }
92
93 dump('exiting util/sound.js\n');