Home | History | Annotate | Download | only in chromeos
      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