1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 cr.define('mobile', function() { 6 7 function ChooseNetwork() { 8 } 9 10 cr.addSingletonGetter(ChooseNetwork); 11 12 ChooseNetwork.prototype = { 13 networks_: [], 14 showNetworks_: function(networks) { 15 this.networks_ = networks; 16 17 if (networks.length == 0) { 18 $('scanning').hidden = true; 19 $('choosing').hidden = true; 20 $('no-mobile-networks').hidden = false; 21 return; 22 } 23 24 var container = $('choosing'); 25 container.innerHTML = ''; 26 for (var i in networks) { 27 var elem = document.createElement('div'); 28 elem.innerHTML = 29 '<input type="radio" name="network" id="network' + i + '" />' + 30 '<label for="network' + i + '" id="label' + i + '"></label>'; 31 container.appendChild(elem); 32 $('label' + i).textContent = networks[i].operatorName; 33 if (networks[i].status == 'current') { 34 $('network' + i).checked = true; 35 $('connect').disabled = false; 36 } else if (networks[i].status == 'forbidden') { 37 $('network' + i).disabled = true; 38 elem.className = 'disabled'; 39 } else { 40 $('network' + i).addEventListener('click', function(event) { 41 $('connect').disabled = false; 42 }); 43 } 44 } 45 $('scanning').hidden = true; 46 $('choosing').hidden = false; 47 $('no-mobile-networks').hidden = true; 48 }, 49 connect_: function() { 50 for (var i in this.networks_) { 51 if ($('network' + i).checked) { 52 chrome.send('connect', [this.networks_[i].networkId]); 53 ChooseNetwork.close(); 54 return; 55 } 56 } 57 } 58 }; 59 60 ChooseNetwork.cancel = function() { 61 chrome.send('cancel'); 62 ChooseNetwork.close(); 63 }; 64 65 ChooseNetwork.close = function() { 66 window.close(); 67 }; 68 69 ChooseNetwork.connect = function() { 70 ChooseNetwork.getInstance().connect_(); 71 }; 72 73 ChooseNetwork.initialize = function() { 74 $('cancel').addEventListener('click', function(event) { 75 ChooseNetwork.cancel(); 76 }); 77 78 $('connect').disabled = true; 79 $('connect').addEventListener('click', function(event) { 80 ChooseNetwork.connect(); 81 }); 82 chrome.send('pageReady'); 83 }; 84 85 ChooseNetwork.showNetworks = function(networks) { 86 ChooseNetwork.getInstance().showNetworks_(networks); 87 }; 88 89 // Export 90 return { 91 ChooseNetwork: ChooseNetwork 92 }; 93 }); 94 95 var ChooseNetwork = mobile.ChooseNetwork; 96 97 document.addEventListener('DOMContentLoaded', function() { 98 // TODO(dpolukhin): refactor spinner code&css to be reusable. 99 // Setup css canvas 'spinner-circle' 100 (function() { 101 var lineWidth = 3; 102 var r = 8; 103 var ctx = document.getCSSCanvasContext( 104 '2d', 'spinner-circle', 2 * r, 2 * r); 105 106 ctx.lineWidth = lineWidth; 107 ctx.lineCap = 'round'; 108 ctx.lineJoin = 'round'; 109 110 ctx.strokeStyle = '#4e73c7'; 111 ctx.beginPath(); 112 ctx.moveTo(lineWidth / 2, r - lineWidth / 2); 113 ctx.arc(r, r, r - lineWidth / 2, Math.PI, Math.PI * 3 / 2); 114 ctx.stroke(); 115 })(); 116 117 ChooseNetwork.initialize(); 118 }); 119 120 disableTextSelectAndDrag(); 121