Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

Bug 813854 - Add APN settings for MMS and A-GPS

  • Loading branch information...
commit 1c15279fa71b4c18d77a4ff19e6245cac61b836d 1 parent 7baaf75
Fabien Cazenave authored December 06, 2012
114  apps/settings/index.html
@@ -383,21 +383,21 @@ <h2 data-l10n-id="availableOperators"> Network Operators in the Area </h2>
383 383
       -->
384 384
     </section>
385 385
 
386  
-    <!-- Connectivity :: Cellular & Data :: APN Settings -->
387  
-    <section role="region" hidden id="carrier-apnSettings">
  386
+    <!-- Connectivity :: Cellular & Data :: Data Settings -->
  387
+    <section role="region" hidden id="carrier-dataSettings">
388 388
       <!--
389 389
       <header>
390 390
         <button type="reset"><span data-l10n-id="back" class="icon icon-back">Back</span></button>
391 391
         <menu type="toolbar">
392 392
           <button type="submit"><span data-l10n-id="ok">OK</span></button>
393 393
         </menu>
394  
-        <h1 data-l10n-id="apnSettings"> APN Settings </h1>
  394
+        <h1 data-l10n-id="dataSettings"> Data Settings </h1>
395 395
       </header>
396 396
 
397  
-      <ul id="apnSettings-list">
398  
-        <li id="apnSettings-custom">
  397
+      <ul class="apnSettings-list">
  398
+        <li class="apnSettings-custom">
399 399
           <label>
400  
-            <input type="radio" name="APN.name" value="_custom_" checked />
  400
+            <input type="radio" name="ril.data.carrier" value="_custom_" checked />
401 401
             <span></span>
402 402
           </label>
403 403
           <a data-l10n-id="custom">(custom settings)</a>
@@ -407,7 +407,7 @@ <h1 data-l10n-id="apnSettings"> APN Settings </h1>
407 407
       <header>
408 408
         <h2 data-l10n-id="advancedSettings"> Advanced Settings </h2>
409 409
       </header>
410  
-      <ul id="apnSettings-advanced">
  410
+      <ul class="apnSettings-advanced">
411 411
         <li>
412 412
           <p data-l10n-id="apn">APN</p>
413 413
           <input type="text" data-setting="ril.data.apn" />
@@ -443,18 +443,100 @@ <h2 data-l10n-id="advancedSettings"> Advanced Settings </h2>
443 443
         <h1 data-l10n-id="mmsSettings"> MMS Settings </h1>
444 444
       </header>
445 445
 
446  
-      <ul>
  446
+      <ul class="apnSettings-list">
  447
+        <li class="apnSettings-custom">
  448
+          <label>
  449
+            <input type="radio" name="ril.mms.carrier" value="_custom_" checked />
  450
+            <span></span>
  451
+          </label>
  452
+          <a data-l10n-id="custom">(custom settings)</a>
  453
+        </li>
  454
+      </ul>
  455
+
  456
+      <header>
  457
+        <h2 data-l10n-id="advancedSettings"> Advanced Settings </h2>
  458
+      </header>
  459
+      <ul class="apnSettings-advanced">
  460
+        <li>
  461
+          <p data-l10n-id="apn">APN</p>
  462
+          <input type="text" data-setting="ril.data.apn" />
  463
+        </li>
  464
+        <li>
  465
+          <p data-l10n-id="identity">identity</p>
  466
+          <input type="text" data-setting="ril.data.user" />
  467
+        </li>
  468
+        <li>
  469
+          <p data-l10n-id="password">password</p>
  470
+          <input type="text" data-setting="ril.data.passwd" />
  471
+        </li>
  472
+        <li>
  473
+          <p data-l10n-id="httpProxyHost">HTTP Proxy Host</p>
  474
+          <input type="text" data-setting="ril.data.httpProxyHost" />
  475
+        </li>
  476
+        <li>
  477
+          <p data-l10n-id="httpProxyPort">HTTP Proxy Port</p>
  478
+          <input type="text" data-setting="ril.data.httpProxyPort" />
  479
+        </li>
447 480
         <li>
448 481
           <p data-l10n-id="mmsproxy">MMS Proxy</p>
449  
-          <input type="text" data-setting="ril.data.mmsproxy" value="foo" />
  482
+          <input type="text" data-setting="ril.mms.mmsproxy" />
450 483
         </li>
451 484
         <li>
452 485
           <p data-l10n-id="mmsport">MMS Port</p>
453  
-          <input type="text" data-setting="ril.data.mmsport" value="bar" />
  486
+          <input type="text" data-setting="ril.mms.mmsport" />
454 487
         </li>
455 488
         <li>
456 489
           <p data-l10n-id="mmsc">MMSC</p>
457  
-          <input type="text" data-setting="ril.data.mmsc" value="baz" />
  490
+          <input type="text" data-setting="ril.mms.mmsc" />
  491
+        </li>
  492
+      </ul>
  493
+      -->
  494
+    </section>
  495
+
  496
+    <!-- Connectivity :: Cellular & Data :: A-GPS Settings -->
  497
+    <section role="region" hidden id="carrier-suplSettings">
  498
+      <!--
  499
+      <header>
  500
+        <button type="reset"><span data-l10n-id="back" class="icon icon-back">Back</span></button>
  501
+        <menu type="toolbar">
  502
+          <button type="submit"><span data-l10n-id="ok">OK</span></button>
  503
+        </menu>
  504
+        <h1 data-l10n-id="suplSettings"> A-GPS Settings </h1>
  505
+      </header>
  506
+
  507
+      <ul class="apnSettings-list">
  508
+        <li class="apnSettings-custom">
  509
+          <label>
  510
+            <input type="radio" name="ril.supl.carrier" value="_custom_" checked />
  511
+            <span></span>
  512
+          </label>
  513
+          <a data-l10n-id="custom">(custom settings)</a>
  514
+        </li>
  515
+      </ul>
  516
+
  517
+      <header>
  518
+        <h2 data-l10n-id="advancedSettings"> Advanced Settings </h2>
  519
+      </header>
  520
+      <ul class="apnSettings-advanced">
  521
+        <li>
  522
+          <p data-l10n-id="apn">APN</p>
  523
+          <input type="text" data-setting="ril.supl.apn" />
  524
+        </li>
  525
+        <li>
  526
+          <p data-l10n-id="identity">identity</p>
  527
+          <input type="text" data-setting="ril.supl.user" />
  528
+        </li>
  529
+        <li>
  530
+          <p data-l10n-id="password">password</p>
  531
+          <input type="text" data-setting="ril.supl.passwd" />
  532
+        </li>
  533
+        <li>
  534
+          <p data-l10n-id="httpProxyHost">HTTP Proxy Host</p>
  535
+          <input type="text" data-setting="ril.supl.httpProxyHost" />
  536
+        </li>
  537
+        <li>
  538
+          <p data-l10n-id="httpProxyPort">HTTP Proxy Port</p>
  539
+          <input type="text" data-setting="ril.supl.httpProxyPort" />
458 540
         </li>
459 541
       </ul>
460 542
       -->
@@ -516,8 +598,8 @@ <h2 data-l10n-id="advancedSettings"> Advanced Settings </h2>
516 598
         </li>
517 599
         <li>
518 600
           <label>
519  
-            <button data-href="#carrier-apnSettings"
520  
-              data-l10n-id="apnSettings">APN Settings</button>
  601
+            <button data-href="#carrier-dataSettings"
  602
+              data-l10n-id="dataSettings">Data Settings</button>
521 603
           </label>
522 604
         </li>
523 605
         <li hidden>
@@ -526,6 +608,12 @@ <h2 data-l10n-id="advancedSettings"> Advanced Settings </h2>
526 608
               data-l10n-id="mmsSettings">MMS Settings</button>
527 609
           </label>
528 610
         </li>
  611
+        <li>
  612
+          <label>
  613
+            <button data-href="#carrier-suplSettings"
  614
+              data-l10n-id="suplSettings">A-GPS Settings</button>
  615
+          </label>
  616
+        </li>
529 617
       </ul>
530 618
 
531 619
       <script type="application/javascript" defer src="js/carrier.js"></script>
76  apps/settings/js/carrier.js
@@ -5,8 +5,7 @@
5 5
 
6 6
 // handle carrier settings
7 7
 var Carrier = (function newCarrier(window, document, undefined) {
8  
-  var APN_FILE = 'shared/resources/apn.json';
9  
-  var gAPNPanel = document.getElementById('carrier-apnSettings');
  8
+  var APN_FILE = '/shared/resources/apn.json';
10 9
 
11 10
   /**
12 11
    * gCompatibleAPN holds all compatible APNs matching the current iccInfo
@@ -14,14 +13,17 @@ var Carrier = (function newCarrier(window, document, undefined) {
14 13
    */
15 14
 
16 15
   var gCompatibleAPN = null;
17  
-  var gUserChosenAPN = false;
18 16
 
19 17
   // query <apn> elements matching the mcc/mnc arguments
20  
-  function queryAPN(callback, usageFilter) {
21  
-    usageFilter = usageFilter || 'default';
  18
+  function queryAPN(callback, usage) {
22 19
     if (!callback)
23 20
       return;
24 21
 
  22
+    var usageFilter = usage;
  23
+    if (!usage || usage == 'data') {
  24
+      usageFilter = 'default';
  25
+    }
  26
+
25 27
     // filter APNs by usage
26 28
     var filter = function(apnList) {
27 29
       var found = [];
@@ -35,7 +37,7 @@ var Carrier = (function newCarrier(window, document, undefined) {
35 37
 
36 38
     // early way out if the query has already been performed
37 39
     if (gCompatibleAPN) {
38  
-      callback(filter(gCompatibleAPN));
  40
+      callback(filter(gCompatibleAPN), usage);
39 41
       return;
40 42
     }
41 43
 
@@ -50,20 +52,25 @@ var Carrier = (function newCarrier(window, document, undefined) {
50 52
         var mnc = gMobileConnection.iccInfo.mnc;
51 53
         // get a list of matching APNs
52 54
         gCompatibleAPN = apn[mcc] ? (apn[mcc][mnc] || []) : [];
53  
-        callback(filter(gCompatibleAPN));
  55
+        callback(filter(gCompatibleAPN), usage);
54 56
       }
55 57
     };
56 58
     xhr.send();
57 59
   }
58 60
 
59 61
   // update APN fields
60  
-  function updateAPNList(apnItems) {
61  
-    var apnList = document.getElementById('apnSettings-list');
62  
-    var lastItem = apnList.lastElementChild;
  62
+  function updateAPNList(apnItems, usage) {
  63
+    var apnPanel = document.getElementById('carrier-' + usage + 'Settings');
  64
+    if (!apnPanel) // unsupported APN type
  65
+      return;
  66
+
  67
+    var apnList = apnPanel.querySelector('.apnSettings-list');
  68
+    var advForm = apnPanel.querySelector('.apnSettings-advanced');
  69
+    var lastItem = apnList.querySelector('.apnSettings-custom');
63 70
 
64 71
     // helper
65 72
     function rilData(name) {
66  
-      var selector = 'input[data-setting="ril.data.' + name + '"]';
  73
+      var selector = 'input[data-setting="ril.' + usage + '.' + name + '"]';
67 74
       return document.querySelector(selector);
68 75
     }
69 76
 
@@ -72,7 +79,7 @@ var Carrier = (function newCarrier(window, document, undefined) {
72 79
       // create an <input type="radio"> element
73 80
       var input = document.createElement('input');
74 81
       input.type = 'radio';
75  
-      input.name = 'APN.name';
  82
+      input.name = 'ril.' + usage + '.carrier';
76 83
       input.value = item.carrier || item.apn;
77 84
       input.onclick = function fillAPNData() {
78 85
         rilData('apn').value = item.apn || '';
@@ -80,6 +87,11 @@ var Carrier = (function newCarrier(window, document, undefined) {
80 87
         rilData('passwd').value = item.password || '';
81 88
         rilData('httpProxyHost').value = item.proxy || '';
82 89
         rilData('httpProxyPort').value = item.port || '';
  90
+        if (usage == 'mms') {
  91
+          rilData('mmsc').value = item.mmsc || '';
  92
+          rilData('mmsproxy').value = item.mmsproxy || '';
  93
+          rilData('mmsport').value = item.mmsport || '';
  94
+        }
83 95
       };
84 96
 
85 97
       // include the radio button element in a list item
@@ -106,11 +118,11 @@ var Carrier = (function newCarrier(window, document, undefined) {
106 118
       apnList.insertBefore(createAPNItem(apnItems[i]), lastItem);
107 119
     }
108 120
 
109  
-    // find the current APN
  121
+    // find the current APN, relying on the carrier name
110 122
     var settings = Settings.mozSettings;
111  
-    if (settings && !gUserChosenAPN) {
  123
+    if (settings) {
112 124
       var radios = apnList.querySelectorAll('input[type="radio"]');
113  
-      var key = 'APN.name';
  125
+      var key = 'ril.' + usage + '.carrier';
114 126
       var request = settings.createLock().get(key);
115 127
       request.onsuccess = function() {
116 128
         var found = false;
@@ -119,25 +131,21 @@ var Carrier = (function newCarrier(window, document, undefined) {
119 131
             radios[i].checked = (request.result[key] === radios[i].value);
120 132
             found = found || radios[i].checked;
121 133
           }
122  
-        }
123  
-        if (!found) {
124  
-          lastItem.querySelector('input').checked = true;
  134
+          if (!found) {
  135
+            lastItem.querySelector('input').checked = true;
  136
+          }
125 137
         }
126 138
       };
127 139
     }
128 140
 
129 141
     // set current APN to 'custom' on user modification
130  
-    gAPNPanel.onchange = function onChange(event) {
131  
-      gUserChosenAPN = true;
132  
-      if (event.target.type == 'text') {
133  
-        var lastInput = lastItem.querySelector('input');
134  
-        lastInput.checked = true;
135  
-        // send a 'change' event to update the related mozSetting
136  
-        var evtObject = document.createEvent('Event');
137  
-        evtObject.initEvent('change', true, false);
138  
-        lastInput.dispatchEvent(evtObject);
139  
-      }
  142
+    advForm.onchange = function onCustomInput(event) {
  143
+      lastItem.querySelector('input').checked = true;
140 144
     };
  145
+
  146
+    // force data connection to restart if changes are validated
  147
+    apnPanel.querySelector('button[type=submit]').onclick =
  148
+        restartDataConnection;
141 149
   }
142 150
 
143 151
   // restart data connection by toggling it off and on again
@@ -323,11 +331,8 @@ var Carrier = (function newCarrier(window, document, undefined) {
323 331
   // public API
324 332
   return {
325 333
     // display matching APNs
326  
-    fillAPNList: function carrier_fillAPNList() {
327  
-      queryAPN(updateAPNList);
328  
-      // force data connection to restart if changes are validated
329  
-      gAPNPanel.querySelector('button[type=submit]').onclick =
330  
-          restartDataConnection;
  334
+    fillAPNList: function carrier_fillAPNList(usage) {
  335
+      queryAPN(updateAPNList, usage);
331 336
     },
332 337
 
333 338
     // startup
@@ -335,7 +340,10 @@ var Carrier = (function newCarrier(window, document, undefined) {
335 340
       gMobileConnection.addEventListener('datachange', updateConnection);
336 341
       updateConnection();
337 342
       updateSelectionMode();
338  
-      this.fillAPNList(); // XXX this should be done later -- not during init()
  343
+      // XXX this should be done later -- not during init()
  344
+      this.fillAPNList('data');
  345
+      this.fillAPNList('mms');
  346
+      this.fillAPNList('supl');
339 347
     }
340 348
   };
341 349
 })(this, document);
55  apps/settings/locales/settings.en-US.properties
@@ -107,11 +107,12 @@ operator-status-connecting       = Connecting…
107 107
 operator-status-connectingfailed = Connection failed
108 108
 operator-status-connected        = Connected
109 109
 apn=APN
110  
-apnSettings=APN settings
111  
-mmsSettings=MMS settings
112  
-mmsport=MMS port
113  
-mmsproxy=MMS proxy
114  
-mmsc=MMSC
  110
+dataSettings = Data settings
  111
+suplSettings = A-GPS settings
  112
+mmsSettings  = MMS settings
  113
+mmsport  = MMS port
  114
+mmsproxy = MMS proxy
  115
+mmsc     = MMSC
115 116
 autoConfigure=Auto-configure
116 117
 httpProxyHost=HTTP proxy host
117 118
 httpProxyPort=HTTP proxy port
@@ -128,9 +129,9 @@ bt-status-turnoff  = Turned off
128 129
 bt-status-paired = {[ plural(n) ]}
129 130
 bt-status-paired[zero]  = {{name}}
130 131
 bt-status-paired[one]   = {{name}}, +{{n}} more
131  
-bt-status-paired[two] = {{name}}, +{{n}} more
132  
-bt-status-paired[few] = {{name}}, +{{n}} more
133  
-bt-status-paired[many] = {{name}}, +{{n}} more
  132
+bt-status-paired[two]   = {{name}}, +{{n}} more
  133
+bt-status-paired[few]   = {{name}}, +{{n}} more
  134
+bt-status-paired[many]  = {{name}}, +{{n}} more
134 135
 bt-status-paired[other] = {{name}}, +{{n}} more
135 136
 device-status-tap-connect = Tap to connect
136 137
 device-status-pairing     = Pairing with device…
@@ -158,7 +159,7 @@ passive-pair-passkey      = {{device}} would like to pair with this phone. To ac
158 159
 error-pair-title      = Unable to pair devices
159 160
 error-pair-pincode    = Unable to pair with the device. Check that the PIN is correct.
160 161
 error-connect-title   = Unable to connect devices
161  
-error-connect-msg     = Check that the device you're trying to connect with is still in range and has Bluetooth turned on.
  162
+error-connect-msg     = Check that the device youre trying to connect with is still in range and has Bluetooth turned on.
162 163
 unpair-title = Unpair a connected device?
163 164
 unpair-msg   = You are currently connected to this device. Unpairing will also disconnect from it.
164 165
 
@@ -311,7 +312,7 @@ enter-passcode=Enter passcode
311 312
 new-passcode=New passcode
312 313
 current-passcode=Current passcode
313 314
 incorrect-passcode=Passcode is incorrect
314  
-passcode-doesnt-match=Passcode doesn't match. Try again.
  315
+passcode-doesnt-match=Passcode doesnt match. Try again.
315 316
 passcode=Passcode
316 317
 confirm-passcode=Confirm passcode
317 318
 immediately=Immediately
@@ -336,11 +337,11 @@ pukTitle=Enter PUK code
336 337
 newpinTitle=New PIN
337 338
 pinErrorMsg=The PIN was incorrect.
338 339
 pinAttemptMsg={[ plural(n) ]}
339  
-pinAttemptMsg[one]=one last try.
340  
-pinAttemptMsg[two]={{n}} tries left.
341  
-pinAttemptMsg[few]={{n}} tries left.
342  
-pinAttemptMsg[many]={{n}} tries left.
343  
-pinAttemptMsg[other]={{n}} tries left.
  340
+pinAttemptMsg[one]   = one last try.
  341
+pinAttemptMsg[two]   = {{n}} tries left.
  342
+pinAttemptMsg[few]   = {{n}} tries left.
  343
+pinAttemptMsg[many]  = {{n}} tries left.
  344
+pinAttemptMsg[other] = {{n}} tries left.
344 345
 pinLastChanceMsg=This is your last chance to enter the correct PIN. Otherwise, you must enter the PUK code to use this SIM card.
345 346
 simCardLockedMsg=The SIM card is locked.
346 347
 enterPukMsg=You must enter the Personal Unlocking Key (PUK) code for the SIM card. Refer to your SIM card documentation or contact your carrier for more information.
@@ -407,9 +408,9 @@ aboutBrowserOS  = About {{brandShortName}}
407 408
 browser-os-desc = {{brandShortName}} is the free and open source operating system from Mozilla. Our mission is to promote openness, innovation and opportunity by keeping the power of the Web in your hands.
408 409
 learn-more=Learn More
409 410
 reset-phone=Reset Phone
410  
-reset-warning-1= CAUTION: Resetting will erase all your data, including any apps you've purchased.
  411
+reset-warning-1= CAUTION: Resetting will erase all your data, including any apps youve purchased.
411 412
 reset-warning-2= The phone will be restored to its factory condition. None of your settings or data will be saved.
412  
-# Localization note: the licensing* strings below aren’t ready for translation yet.
  413
+# LOCALIZATION NOTE: the licensing* strings below aren’t ready for translation yet.
413 414
 about-your-rights   = About your rights
414 415
 about-your-rights-0 = {{brandShortName}} is built on free and open source software by a community of thousands from all over the world. There are a few things you should know:
415 416
 about-your-rights-1 = {{brandShortName}} is made available to you under the terms of several open source licenses including the Mozilla Public License. A device running {{brandShortName}} may also contain proprietary software from third parties. Any code provided under open licenses give you the right to modify the source code and distribute your modified versions as long as you comply with their terms.
@@ -433,12 +434,12 @@ deviceStorage=Device storage
433 434
 umsEnabled=USB mass storage enabled
434 435
 umsUnplugToDisable=Unplug USB cable to disable
435 436
 appStorage=Application storage
436  
-size-B = {{size}} B
  437
+size-B  = {{size}} B
437 438
 size-KB = {{size}} KB
438 439
 size-MB = {{size}} MB
439 440
 size-GB = {{size}} GB
440 441
 size-TB = {{size}} TB
441  
-available-size-B = {{size}} B available
  442
+available-size-B  = {{size}} B available
442 443
 available-size-KB = {{size}} KB available
443 444
 available-size-MB = {{size}} MB available
444 445
 available-size-GB = {{size}} GB available
@@ -463,7 +464,7 @@ battery=Battery
463 464
 batteryLevel=Current level
464 465
 batteryLevel-percent-unplugged = {{level}}%
465 466
 batteryLevel-percent-charging  = {{level}}% (charging)
466  
-batteryLevel-percent-charged  = {{level}}% (charged)
  467
+batteryLevel-percent-charged   = {{level}}% (charged)
467 468
 powerSaveMode=Power save mode
468 469
 powerSave-threshold={{level}}% battery left
469 470
 powerSave-expl=Turning on power save mode turns off the phone’s data, Bluetooth and GPS connections to extend battery life. You can still turn these services back on manually.
@@ -487,10 +488,10 @@ neverSendReport=Never send a report
487 488
 askToSendReport=Ask me when a crash occurs
488 489
 
489 490
 # Device :: Improve Browser OS :: Crash Reports
490  
-# Localization note (crash-reports-description-*): These strings are also included in system.properties
  491
+# LOCALIZATION NOTE (crash-reports-description-*): these strings are also included in system.properties
491 492
 crash-reports-description-1=A crash report contains some details about the crash and your device, as well as a snapshot of the state of your device when it crashed.
492 493
 crash-reports-description-2=This may include things like open pages and apps, text typed into forms and the content of open messages, recent browsing history, or geolocation used by an open app.
493  
-# Localization note (crash-reports-description-3-*): These strings are a paragraph, with a "privacy policy"
  494
+# LOCALIZATION NOTE (crash-reports-description-3-*): these strings are a paragraph, with a "privacy policy"
494 495
 # link in the middle. Include trailing spaces as needed.
495 496
 crash-reports-description-3-start=We use crash reports to try to fix problems and improve our products. We handle your information as we describe in our 
496 497
 crash-reports-description-3-privacy=privacy policy
@@ -498,17 +499,17 @@ crash-reports-description-3-end=.
498 499
 
499 500
 # Device :: Help
500 501
 online-support=Online support:
501  
-# Localization note (online-support.href): This is the URL for the online support page.
  502
+# LOCALIZATION NOTE (online-support.href): this is the URL for the online support page.
502 503
 online-support.href=http://www.vivo.com.br/portalweb/appmanager/env/web?_nfls=false&_nfpb=true&_pageLabel=vcAtendMovelBook&WT.ac=portal.atendimento.movel
503  
-# Localization note (online-support-link-text): This text will appear as a link.
  504
+# LOCALIZATION NOTE (online-support-link-text): This text will appear as a link.
504 505
 online-support-link-text=Vivo
505 506
 call-support=Call support:
506  
-# Localization note (call-support-link-1): This text will appear as a link.
  507
+# LOCALIZATION NOTE (call-support-link-1): this text will appear as a link.
507 508
 call-support-link-1=*8486
508  
-# Localization note (call-support-link-1.href): Include the "tel:" protocol before the call support
  509
+# LOCALIZATION NOTE (call-support-link-1.href): include the "tel:" protocol before the call support
509 510
 # number so that it will open in the dialer app.
510 511
 call-support-link-1.href=tel:*8486
511  
-# Localization note: If your locale only has one support phone number, leave the next 3 strings empty.
  512
+# LOCALIZATION NOTE: if your locale only has one support phone number, leave the next 3 strings empty.
512 513
 call-support-link-2=1058
513 514
 call-support-link-2.href=tel:1058
514 515
 call-support-link-or=or
4  apps/settings/style/settings.css
@@ -142,11 +142,11 @@ label[for^="pwd"] {
142 142
  * APN settings
143 143
  */
144 144
 
145  
-#apnSettings-custom {
  145
+.apnSettings-custom {
146 146
   font-style: italic;
147 147
 }
148 148
 
149  
-#apnSettings-advanced {
  149
+.apnSettings-advanced {
150 150
   padding-bottom: 1em;
151 151
 }
152 152
 

0 notes on commit 1c15279

Please sign in to comment.
Something went wrong with that request. Please try again.