/* This file contains proprietary software owned by Motorola Mobility, Inc.
No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.
(c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved.
*/ var Montage = require("montage").Montage, Component = require("ui/component").Component; exports.FlowController = Montage.create(Component, { templateDidLoad: { value: function() { // this.spacing = this.offsetController.scale; // this.animation = this.path2; // this.hasMomentum = this.scrollController.hasMomentum; } }, scrollController: { enumerable: true, serializable: true, value: null }, offsetController: { enumerable: true, serializable: true, value: null }, flowComponent: { enumerable: true, serializable: true, value: null }, // ------------------------------------------------------------------------ // Forwarding these properties to their equivalents in Scroll _speed: { enumerable: true, serializable: true, value: 1 }, speed: { get: function() { return this._speed; }, set: function(value) { if(this._speed !== value) { if( this.scrollController && (this.scrollController.pointerSpeedMultiplier !== value) ) { this._speed = value; this.scrollController.pointerSpeedMultiplier = value; this.needsDraw = true; } } } }, hasMomentum: { get: function() { if(this.scrollController) { return this.scrollController.hasMomentum; } }, set: function(value) { if( this.scrollController && (this.scrollController.hasMomentum !== value) ) { this.scrollController.hasMomentum = value; this.needsDraw = true; } } }, hasBouncing: { get: function() { if(this.scrollController) { return this.scrollController.hasBouncing; } }, set: function(value) { if( this.scrollController && (this.scrollController.hasBouncing !== value) ) { this.scrollController.hasBouncing = value; this.needsDraw = true; } } }, momentumDuration: { get: function() { if(this.scrollController) { return this.scrollController.momentumDuration; } }, set: function(value) { if( this.scrollController && (this.scrollController.momentumDuration !== value) ) { this.scrollController.momentumDuration = value; this.needsDraw = true; } } }, bouncingDuration: { get: function() { if(this.scrollController) { return this.scrollController.bouncingDuration; } }, set: function(value) { if( this.scrollController && (this.scrollController.bouncingDuration !== value) ) { this.scrollController.bouncingDuration = value; this.needsDraw = true; } } }, // ------------------------------------------------------------------------ // ------------------------------------------------------------------------ // Forwarding these properties to their equivalents in FlowOffset _spacing: { enumerable: true, serializable: true, value: 350 }, spacing: { get: function() { return this._spacing; }, set: function(scale) { // if( this.offsetController && (this.offsetController.scale !== scale) ) // { // this.offsetController.scale = scale; // this.needsDraw = true; // } if(this._spacing !== scale) { if( this.offsetController && (this.offsetController.scale !== scale) ) { this._spacing = scale; this.offsetController.scale = scale; this.needsDraw = true; } } } }, // ------------------------------------------------------------------------ // ------------------------------------------------------------------------ // Some paths definitions and necessary values interpValue: { enumerable: true, serializable: true, value: 1 }, slideShow: { value: { value: function (slide) { var path={ translateX: 10+slide.time }; return path; } } }, // ------------------------------------------------------------------------ // ------------------------------------------------------------------------ // Forwarding these properties to their equivalents in Flow // TODO - hard-coding values for demo _src: { enumerable: true, serializable: true, value: "" }, src: { get: function() { return this._src; }, set: function(value) { this.images = this.imagesForDemo; this._src = "images"; this.needsDraw = true; } }, images: { enumerable: true, serializable: true, value: [] }, imagesForDemo: { enumerable: true, serializable: true, value: [ {"src": "images/0.jpg", "text": "We win together"}, {"src": "images/1.jpg", "text": "We do the right thing"}, {"src": "images/2.jpg", "text": "We are passionate about what we do"}, {"src": "images/3.jpg", "text": "We are obsessed with product superiority"}, {"src": "images/4.jpg", "text": "We make things simple"}, {"src": "images/5.jpg", "text": "We are customer centric"}, {"src": "images/6.jpg", "text": "Lorem Ipsum 0"}, {"src": "images/7.jpg", "text": "Lorem Ipsum 1"}, {"src": "images/8.jpg", "text": "Lorem Ipsum 2"}, {"src": "images/9.jpg", "text": "Lorem Ipsum 3"}, {"src": "images/10.jpg", "text": "Lorem Ipsum 4"}, {"src": "images/11.jpg", "text": "Lorem Ipsum 5"}, {"src": "images/12.jpg", "text": "Lorem Ipsum 6"}, {"src": "images/13.jpg", "text": "Lorem Ipsum 7"}, {"src": "images/14.jpg", "text": "Lorem Ipsum 8"} ] }, _animation: { enumerable: true, serializable: true, value: this.path2 }, animation: { get: function() { return this._animation; }, set: function(value) { if(this._animation !== value) { if( this.flowComponent && (this.flowComponent.path !== value) ) { this._animation = value; switch(value) { case "slideshow": this.flowComponent.path = this.slideShow; this.offsetController.scale = 350; this.scrollController.pointerSpeedMultiplier = 1; break; case "carousel": this.flowComponent.path = this.path2.path; this.offsetController.scale = 320; this.scrollController.pointerSpeedMultiplier = 1; break; case "cover-flow": this.flowComponent.path = this.path3.path; this.offsetController.scale = 1000; this.scrollController.pointerSpeedMultiplier = 3; break; case "wave": this.flowComponent.path = this.path4.path; this.offsetController.scale = 320; this.scrollController.pointerSpeedMultiplier = 1; break; case "explosion": this.flowComponent.path = this.path1.path; this.offsetController.scale = 320; this.scrollController.pointerSpeedMultiplier = 1; break; default: } this.flowComponent.needsDraw = true; } } } } // ------------------------------------------------------------------------ });