| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 cr.define('ntp4', function() { | 5 cr.define('ntp4', function() { |
| 6 'use strict'; | 6 'use strict'; |
| 7 | 7 |
| 8 var localStrings = new LocalStrings; | 8 var localStrings = new LocalStrings; |
| 9 | 9 |
| 10 var APP_LAUNCH = { | 10 var APP_LAUNCH = { |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 112 setupForApp: function(app) { | 112 setupForApp: function(app) { |
| 113 this.app_ = app; | 113 this.app_ = app; |
| 114 | 114 |
| 115 this.launch_.textContent = app.appData.name; | 115 this.launch_.textContent = app.appData.name; |
| 116 | 116 |
| 117 this.forAllLaunchTypes_(function(launchTypeButton, id) { | 117 this.forAllLaunchTypes_(function(launchTypeButton, id) { |
| 118 launchTypeButton.disabled = false; | 118 launchTypeButton.disabled = false; |
| 119 launchTypeButton.checked = app.appData.launch_type == id; | 119 launchTypeButton.checked = app.appData.launch_type == id; |
| 120 }); | 120 }); |
| 121 | 121 |
| 122 this.options_.disabled = !app.appData.options_url; | 122 this.options_.disabled = !app.appData.options_url || !app.appData.enabled; |
| 123 this.uninstall_.disabled = !app.appData.can_uninstall; | 123 this.uninstall_.disabled = !app.appData.can_uninstall; |
| 124 }, | 124 }, |
| 125 | 125 |
| 126 /** | 126 /** |
| 127 * Handlers for menu item activation. | 127 * Handlers for menu item activation. |
| 128 * @param {Event} e The activation event. | 128 * @param {Event} e The activation event. |
| 129 * @private | 129 * @private |
| 130 */ | 130 */ |
| 131 onLaunch_: function(e) { | 131 onLaunch_: function(e) { |
| 132 chrome.send('launchApp', [this.app_.appId, APP_LAUNCH.NTP_APPS_MENU]); | 132 chrome.send('launchApp', [this.app_.appId, APP_LAUNCH.NTP_APPS_MENU]); |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 182 appContents.className = 'app-contents'; | 182 appContents.className = 'app-contents'; |
| 183 | 183 |
| 184 var appImgContainer = this.ownerDocument.createElement('div'); | 184 var appImgContainer = this.ownerDocument.createElement('div'); |
| 185 appImgContainer.className = 'app-img-container'; | 185 appImgContainer.className = 'app-img-container'; |
| 186 this.appImgContainer_ = appImgContainer; | 186 this.appImgContainer_ = appImgContainer; |
| 187 | 187 |
| 188 if (!this.appData_.icon_big_exists && this.appData_.icon_small_exists) | 188 if (!this.appData_.icon_big_exists && this.appData_.icon_small_exists) |
| 189 this.useSmallIcon_ = true; | 189 this.useSmallIcon_ = true; |
| 190 | 190 |
| 191 var appImg = this.ownerDocument.createElement('img'); | 191 var appImg = this.ownerDocument.createElement('img'); |
| 192 appImg.src = this.useSmallIcon_ ? this.appData_.icon_small : | 192 this.appImg_ = appImg; |
| 193 this.appData_.icon_big; | 193 this.setIcon(); |
| 194 appImgContainer.appendChild(appImg); | 194 appImgContainer.appendChild(appImg); |
| 195 | 195 |
| 196 if (this.useSmallIcon_) { | 196 if (this.useSmallIcon_) { |
| 197 var imgDiv = this.ownerDocument.createElement('div'); | 197 var imgDiv = this.ownerDocument.createElement('div'); |
| 198 imgDiv.className = 'app-icon-div'; | 198 imgDiv.className = 'app-icon-div'; |
| 199 imgDiv.appendChild(appImgContainer); | 199 imgDiv.appendChild(appImgContainer); |
| 200 imgDiv.addEventListener('click', this.onClick_.bind(this)); | 200 imgDiv.addEventListener('click', this.onClick_.bind(this)); |
| 201 this.imgDiv_ = imgDiv; | 201 this.imgDiv_ = imgDiv; |
| 202 appContents.appendChild(imgDiv); | 202 appContents.appendChild(imgDiv); |
| 203 } else { | 203 } else { |
| 204 appImgContainer.addEventListener('click', this.onClick_.bind(this)); | 204 appImgContainer.addEventListener('click', this.onClick_.bind(this)); |
| 205 appContents.appendChild(appImgContainer); | 205 appContents.appendChild(appImgContainer); |
| 206 } | 206 } |
| 207 this.appImg_ = appImg; | |
| 208 | 207 |
| 209 var appSpan = this.ownerDocument.createElement('span'); | 208 var appSpan = this.ownerDocument.createElement('span'); |
| 210 appSpan.textContent = this.appData_.name; | 209 appSpan.textContent = this.appData_.name; |
| 211 appSpan.addEventListener('click', this.onClick_.bind(this)); | 210 appSpan.addEventListener('click', this.onClick_.bind(this)); |
| 212 appContents.appendChild(appSpan); | 211 appContents.appendChild(appSpan); |
| 213 this.appendChild(appContents); | 212 this.appendChild(appContents); |
| 214 this.appContents_ = appContents; | 213 this.appContents_ = appContents; |
| 215 | 214 |
| 216 this.addEventListener('keydown', cr.ui.contextMenuHandler); | 215 this.addEventListener('keydown', cr.ui.contextMenuHandler); |
| 217 this.addEventListener('keyup', cr.ui.contextMenuHandler); | 216 this.addEventListener('keyup', cr.ui.contextMenuHandler); |
| 218 | 217 |
| 219 // This hack is here so that appContents.contextMenu will be the same as | 218 // This hack is here so that appContents.contextMenu will be the same as |
| 220 // this.contextMenu. | 219 // this.contextMenu. |
| 221 var self = this; | 220 var self = this; |
| 222 appContents.__defineGetter__('contextMenu', function() { | 221 appContents.__defineGetter__('contextMenu', function() { |
| 223 return self.contextMenu; | 222 return self.contextMenu; |
| 224 }); | 223 }); |
| 225 appContents.addEventListener('contextmenu', cr.ui.contextMenuHandler); | 224 appContents.addEventListener('contextmenu', cr.ui.contextMenuHandler); |
| 226 | 225 |
| 227 this.isStore_ = this.appData_.is_webstore; | 226 this.isStore_ = this.appData_.is_webstore; |
| 228 if (this.isStore_) | 227 if (this.isStore_) |
| 229 this.createAppsPromoExtras_(); | 228 this.createAppsPromoExtras_(); |
| 230 }, | 229 }, |
| 231 | 230 |
| 232 /** | 231 /** |
| 232 * Set the app's icon image from the appData. |
| 233 * @private |
| 234 */ |
| 235 setIcon: function() { |
| 236 this.appImg_.src = this.useSmallIcon_ ? this.appData_.icon_small : |
| 237 this.appData_.icon_big; |
| 238 if (!this.appData_.enabled || |
| 239 (!this.appData_.offline_enabled && !navigator.onLine)) { |
| 240 this.appImg_.src += '?grayscale=true'; |
| 241 } |
| 242 }, |
| 243 |
| 244 /** |
| 233 * Creates the apps-promo section of the app (should only be called for the | 245 * Creates the apps-promo section of the app (should only be called for the |
| 234 * webstore app). | 246 * webstore app). |
| 235 * @private | 247 * @private |
| 236 */ | 248 */ |
| 237 createAppsPromoExtras_: function() { | 249 createAppsPromoExtras_: function() { |
| 238 this.classList.add('webstore'); | 250 this.classList.add('webstore'); |
| 239 | 251 |
| 240 this.appsPromoExtras_ = $('apps-promo-extras-template').cloneNode(true); | 252 this.appsPromoExtras_ = $('apps-promo-extras-template').cloneNode(true); |
| 241 this.appsPromoExtras_.id = ''; | 253 this.appsPromoExtras_.id = ''; |
| 242 this.appsPromoHeading_ = | 254 this.appsPromoHeading_ = |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 313 onClick_: function(e) { | 325 onClick_: function(e) { |
| 314 chrome.send('launchApp', | 326 chrome.send('launchApp', |
| 315 [this.appId, APP_LAUNCH.NTP_APPS_MAXIMIZED, | 327 [this.appId, APP_LAUNCH.NTP_APPS_MAXIMIZED, |
| 316 e.altKey, e.ctrlKey, e.metaKey, e.shiftKey, e.button]); | 328 e.altKey, e.ctrlKey, e.metaKey, e.shiftKey, e.button]); |
| 317 | 329 |
| 318 // Don't allow the click to trigger a link or anything | 330 // Don't allow the click to trigger a link or anything |
| 319 e.preventDefault(); | 331 e.preventDefault(); |
| 320 }, | 332 }, |
| 321 | 333 |
| 322 /** | 334 /** |
| 335 * Change the appData and update the appearance of the app. |
| 336 * @param {Object} appData The new data object that describes the app. |
| 337 */ |
| 338 replaceAppData: function(appData) { |
| 339 this.appData_ = appData; |
| 340 this.setIcon(); |
| 341 }, |
| 342 |
| 343 /** |
| 323 * The data and preferences for this app. | 344 * The data and preferences for this app. |
| 324 * @type {Object} | 345 * @type {Object} |
| 325 */ | 346 */ |
| 326 set appData(data) { | 347 set appData(data) { |
| 327 this.appData_ = data; | 348 this.appData_ = data; |
| 328 }, | 349 }, |
| 329 get appData() { | 350 get appData() { |
| 330 return this.appData_; | 351 return this.appData_; |
| 331 }, | 352 }, |
| 332 | 353 |
| (...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 532 var store = document.querySelector('.webstore'); | 553 var store = document.querySelector('.webstore'); |
| 533 if (store) | 554 if (store) |
| 534 store.setAppsPromoData(data); | 555 store.setAppsPromoData(data); |
| 535 }; | 556 }; |
| 536 | 557 |
| 537 return { | 558 return { |
| 538 APP_LAUNCH: APP_LAUNCH, | 559 APP_LAUNCH: APP_LAUNCH, |
| 539 AppsPage: AppsPage, | 560 AppsPage: AppsPage, |
| 540 }; | 561 }; |
| 541 }); | 562 }); |
| OLD | NEW |