Commits

Anonymous committed 2abcd97

add loading page for sharing page and shows sharing button once playback started

  • Participants
  • Parent commits 8da43a3

Comments (0)

Files changed (8)

File src/apps/mplayerc/Controller/ShareController.cc

 }
 BOOL UserShareController::ShowCommentPlane()
 {
-  if (m_retdata.empty())
-      return FALSE;
+  //if (m_retdata.empty())
+  //    return FALSE;
 
   CreateCommentPlane();
   m_commentplane.ShowFrame();

File src/apps/mplayerc/MainFrm.cpp

   ON_WM_WINDOWPOSCHANGING()
   ON_WM_KEYUP()
   ON_COMMAND(ID_MOVIESHARE, OnMovieShare)
-  ON_COMMAND(ID_MOVIESHARE_RESPONSE, OnMovieShareResponse)
   ON_COMMAND(ID_MOVIESHARE_OPEN, OnOpenShooterMedia)
 END_MESSAGE_MAP()
 
 m_l_been_playing_sec(0),
 m_is_resume_from_last_exit_point(false),
 m_lyricDownloadThread(NULL),
-m_secret_switch(NULL)
+m_secret_switch(NULL),
+m_movieShared(false)
 {
   m_wndFloatToolBar = new CPlayerFloatToolBar();
 }
   case TIMER_MOVIESHARE:
     {
       KillTimer(TIMER_MOVIESHARE);
-      if (IsSomethingLoaded() && !m_fAudioOnly)
-      {
+      if (IsSomethingLoaded() && !m_fAudioOnly && !m_movieShared)
+      {
+        m_movieShared = true;
         std::wstring uuid, moviehash;
         SPlayerGUID::GenerateGUID(uuid);
         UserShareController* usc = UserShareController::GetInstance();
   m_wndToolBar.HideMovieShareBtn(TRUE);
   UserShareController::GetInstance()->HideCommentPlane();
   if(IsSomethingLoaded() && !m_fAudioOnly && (UINT)((INT64)rtDur/10000000) > 90)
+  {
+    m_movieShared = false;
+    m_wndToolBar.HideMovieShareBtn(FALSE);
     SetTimer(TIMER_MOVIESHARE, 5800, NULL);
-  
+  }
 
   KillTimer(TIMER_IDLE_TASK);
 }
 
 void CMainFrame::OnMovieShare()
 {
+  KillTimer(TIMER_MOVIESHARE);
+  SetTimer(TIMER_MOVIESHARE, 1, NULL);
   UserShareController::GetInstance()->ToggleCommentPlane();
 }
 
-void CMainFrame::OnMovieShareResponse()
-{
-  m_wndToolBar.HideMovieShareBtn(FALSE);
-}
-
 void CMainFrame::OnOpenShooterMedia()
 {
   UserShareController::GetInstance()->OpenShooterMedia();

File src/apps/mplayerc/MainFrm.h

   afx_msg void OnWindowPosChanging(WINDOWPOS* lpwndpos);
 
   afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
-  afx_msg void OnMovieShareResponse();
   afx_msg void OnAudioSettingUpdated();
   afx_msg void OnOpenShooterMedia();
+private:
+  int          m_movieShared;
 };

File src/apps/mplayerc/UserInterface/Dialogs/MovieComment_Win.cc

 #include "MovieComment_Win.h"
 #include <exdispid.h>
 #include "logging.h"
+#include "../../resource.h"
 
 IMPLEMENT_DYNAMIC(MovieComment, CDHtmlDialog)
 
 //   SetWindowRgn(rgn, TRUE);
 
   SetHostFlags(DOCHOSTUIFLAG_THEME | DOCHOSTUIFLAG_SCROLL_NO | DOCHOSTUIFLAG_NO3DBORDER
-         | DOCHOSTUIFLAG_DISABLE_HELP_MENU | DOCHOSTUIFLAG_DIALOG | DOCHOSTUIFLAG_DISABLE_SCRIPT_INACTIVE
-         | DOCHOSTUIFLAG_OVERRIDEBEHAVIORFACTORY);
+         | DOCHOSTUIFLAG_DISABLE_HELP_MENU | DOCHOSTUIFLAG_DIALOG | DOCHOSTUIFLAG_ENABLE_ACTIVEX_INACTIVATE_MODE
+         | DOCHOSTUIFLAG_DISABLE_SCRIPT_INACTIVE | DOCHOSTUIFLAG_OVERRIDEBEHAVIORFACTORY
+         );
 
   // EnableAutomation();
   // SetExternalDispatch(GetIDispatch(TRUE));
   // suppress script error
   m_pBrowserApp->put_Silent(VARIANT_TRUE);
   m_initialize = 1;
+
+  CString strResourceURL;
+  LPTSTR lpszModule = new TCHAR[_MAX_PATH];
+
+  if (GetModuleFileName(NULL, lpszModule, _MAX_PATH))
+  {
+    // load resource html regardless by language
+    strResourceURL.Format(_T("res://%s/%d"), lpszModule, IDR_HTML_BUSY);
+    Navigate(strResourceURL, 0, 0, 0);
+  }
+  else
+    Navigate(L"about:blank");
+
   return TRUE;
 }
 
 void MovieComment::OnDocumentComplete(LPDISPATCH pDisp, LPCTSTR szUrl)
 {
-  std::wstring url(szUrl);
-  if (url.find(L"http:") != std::string::npos && url.length() > 8)
-    ::PostMessage(GetParent()->m_hWnd, WM_COMMAND, ID_MOVIESHARE_RESPONSE, NULL);
 
 }
 

File src/apps/mplayerc/mplayerc.rc

Binary file modified.

File src/apps/mplayerc/mplayerc_vs2005.vcproj

-<?xml version="1.0" encoding="windows-1250"?>
+<?xml version="1.0" encoding="windows-1250"?>
 <VisualStudioProject
 	ProjectType="Visual C++"
 	Version="9.00"
 				>
 			</File>
 			<File
+				RelativePath=".\res\busy.html"
+				>
+			</File>
+			<File
 				RelativePath=".\res\web\cancel.jpg"
 				>
 			</File>
 				>
 			</File>
 			<File
-				RelativePath=".\res\icon\video.ico"
+				RelativePath=".\res\ecio.icons\video.ico"
 				>
 			</File>
 			<File
-				RelativePath=".\res\ecio.icons\video.ico"
+				RelativePath=".\res\icon\video.ico"
 				>
 			</File>
 			<File

File src/apps/mplayerc/res/busy.html

+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" >
+<head>
+<script>
+function onIEWinResize(event) {
+	function parseWidth(val) {return (isNaN(parseInt(val,10))?0:parseInt(val,10));}
+	if(!event) {event=window.event;} var i,cs,parent=this, div=parent.getElementsByTagName("div");
+	if(div.length>0) {if(parent.currentStyle){cs=parent.currentStyle;}else if(document.defaultView&&document.defaultView.getComputedStyle){cs=document.defaultView.getComputedStyle(parent,"");}else{cs=parent.style;}
+		for(i=0; i<div.length; i++) {if(div[i].className=='buzy_ele') {
+				div[i].style.height=(parent.offsetHeight-parseWidth(cs.borderBottomWidth)-parseWidth(cs.borderTopWidth));
+				div[i].style.width=(parent.offsetWidth-parseWidth(cs.borderLeftWidth)-parseWidth(cs.borderRightWidth)); 
+				div[i].firstChild.style.height=div[i].style.height; div[i].firstChild.style.width=div[i].style.width; 
+				break;
+			}
+		}
+	}
+}
+function onIEVPResize(event) {
+  if(!event) {event=window.event;} var vp=document.getElementById('viewport'); if(vp) {
+		if(typeof document.documentElement!='undefined'&& document.documentElement.clientWidth && document.documentElement.clientHeight) {vp.style.width=document.documentElement.clientWidth+'px'; vp.style.height=document.documentElement.clientHeight+'px';}
+		else {vp.style.width=document.getElementsByTagName('body')[0].clientWidth+'px'; vp.style.height=document.getElementsByTagName('body')[0].clientHeight+'px';}
+	}
+}
+function onIEVPScroll(event) {
+	if(!event) {event=window.event;} var vp=document.getElementById('viewport'); if(vp) {
+		if(typeof document.documentElement!='undefined') {vp.style.left=document.documentElement.scrollLeft+'px'; vp.style.top=document.documentElement.scrollTop+'px';}
+		else {vp.style.left=document.getElementsByTagName('body')[0].scrollLeft+'px'; vp.style.top=document.getElementsByTagName('body')[0].scrollTop+'px';}
+	}
+}
+
+function getBusyOverlay(parent,overlay,busy) {
+	if((typeof(parent)==='object' || parent=='viewport') && document.getElementsByTagName) {
+		function parseWidth(val) {return (isNaN(parseInt(val,10))?0:parseInt(val,10));}
+		var isIE,isVL,isCV,isWK,isGE,i,b,o,lt,rt,lb,rb,cz,cs,size,viewport,inner,outer,string,canvas,context,ctrl,opacity,color,text,styles,waiting=true;
+		if(parent=='viewport') {viewport=document.getElementById('viewport');
+			if(!viewport) {viewport=document.createElement('div'); viewport.id='viewport'; cz=viewport.style;
+				cz.backgroundColor='transparent'; cz.position='fixed'; cz.overflow='hidden';
+				cz.display='block'; cz.zIndex=999999; cz.left='0px'; cz.top='0px'; cz.zoom=1;
+				cz.width='100%'; cz.height='100%'; cz.margin='0px'; cz.padding='0px';
+				if(document.all&&!window.opera&&!window.XMLHttpRequest&&(!document.documentMode||document.documentMode<9)) {cz.position='absolute'; 
+					if(typeof document.documentElement!='undefined') {cz.width=document.documentElement.clientWidth+'px'; cz.height=document.documentElement.clientHeight+'px';}
+					else {cz.width=document.getElementsByTagName('body')[0].clientWidth+'px'; cz.height=document.getElementsByTagName('body')[0].clientHeight+'px';}
+				}document.getElementsByTagName("body")[0].appendChild(viewport);
+			}else {viewport.style.display='block';
+				if(document.all&&!window.opera&&!window.XMLHttpRequest&&(!document.documentMode||document.documentMode<9)) { 
+					if(typeof document.documentElement!='undefined' && document.documentElement.clientWidth && document.documentElement.clientHeight) {viewport.style.width=document.documentElement.clientWidth+'px'; viewport.style.height=document.documentElement.clientHeight+'px';}
+					else {viewport.style.width=document.getElementsByTagName('body')[0].clientWidth+'px'; viewport.style.height=document.getElementsByTagName('body')[0].clientHeight+'px';}
+				}
+			}parent=viewport;
+		}
+		if(parent.currentStyle){cs=parent.currentStyle;}else if(document.defaultView&&document.defaultView.getComputedStyle){cs=document.defaultView.getComputedStyle(parent,"");}else{cs=parent.style;}
+		while(cs.display.search(/block|inline-block|table|inline-table|list-item/i)<0) {parent=parent.parentNode; if(parent.currentStyle){cs=parent.currentStyle;}else if(document.defaultView&&document.defaultView.getComputedStyle){cs=document.defaultView.getComputedStyle(parent,"");}else{cs=parent.style;} if(parent.tagName.toUpperCase()=='BODY') {parent="";}}
+		if(typeof(parent)==='object') {
+			if(!overlay) {overlay=new Object(); overlay['opacity']=0; overlay['color']='white'; overlay['text']=''; overlay['style']='';}
+			if(!busy) {busy=new Object(); busy['size']=32; busy['color']='#000'; busy['type']='tube'; busy['iradius']=8; busy['weight']=3; busy['count']=12; busy['speed']=96; busy['minopac']=.25;}
+			opacity=Math.max(0.0,Math.min(1.0,(typeof overlay['opacity']==='number'?overlay['opacity']:0)||0)); color=(typeof overlay['color']==='string'?overlay['color']:'white');
+			text=(typeof overlay['text']==='string'?overlay['text']:''); styles=(typeof overlay['style']==='string'?overlay['style']:'');
+			canvas=document.createElement("canvas"); isCV=canvas.getContext?1:0; 
+			isWK=navigator.userAgent.indexOf('WebKit')>-1?1:0; isGE=navigator.userAgent.indexOf('Gecko')>-1&&window.updateCommands?1:0;
+			isIE=navigator.appName=='Microsoft Internet Explorer'&&window.navigator.systemLanguage&&!window.opera&&(!document.documentMode||document.documentMode<9)?1:0; 
+			isVL=0&&document.all&&document.namespaces&&supportsVml()&&(!document.documentMode||document.documentMode<9)?1:0; outer=document.createElement('div'); parent.style.position=(cs.position=='static'?'relative':cs.position);
+			cz=parent.style.zIndex>=0?(parent.style.zIndex-0+2):2; if(isIE && !cs.hasLayout) {parent.style.zoom=1;}
+			outer.style.position='absolute'; outer.style.overflow='hidden'; outer.style.display='block'; outer.style.zIndex=cz; 
+			outer.style.left=0+'px'; outer.style.top=0+'px'; outer.style.width='100%'; outer.style.height='100%';
+			if(isIE) {outer.className='buzy_ele'; outer.style.zoom=1; outer.style.margin='0px'; outer.style.padding='0px'; outer.style.height=(parent.offsetHeight-parseWidth(cs.borderBottomWidth)-parseWidth(cs.borderTopWidth)); outer.style.width=(parent.offsetWidth-parseWidth(cs.borderLeftWidth)-parseWidth(cs.borderRightWidth));}
+			if(typeof(cs.borderRadius)=="undefined"){
+				if(typeof(cs.MozBorderRadius)!="undefined"){
+					lt=parseFloat(cs.MozBorderRadiusTopleft)-Math.min(parseFloat(cs.borderLeftWidth),parseFloat(cs.borderTopWidth));
+					rt=parseFloat(cs.MozBorderRadiusTopright)-Math.min(parseFloat(cs.borderRightWidth),parseFloat(cs.borderTopWidth));
+					lb=parseFloat(cs.MozBorderRadiusBottomleft)-Math.min(parseFloat(cs.borderLeftWidth),parseFloat(cs.borderBottomWidth));
+					rb=parseFloat(cs.MozBorderRadiusBottomright)-Math.min(parseFloat(cs.borderRightWidth),parseFloat(cs.borderBottomWidth));
+					outer.style.MozBorderRadiusTopleft=lt+"px"; outer.style.MozBorderRadiusTopright=rt+"px"; outer.style.MozBorderRadiusBottomleft=lb+"px"; outer.style.MozBorderRadiusBottomright=rb+"px";
+				}else if(typeof(cs.WebkitBorderRadius)!="undefined"){
+					lt=parseFloat(cs.WebkitBorderTopLeftRadius)-Math.min(parseFloat(cs.borderLeftWidth),parseFloat(cs.borderTopWidth));
+					rt=parseFloat(cs.WebkitBorderTopRightRadius)-Math.min(parseFloat(cs.borderRightWidth),parseFloat(cs.borderTopWidth));
+					lb=parseFloat(cs.WebkitBorderBottomLeftRadius)-Math.min(parseFloat(cs.borderLeftWidth),parseFloat(cs.borderBottomWidth));
+					rb=parseFloat(cs.WebkitBorderBottomRightRadius)-Math.min(parseFloat(cs.borderRightWidth),parseFloat(cs.borderBottomWidth));
+					outer.style.WebkitBorderTopLeftRadius=lt+"px"; outer.style.WebkitBorderTopRightRadius=rt+"px"; outer.style.WebkitBorderBottomLeftRadius=lb+"px"; outer.style.WebkitBorderBottomRightRadius=rb+"px";
+				}
+			}else {
+				lt=parseFloat(cs.borderTopLeftRadius)-Math.min(parseFloat(cs.borderLeftWidth),parseFloat(cs.borderTopWidth));
+				rt=parseFloat(cs.borderTopRightRadius)-Math.min(parseFloat(cs.borderRightWidth),parseFloat(cs.borderTopWidth));
+				lb=parseFloat(cs.borderBottomLeftRadius)-Math.min(parseFloat(cs.borderLeftWidth),parseFloat(cs.borderBottomWidth));
+				rb=parseFloat(cs.borderBottomRightRadius)-Math.min(parseFloat(cs.borderRightWidth),parseFloat(cs.borderBottomWidth));
+				outer.style.borderTopLeftRadius=lt+"px"; outer.style.borderTopRightRadius=rt+"px"; outer.style.borderBottomLeftRadius=lb+"px"; outer.style.borderBottomRightRadius=rb+"px";
+			}
+			parent.appendChild(outer); inner=document.createElement('div');
+			inner.style.position='absolute'; inner.style.cursor='progress'; inner.style.display='block'; 
+			inner.style.zIndex=(cz-1); inner.style.left=0+'px'; inner.style.top=0+'px';
+			inner.style.width=100+'%'; inner.style.height=100+'%'; inner.style.backgroundColor=color;
+			if(isIE) {inner.style.zoom=1; inner.style.margin='0px'; inner.style.padding='0px'; inner.style.height=outer.style.height; inner.style.width=outer.style.width; }
+			if(typeof(cs.borderRadius)=="undefined"){
+				if(typeof(cs.MozBorderRadius)!="undefined"){inner.style.MozBorderRadiusTopleft=lt+"px"; inner.style.MozBorderRadiusTopright=rt+"px"; inner.style.MozBorderRadiusBottomleft=lb+"px"; inner.style.MozBorderRadiusBottomright=rb+"px";}else 
+				if(typeof(cs.WebkitBorderRadius)!="undefined"){inner.style.WebkitBorderTopLeftRadius=lt+"px"; inner.style.WebkitBorderTopRightRadius=rt+"px"; inner.style.WebkitBorderBottomLeftRadius=lb+"px"; inner.style.WebkitBorderBottomRightRadius=rb+"px";}
+			}else {inner.style.borderTopLeftRadius=lt+"px"; inner.style.borderTopRightRadius=rt+"px"; inner.style.borderBottomLeftRadius=lb+"px"; inner.style.borderBottomRightRadius=rb+"px";}
+			if(isIE) {inner.style.filter="progid:DXImageTransform.Microsoft.Alpha(opacity="+parseInt(opacity*100)+")";}else {inner.style.opacity=opacity;}
+			outer.appendChild(inner); size=Math.max(16,Math.min(512,(typeof busy['size']==='number'?(busy['size']==0?32:busy['size']):32)));
+			if(isVL){
+				if(document.namespaces['v']==null) {
+					var e=["shape","shapetype","group","background","path","formulas","handles","fill","stroke","shadow","textbox","textpath","imagedata","line","polyline","curve","roundrect","oval","rect","arc","image"],s=document.createStyleSheet(); 
+					for(i=0; i<e.length; i++) {s.addRule("v\\:"+e[i],"behavior: url(#default#VML);");} document.namespaces.add("v","urn:schemas-microsoft-com:vml");
+				} 
+			}
+			if(!isCV){canvas=document.createElement("div");}
+			canvas.style.position='absolute'; canvas.style.cursor='progress'; canvas.style.zIndex=(cz-0+1);
+			canvas.style.top='50%'; canvas.style.left='50%'; canvas.style.marginTop='-'+(size/2)+'px'; canvas.style.marginLeft='-'+(size/2)+'px';
+			canvas.width=size; canvas.height=size; canvas.style.width=size+"px"; canvas.style.height=size+"px";
+			outer.appendChild(canvas);
+			if(text!=""){
+				string=document.createElement('div'); string.style.position='absolute'; string.style.overflow='hidden'; 
+				string.style.cursor='progress'; string.style.zIndex=(cz-0+1); string.style.top='50%'; string.style.left='0px';
+				string.style.marginTop=2+(size/2)+'px'; string.style.textAlign='center'; string.style.width=100+'%'; string.style.height='auto';
+				if(styles!="") {string.innerHTML='<span '+(styles.match(/:/i)?'style':'class')+'="'+styles+'">'+text+'</span>';}
+				else {string.innerHTML='<span>'+text+'</span>';} outer.appendChild(string);
+			}
+			if(isGE){outer.style.MozUserSelect="none"; inner.style.MozUserSelect="none"; canvas.style.MozUserSelect="none";}else 
+			if(isWK){outer.style.KhtmlUserSelect="none"; inner.style.KhtmlUserSelect="none"; canvas.style.KhtmlUserSelect="none";}else 
+			if(isIE){outer.unselectable="on"; inner.unselectable="on"; canvas.unselectable="on";}
+			if(isVL){ctrl=getBusyVL(canvas,busy['color'],busy['size'],busy['type'],busy['iradius'],busy['weight'],busy['count'],busy['speed'],busy['minopac']); ctrl.start();}else 
+			if(isCV){ctrl=getBusyCV(canvas.getContext("2d"),busy['color'],busy['size'],busy['type'],busy['iradius'],busy['weight'],busy['count'],busy['speed'],busy['minopac']); ctrl.start();}
+			else {ctrl=getBusy(canvas,busy['color'],busy['size'],busy['type'],busy['iradius'],busy['weight'],busy['count'],busy['speed'],busy['minopac']); ctrl.start();}
+			if(isIE) {parent.onresize=onIEWinResize; if(parent.id=='viewport'&&!window.XMLHttpRequest) {window.onresize=onIEVPResize; window.onscroll=onIEVPScroll;}}
+			return {
+				remove: function (){if(waiting){waiting=false; ctrl.stop(); delete ctrl; parent.removeChild(outer); if(parent.id=='viewport') {parent.style.display='none';}}},
+				settext: function (v){if(string&&typeof(v)=='string') {string.firstChild.innerHTML=v; return false;}}
+			};
+		}
+	}
+}
+function getBusy(obj,cl,sz,tp,ir,w,ct,sp,mo) {
+	function getHEX(v) {var col=v||'#000000';
+		if(!col.match(/^#[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]$/i)) {
+			if(v.match(/^#[0-9a-f][0-9a-f][0-9a-f]$/i)) {col='#'+v.substr(1,1)+v.substr(1,1)+v.substr(2,1)+v.substr(2,1)+v.substr(3,1)+v.substr(3,1);}
+		}return col;
+	}
+	var running=false,i=0,os=0,al=0,f=100,c,h,p,t,x,y,v,hp,ph,sh,ele=new Array();
+	c=getHEX(cl); tp=tp||"t"; t=(tp.match(/^[coprt]/i)?tp.substr(0,1).toLowerCase():'t');
+	ct=Math.max(5,Math.min(36,ct||12)); sp=Math.max(30,Math.min(1000,sp||96));
+	sz=Math.max(16,Math.min(512,sz||32)); ir=Math.max(1,Math.min((sz/2)-2,ir||sz/4));
+	w=Math.max(1,Math.min((sz/2)-ir,w||sz/10)); mo=Math.max(0,Math.min(0.5,mo||0.25));
+	al=360/ct; hp=(Math.PI/2)*-1; ph=Math.PI/180; w=(t!='c'?parseInt((w/2)*3):w); v=parseInt((sz/2)-(w/2));		
+	for(i=0;i<ct;i++) {
+		sh=document.createElement('div'); x=Math.round(v+v*Math.cos(hp+(i+1)*al*ph)); y=Math.round(v+v*Math.sin(hp+(i+1)*al*ph));
+		sh.style.position='absolute'; sh.style.margin='0px'; sh.style.width=w+'px'; sh.style.height=w+'px';
+		sh.style.lineHeight='1px'; sh.style.fontSize='0px'; sh.style.top=y+'px'; sh.style.left=x+'px'; sh.style.backgroundColor=c;
+		if(document.all&&!window.opera&&(!document.documentMode||document.documentMode<9)) {sh.style.filter="progid:DXImageTransform.Microsoft.Alpha(opacity="+parseInt(Math.min(1,Math.max(mo,1-((ct+1-i)/(ct+1))))*100)+")";}else {sh.style.opacity=Math.min(1,Math.max(mo,1-((ct+1-i)/(ct+1))));}
+		obj.appendChild(sh); ele[i]=sh;
+	}
+	function nextLoop(){
+		if(!running) {return;} os=(os+1)%ct; 
+		if(document.all&&!window.opera&&(!document.documentMode||document.documentMode<9)) {for(i=0;i<ct;i++){al=((os+i)%ct); ele[al].style.filter="progid:DXImageTransform.Microsoft.Alpha(opacity="+parseInt(Math.min(1,Math.max(mo,1-((ct+1-i)/(ct+1))))*100)+")";}}
+		else {for(i=0;i<ct;i++){al=((os+i)%ct); ele[al].style.opacity=Math.min(1,Math.max(mo,1-((ct+1-i)/(ct+1))));}} 
+		setTimeout(nextLoop,sp);
+	}
+	nextLoop(0);
+	return {
+		start: function (){if(!running){running=true; nextLoop(0);}},
+		stop: function (){running=false; for(i=0;i<ct;i++) {if(document.all&&!window.opera&&(!document.documentMode||document.documentMode<9)) {ele[i].style.filter="progid:DXImageTransform.Microsoft.Alpha(opacity=0)";}else {ele[i].setAttribute('opacity',0);}}},
+		pause: function (){running=false; }
+	};
+}
+function getBusyVL(obj,cl,sz,tp,ir,w,ct,sp,mo) {
+	function getHEX(v) {var col=v||'#000000';
+		if(!col.match(/^#[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]$/i)) {
+			if(v.match(/^#[0-9a-f][0-9a-f][0-9a-f]$/i)) {col='#'+v.substr(1,1)+v.substr(1,1)+v.substr(2,1)+v.substr(2,1)+v.substr(3,1)+v.substr(3,1);}
+		}return col;
+	}
+	var running=false,os=0,al=0,f=100,c,i,h,p,t,x,y,hs,qs,hw,qw,rp,sh,fl,ele=new Array();
+	c=getHEX(cl); tp=tp||"t"; t=(tp.match(/^[coprt]/i)?tp.substr(0,1).toLowerCase():'t');
+	ct=Math.max(5,Math.min(36,ct||12)); sp=Math.max(30,Math.min(1000,sp||96));
+	sz=Math.max(16,Math.min(512,sz||32)); ir=Math.max(1,Math.min((sz/2)-2,ir||sz/4));
+	w=Math.max(1,Math.min((sz/2)-ir,w||sz/10)); mo=Math.max(0,Math.min(0.5,mo||0.25));
+	h=(sz/2)-ir; x=sz/2; y=x; al=360/ct; hs=parseInt((sz/2)*f); qs=parseInt(hs/2); 
+	hw=parseInt((w/2)*f); qw=parseInt(hw/2); rp=hs-parseInt(ir*f); 
+	switch(t) {
+		case "c": p='m '+hs+','+(rp-hw)+' ar '+(hs-hw)+','+(rp-hw-hw)+','+(hs+hw)+','+rp+','+(hs-hw)+','+(rp-hw-hw)+','+(hs-hw)+','+(rp-hw-hw)+' e'; break;
+		case "p": p='m '+(hs-qw)+',0 l '+(hs-hw)+','+rp+','+(hs+hw)+','+rp+','+(hs+qw)+',0 x e'; break;
+		case "o": p='m '+hs+','+(rp-qs)+' ar '+(hs-hw)+',0,'+(hs+hw)+','+rp+','+(hs-hw)+',0,'+(hs-hw)+',0 e'; break;
+		case "t": p='m '+(hs-hw)+','+rp+' l '+(hs-hw)+','+hw+' qy '+hs+',0 qx '+(hs+hw)+','+hw+' l '+(hs+hw)+','+rp+' x e'; break;
+		default: p='m '+(hs-hw)+',0 l '+(hs-hw)+','+rp+','+(hs+hw)+','+rp+','+(hs+hw)+',0 x e'; break;
+	} 
+	for(i=0;i<ct;i++) {
+		sh=document.createElement('v:shape'); sh.setAttribute('filled','t'); sh.setAttribute('stroked','f');
+		sh.setAttribute('coordorigin','0,0'); sh.setAttribute('coordsize',(sz*f)+','+(sz*f));
+		sh.setAttribute('path',p); sh.style.rotation=(i*al); sh.style.position='absolute'; sh.style.margin='0px';
+		sh.style.width=sz+'px'; sh.style.height=sz+'px'; sh.style.top='-1px'; sh.style.left='-1px';
+		obj.appendChild(sh); fl=document.createElement('v:fill');
+		fl.setAttribute('opacity',Math.min(1,Math.max(mo,1-((ct+1-i)/(ct+1)))));
+		fl.setAttribute('color',c); sh.appendChild(fl); ele[i]=fl;
+	}
+	function nextLoop(){
+		if(!running) {return;} os=(os+1)%ct; 
+		if(document.documentMode==8) {
+			for(i=0;i<ct;i++) {al=((os+i)%ct); ele[al].opacity=Math.min(1,Math.max(mo,1-((ct+1-i)/(ct+1))));}
+		}else {
+			for(i=0;i<ct;i++) {al=((os+i)%ct); ele[al].setAttribute('opacity',Math.min(1,Math.max(mo,1-((ct+1-i)/(ct+1)))));}
+		}
+		setTimeout(nextLoop,sp);
+	}
+	nextLoop(0);
+	return {
+		start: function (){if(!running){running=true; nextLoop(0);}},
+		stop: function (){running=false; for(i=0;i<ct;i++) {ele[i].setAttribute('opacity',0);}},
+		pause: function (){running=false; }
+	};
+}
+function getBusyCV(ctx,cl,sz,tp,ir,w,ct,sp,mo) {
+	function getRGB(v){
+		function hex2dec(h){return(Math.max(0,Math.min(parseInt(h,16),255)));}
+		var r=0,g=0,b=0; v=v||'#000'; if(v.match(/^#[0-9a-f][0-9a-f][0-9a-f]$/i)) {
+			r=hex2dec(v.substr(1,1)+v.substr(1,1)),g=hex2dec(v.substr(2,1)+v.substr(2,1)),b=hex2dec(v.substr(3,1)+v.substr(3,1));
+		}else if(v.match(/^#[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]$/i)) {
+			r=hex2dec(v.substr(1,2)),g=hex2dec(v.substr(3,2)),b=hex2dec(v.substr(5,2));
+		} return r+','+g+','+b;
+	}
+	function drawOval(ctx,w,h){ctx.beginPath(); ctx.moveTo(-w/2,h/2); ctx.quadraticCurveTo(-w/2,0,0,0); ctx.quadraticCurveTo(w/2,0,w/2,h/2); ctx.quadraticCurveTo(w/2,h,0,h); ctx.quadraticCurveTo(-w/2,h,-w/2,h/2); ctx.fill();}
+	function drawTube(ctx,w,h){ctx.beginPath(); ctx.moveTo(w/2,0); ctx.lineTo(-w/2,0); ctx.lineTo(-w/2,h-(w/2)); ctx.quadraticCurveTo(-w/2,h,0,h); ctx.quadraticCurveTo(w/2,h,w/2,h-(w/2)); ctx.fill();}
+	function drawPoly(ctx,w,h){ctx.beginPath(); ctx.moveTo(w/2,0); ctx.lineTo(-w/2,0); ctx.lineTo(-w/4,h); ctx.lineTo(w/4,h); ctx.fill();}
+	function drawCirc(ctx,r,z){ctx.beginPath(); ctx.arc(r,r,r,0,Math.PI*2,false); ctx.fill();}  
+	var running=false,os=0,al=0,c,i,h,t,x,y;
+	c=getRGB(cl); tp=tp||"t"; t=(tp.match(/^[coprt]/i)?tp.substr(0,1).toLowerCase():'t');
+	ct=Math.max(5,Math.min(36,ct||12)); sp=Math.max(30,Math.min(1000,sp||96));
+	sz=Math.max(16,Math.min(512,sz||32)); ir=Math.max(1,Math.min((sz/2)-2,ir||sz/4));
+	w=Math.max(1,Math.min((sz/2)-ir,w||sz/10)); mo=Math.max(0,Math.min(0.5,mo||0.25));
+	h=(sz/2)-ir; x=sz/2; y=x;
+	function nextLoop(){
+		if(!running) {return;} os=(os+1)%ct; ctx.clearRect(0,0,sz,sz); ctx.save(); ctx.translate(x,y);
+		for(i=0;i<ct;i++) {al=2*((os+i)%ct)*Math.PI/ct; 
+			ctx.save(); ctx.translate(ir*Math.sin(-al),ir*Math.cos(-al)); ctx.rotate(al);
+			ctx.fillStyle='rgba('+c+','+Math.min(1,Math.max(mo,1-((ct+1-i)/(ct+1))))+')';
+			switch(t) {case "c": drawCirc(ctx,w/2,h); break; case "o": drawOval(ctx,w,h); break; case "p": drawPoly(ctx,w,h); break; case "t": drawTube(ctx,w,h); break; default: ctx.fillRect(-w/2,0,w,h); break;} ctx.restore();
+		} ctx.restore();
+		setTimeout(nextLoop,sp);
+	}
+	nextLoop(0);
+	return {
+		start: function (){if(!running){running=true; nextLoop(0);}},
+		stop: function (){running=false; ctx.clearRect(0,0,sz,sz); },
+		pause: function (){running=false; }
+	};
+}
+
+function start_busy()
+{
+ ctrl = getBusyOverlay("viewport");
+}
+</script>
+<head><body onload="start_busy();" ><div id="viewport" style="height:100%;"></div><body>
+</html> 

File src/apps/mplayerc/resource.h

Binary file modified.