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