Home | History | Annotate | Download | only in task_manager
      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 // Defines global variables.
      6 var commands = TaskManagerCommands;
      7 var taskmanager = undefined;  // This will be instantiated in main.js.
      8 
      9 /**
     10  * Invoked when a range of items has changed.
     11  * @param {Integer} start The start position of tasks to be changed
     12  * @param {Integer} length The length of tasks to be changed
     13  * @param {Array of task} tasks The array of updated task
     14  */
     15 function taskChanged(start, length, tasks) {
     16   var task = {type: 'change', start: start, length: length, tasks: tasks};
     17 
     18   if (taskmanager) taskmanager.processTaskChange(task);
     19 }
     20 
     21 // Cached list of enabled columns to prevent frequent access to localStorage.
     22 var cachedEnabledColumns;
     23 
     24 /**
     25  * @return {Dictionary} the dictionary which contains the list of columns and
     26  * whether each column is enabled or not.
     27  */
     28 function getEnabledColumns() {
     29   // Use the cache after the second time since access to localStorage is slow.
     30   if (cachedEnabledColumns)
     31     return cachedEnabledColumns;
     32 
     33   var json = window.localStorage.getItem(ENABLED_COLUMNS_KEY);
     34   try {
     35     cachedEnabledColumns = JSON.parse(json) || {};
     36   } catch (e) {
     37     cachedEnabledColumns = {};
     38   }
     39   for (var i = 0; i < DEFAULT_COLUMNS.length; i++) {
     40     if (typeof(cachedEnabledColumns[DEFAULT_COLUMNS[i][0]]) == 'undefined')
     41       cachedEnabledColumns[DEFAULT_COLUMNS[i][0]] = DEFAULT_COLUMNS[i][3];
     42   }
     43   return cachedEnabledColumns;
     44 }
     45 
     46 /**
     47  * @return {boolean} the given column (at |columnId|) is enabled or not.
     48  * @param {string} columnId The ID of the collumn to be checked.
     49  */
     50 function isColumnEnabled(columnId) {
     51   return (getEnabledColumns())[columnId];
     52 }
     53 
     54 /**
     55  * Sets the given column either enabled or disabled.
     56  * @param {string} columnId The ID of the collumn to be set.
     57  * @param {boolean} newChecked True, to set the column enable. False otherwise.
     58  */
     59 function setColumnEnabled(columnId, newChecked) {
     60   commands.setUpdateColumn(columnId, newChecked);
     61   cachedEnabledColumns[columnId] = newChecked;
     62   var json = JSON.stringify(cachedEnabledColumns);
     63   window.localStorage.setItem(ENABLED_COLUMNS_KEY, json);
     64 }
     65 
     66 // Enable the taskmanager model before the loading of scripts.
     67 (function() {
     68   for (var i = 0; i < DEFAULT_COLUMNS.length; i++) {
     69     var columnId = DEFAULT_COLUMNS[i][0];
     70     if (isColumnEnabled(columnId))
     71       commands.setUpdateColumn(columnId, true);
     72   }
     73   commands.enableTaskManager();
     74   commands.setUpdateColumn('canInspect', true);
     75   commands.setUpdateColumn('canActivate', true);
     76 })();
     77