// Copyright 2014 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. cr.define('cr.ui.login', function() { /** * Constructs a slide manager for the user manager tutorial. * * @constructor */ function UserManagerTutorial() { } cr.addSingletonGetter(UserManagerTutorial); UserManagerTutorial.prototype = { /** * Tutorial slides. */ slides_: ['slide-your-chrome', 'slide-friends', 'slide-guests', 'slide-complete', 'slide-not-you'], /** * Current tutorial step, index in the slides array. * @type {number} */ currentStep_: 0, /** * Switches to the next tutorial step. * @param {number} nextStepIndex Index of the next step. */ toggleStep_: function(nextStepIndex) { if (nextStepIndex > this.slides_.length) return; var currentStepId = this.slides_[this.currentStep_]; var nextStepId = this.slides_[nextStepIndex]; var oldStep = $(currentStepId); var newStep = $(nextStepId); newStep.classList.remove('hidden'); if (nextStepIndex != this.currentStep_) oldStep.classList.add('hidden'); this.currentStep_ = nextStepIndex; // The last tutorial step is an information bubble that ends the tutorial. if (this.currentStep_ == this.slides_.length - 1) this.endTutorial_(); }, next_: function() { var nextStep = this.currentStep_ + 1; this.toggleStep_(nextStep); }, skip_: function() { this.endTutorial_(); $('user-manager-tutorial').hidden = true; }, /** * Add user button click handler. * @private */ handleAddUserClick_: function(e) { chrome.send('addUser'); $('user-manager-tutorial').hidden = true; e.stopPropagation(); }, /** * Add a button click handler to dismiss the last tutorial bubble. * @private */ handleDismissBubbleClick_: function(e) { $('user-manager-tutorial').hidden = true; e.stopPropagation(); }, endTutorial_: function(e) { $('inner-container').classList.remove('disabled'); }, decorate: function() { // Transitions between the tutorial slides. for (var i = 0; i < this.slides_.length; ++i) { var buttonNext = $(this.slides_[i] + '-next'); var buttonSkip = $(this.slides_[i] + '-skip'); if (buttonNext) buttonNext.addEventListener('click', this.next_.bind(this)); if (buttonSkip) buttonSkip.addEventListener('click', this.skip_.bind(this)); } $('slide-add-user').addEventListener('click', this.handleAddUserClick_.bind(this)); $('dismiss-bubble-button').addEventListener('click', this.handleDismissBubbleClick_.bind(this)); } }; /** * Initializes the tutorial manager. */ UserManagerTutorial.startTutorial = function() { $('user-manager-tutorial').hidden = false; // If there's only one pod, show the slides to the side of the pod. // Otherwise, center the slides and disable interacting with the pods // while the tutorial is showing. if ($('pod-row').pods.length == 1) { $('slide-your-chrome').classList.add('single-pod'); $('slide-complete').classList.add('single-pod'); } $('pod-row').focusPod(); // No focused pods. $('inner-container').classList.add('disabled'); }; /** * Initializes the tutorial manager. */ UserManagerTutorial.initialize = function() { UserManagerTutorial.getInstance().decorate(); }; // Export. return { UserManagerTutorial: UserManagerTutorial }; });