blob: 1bbd1a56b01af25622a7abb210206f2138d6c76d [file] [log] [blame]
/*
Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
Available via Academic Free License >= 2.1 OR the modified BSD license.
see: http://dojotoolkit.org/license for details
*/
if(!dojo._hasResource["dojox.av.widget.VolumeButton"]){
dojo._hasResource["dojox.av.widget.VolumeButton"]=true;
dojo.provide("dojox.av.widget.VolumeButton");
dojo.require("dijit._Widget");
dojo.require("dijit._Templated");
dojo.require("dijit.form.Button");
dojo.declare("dojox.av.widget.VolumeButton",[dijit._Widget,dijit._Templated],{templateString:"<div class=\"Volume\" dojoAttachEvent=\"mousedown:onShowVolume\">\n\t<div class=\"VolumeSlider\" dojoAttachPoint=\"volumeSlider\">\n \t<div class=\"VolumeSliderBack\" dojoAttachPoint=\"volumeSliderBack\"></div>\n \t<div class=\"VolumeSliderHandle\" dojoAttachPoint=\"handle\" dojoAttachEvent=\"mousedown:startDrag, mouseup:endDrag, mouseover:handleOver, mouseout:handleOut\"></div>\t\n </div>\n <div class=\"icon\"></div>\n</div>\n",postCreate:function(){
this.handleWidth=dojo.marginBox(this.handle).w;
this.width=dojo.marginBox(this.volumeSlider).w;
this.slotWidth=100;
dojo.setSelectable(this.handle,false);
this.volumeSlider=this.domNode.removeChild(this.volumeSlider);
},setMedia:function(_1){
this.media=_1;
this.updateIcon();
},updateIcon:function(_2){
_2=(_2===undefined)?this.media.volume():_2;
if(_2===0){
dojo.attr(this.domNode,"class","Volume mute");
}else{
if(_2<0.334){
dojo.attr(this.domNode,"class","Volume low");
}else{
if(_2<0.667){
dojo.attr(this.domNode,"class","Volume med");
}else{
dojo.attr(this.domNode,"class","Volume high");
}
}
}
},onShowVolume:function(_3){
if(this.showing==undefined){
dojo.body().appendChild(this.volumeSlider);
this.showing=false;
}
if(!this.showing){
var _4=2;
var _5=7;
var _6=this.media.volume();
var _7=this._getVolumeDim();
var _8=this._getHandleDim();
this.x=_7.x-this.width;
dojo.style(this.volumeSlider,"display","");
dojo.style(this.volumeSlider,"top",_7.y+"px");
dojo.style(this.volumeSlider,"left",(this.x)+"px");
var x=(this.slotWidth*_6);
dojo.style(this.handle,"top",(_4+(_8.w/2))+"px");
dojo.style(this.handle,"left",(x+_5+(_8.h/2))+"px");
this.showing=true;
this.clickOff=dojo.connect(dojo.doc,"onmousedown",this,"onDocClick");
}else{
this.onHideVolume();
}
},onDocClick:function(_a){
if(!dojo.isDescendant(_a.target,this.domNode)&&!dojo.isDescendant(_a.target,this.volumeSlider)){
this.onHideVolume();
}
},onHideVolume:function(){
this.endDrag();
dojo.style(this.volumeSlider,"display","none");
this.showing=false;
},onDrag:function(_b){
var _c=this.handleWidth/2;
var _d=_c+this.slotWidth;
var x=_b.clientX-this.x;
if(x<_c){
x=_c;
}
if(x>_d){
x=_d;
}
dojo.style(this.handle,"left",(x)+"px");
var p=(x-_c)/(_d-_c);
this.media.volume(p);
this.updateIcon(p);
},startDrag:function(){
this.isDragging=true;
this.cmove=dojo.connect(dojo.doc,"mousemove",this,"onDrag");
this.cup=dojo.connect(dojo.doc,"mouseup",this,"endDrag");
},endDrag:function(){
this.isDragging=false;
if(this.cmove){
dojo.disconnect(this.cmove);
}
if(this.cup){
dojo.disconnect(this.cup);
}
this.handleOut();
},handleOver:function(){
dojo.addClass(this.handle,"over");
},handleOut:function(){
if(!this.isDragging){
dojo.removeClass(this.handle,"over");
}
},_getVolumeDim:function(){
if(this._domCoords){
return this._domCoords;
}
this._domCoords=dojo.coords(this.domNode);
return this._domCoords;
},_getHandleDim:function(){
if(this._handleCoords){
return this._handleCoords;
}
this._handleCoords=dojo.marginBox(this.handle);
return this._handleCoords;
},onResize:function(_10){
this.onHideVolume();
this._domCoords=null;
}});
}