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