~click2dial-extension-devteam/click2dial-firefox-extension/1.0

« back to all changes in this revision

Viewing changes to chrome/content/asterisk-ext.js

  • Committer: Jonathan SEMCZYK
  • Date: 2010-02-03 15:02:34 UTC
  • mfrom: (4.1.12 trunk)
  • Revision ID: jsemczyk@acipia.fr-20100203150234-ewqy2xxq0xjr2z75
mergedĀ fromĀ trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
13
13
var hostname = gPrefs.getCharPref("extensions.asterisk.host");
14
14
var port = gPrefs.getCharPref("extensions.asterisk.port");
15
15
 
 
16
var gPrefsListener = null;
 
17
 
16
18
/******************************************************************************/
17
19
/* Init                                                                       */
18
20
/******************************************************************************/
35
37
}
36
38
 
37
39
if( window.getBrowser ) window.getBrowser().addEventListener("load", load, true);
 
40
//window.addEventListener("load", load, true);
38
41
 
39
42
 
40
43
/******************************************************************************/
41
44
/* Functions                                                                  */
42
45
/******************************************************************************/
43
46
 
 
47
function PrefListener(branchName, func)
 
48
{
 
49
        var prefService = Components.classes["@mozilla.org/preferences-service;1"]
 
50
                .getService(Components.interfaces.nsIPrefService);
 
51
        var branch = prefService.getBranch(branchName);
 
52
        branch.QueryInterface(Components.interfaces.nsIPrefBranch2);
 
53
 
 
54
        this.register = function()
 
55
        {
 
56
                branch.addObserver("", this, false);
 
57
                branch.getChildList("", { })
 
58
                        .forEach(function (name) { func(branch, name); });
 
59
        };
 
60
 
 
61
        this.unregister = function unregister()
 
62
        {
 
63
                if (branch)
 
64
                        branch.removeObserver("", this);
 
65
        };
 
66
 
 
67
        this.observe = function(subject, topic, data)
 
68
        {
 
69
                if (topic == "nsPref:changed")
 
70
                        func(branch, data);
 
71
        };
 
72
}
 
73
 
44
74
// auto-migration function
45
75
function updatePrefs()
46
76
{
71
101
{
72
102
        updatePrefs();
73
103
 
 
104
        document.getElementById("asterisk-ext-status-icon").setAttribute("hidden", 
 
105
                !gPrefs.getBoolPref("extensions.asterisk.statusicon") );
 
106
        document.getElementById("asterisk-ext-status-textbox").setAttribute("hidden", 
 
107
                !gPrefs.getBoolPref("extensions.asterisk.statustextbox") );
 
108
 
 
109
 
 
110
        gPrefsListener = new PrefListener("extensions.asterisk.",
 
111
                function(branch, name)
 
112
                {
 
113
                        switch (name)
 
114
                        {
 
115
                                case "statusicon":
 
116
                                        document.getElementById("asterisk-ext-status-icon").setAttribute("hidden", !branch.getBoolPref(name));
 
117
                                        break;
 
118
                                case "statustextbox":
 
119
                                        document.getElementById("asterisk-ext-status-textbox").setAttribute("hidden", !branch.getBoolPref(name));
 
120
                                        break;
 
121
                        }
 
122
                });
 
123
        gPrefsListener.register();
 
124
 
74
125
        var parsedocument = gPrefs.getBoolPref("extensions.asterisk.parsedocument");
75
126
        if( !parsedocument )
76
127
        {
127
178
                if( number.length > 0 )
128
179
                {
129
180
                        document.getElementById("context-asterisk").label = getStringBundle().getString("menu_call")+" "+number;
 
181
                        document.getElementById("context-asterisk").value = number;
130
182
                        document.getElementById("context-asterisk-edit").label = getStringBundle().getString("menu_editcall")+" "+number;
 
183
                        document.getElementById("context-asterisk-edit").value = number;
131
184
                        document.getElementById("context-asterisk").hidden = false;
132
185
                        document.getElementById("context-asterisk-edit").hidden = false;
133
186
                }
144
197
        }
145
198
}
146
199
 
 
200
function statusDial()
 
201
{
 
202
        var text = document.getElementById("asterisk-ext-status-textbox");
 
203
        dial(cleanPhoneNumber(text.value));
 
204
}
 
205
 
147
206
function onStatusButtonMouseDown()
148
207
{
149
208
        var popup = document.getElementById('asterisk-ext-popup');
161
220
 
162
221
function onStatusBarContextMenu(event)
163
222
{
 
223
        var skipclipboard = false;
 
224
        var clip = Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);
 
225
        if (clip)
 
226
        {
 
227
                var trans = Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);
 
228
                if (trans)
 
229
                {
 
230
                        trans.addDataFlavor("text/unicode");
 
231
                        clip.getData(trans,clip.kGlobalClipboard);
 
232
                        var str=new Object();
 
233
                        var strLength=new Object();
 
234
                        try
 
235
                        {
 
236
                                trans.getTransferData("text/unicode",str,strLength);
 
237
                        }
 
238
                        catch(e)
 
239
                        {
 
240
                                skipclipboard = true;
 
241
                        }
 
242
                        if (!skipclipboard) 
 
243
                        {
 
244
                                str=str.value.QueryInterface(Components.interfaces.nsISupportsString);
 
245
                                // ""+str needed to convert this into a string object
 
246
                                var number = cleanPhoneNumber(""+str);
 
247
                                if( number.length > 0 )
 
248
                                {
 
249
                                        document.getElementById("asterisk-ext-call-menuitem").label = getStringBundle().getString("menu_call")+" "+number;
 
250
                                        document.getElementById("asterisk-ext-call-menuitem").value = number;
 
251
                                        document.getElementById("asterisk-ext-call-menuitem").hidden = false;
 
252
                                }
 
253
                                else
 
254
                                {
 
255
                                        skipclipboard = true;
 
256
                                        document.getElementById("asterisk-ext-call-menuitem").hidden = true;
 
257
                                }
 
258
                        }
 
259
                }
 
260
                else
 
261
                {
 
262
                        skipclipboard = true;
 
263
                }
 
264
        }
 
265
        else
 
266
        {
 
267
                skipclipboard = true;
 
268
        }
 
269
        
 
270
        if(skipclipboard)
 
271
        {
 
272
                var selection = getBrowserSelection();
 
273
                //alert("calling context with: "+selection);
 
274
                if( selection )
 
275
                {
 
276
                        var number = cleanPhoneNumber(selection);
 
277
                        if( number.length > 0 )
 
278
                        {
 
279
                                document.getElementById("asterisk-ext-call-menuitem").label = getStringBundle().getString("menu_call")+" "+number;
 
280
                                document.getElementById("asterisk-ext-call-menuitem").value = number;
 
281
                                document.getElementById("asterisk-ext-call-menuitem").hidden = false;
 
282
                        }
 
283
                        else
 
284
                        {
 
285
                                document.getElementById("asterisk-ext-call-menuitem").hidden = true;
 
286
                        }
 
287
                }
 
288
                else
 
289
                {
 
290
                        document.getElementById("asterisk-ext-call-menuitem").hidden = true;
 
291
                }
 
292
        }
 
293
 
 
294
 
164
295
        if( gManager.requireConnection() )
165
296
        {
166
297
                if ( gManager.isConnected() )
232
363
 
233
364
 
234
365
function dial(phonenumber)
235
 
{  
 
366
{
 
367
        gConsoleService.logStringMessage("trying to call:"+phonenumber);
 
368
        if( phonenumber.length == 0 ) return;
 
369
        var prefix = gPrefs.getCharPref("extensions.asterisk.prefix");
236
370
        var host = gPrefs.getCharPref("extensions.asterisk.host");
237
 
    var port = gPrefs.getCharPref("extensions.asterisk.port");
238
 
    var username = gPrefs.getCharPref("extensions.asterisk.username");
239
 
    var password = gPrefs.getCharPref("extensions.asterisk.password");
240
 
    var context = gPrefs.getCharPref("extensions.asterisk.context");
241
 
//    var priority = gPrefs.getCharPref("extensions.asterisk.priority");
242
 
    var channel = gPrefs.getCharPref("extensions.asterisk.channel");
243
 
    var extension = gPrefs.getCharPref("extensions.asterisk.extension");
244
 
//    var callerid = gPrefs.getCharPref("extensions.asterisk.callerid");
245
 
 
246
 
 
247
 
//    var host = "pabx.acipia.local";
248
 
//    var port = "5038";
249
 
//    var username = "test";
250
 
//    var password = "testsecret";
251
 
//    var context = "internal";
252
 
    var priority = "1";
253
 
//    var channel = "SIP/211";
254
 
    var callerid = phonenumber;
255
 
//    var phonenumber = "213";
 
371
        var port = gPrefs.getCharPref("extensions.asterisk.port");
 
372
        var username = gPrefs.getCharPref("extensions.asterisk.username");
 
373
        var password = gPrefs.getCharPref("extensions.asterisk.password");
 
374
        var context = gPrefs.getCharPref("extensions.asterisk.context");
 
375
        var channel = gPrefs.getCharPref("extensions.asterisk.channel");
 
376
        var extension = gPrefs.getCharPref("extensions.asterisk.extension");
 
377
 
 
378
        var priority = "1";
 
379
        var callerid = phonenumber;
256
380
 
257
381
        var logoff = function() {
258
382
                gManager.logoff();
259
383
        };
260
384
 
261
385
        var originate = function() {
262
 
                gManager.originate(channel+"/"+extension, phonenumber, context, logoff);
 
386
                gManager.originate(channel+"/"+extension, prefix+phonenumber, context, logoff);
263
387
        };
264
388
        
265
389
        gManager.login(username, password, originate);
269
393
 
270
394
function confirmDial(number)
271
395
{
272
 
        if( confirm(getStringBundle().getString("menu_call")+" "+number+" ?") )
 
396
        if( number.length == 0 ) return;
 
397
        var prompts = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
 
398
                .getService(Components.interfaces.nsIPromptService);
 
399
        var result = prompts.confirm(window, "Asterisk Click2Dial", getStringBundle().getString("menu_call")+" "+number+" ?");
 
400
        if( result )
273
401
    {
274
402
        dial(number);
275
403
    }
277
405
 
278
406
function editConfirmDial(number)
279
407
{
280
 
    if( result = prompt(getStringBundle().getString("menu_call")+" ", number) )
 
408
        if( number.length == 0 ) return;
 
409
        var prompts = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
 
410
                .getService(Components.interfaces.nsIPromptService);
 
411
        var input = {value: number};
 
412
        var check = {value: false};
 
413
        result = prompts.prompt(window, "Asterisk Click2Dial", getStringBundle().getString("menu_call")+" ", input, null, check);
 
414
    if( result )
281
415
    {
282
 
        dial(result);
 
416
        dial(input.value);
283
417
    }
284
418
}
285
419