123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- define("dojox/mobile/ProgressIndicator", [
- "dojo/_base/config",
- "dojo/_base/declare",
- "dojo/dom-construct",
- "dojo/dom-style",
- "dojo/has"
- ], function(config, declare, domConstruct, domStyle, has){
- // module:
- // dojox/mobile/ProgressIndicator
- // summary:
- // A progress indication widget.
- var cls = declare("dojox.mobile.ProgressIndicator", null, {
- // summary:
- // A progress indication widget.
- // description:
- // ProgressIndicator is a round spinning graphical representation
- // that indicates the current task is on-going.
- // interval: Number
- // The time interval in milliseconds for updating the spinning
- // indicator.
- interval: 100,
- // colors: Array
- // An array of indicator colors.
- colors: [
- "#C0C0C0", "#C0C0C0", "#C0C0C0", "#C0C0C0",
- "#C0C0C0", "#C0C0C0", "#B8B9B8", "#AEAFAE",
- "#A4A5A4", "#9A9A9A", "#8E8E8E", "#838383"
- ],
- constructor: function(){
- this._bars = [];
- this.domNode = domConstruct.create("DIV");
- this.domNode.className = "mblProgContainer";
- if(config["mblAndroidWorkaround"] !== false && has("android") >= 2.2 && has("android") < 3){
- // workaround to avoid the side effects of the fixes for android screen flicker problem
- domStyle.set(this.domNode, "webkitTransform", "translate3d(0,0,0)");
- }
- this.spinnerNode = domConstruct.create("DIV", null, this.domNode);
- for(var i = 0; i < this.colors.length; i++){
- var div = domConstruct.create("DIV", {className:"mblProg mblProg"+i}, this.spinnerNode);
- this._bars.push(div);
- }
- },
-
- start: function(){
- // summary:
- // Starts the ProgressIndicator spinning.
- if(this.imageNode){
- var img = this.imageNode;
- var l = Math.round((this.domNode.offsetWidth - img.offsetWidth) / 2);
- var t = Math.round((this.domNode.offsetHeight - img.offsetHeight) / 2);
- img.style.margin = t+"px "+l+"px";
- return;
- }
- var cntr = 0;
- var _this = this;
- var n = this.colors.length;
- this.timer = setInterval(function(){
- cntr--;
- cntr = cntr < 0 ? n - 1 : cntr;
- var c = _this.colors;
- for(var i = 0; i < n; i++){
- var idx = (cntr + i) % n;
- _this._bars[i].style.backgroundColor = c[idx];
- }
- }, this.interval);
- },
-
- stop: function(){
- // summary:
- // Stops the ProgressIndicator spinning.
- if(this.timer){
- clearInterval(this.timer);
- }
- this.timer = null;
- if(this.domNode.parentNode){
- this.domNode.parentNode.removeChild(this.domNode);
- }
- },
- setImage: function(/*String*/file){
- // summary:
- // Sets an indicator icon image file (typically animated GIF).
- // If null is specified, restores the default spinner.
- if(file){
- this.imageNode = domConstruct.create("IMG", {src:file}, this.domNode);
- this.spinnerNode.style.display = "none";
- }else{
- if(this.imageNode){
- this.domNode.removeChild(this.imageNode);
- this.imageNode = null;
- }
- this.spinnerNode.style.display = "";
- }
- }
- });
- cls._instance = null;
- cls.getInstance = function(){
- if(!cls._instance){
- cls._instance = new cls();
- }
- return cls._instance;
- };
- return cls;
- });
|