| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 /** | 5 /** |
| 6 * @fileoverview ChromeVox options page. | 6 * @fileoverview ChromeVox options page. |
| 7 * | 7 * |
| 8 */ | 8 */ |
| 9 | 9 |
| 10 goog.provide('cvox.OptionsPage'); | 10 goog.provide('cvox.OptionsPage'); |
| (...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 179 | 179 |
| 180 // TODO(dtseng): Only basic conflict detection; it does not speak the | 180 // TODO(dtseng): Only basic conflict detection; it does not speak the |
| 181 // conflicting command. Nor does it detect prefix conflicts like Cvox+L vs | 181 // conflicting command. Nor does it detect prefix conflicts like Cvox+L vs |
| 182 // Cvox+L>L. | 182 // Cvox+L>L. |
| 183 if (cvox.OptionsPage.prefs.setKey(document.activeElement.id, | 183 if (cvox.OptionsPage.prefs.setKey(document.activeElement.id, |
| 184 this.keySequence)) { | 184 this.keySequence)) { |
| 185 document.activeElement.value = keySeqStr; | 185 document.activeElement.value = keySeqStr; |
| 186 } else { | 186 } else { |
| 187 announce = cvox.ChromeVox.msgs.getMsg('key_conflict', [announce]); | 187 announce = cvox.ChromeVox.msgs.getMsg('key_conflict', [announce]); |
| 188 } | 188 } |
| 189 cvox.OptionsPage.speak(announce); | 189 cvox.OptionsPage.speak(announce, cvox.QueueMode.QUEUE); |
| 190 this.prevTime = currentTime; | 190 this.prevTime = currentTime; |
| 191 | 191 |
| 192 evt.preventDefault(); | 192 evt.preventDefault(); |
| 193 evt.stopPropagation(); | 193 evt.stopPropagation(); |
| 194 }, cvox.OptionsPage), true); | 194 }, cvox.OptionsPage), true); |
| 195 | 195 |
| 196 var categories = cvox.CommandStore.categories(); | 196 var categories = cvox.CommandStore.categories(); |
| 197 for (var i = 0; i < categories.length; i++) { | 197 for (var i = 0; i < categories.length; i++) { |
| 198 // Braille bindings can't be customized, so don't include them. | 198 // Braille bindings can't be customized, so don't include them. |
| 199 if (categories[i] == 'braille') { | 199 if (categories[i] == 'braille') { |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 282 this.modifierSeq_ = new cvox.KeySequence(evt, false); | 282 this.modifierSeq_ = new cvox.KeySequence(evt, false); |
| 283 } else { | 283 } else { |
| 284 this.modifierSeq_.addKeyEvent(evt); | 284 this.modifierSeq_.addKeyEvent(evt); |
| 285 } | 285 } |
| 286 | 286 |
| 287 // Never allow non-modified keys. | 287 // Never allow non-modified keys. |
| 288 if (!this.modifierSeq_.isAnyModifierActive()) { | 288 if (!this.modifierSeq_.isAnyModifierActive()) { |
| 289 // Indicate error and instructions excluding tab. | 289 // Indicate error and instructions excluding tab. |
| 290 if (evt.keyCode != 9) { | 290 if (evt.keyCode != 9) { |
| 291 cvox.OptionsPage.speak( | 291 cvox.OptionsPage.speak( |
| 292 cvox.ChromeVox.msgs.getMsg('modifier_entry_error'), 0, {}); | 292 cvox.ChromeVox.msgs.getMsg('modifier_entry_error'), |
| 293 cvox.QueueMode.FLUSH, {}); |
| 293 } | 294 } |
| 294 this.modifierSeq_ = null; | 295 this.modifierSeq_ = null; |
| 295 } else { | 296 } else { |
| 296 this.modifierCount_++; | 297 this.modifierCount_++; |
| 297 } | 298 } |
| 298 | 299 |
| 299 // Don't trap tab or shift. | 300 // Don't trap tab or shift. |
| 300 if (!evt.shiftKey && evt.keyCode != 9) { | 301 if (!evt.shiftKey && evt.keyCode != 9) { |
| 301 evt.preventDefault(); | 302 evt.preventDefault(); |
| 302 evt.stopPropagation(); | 303 evt.stopPropagation(); |
| 303 } | 304 } |
| 304 }, true); | 305 }, true); |
| 305 | 306 |
| 306 cvoxKey.addEventListener('keyup', function(evt) { | 307 cvoxKey.addEventListener('keyup', function(evt) { |
| 307 if (this.modifierSeq_) { | 308 if (this.modifierSeq_) { |
| 308 this.modifierCount_--; | 309 this.modifierCount_--; |
| 309 | 310 |
| 310 if (this.modifierCount_ == 0) { | 311 if (this.modifierCount_ == 0) { |
| 311 var modifierStr = | 312 var modifierStr = |
| 312 cvox.KeyUtil.keySequenceToString(this.modifierSeq_, true, true); | 313 cvox.KeyUtil.keySequenceToString(this.modifierSeq_, true, true); |
| 313 evt.target.value = modifierStr; | 314 evt.target.value = modifierStr; |
| 314 cvox.OptionsPage.speak( | 315 cvox.OptionsPage.speak( |
| 315 cvox.ChromeVox.msgs.getMsg('modifier_entry_set', [modifierStr])); | 316 cvox.ChromeVox.msgs.getMsg('modifier_entry_set', [modifierStr]), |
| 317 cvox.QueueMode.QUEUE); |
| 316 localStorage['cvoxKey'] = modifierStr; | 318 localStorage['cvoxKey'] = modifierStr; |
| 317 this.modifierSeq_ = null; | 319 this.modifierSeq_ = null; |
| 318 } | 320 } |
| 319 evt.preventDefault(); | 321 evt.preventDefault(); |
| 320 evt.stopPropagation(); | 322 evt.stopPropagation(); |
| 321 } | 323 } |
| 322 }, true); | 324 }, true); |
| 323 } | 325 } |
| 324 }; | 326 }; |
| 325 | 327 |
| (...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 548 el.style.display = 'none'; | 550 el.style.display = 'none'; |
| 549 } | 551 } |
| 550 } | 552 } |
| 551 }; | 553 }; |
| 552 | 554 |
| 553 | 555 |
| 554 /** | 556 /** |
| 555 * Calls a {@code cvox.TtsInterface.speak} method in the background page to | 557 * Calls a {@code cvox.TtsInterface.speak} method in the background page to |
| 556 * speak an utterance. See that method for further details. | 558 * speak an utterance. See that method for further details. |
| 557 * @param {string} textString The string of text to be spoken. | 559 * @param {string} textString The string of text to be spoken. |
| 558 * @param {number=} queueMode The queue mode to use. | 560 * @param {cvox.QueueMode} queueMode The queue mode to use. |
| 559 * @param {Object=} properties Speech properties to use for this utterance. | 561 * @param {Object=} properties Speech properties to use for this utterance. |
| 560 */ | 562 */ |
| 561 cvox.OptionsPage.speak = function(textString, queueMode, properties) { | 563 cvox.OptionsPage.speak = function(textString, queueMode, properties) { |
| 562 var speak = | 564 var speak = |
| 563 /** @type Function} */ (chrome.extension.getBackgroundPage()['speak']); | 565 /** @type Function} */ (chrome.extension.getBackgroundPage()['speak']); |
| 564 speak.apply(null, arguments); | 566 speak.apply(null, arguments); |
| 565 }; | 567 }; |
| 566 | 568 |
| 567 document.addEventListener('DOMContentLoaded', function() { | 569 document.addEventListener('DOMContentLoaded', function() { |
| 568 cvox.OptionsPage.init(); | 570 cvox.OptionsPage.init(); |
| 569 }, false); | 571 }, false); |
| OLD | NEW |