| OLD | NEW |
| 1 <!DOCTYPE HTML> | 1 <!DOCTYPE HTML> |
| 2 <html i18n-values="dir:textdirection;" id="t"> | 2 <html i18n-values="dir:textdirection;" id="t"> |
| 3 <head> | 3 <head> |
| 4 <meta charset="utf-8"> | 4 <meta charset="utf-8"> |
| 5 <title i18n-content="title"></title> | 5 <title i18n-content="title"></title> |
| 6 |
| 7 <!-- TODO(zelidrag) need a better icon here --> |
| 6 <link rel="icon" href="../../app/theme/history_favicon.png"> | 8 <link rel="icon" href="../../app/theme/history_favicon.png"> |
| 7 <script src="shared/js/local_strings.js"></script> | 9 |
| 10 <script src="chrome://resources/js/class_list.js"></script> |
| 11 <script src="chrome://resources/js/cr.js"></script> |
| 12 <script src="chrome://resources/js/cr/event_target.js"></script> |
| 13 <script src="chrome://resources/js/cr/ui.js"></script> |
| 14 <script src="chrome://resources/js/local_strings.js"></script> |
| 15 <script src="chrome://resources/js/util.js"></script> |
| 16 <script src="options/preferences.js"></script> |
| 17 <script src="options/pref_ui.js"></script> |
| 18 <script src="options/options_page.js"></script> |
| 19 <script src="options/chromeos_system_options.js"></script> |
| 8 <script> | 20 <script> |
| 21 |
| 9 /////////////////////////////////////////////////////////////////////////////// | 22 /////////////////////////////////////////////////////////////////////////////// |
| 10 // Globals: | 23 // DummyOptions Functions: |
| 24 // TODO(zelidrag): Remove DummyOptions once we put the second page in. |
| 11 | 25 |
| 12 function $(o) {return document.getElementById(o);} | 26 function DummyOptions(model) { |
| 13 | 27 OptionsPage.call(this, 'dummy', 'Dummy Options Page', 'dummyPage'); |
| 14 // Extracts preference value out of reponse callback of fetchPrefs call. | |
| 15 function getPref(dict, name) { | |
| 16 return eval('dict.'+name); | |
| 17 } | 28 } |
| 18 | 29 |
| 19 // Sets new value for preference. | 30 DummyOptions.instance = null; |
| 20 function setBooleanPref(name, value) { | 31 |
| 21 chrome.send('setBooleanPref', [name, String(value)]); | 32 DummyOptions.getInstance = function() { |
| 33 if (DummyOptions.instance) |
| 34 return DummyOptions.instance; |
| 35 // TODO(zelidrag): hook model in. |
| 36 DummyOptions.instance = new DummyOptions(null); |
| 37 return DummyOptions.instance; |
| 22 } | 38 } |
| 23 | 39 |
| 24 function setIntegerPref(name, value) { | 40 // Inherit SystemOptions from OptionsPage. |
| 25 chrome.send('setIntegerPref', [name, String(value)]); | 41 DummyOptions.prototype = { |
| 26 } | 42 __proto__: OptionsPage.prototype, |
| 43 }; |
| 27 | 44 |
| 28 function setStringPref(name, value) { | |
| 29 chrome.send('setStringPref', [name, value]); | |
| 30 } | |
| 31 /////////////////////////////////////////////////////////////////////////////// | 45 /////////////////////////////////////////////////////////////////////////////// |
| 32 // Document Functions: | 46 // Document Functions: |
| 33 /** | 47 /** |
| 34 * Window onload handler, sets up the page. | 48 * Window onload handler, sets up the page. |
| 35 */ | 49 */ |
| 36 function load() { | 50 function load() { |
| 37 localStrings = new LocalStrings(); | 51 localStrings = new LocalStrings(); |
| 38 loadSystemPrefs(); | 52 OptionsPage.register(SystemOptions.getInstance()); |
| 39 | 53 OptionsPage.register(DummyOptions.getInstance()); |
| 40 selectPage('system'); | 54 |
| 41 // TODO(zelidrag): preserve first that needs to be shown. | 55 Preferences.getInstance().initialize(); |
| 56 OptionsPage.showPageByName(SystemOptions.getInstance().name); |
| 42 } | 57 } |
| 43 | 58 |
| 44 function selectPage(name) { | |
| 45 var page = $(name+'Page'); | |
| 46 var nav = $(name+'PageNav'); | |
| 47 page.style.visibility = 'visible'; | |
| 48 nav.class = 'navbar_item navbar_item_selected'; | |
| 49 } | |
| 50 | 59 |
| 51 /////////////////////////////////////////////////////////////////////////////// | 60 window.onpopstate = function(e) { |
| 52 // System (ChromeOS) Functions: | 61 OptionsPage.setState(e.state); |
| 53 | 62 }; |
| 54 var kTimeZone = 'settings.datetime.timezone'; | |
| 55 var kTapToClickEnabled = 'settings.touchpad.enable_tap_to_click'; | |
| 56 var kVertEdgeScrollEnabled = 'settings.touchpad.enable_vert_edge_scroll'; | |
| 57 var kTouchpadSpeedFactor = 'settings.touchpad.speed_factor'; | |
| 58 var kTouchpadSensitivity = 'settings.touchpad.sensitivity'; | |
| 59 var kAccessibilityEnabled = 'settings.accessibility'; | |
| 60 | |
| 61 /** | |
| 62 * Loads ChromeOS System preferences. | |
| 63 */ | |
| 64 function loadSystemPrefs() { | |
| 65 chrome.send("fetchPrefs", ['systemPrefsFetched', '', | |
| 66 kTimeZone, | |
| 67 kTapToClickEnabled, | |
| 68 kVertEdgeScrollEnabled, | |
| 69 kTouchpadSpeedFactor, | |
| 70 kTouchpadSensitivity, | |
| 71 kAccessibilityEnabled]); | |
| 72 } | |
| 73 | |
| 74 function setupTimezones(selectedValue) { | |
| 75 timezoneSel = $('timezoneSel'); | |
| 76 for (key in templateData.timezoneMap) { | |
| 77 var selected = key == selectedValue; | |
| 78 timezoneSel.options[timezoneSel.options.length] = | |
| 79 new Option(templateData.timezoneMap[key], key, false, selected); | |
| 80 } | |
| 81 } | |
| 82 | |
| 83 function systemPrefsFetched(context, dict) { | |
| 84 $('tapToClickChk').checked = getPref(dict, kTapToClickEnabled); | |
| 85 $('vertScrollChk').checked = getPref(dict, kVertEdgeScrollEnabled); | |
| 86 $('sensitivityRng').value = getPref(dict, kTouchpadSensitivity); | |
| 87 $('speedRng').value = getPref(dict, kTouchpadSpeedFactor); | |
| 88 $('accesibilityChk').checked = getPref(dict, kAccessibilityEnabled); | |
| 89 setupTimezones(getPref(dict, kTimeZone)); | |
| 90 } | |
| 91 | |
| 92 function selectChanged(control) { | |
| 93 if (control.id == 'timezoneSel') { | |
| 94 setStringPref(kTimeZone, control.options[control.selectedIndex].value); | |
| 95 } | |
| 96 } | |
| 97 | |
| 98 function checkboxChanged(control) { | |
| 99 if (control.id == 'tapToClickChk') { | |
| 100 setBooleanPref(kTapToClickEnabled, control.checked); | |
| 101 } else if (control.id == 'vertScrollChk') { | |
| 102 setBooleanPref(kVertEdgeScrollEnabled, control.checked); | |
| 103 } else if (control.id == 'vertScrollChk') { | |
| 104 setBooleanPref(kTapToClickEnabled, control.checked); | |
| 105 } else if (control.id == 'accesibilityChk') { | |
| 106 setBooleanPref(kAccessibilityEnabled, control.checked); | |
| 107 } | |
| 108 } | |
| 109 | |
| 110 function rangeChanged(control) { | |
| 111 if (control.id == 'sensitivityRng') { | |
| 112 setIntegerPref(kTouchpadSensitivity, control.value); | |
| 113 } else if (control.id == 'speedRng') { | |
| 114 setIntegerPref(kTouchpadSpeedFactor, control.value); | |
| 115 } | |
| 116 } | |
| 117 | |
| 118 function buttonClicked(control) { | |
| 119 if (conrol.id == 'languageBtn') { | |
| 120 // TODO: Open ChromeOS language settings page. | |
| 121 } | |
| 122 } | |
| 123 | |
| 124 | 63 |
| 125 </script> | 64 </script> |
| 126 <link rel="stylesheet" href="dom_ui.css"> | 65 <link rel="stylesheet" href="dom_ui.css"> |
| 127 <!-- TODO(zelidrag) just a temp style placeholder until redesign --> | 66 <!-- TODO(zelidrag) just a temp style placeholder until redesign --> |
| 128 <style> | 67 <style> |
| 129 .navbar_container { | 68 #main-content { |
| 69 display: -webkit-box; |
| 70 } |
| 71 |
| 72 #navbar-container { |
| 130 border: 1px solid black; | 73 border: 1px solid black; |
| 131 background-color: #dfdfdf; | 74 background-color: #dfdfdf; |
| 132 cursor:pointer; | 75 cursor: pointer; |
| 133 font-weight: bold; | 76 font-weight: bold; |
| 134 float:left; | |
| 135 height: 400px; | 77 height: 400px; |
| 136 padding: 10px; | 78 padding: 10px; |
| 137 position:relative; | 79 position: relative; |
| 138 width: 200px; | 80 width: 200px; |
| 139 } | 81 } |
| 140 .navbar_item, .navbar_item2 { | 82 |
| 83 .navbar-item, .navbar-item2 { |
| 141 margin: 5px; | 84 margin: 5px; |
| 142 padding: 5px; | 85 padding: 5px; |
| 143 } | 86 } |
| 144 .navbar_item_selected { | 87 |
| 145 background-color: #000000; | 88 .navbar-item-selected { |
| 89 background-color: #FFFFFF; |
| 146 } | 90 } |
| 147 .navbar_item_normal { | 91 |
| 148 background-color: #dfdfdf; | 92 .navbar-item-normal { |
| 93 background-color: #dfdfdf; |
| 149 } | 94 } |
| 95 |
| 150 #mainview { | 96 #mainview { |
| 97 -webkit-box-align: stretch; |
| 151 border: 1px solid black; | 98 border: 1px solid black; |
| 152 float:left; | |
| 153 height: 400px; | 99 height: 400px; |
| 154 width: 600px; | 100 width: 600px; |
| 155 padding: 10px; | 101 padding: 10px; |
| 156 position:relative; | 102 position: relative; |
| 157 } | 103 } |
| 104 |
| 158 .section { | 105 .section { |
| 159 margin-top: 10px; | 106 margin-top: 10px; |
| 160 } | 107 } |
| 108 |
| 161 .option { | 109 .option { |
| 162 margin-top: 5px; | 110 margin-top: 5px; |
| 163 } | 111 } |
| 164 .section_title { | 112 |
| 113 .section-title { |
| 165 font-weight: bold; | 114 font-weight: bold; |
| 166 } | 115 } |
| 167 .option_control_table { | 116 |
| 168 padding-left:10px; | 117 .option-control-table { |
| 118 margin-top: 5px; |
| 119 -webkit-padding-start: 10px; |
| 169 } | 120 } |
| 170 .navbar2 { | 121 |
| 122 .hidden { |
| 171 visibility: hidden; | 123 visibility: hidden; |
| 172 } | 124 } |
| 173 .page { | 125 |
| 174 visibility: hidden; | 126 .touch-slider { |
| 127 -webkit-appearance: slider-horizontal; |
| 175 } | 128 } |
| 129 |
| 176 </style> | 130 </style> |
| 177 </head> | 131 </head> |
| 178 <body onload="load();" i18n-values=".style.fontFamily:fontfamily;.style.fontSize
:fontsize"> | 132 <body onload="load();" |
| 133 i18n-values=".style.fontFamily:fontfamily;.style.fontSize:fontsize"> |
| 179 <div class="header"> | 134 <div class="header"> |
| 180 </div> | 135 </div> |
| 181 <div class="main"> | 136 <div id="main-content"> |
| 182 <div class="navbar_container"> | 137 <div id="navbar-container"> |
| 183 <ul class="navbar"> | 138 <ul id="navbar"> |
| 184 <li class="navbar_item navbar_item_normal" id="systemPageNav" i18n-values
=".innerText:systemPage"></li> | |
| 185 <li class="navbar_item navbar_item_normal" id="internetPageNav" i18n-valu
es=".innerText:internetPage"></li> | |
| 186 <li class="navbar_item navbar_item_normal" id="basicsPageNav" i18n-values
=".innerText:basicsPage"></li> | |
| 187 <li class="navbar_item navbar_item_normal" id="personalStuffPageNav" i18n
-values=".innerText:personalStuffPage"></li> | |
| 188 <li class="navbar_item navbar_item_normal" id="underHoodPageNav" i18n-val
ues=".innerText:underHoodPage"></li> | |
| 189 </ul> | 139 </ul> |
| 190 <hr/> | 140 <hr/> |
| 191 <ul class="navbar2"> | 141 <ul class="hidden"> |
| 192 </ul> | 142 </ul> |
| 193 </div> | 143 </div> |
| 194 <div id="mainview"> | 144 <div id="mainview"> |
| 195 <div class="page" id="systemPage"> | 145 <!-- include file="options/chromeos_system_options.html" --> |
| 196 <div class="section"> | 146 <div class="page hidden" id="dummyPage"> |
| 197 <div class="section_title" i18n-values=".innerText:datetime_title"></d
iv> | 147 <!-- TODO(zelidrag): remove this one once we get another page here --> |
| 198 <div class="option"> | 148 Dummy page |
| 199 <table class="option_control_table"> | |
| 200 <tr> | |
| 201 <td class="option_name" i18n-values=".innerText:timezone"></td> | |
| 202 <td class="option_value"> | |
| 203 <select id="timezoneSel" class="control timezone_dropdown" onch
ange="selectChanged(this)"></select> | |
| 204 </td> | |
| 205 </tr> | |
| 206 </table> | |
| 207 </div> | |
| 208 </div> | |
| 209 <div class="section"> | |
| 210 <div class="section_title" i18n-values=".innerText:touchpad"></div> | |
| 211 <div class="option"> | |
| 212 <table class="option_control_table"> | |
| 213 <tr> | |
| 214 <td class="option_name" i18n-values=".innerText:sensitivity"></td
> | |
| 215 <td class="option_value"> | |
| 216 <input id="sensitivityRng" type="range" min="1" max="10" class=
"touchSlider" style="-webkit-appearance:slider-horizontal;" onchange="rangeChang
ed(this)"> | |
| 217 </td> | |
| 218 </tr> | |
| 219 <tr> | |
| 220 <td class="option_name" i18n-values=".innerText:speed_factor"></t
d> | |
| 221 <td class="option_value"> | |
| 222 <input id="speedRng" type="range" min="1" max="10" class="touch
Slider" style="-webkit-appearance:slider-horizontal;" onchange="rangeChanged(thi
s)"> | |
| 223 </td> | |
| 224 </tr> | |
| 225 <tr> | |
| 226 <td class="option_name" colspan="2"><input id="tapToClickChk" typ
e="checkbox" onchange="checkboxChanged(this)"/><span i18n-values=".innerText:en
able_tap_to_click"></span></td> | |
| 227 </tr> | |
| 228 <tr> | |
| 229 <td class="option_name" colspan="2"><input id="vertScrollChk" typ
e="checkbox" onchange="checkboxChanged(this)"/><span i18n-values=".innerText:en
able_vert_edge_scroll"></span></td> | |
| 230 </tr> | |
| 231 </table> | |
| 232 </div> | |
| 233 </div> | |
| 234 <div class="section"> | |
| 235 <div class="section_title" i18n-values=".innerText:language"></div> | |
| 236 <div class="option"> | |
| 237 <table class="option_control_table"> | |
| 238 <tr> | |
| 239 <td class="option_name"><button id="languageBtn" onclick="buttonC
licked" i18n-values=".innerText:language_customize"></button></td> | |
| 240 </tr> | |
| 241 </table> | |
| 242 </div> | |
| 243 </div> | |
| 244 <div class="section"> | |
| 245 <div class="section_title" i18n-values=".innerText:accessibility_title
"></div> | |
| 246 <div class="option"> | |
| 247 <table class="option_control_table"> | |
| 248 <tr> | |
| 249 <td class="option_name"><input id="accesibilityChk" onchange="che
ckboxChanged(this)" type="checkbox"/><span i18n-values=".innerText:accessibilit
y"></span></td> | |
| 250 </tr> | |
| 251 </table> | |
| 252 </div> | |
| 253 </div> | |
| 254 </div> | 149 </div> |
| 255 </div> | 150 </div> |
| 256 </div> | 151 </div> |
| 152 <script> |
| 153 // Decorate the existing elements in the document. |
| 154 cr.ui.decorate('input[pref][type=checkbox]', PrefCheckbox); |
| 155 cr.ui.decorate('input[pref][type=range]', PrefRange); |
| 156 cr.ui.decorate('select[pref]', PrefSelect); |
| 157 <!-- TODO(zelidrag) add other elements here when we implement them --> |
| 158 </script> |
| 257 </body> | 159 </body> |
| 258 </html> | 160 </html> |
| OLD | NEW |