Home | History | Annotate | Download | only in interface
      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
      3 // found in the LICENSE file.
      4 
      5 /**
      6  * @fileoverview Base class for implementing earcons.
      7  *
      8  * When adding earcons, please add them to getEarconName and getEarconId.
      9  *
     10  */
     11 
     12 goog.provide('cvox.AbstractEarcons');
     13 
     14 
     15 /**
     16  * @constructor
     17  */
     18 cvox.AbstractEarcons = function() {
     19   /**
     20    * Public flag set to enable or disable earcons. Callers should prefer
     21    * toggle(); however, this member is public for initialization.
     22    * @type {boolean}
     23    */
     24   this.enabled = true;
     25 };
     26 
     27 
     28 /**
     29  * Plays the specified earcon sound.
     30  * @param {number} earcon An earcon index.
     31  */
     32 cvox.AbstractEarcons.prototype.playEarcon = function(earcon) {
     33 };
     34 
     35 
     36 /**
     37  * Plays the specified earcon sound, given the name of the earcon.
     38  * @param {string} earconName The name of the earcon.
     39  */
     40 cvox.AbstractEarcons.prototype.playEarconByName = function(earconName) {
     41   this.playEarcon(this.getEarconId(earconName));
     42 };
     43 
     44 
     45 /**
     46  * Whether or not earcons are available.
     47  * @return {boolean} True if earcons are available.
     48  */
     49 cvox.AbstractEarcons.prototype.earconsAvailable = function() {
     50   return true;
     51 };
     52 
     53 
     54 /**
     55  * @param {number} earcon An earcon index.
     56  * @return {string} The readable earcon name.
     57  */
     58 cvox.AbstractEarcons.prototype.getEarconName = function(earcon) {
     59   if (!this.earconNames) {
     60     this.earconNames = new Array();
     61     this.earconNames.push('ALERT_MODAL');
     62     this.earconNames.push('ALERT_NONMODAL');
     63     this.earconNames.push('BULLET');
     64     this.earconNames.push('BUSY_PROGRESS_LOOP');
     65     this.earconNames.push('BUSY_WORKING_LOOP');
     66     this.earconNames.push('BUTTON');
     67     this.earconNames.push('CHECK_OFF');
     68     this.earconNames.push('CHECK_ON');
     69     this.earconNames.push('COLLAPSED');
     70     this.earconNames.push('EDITABLE_TEXT');
     71     this.earconNames.push('ELLIPSIS');
     72     this.earconNames.push('EXPANDED');
     73     this.earconNames.push('FONT_CHANGE');
     74     this.earconNames.push('INVALID_KEYPRESS');
     75     this.earconNames.push('LINK');
     76     this.earconNames.push('LISTBOX');
     77     this.earconNames.push('LIST_ITEM');
     78     this.earconNames.push('LONG_DESC');
     79     this.earconNames.push('NEW_MAIL');
     80     this.earconNames.push('OBJECT_CLOSE');
     81     this.earconNames.push('OBJECT_DELETE');
     82     this.earconNames.push('OBJECT_DESELECT');
     83     this.earconNames.push('OBJECT_ENTER');
     84     this.earconNames.push('OBJECT_EXIT');
     85     this.earconNames.push('OBJECT_OPEN');
     86     this.earconNames.push('OBJECT_SELECT');
     87     this.earconNames.push('PARAGRAPH_BREAK');
     88     this.earconNames.push('SEARCH_HIT');
     89     this.earconNames.push('SEARCH_MISS');
     90     this.earconNames.push('SECTION');
     91     this.earconNames.push('SELECTION');
     92     this.earconNames.push('SELECTION_REVERSE');
     93     this.earconNames.push('SPECIAL_CONTENT');
     94     this.earconNames.push('TASK_SUCCESS');
     95     this.earconNames.push('WRAP');
     96     this.earconNames.push('WRAP_EDGE');
     97   }
     98   return this.earconNames[earcon];
     99 };
    100 
    101 
    102 /**
    103  * @param {string} earconName An earcon name.
    104  * @return {number} The earcon ID.
    105  */
    106 cvox.AbstractEarcons.prototype.getEarconId = function(earconName) {
    107   if (!this.earconNamesToIds) {
    108     this.earconNamesToIds = new Object();
    109     this.earconNamesToIds['ALERT_MODAL'] = cvox.AbstractEarcons.ALERT_MODAL;
    110     this.earconNamesToIds['ALERT_NONMODAL'] =
    111         cvox.AbstractEarcons.ALERT_NONMODAL;
    112     this.earconNamesToIds['BULLET'] = cvox.AbstractEarcons.BULLET;
    113     this.earconNamesToIds['BUSY_PROGRESS_LOOP'] =
    114         cvox.AbstractEarcons.BUSY_PROGRESS_LOOP;
    115     this.earconNamesToIds['BUSY_WORKING_LOOP'] =
    116         cvox.AbstractEarcons.BUSY_WORKING_LOOP;
    117     this.earconNamesToIds['BUTTON'] = cvox.AbstractEarcons.BUTTON;
    118     this.earconNamesToIds['CHECK_OFF'] = cvox.AbstractEarcons.CHECK_OFF;
    119     this.earconNamesToIds['CHECK_ON'] = cvox.AbstractEarcons.CHECK_ON;
    120     this.earconNamesToIds['COLLAPSED'] = cvox.AbstractEarcons.COLLAPSED;
    121     this.earconNamesToIds['EDITABLE_TEXT'] = cvox.AbstractEarcons.EDITABLE_TEXT;
    122     this.earconNamesToIds['ELLIPSIS'] = cvox.AbstractEarcons.ELLIPSIS;
    123     this.earconNamesToIds['EXPANDED'] = cvox.AbstractEarcons.EXPANDED;
    124     this.earconNamesToIds['FONT_CHANGE'] = cvox.AbstractEarcons.FONT_CHANGE;
    125     this.earconNamesToIds['INVALID_KEYPRESS'] =
    126         cvox.AbstractEarcons.INVALID_KEYPRESS;
    127     this.earconNamesToIds['LINK'] = cvox.AbstractEarcons.LINK;
    128     this.earconNamesToIds['LISTBOX'] = cvox.AbstractEarcons.LISTBOX;
    129     this.earconNamesToIds['LIST_ITEM'] = cvox.AbstractEarcons.LIST_ITEM;
    130     this.earconNamesToIds['LONG_DESC'] = cvox.AbstractEarcons.LONG_DESC;
    131     this.earconNamesToIds['NEW_MAIL'] = cvox.AbstractEarcons.NEW_MAIL;
    132     this.earconNamesToIds['OBJECT_CLOSE'] = cvox.AbstractEarcons.OBJECT_CLOSE;
    133     this.earconNamesToIds['OBJECT_DELETE'] = cvox.AbstractEarcons.OBJECT_DELETE;
    134     this.earconNamesToIds['OBJECT_DESELECT'] =
    135         cvox.AbstractEarcons.OBJECT_DESELECT;
    136     this.earconNamesToIds['OBJECT_ENTER'] = cvox.AbstractEarcons.OBJECT_ENTER;
    137     this.earconNamesToIds['OBJECT_EXIT'] = cvox.AbstractEarcons.OBJECT_EXIT;
    138     this.earconNamesToIds['OBJECT_OPEN'] = cvox.AbstractEarcons.OBJECT_OPEN;
    139     this.earconNamesToIds['OBJECT_SELECT'] = cvox.AbstractEarcons.OBJECT_SELECT;
    140     this.earconNamesToIds['PARAGRAPH_BREAK'] =
    141         cvox.AbstractEarcons.PARAGRAPH_BREAK;
    142     this.earconNamesToIds['SEARCH_HIT'] = cvox.AbstractEarcons.SEARCH_HIT;
    143     this.earconNamesToIds['SEARCH_MISS'] = cvox.AbstractEarcons.SEARCH_MISS;
    144     this.earconNamesToIds['SECTION'] = cvox.AbstractEarcons.SECTION;
    145     this.earconNamesToIds['SELECTION'] = cvox.AbstractEarcons.SELECTION;
    146     this.earconNamesToIds['SELECTION_REVERSE'] =
    147         cvox.AbstractEarcons.SELECTION_REVERSE;
    148     this.earconNamesToIds['SPECIAL_CONTENT'] =
    149         cvox.AbstractEarcons.SPECIAL_CONTENT;
    150     this.earconNamesToIds['TASK_SUCCESS'] = cvox.AbstractEarcons.TASK_SUCCESS;
    151     this.earconNamesToIds['WRAP'] = cvox.AbstractEarcons.WRAP;
    152     this.earconNamesToIds['WRAP_EDGE'] = cvox.AbstractEarcons.WRAP_EDGE;
    153   }
    154   return this.earconNamesToIds[earconName];
    155 };
    156 
    157 
    158 /**
    159  * @param {number} earconId The earcon ID.
    160  * @return {string} The filename for the earcon.
    161  */
    162 cvox.AbstractEarcons.prototype.getEarconFilename = function(earconId) {
    163   return cvox.AbstractEarcons.earconMap[earconId];
    164 };
    165 
    166 
    167 /**
    168  * Toggles earcons on or off.
    169  * @return {boolean} True if earcons are now enabled; false otherwise.
    170  */
    171 cvox.AbstractEarcons.prototype.toggle = function() {
    172   this.enabled = !this.enabled;
    173   return this.enabled;
    174 };
    175 
    176 
    177 /**
    178  * @type {number}
    179  */
    180 cvox.AbstractEarcons.ALERT_MODAL = 0;
    181 
    182 /**
    183  * @type {number}
    184  */
    185 cvox.AbstractEarcons.ALERT_NONMODAL = 1;
    186 
    187 /**
    188  * @type {number}
    189  */
    190 cvox.AbstractEarcons.BULLET = 2;
    191 
    192 /**
    193  * @type {number}
    194  */
    195 cvox.AbstractEarcons.BUSY_PROGRESS_LOOP = 3;
    196 
    197 /**
    198  * @type {number}
    199  */
    200 cvox.AbstractEarcons.BUSY_WORKING_LOOP = 4;
    201 
    202 /**
    203  * @type {number}
    204  */
    205 cvox.AbstractEarcons.BUTTON = 5;
    206 
    207 /**
    208  * @type {number}
    209  */
    210 cvox.AbstractEarcons.CHECK_OFF = 6;
    211 
    212 /**
    213  * @type {number}
    214  */
    215 cvox.AbstractEarcons.CHECK_ON = 7;
    216 
    217 /**
    218  * @type {number}
    219  */
    220 cvox.AbstractEarcons.COLLAPSED = 8;
    221 
    222 /**
    223  * @type {number}
    224  */
    225 cvox.AbstractEarcons.EDITABLE_TEXT = 9;
    226 
    227 /**
    228  * @type {number}
    229  */
    230 cvox.AbstractEarcons.ELLIPSIS = 10;
    231 
    232 /**
    233  * @type {number}
    234  */
    235 cvox.AbstractEarcons.EXPANDED = 11;
    236 
    237 /**
    238  * @type {number}
    239  */
    240 cvox.AbstractEarcons.FONT_CHANGE = 12;
    241 
    242 /**
    243  * @type {number}
    244  */
    245 cvox.AbstractEarcons.INVALID_KEYPRESS = 13;
    246 
    247 /**
    248  * @type {number}
    249  */
    250 cvox.AbstractEarcons.LINK = 14;
    251 
    252 /**
    253  * @type {number}
    254  */
    255 cvox.AbstractEarcons.LISTBOX = 15;
    256 
    257 /**
    258  * @type {number}
    259  */
    260 cvox.AbstractEarcons.LIST_ITEM = 16;
    261 
    262 /**
    263  * @type {number}
    264  */
    265 cvox.AbstractEarcons.LONG_DESC = 17;
    266 
    267 /**
    268  * @type {number}
    269  */
    270 cvox.AbstractEarcons.NEW_MAIL = 18;
    271 
    272 /**
    273  * @type {number}
    274  */
    275 cvox.AbstractEarcons.OBJECT_CLOSE = 19;
    276 
    277 /**
    278  * @type {number}
    279  */
    280 cvox.AbstractEarcons.OBJECT_DELETE = 20;
    281 
    282 /**
    283  * @type {number}
    284  */
    285 cvox.AbstractEarcons.OBJECT_DESELECT = 21;
    286 
    287 /**
    288  * @type {number}
    289  */
    290 cvox.AbstractEarcons.OBJECT_ENTER = 22;
    291 
    292 /**
    293  * @type {number}
    294  */
    295 cvox.AbstractEarcons.OBJECT_EXIT = 23;
    296 
    297 /**
    298  * @type {number}
    299  */
    300 cvox.AbstractEarcons.OBJECT_OPEN = 24;
    301 
    302 /**
    303  * @type {number}
    304  */
    305 cvox.AbstractEarcons.OBJECT_SELECT = 25;
    306 
    307 /**
    308  * @type {number}
    309  */
    310 cvox.AbstractEarcons.PARAGRAPH_BREAK = 26;
    311 
    312 /**
    313  * @type {number}
    314  */
    315 cvox.AbstractEarcons.SEARCH_HIT = 27;
    316 
    317 /**
    318  * @type {number}
    319  */
    320 cvox.AbstractEarcons.SEARCH_MISS = 28;
    321 
    322 /**
    323  * @type {number}
    324  */
    325 cvox.AbstractEarcons.SECTION = 29;
    326 
    327 /**
    328  * @type {number}
    329  */
    330 cvox.AbstractEarcons.SELECTION = 30;
    331 
    332 /**
    333  * @type {number}
    334  */
    335 cvox.AbstractEarcons.SELECTION_REVERSE = 31;
    336 
    337 /**
    338  * @type {number}
    339  */
    340 cvox.AbstractEarcons.SPECIAL_CONTENT = 32;
    341 
    342 /**
    343  * @type {number}
    344  */
    345 cvox.AbstractEarcons.TASK_SUCCESS = 33;
    346 
    347 /**
    348  * @type {number}
    349  */
    350 cvox.AbstractEarcons.WRAP = 34;
    351 
    352 /**
    353  * @type {number}
    354  */
    355 cvox.AbstractEarcons.WRAP_EDGE = 35;
    356 
    357 /**
    358  * The earcon map.
    359  * @type {Object}
    360  */
    361 cvox.AbstractEarcons.earconMap = new Object();
    362 cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.ALERT_MODAL] =
    363     'alert_modal.ogg';
    364 cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.ALERT_NONMODAL] =
    365     'alert_nonmodal.ogg';
    366 cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.BULLET] = 'bullet.ogg';
    367 cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.BUSY_PROGRESS_LOOP] =
    368     'busy_progress_loop.ogg';
    369 cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.BUSY_WORKING_LOOP] =
    370     'busy_working_loop.ogg';
    371 cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.BUTTON] = 'button.ogg';
    372 cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.CHECK_OFF] =
    373     'check_off.ogg';
    374 cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.CHECK_ON] = 'check_on.ogg';
    375 cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.COLLAPSED] =
    376     'collapsed.ogg';
    377 cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.EDITABLE_TEXT] =
    378     'editable_text.ogg';
    379 cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.ELLIPSIS] = 'ellipsis.ogg';
    380 cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.EXPANDED] = 'expanded.ogg';
    381 cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.FONT_CHANGE] =
    382     'font_change.ogg';
    383 cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.INVALID_KEYPRESS] =
    384     'invalid_keypress.ogg';
    385 cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.LINK] = 'link.ogg';
    386 cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.LISTBOX] = 'listbox.ogg';
    387 cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.LIST_ITEM] = 'bullet.ogg';
    388 cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.LONG_DESC] =
    389     'long_desc.ogg';
    390 cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.NEW_MAIL] = 'new_mail.ogg';
    391 cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.OBJECT_CLOSE] =
    392     'object_close.ogg';
    393 cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.OBJECT_DELETE] =
    394     'object_delete.ogg';
    395 cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.OBJECT_DESELECT] =
    396     'object_deselect.ogg';
    397 cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.OBJECT_ENTER] =
    398     'object_enter.ogg';
    399 cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.OBJECT_EXIT] =
    400     'object_exit.ogg';
    401 cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.OBJECT_OPEN] =
    402     'object_open.ogg';
    403 cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.OBJECT_SELECT] =
    404     'object_select.ogg';
    405 cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.PARAGRAPH_BREAK] =
    406     'paragraph_break.ogg';
    407 cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.SEARCH_HIT] =
    408     'search_hit.ogg';
    409 cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.SEARCH_MISS] =
    410     'search_miss.ogg';
    411 cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.SECTION] = 'section.ogg';
    412 cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.SELECTION] =
    413     'selection.ogg';
    414 cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.SELECTION_REVERSE] =
    415     'selection_reverse.ogg';
    416 cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.SPECIAL_CONTENT] =
    417     'special_content.ogg';
    418 cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.TASK_SUCCESS] =
    419     'task_success.ogg';
    420 cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.WRAP] = 'wrap.ogg';
    421 cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.WRAP_EDGE] =
    422     'wrap_edge.ogg';
    423