// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. /** * @fileoverview Implement the recommended apps card in the launcher start page. */ cr.define('appList.startPage', function() { 'use strict'; /** * Create a view with icon and label for the given app data. * @constructor * @extends {HTMLDivElement} */ var AppItemView = cr.ui.define('div'); AppItemView.prototype = { __proto__: HTMLDivElement.prototype, /** * The app id of the app displayed by this view. Used to launch * the app when the view is clicked. * @type {string} */ appId: '', /** * Sets the icon URL to display the app icon. * @type {string} */ set iconUrl(url) { this.style.backgroundImage = 'url(' + url + ')'; }, /** * Sets the text title. * @type {string} */ set textTitle(title) { this.textContent = title; }, /** @override */ decorate: function() { this.className = 'app'; this.addEventListener('click', this.handleClick_.bind(this)); }, /** * Handles 'click' event. * @private */ handleClick_: function() { assert(this.appId); chrome.send('launchApp', [this.appId]); } }; /** * Create recommended apps card. * @constructor * @extends {HTMLDivElement} */ var RecommendedApps = cr.ui.define('div'); RecommendedApps.prototype = { __proto__: HTMLDivElement.prototype, /** @override */ decorate: function() { this.className = 'recommended-apps'; }, /** * Sets the apps to be displayed in this card. */ setApps: function(apps) { this.textContent = ''; for (var i = 0; i < apps.length; ++i) { this.appendChild(new AppItemView(apps[i])); } } }; return { RecommendedApps: RecommendedApps }; });