blob: b0a46c7d80d5fdce06a0e9a4ab3ad525628c738b [file] [log] [blame]
// 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
};
});