js 开发互联网机顶盒前端之页面逻辑二
Dare.Main = function(){
this.className = "Dare.Main";
this.stylePath = "../style/default/";
this.currentIndex = 2;//当前菜单焦点位置
this.menuIndex = 0; //当前菜单在数组中位置
this.menuCount =14; //菜单总数
this.menuArray = []; //菜单项目
this.columnFocus = FocusMode.MENU;
this.filearray = []; //文件项目
this.fileIndex = 0; //当前文件在数组中位置
this.fileCount = 0;//文件长度0-7
this.arrowImages = {"up":this.stylePath+"f1.png","down":this.stylePath+"f2.png","right":this.stylePath+"f3.png","left":this.stylePath+"f4.png"};
this.statusIcon = {"red":this.stylePath + "b1.png","orange":this.stylePath + "b2.png","green":this.stylePath + "b3.png"};
//操作按钮
this.imgbtns = Operations[1];
this.operationIndex = 0 ;
//usb file
this.usbFileArray = []; //usb file array
this.usbFileIndex = 0; // 当前usb文件在数组中位置
this.usbFileCount = 0; //usb文件长度0-7
this.fileType = 0;// 视频,音频,图片
this.command = new Dare.Business.Command();
this.currentFocus;//imgok 当前焦点
this.secondLevelMenu = false;//本地播放二级菜单
this.showUsbProgram = false;//默认显示内置硬盘节目
this.videoTypepic = [this.stylePath+"q1.png",this.stylePath+"q2.png",this.stylePath+"q3.png",this.stylePath+"q4.png"];
}
Dare.extend(Dare.Main, Dare);
Dare.Main.prototype.init = function(){
//dareUtil.debug("appCodeName"+navigator.appCodeName +" platform:"+navigator.platform+"userAgent:"+navigator.userAgent);
//var path = dareUtil.trimPath("/mnt/dell/桌面/红叶/20110322 终端页面迁移图/20110322 终端页面迁移图.files/",50);
this.menuArray = this.command.getMenuItems();
//alert(this.menuArray);
this.showUsbProgram = false;
this.initMenu();
};
Dare.Main.prototype.initMenu = function(){
this.columnFocus = FocusMode.MENU;
this.menuCount = this.menuArray.length;
imgnetstatus.src = this.stylePath+"b3.png";
for(var i=0;i<5;i++){
document.getElementById("pic"+i).src=this.stylePath+"c"+this.menuArray[i]+".png";
}
document.getElementById("imgarrowup"+2).src = this.arrowImages.up;
document.getElementById("imgarrowdown"+2).src = this.arrowImages.down;
document.getElementById("pic2").src = this.stylePath+"c"+(this.menuArray[2])+"a.png";
//$('picadvimg').src = this.stylePath +"haibao.png";
this.menuIndex = 2;
//title
var titleObj = this.command.getWebTitle();
$('link').innerText = titleObj.text;
$('link').style.color = titleObj.color;
$('link').style.fontSize = titleObj.size;
//箭头
arrowup.src = this.arrowImages.up;
arrowdown.src = this.arrowImages.down;
arrowleft.src = this.arrowImages.left;
arrowright.src = this.arrowImages.right;
arrowleftOper.src = this.arrowImages.left;
arrowrightOper.src = this.arrowImages.right;
imgokarrow.src = this.stylePath+"f6.png";
imgcancelarrow.src = this.stylePath+"f7.png"
//hide file arrow
this.showMenuArrow();
//操作菜单
for(var i=0;i<3;i++){
if(document.getElementById("btnarrowup"+i))document.getElementById("btnarrowup"+i).src = this.stylePath+"f1.png";
if(document.getElementById("btnarrowdown"+i))document.getElementById("btnarrowdown"+i).src = this.stylePath+"f2.png";
}
if(btnpic0) btnpic0.innerText = this.imgbtns[0].text;
if(btnpic1) btnpic1.innerText = this.imgbtns[1].text;
if(btnpic2) btnpic2.innerText = this.imgbtns[2].text;
//end 操作菜单
//delete form
$('imgok').className = 'btnok_over';
$('imgcancel').className = 'btncancel';
dareUtil.hideDomObj($("cancelarrow"));
dareUtil.showDomObj($("okarrow"));
//network status
var networkStatusConfig = this.command.getNetworkStatus()
if (networkStatusConfig.length != 0) {
var json = new Dare.JSObject.JSON();
var networkStatusObject = json.toObject(networkStatusConfig);
this.NetWorkStatus = parseInt(networkStatusObject.status);
//dareUtil.debug(this.NetWorkStatus);
txtnetworkStatus.innerText = NetWorkStatusMode[this.NetWorkStatus].name;
imgnetstatus.src = this.statusIcon[NetWorkStatusMode[this.NetWorkStatus].icon];
}
//从外置usb节目返回
var back_from_usb = dareUtil.getGlobalVar("back_from_usb_program");
if(back_from_usb && back_from_usb == "true"){
for(var m=0; m < this.menuArray.length;m++){
if(this.menuArray[m]== MOVING_INFO_MENU){
this.menuIndex = m;
this.fileIndex = 0;
this.listMenu();
this.focusMenu(2);
this.showFocusMenuArrow();
break;
}
}
}
////播放返回
var menuFileIndex = dareUtil.getGlobalVar("global_memu_file_index");
//test
//menuFileIndex= "{menuIndex:2,fileIndex:2 }";
//test
var json = new Dare.JSObject.JSON();
var mf = json.toObject(menuFileIndex);
if(mf && Math.abs(mf.menuIndex) >= 0){//播放返回
//dareUtil.debug(mf.menuIndex + " " +mf.fileIndex);
this.menuIndex = mf.menuIndex;
this.fileIndex = mf.fileIndex;
//start menu
for(var i=0;i<5;i++){
var k = this.menuIndex + i -2;
if(k < 0) k = this.menuArray.length +k;
if(k >= this.menuArray.length) k = k - this.menuArray.length;
document.getElementById("pic"+i).src=this.stylePath+"c"+(this.menuArray[k])+".png";
}
this.secondLevelMenu = false;//显示一级菜单 用于移动信息
this.hideMenuArrow();
//end menu
this.focusMenu(2);
if (parseInt(this.menuArray[this.menuIndex],10) == MOVING_INFO_MENU) {
this.secondLevelMenu = true;//移动信息二级菜单
var usbpath = dareUtil.getGlobalVar("currentUsbPath");
var usbfiletype = dareUtil.getGlobalVar("currentfileType");
var currentUsbFileIndex = dareUtil.getGlobalVar("currentUsbFileIndex");
//test
//dareUtil.debug("this.currentUsbFileIndex:" + currentUsbFileIndex);
//dareUtil.debug("usbpath:" + usbpath);
// dareUtil.debug("usbfiletype:" + usbfiletype);
if(usbpath != null && usbfiletype != null){
//end test
this.currentPath = usbpath;
this.fileType = usbfiletype;
//dareUtil.debug("ok----"+this.currentPath+" path"+ this.fileType);
this.fileIndex = this.fileType;
this.usbFileIndex = currentUsbFileIndex;
this.getFileList();
this.getUsbFileList(true);
this.columnFocus = FocusMode.USB_FILE;
this.showUsbFileArrow();
dareUtil.setGlobalVar("global_memu_file_index","");
return;
}
}
this.columnFocus = FocusMode.FILE;
this.showFileArrow();
dareUtil.setGlobalVar("global_memu_file_index","");
}
//dareUtil.debug("166r:"+this.menuIndex + " " +this.fileIndex);
this.getFileList();
}
Dare.Main.prototype.focusOk = function(){
//$('imgok').src = this.stylePath +"bn4.png";
//$('imgcancel').src = this.stylePath + "bn2a.png";
$('imgok').className = 'btnok_over';
$('imgcancel').className = 'btncancel';
dareUtil.hideDomObj($("cancelarrow"));
dareUtil.showDomObj($("okarrow"));
this.currentFocus = "imgok";
}
Dare.Main.prototype.focusCancel = function(){
//$('imgok').src = this.stylePath +"bn4a.png";
//$('imgcancel').src = this.stylePath + "bn2.png";
$('imgok').className = 'btnok';
$('imgcancel').className = 'btncancel_over';
dareUtil.hideDomObj($("okarrow"));
dareUtil.showDomObj($("cancelarrow"));
this.currentFocus = "imgcancel";
}
Dare.Main.prototype.keypressHandler = function(event) {
var keyValue = Dare.getKeyCode(event);//Dare.isiPanel ? event.which : window.event.keyCode;
//dareUtil.debug(navigator.appName+" "+navigator.appName);
//dareUtil.debug(keyValue);
switch (keyValue) {
case KeyMap.STB_KEY_DOWN:
this.keydownHandler();
break;
case KeyMap.STB_KEY_UP:
this.keyupHandler();
break;
case KeyMap.STB_KEY_ENTER:
this.keyenterHandler();
break;
case KeyMap.STB_KEY_LEFT:
this.keyleftHandler();
break;
case KeyMap.STB_KEY_RIGHT:
this.keyrightHandler();
break;
case KeyMap.STB_KEY_HOME:
window.location.href = window.location.href;
break;
case KeyMap.STB_KEY_STOP:
if(this.showUsbProgram == true){//显示usb硬盘节目
this.showUsbProgram = false;//显示内置硬盘节目
dareUtil.setGlobalVar("back_from_usb_program","true");
this.init();
}
if(this.columnFocus == FocusMode.USB_FILE){//back to upper dir
this.currentPath = dareUtil.getUpperPath(this.currentPath);
if (this.currentPath) {
this.getUsbFileList(true);
}
}
//window.location.href = '../index.html';
break;
case KeyMap.SML_KEY_DELETE://simulativeKey模拟远程删除
var deletefile = this.command.getRemoteDeleteFile();
var filename = $("filereal3").innerText;
if(deletefile === filename){
this.getFileList();//光标定位节目不变
}else
{
this.filelistdown();//默认光标定位在被删除节目的下一个节目上
}
break;
case KeyMap.SML_KEY_DOWNLOADED:
this.getFileList();//刷新节目列表 光标定位节目不变
if(this.columnFocus == FocusMode.OPER){
this.keyleftHandler();
}
break;
default:
break;
}
}
Dare.Main.prototype.keydownHandler = function(){
if (this.currentFocus == "imgok" || this.currentFocus == "imgcancel") {
return;
}
switch(this.columnFocus){
case FocusMode.MENU :this.menudown(); break;
case FocusMode.FILE :this.filelistdown(); break;
case FocusMode.OPER :this.operationdown();break;
case FocusMode.USB_FILE: this.usbFileDown();break;
}
}
Dare.Main.prototype.keyupHandler = function(){
if (this.currentFocus == "imgok" || this.currentFocus == "imgcancel") {
return;
}
switch(this.columnFocus){
case FocusMode.MENU :this.menuUp(); break;
case FocusMode.FILE :this.filelistUp(); break;
case FocusMode.OPER :this.operationUp();break;
case FocusMode.USB_FILE: this.usbFileUp();break;
}
}
/**
* usb本地文件向下滚动
*/
Dare.Main.prototype.usbFileDown = function()
{
this.usbFileIndex++;
var length = this.usbFileCount;
if(this.usbFileIndex >= length) this.usbFileIndex = 0;
this.getUsbFileList(false);
}
/**
* usb本地文件向上滚动
*/
Dare.Main.prototype.usbFileUp = function()
{
this.usbFileIndex--;
var length = this.usbFileCount;
if(! length || length.length==0) length = this.usbFileCount;//
if(this.usbFileIndex < 0 ) this.usbFileIndex = length - 1;
this.getUsbFileList(false);
}
/**
* 获取usb本地文件
*/
Dare.Main.prototype.getUsbFileList = function(getdare)
{
//dareUtil.debug("path:"+this.currentPath);
//if (getdare) {
this.usbFileArray = this.command.getDirectories(this.currentPath, this.fileType);
//}
//dareUtil.debug("this.usbFileIndex: "+this.usbFileIndex);
var turingObject = this.turingArray(this.usbFileArray,this.usbFileIndex);
this.usbFileCount = turingObject.totallength;
this.usbFileArray = turingObject.data;
var html = "";
if (this.currentPath == "/") {
html += this.appendFileRow("topdir", "margin-top:0px;", "u盘根目录");
}
else {
var path = dareUtil.trimPath(this.currentPath,50);
html += this.appendFileRow("topdir", "margin-top:0px;", path);
}
//dareUtil.debug("count:"+this.usbFileCount +"dara"+this.usbFileArray.join("|||"));
// 小于 4 个
var m = 0;
var usbFileCounnt = this.usbFileArray.length;
if(!usbFileCounnt) usbFileCounnt = 0;
//不足6个补齐前面
if(usbFileCounnt < 6){
var buqilength = usbFileCounnt<=4? 2 : usbFileCounnt==5?1:0;
for (var k = 0; k < buqilength; k++) {
var fileid = "usbfile"+ (m);
var realid = "real" + (m);
m++;
html += this.appendUsbFileRow(fileid, "margin-top:25px;", " ", realid, " ");
}
}
for(var k = 0;k <usbFileCounnt; k++){
var margintop = "";
margintop = 'margin-top:25px;';
filename = dareUtil.trimstr(dareUtil.getFileName(this.usbFileArray[k]),26);
var fileid = "usbfile"+ (m);
var realid = "real" + (m);
m++;
html+=this.appendUsbFileRow(fileid,margintop,filename,realid,this.usbFileArray[k]);
}
if( (!usbFileCounnt ||usbFileCounnt == 0) && this.currentPath != "/"){
filename = "按确定返回上级目录";
var fileid = "usbfile"+ (m);
var realid = "real" + (m);
m++;
html+=this.appendUsbFileRow(fileid,"margin-top:25px;",filename,realid,"backparent");
}
//不足4个补齐后面
if(usbFileCounnt < 4){
for (var k = 0; k < 4 - usbFileCounnt; k++) {
var fileid = "usbfile"+ (m);
var realid = "real" + (m);
m++;
html += this.appendUsbFileRow(fileid, "margin-top:25px;", " ", realid, " ");
}
}
picadv.style.display = "none";
document.getElementById('divmove').style.display = "block";
document.getElementById('divmove').innerHTML = html.toString();
if($('usbfile2')) $('usbfile2').className = 'filenameHover';
//dareUtil.debug($('real2').innerText);
}
/**
* 按钮操作往下
*/
Dare.Main.prototype.operationdown = function(){
if(this.operationIndex == 2 )return;
if(dareUtil.isHidden($('dmenu1')) && dareUtil.isHidden($('dmenu2')))return; //only one
this.operationIndex++;
if(this.operationIndex == 1 && dareUtil.isHidden($('dmenu1')))
this.operationIndex++; //只有两项,跳过中间
this.operationShow();
}
/**
* 按钮操作往上
*/
Dare.Main.prototype.operationUp = function(){
if(this.operationIndex == 0 )return;
this.operationIndex--;
if(this.operationIndex == 1 && dareUtil.isHidden($('dmenu1')))
this.operationIndex--; //只有两项,跳过中间
//dareUtil.debug(this.index);
this.operationShow();
}
Dare.Main.prototype.operationShow = function(){
btnpic0.className = 'operation';
btnpic1.className = 'operation';
btnpic2.className = 'operation';
dareUtil.hideDomObj($('btnarrowdown0'));
//dareUtil.hideDomObj($('btnarrowup1'));
btnarrowup1.src = this.stylePath + "none_h12.png"
dareUtil.hideDomObj($('btnarrowdown1'));
dareUtil.hideDomObj($('btnarrowup2'));
switch(this.operationIndex){
case 0:
this.currentFocus = "btnpic0";
btnpic0.className = 'operationHover';
dareUtil.showDomObj($('btnarrowdown0'));
$('divoperationArrowLeft').style.top = "240";
break;
case 1:
this.currentFocus = "btnpic1";
btnarrowup1.src = this.stylePath + "f1.png"
btnpic1.className = 'operationHover';
dareUtil.showDomObj($('btnarrowup1'));
dareUtil.showDomObj($('btnarrowdown1'));
$('divoperationArrowLeft').style.top = "310";
break;
case 2:
this.currentFocus = "btnpic2";
btnpic2.className = 'operationHover';
dareUtil.showDomObj($('btnarrowup2'));
if(dareUtil.isHidden($('dmenu1'))) $('divoperationArrowLeft').style.top = "310";
else $('divoperationArrowLeft').style.top = "380";
break;
}
if(dareUtil.isHidden($('dmenu1')) && dareUtil.isHidden($('dmenu2')))
{
dareUtil.hideDomObj($('btnarrowdown0'));
}
//dareUtil.debug(this.currentFocus.substr(0,6));
}
/**
* 文件操作往下
*/
Dare.Main.prototype.filelistdown = function(){
this.fileIndex++;
var length = this.command.getFileItemsLength(this.menuIndex,this.showUsbProgram);
if (!length || length.length==0) {
length = this.filearray.length;//
}
if(this.fileIndex >= length) this.fileIndex = 0;
this.getFileList();
var name = $("filereal3").innerText;
//dareUtil.debug(name);
if (name == "音频" || name == "视频" || name == "图片") {
dareUtil.debug("848:"+menuFileIndex);
this.fileType = this.getFileType(name);//
this.currentPath = "/";
this.usbFileIndex = 0;
this.getUsbFileList(true);
this.columnFocus = FocusMode.FILE;
this.showFileArrow();
}
}
/**
* 按钮操作往上
*/
Dare.Main.prototype.filelistUp = function(){
this.fileIndex--;
var length = this.command.getFileItemsLength(this.menuIndex,this.showUsbProgram);
if(! length || length.length==0) length = this.filearray.length;//
if(this.fileIndex < 0 ) this.fileIndex = length - 1;
this.getFileList();
//
var name = $("filereal3").innerText;
if (name == "音频" || name == "视频" || name == "图片") {
dareUtil.debug("848:"+menuFileIndex);
this.fileType = this.getFileType(name);//
this.currentPath = "/";
this.usbFileIndex = 0;
this.getUsbFileList(true);
this.columnFocus = FocusMode.FILE;
this.showFileArrow();
}
}
/**
* 菜单操作往下
*/
Dare.Main.prototype.menudown= function(){
this.menuIndex++;
if (this.menuIndex > this.menuCount - 1) {
this.menuIndex = 0;
}
var index = this.listMenu();
//焦点
this.currentIndex = 2;
this.focusMenu(2);
this.showFocusMenuArrow();
this.getFileList();
}
/**
* 按钮操作往上
*/
Dare.Main.prototype.menuUp = function(){
this.menuIndex--;
if (this.menuIndex < 0) {
this.menuIndex = this.menuCount - 1;
}
var index = this.listMenu();
this.currentIndex = 2;
this.focusMenu(2);
this.showFocusMenuArrow();
this.getFileList();
}
/**
* 列出菜单
*/
Dare.Main.prototype.listMenu = function(){
//dareUtil.debug("this.menuIndex:"+this.menuIndex);
this.fileIndex = 0;
for(var i=0;i<5;i++){
var k = this.menuIndex + i -2;
if(k < 0) k = this.menuArray.length +k;
if(k >= this.menuArray.length) k = k - this.menuArray.length;
//dareUtil.debug("K:"+k+" "+this.menuArray[k]);
document.getElementById("pic"+i).src=this.stylePath+"c"+(this.menuArray[k])+".png";
}
this.secondLevelMenu = false;//显示一级菜单 用于移动信息
//hide arrow
this.hideMenuArrow();
return 2;
}
/**
* 显示菜单箭头
*/
Dare.Main.prototype.showFocusMenuArrow = function(){
var m = document.getElementById("imgarrowup"+this.currentIndex);
if (m) {
m.src = this.arrowImages.up;
//m.style.display = "block";
}
m = document.getElementById("arrowdown"+this.currentIndex);
if (m) {
m.style.display = "block";
}
}
/**
* hide菜单箭头
*/
Dare.Main.prototype.hideMenuArrow = function(){
var m = document.getElementById("imgarrowup2");
if (m) {
//m.style.display = "none";
m.src = this.stylePath +"f6.png";
}
//dareUtil.debug(m.src);
m = document.getElementById("arrowdown2");
if (m) m.style.display = "none";
}
/**
* 菜单失去焦点
*/
Dare.Main.prototype.lostfocusMenu = function(i){
if(document.getElementById("pic"+i))
document.getElementById("pic"+i).src = document.getElementById("pic"+i).src.replace('a.png','.png');
}
/**
* 菜单获取焦点
*/
Dare.Main.prototype.focusMenu = function(i){
if(document.getElementById("pic"+i))
document.getElementById("pic"+i).src = document.getElementById("pic"+i).src.replace('.png','a.png');
}
/**
* 获取文件列表
*/
Dare.Main.prototype.getFileList = function(){
//dareUtil.debug("553fileIndex:"+this.fileIndex);
document.getElementById('divmove').style.display = "none";
picadv.style.display = "block";
//dareUtil.debug("index:"+this.menuArray[this.menuIndex]);
if (this.menuArray[this.menuIndex] == MOVING_INFO_MENU)//移动信息
{
if (this.secondLevelMenu == false) {
this.filearray = this.command.getFileItems(this.menuArray[this.menuIndex], this.fileIndex,this.showUsbProgram);//MoveInfo;//global
}else {
this.filearray = MoveFileInfo;
}
}else{ //帮助和其他
this.filearray = this.command.getFileItems(this.menuArray[this.menuIndex], this.fileIndex,this.showUsbProgram);
}
this.arrangeFileList();
};
Dare.Main.prototype.turingArray = function(oldarray,turingindex){
var totallength = 0;
/////////////////testing 移动信息菜单 可以使用, 其他模块从后端动态获取
var tmparray = new Dare.JSObject.Array();
if(oldarray && oldarray.length > 0){
var length = oldarray.length;
totallength = length;
//dareUtil.debug("turingindex:"+turingindex);
//f1
if (length >= 6) {
var file1 = turingindex - 2;
if (file1 < 0)
file1 = length + file1;//
if( file1 > length -1) file1 = file1 - length;//
// dareUtil.debug("f1:"+file1+" :"+ this.filearray[file1]);
if (oldarray[file1] && !tmparray.contains(oldarray[file1]))
tmparray.push(oldarray[file1]);
}
//f2
if (length >= 5) {
var file2 = turingindex - 1;
if (file2 < 0) file2 = length + file2;//
if( file2 > length -1) file2 = file2 - length;//
//dareUtil.debug("f2:"+file2+" :"+ oldarray[file2]);
if (oldarray[file2] && !tmparray.contains(oldarray[file2]))
tmparray.push(oldarray[file2]);
}
//f3
var file3 = turingindex;
if( file3 < 0) file3 = length + file3;//
if( file3 > length -1) file3 = file3 - length;//
// dareUtil.debug("f3:"+file3+" :"+ this.filearray[file3]);
if(oldarray[file3] && !tmparray.contains(oldarray[file3]))tmparray.push(oldarray[file3]);
//f4
if (length >= 2) {
var file4 = turingindex + 1;
if (file4 < 0) file4 = length + file4;//
if (file4 > length - 1)
file4 = file4 - length;//
// dareUtil.debug("f4:"+file4+" :"+ this.filearray[file4]);
if (oldarray[file4] && !tmparray.contains(oldarray[file4]))
tmparray.push(oldarray[file4]);
}
//f5
if (length >= 3) {
var file5 = turingindex + 2;
if (file5 < 0) file5 = length + file5;//
if (file5 > length - 1)
file5 = file5 - length;//
// dareUtil.debug("f5:"+file5+" :"+ this.filearray[file5]);
if (oldarray[file5] && !tmparray.contains(oldarray[file5]))
tmparray.push(oldarray[file5]);
}
//f6
if (length >= 4) {
var file6 = turingindex + 3;
if (file6 < 0) file6 = length + file6;//
if (file6 > length - 1)
file6 = file6 - length;//
//dareUtil.debug("f6:"+file6+" :"+ this.filearray[file6]);
if (oldarray[file6] && !tmparray.contains(oldarray[file6]))
tmparray.push(oldarray[file6]);
}
//oldarray = tmparray;
}
var a = new Object();
a.data = tmparray;
a.totallength = totallength;
//dareUtil.debug("data:"+tmparray.join("~~"));
return a;
}
Dare.Main.prototype.turingArray7 = function(oldarray,turingindex){
var totallength = 0;
/////////////////testing 移动信息菜单 可以使用, 其他模块从后端动态获取
var tmparray = new Dare.JSObject.Array();
if(oldarray && oldarray.length > 0){
var length = oldarray.length;
totallength = length;
//dareUtil.debug("turingindex:"+turingindex);
//f0
if (length >= 7) {
var file0 = turingindex - 1;
if (file0 < 0)
file0 = length + file0;//
if (oldarray[file0] && !tmparray.contains(oldarray[file0]))
tmparray.push(oldarray[file0]);
}
//f1
if (length >= 6) {
var file1 = turingindex - 2;
if (file1 < 0)
file1 = length + file1;//
// dareUtil.debug("f1:"+file1+" :"+ this.filearray[file1]);
if (oldarray[file1] && !tmparray.contains(oldarray[file1]))
tmparray.push(oldarray[file1]);
}
//f2
if (length >= 5) {
var file2 = turingindex - 1;
if (file2 < 0) file2 = length + file2;//
//dareUtil.debug("f2:"+file2+" :"+ oldarray[file2]);
if (oldarray[file2] && !tmparray.contains(oldarray[file2]))
tmparray.push(oldarray[file2]);
}
//f3
var file3 = turingindex;
if( file3 < 0) file3 = length + file3;//
if( file3 > length -1) file3 = file3 - length;//
// dareUtil.debug("f3:"+file3+" :"+ this.filearray[file3]);
if(oldarray[file3] && !tmparray.contains(oldarray[file3]))tmparray.push(oldarray[file3]);
//f4
if (length >= 2) {
var file4 = turingindex + 1;
if (file4 > length - 1)
file4 = file4 - length;//
// dareUtil.debug("f4:"+file4+" :"+ this.filearray[file4]);
if (oldarray[file4] && !tmparray.contains(oldarray[file4]))
tmparray.push(oldarray[file4]);
}
//f5
if (length >= 3) {
var file5 = turingindex + 2;
if (file5 > length - 1)
file5 = file5 - length;//
// dareUtil.debug("f5:"+file5+" :"+ this.filearray[file5]);
if (oldarray[file5] && !tmparray.contains(oldarray[file5]))
tmparray.push(oldarray[file5]);
}
//f6
if (length >= 4) {
var file6 = turingindex + 3;
if (file6 > length - 1)
file6 = file6 - length;//
//dareUtil.debug("f6:"+file6+" :"+ this.filearray[file6]);
if (oldarray[file6] && !tmparray.contains(oldarray[file6]))
tmparray.push(oldarray[file6]);
}
//oldarray = tmparray;
}
var a = new Object();
a.data = tmparray;
a.totallength = totallength;
//dareUtil.debug("data:"+tmparray.join("~~"));
return a;
}
/**
* 文件列表排列
*/
Dare.Main.prototype.arrangeFileList = function(){
var totallength = 0;
//dareUtil.debug("711fileIndex:"+this.fileIndex);
/////////////////testing 移动信息菜单 可以使用, 其他模块从后端动态获取
var tmparray = new Dare.JSObject.Array();
if(this.filearray && this.filearray.length > 0){
var turingObject = this.turingArray(this.filearray,this.fileIndex);
this.fileCount = turingObject.totallength;
totallength = this.fileCount;
//link.innerText = ("totallength:"+turingObject.data.join(',,,'));
this.filearray = turingObject.data;
dareUtil.showDomObj($('divarrowright'));
}else{
dareUtil.hideDomObj($('divarrowright'));
}
////////////////testing end
this.listFile(totallength);
///////////////////////show 海报
var filename = ($("filereal3")) ? $("filereal3").innerText : "";
var pic;
if(this.filearray.length > 0){
pic = this.command.getVideoAdvPic(filename);
if(pic && pic.length > 1)return pic;
else if(!pic || pic.length == 0) pic = this.stylePath + "tu4.png";
}else{
pic = this.stylePath + "tu1.png";
}
//picadvimg.src = pic;
/////////////////////end 海报
// for testing 实际使用删除
if($('picadvimg'))$('picadvimg').src = this.stylePath +"haibao.png";
else $('picadvimg').src = this.stylePath + "tu1.png";
//end testing
///////////////////视频类型图片
var type;
if (this.filearray.length > 0) {
type = this.command.getVideoType(filename);
}
if ($('(picvideoType')) {
if (type && type > 0) {
$('(picvideoType').src = this.videoTypepic[type];
//dareUtil.debug(picvideoType.src);
}
else {
$('(picvideoType').src = this.stylePath + "none_h12.png";
}
}
///////////////////视频类型图片 end
}
Dare.Main.prototype.getTrimFileName = function(name,k,length){
var WORD_LENGTH = length;
var fontsize = 25;
if (k != 0) {
filename = dareUtil.getFileTitleName(name, WORD_LENGTH + 4);
}
else {
filename = dareUtil.getFileTitleName(name, WORD_LENGTH);
fontsize = 31;
}
var c_name = this.command.trimFileName(dareUtil.getFileName(name),fontsize,220);
if(c_name) filename = c_name;
return filename;
}
Dare.Main.prototype.listFile = function(totallength){
this.fileCount = totallength;
var html = "";
// picadv.innerText ="length:"+this.filearray.length+" <br>"+ this.filearray.join(',');
var m = 0;
var fileCount = this.filearray.length;
if(this.filearray.length < 7){
var buqilength = fileCount<=4? 3 : fileCount==5?2:fileCount==6?1:0;
for (var k = 0; k < buqilength; k++) {
margintop = 'margin-top:25px;';
if(m==0)margintop = 'margin-top:0px;';
var fileid = "file"+ (m);
var realid = "filereal" + (m);
m++;
html += this.appendFileRow(fileid, margintop, " ", realid, " ");
}
}
for(var k = 0;k < this.filearray.length; k++){
var margintop = "";
margintop = 'margin-top:25px;';
if(m==0)margintop = 'margin-top:0px;';
filename = this.getTrimFileName(this.filearray[k],k,12);
var fileid = "file"+ (m);
var realid = "filereal" + (m);
m++;
html+=this.appendFileRow(fileid,margintop,filename,realid,this.filearray[k]);
}
//不足4个补齐后面
if(fileCount < 4){
for (var k = 0; k < 4 - fileCount; k++) {
var fileid = "file"+ (m);
var realid = "filereal" + (m);
m++;
html += this.appendFileRow(fileid, "margin-top:25px;", " ", realid, " ");
}
}
document.getElementById('filelist').innerHTML = html.toString();
if($('file3')) $('file3').className = 'filenameHover';
if (this.columnFocus == FocusMode.FILE) {
dareUtil.hideDomObj($('divarrowright'));
}
var name = $("filereal3").innerText;
//dareUtil.debug(name);
if (name == "音频" || name == "视频" || name == "图片") {
var menuFileIndex = dareUtil.getGlobalVar("global_memu_file_index");
//dareUtil.debug("846:"+menuFileIndex);
if ( !menuFileIndex) { //不是播放返回
//dareUtil.debug("848:"+menuFileIndex);
this.fileType = this.getFileType(name);//
this.currentPath = "/";
this.usbFileIndex = 0;
this.getUsbFileList(true);
this.columnFocus = FocusMode.FILE;
this.showFileArrow();
}
}
};
/**
* 追加文件条目
*/
Dare.Main.prototype.appendFileRow = function(fileid,margintop,filename,realfileid,realname){
var paddingheight = "13px;";
if(fileid == "file3") paddingheight = "10px;";
return ('<div id="'+fileid+'" style="'+margintop+'margin-left:15px;margin-right:15px;height:50px;background-color:transparent"><div style="display:none" id="'+ realfileid+'">'+realname+'</div><div style="height:'+paddingheight+';"><img id="a1" src="../style/default/none_h12.png" ></img></div>'+filename+'</div>');
};
/**
* 追加usb文件条目
*/
Dare.Main.prototype.appendUsbFileRow = function(fileid,margintop,filename,realfileid,realname){
return ('<div id="'+fileid+'" style="'+margintop+'margin-left:15px;margin-right:15px;height:50px;background-color:transparent;"><div style="display:none" id="'+ realfileid+'">'+realname+'</div><div style="height:13px;"><img id="a1" src="../style/default/none_h12.png" ></img></div>'+filename+'</div>');
};
Dare.Main.prototype.playMedia = function(filename){
var str = "{menuIndex:" + this.menuIndex + ",fileIndex:" + this.fileIndex + "}";
//alert(str);
dareUtil.setGlobalVar("global_memu_file_index",str);
dareUtil.setGlobalVar('movieBookList',filename);
window.location.href = "movieplay.html";
};
Dare.Main.prototype.playMusic = function(filename){
var str = "{menuIndex:" + this.menuIndex + ",fileIndex:" + this.fileIndex + "}";
dareUtil.setGlobalVar("global_memu_file_index",str);
dareUtil.setGlobalVar('musicBookList',filename);
window.location.href = "musicplay.html";
};
Dare.Main.prototype.playPic = function(filename){
//your code here
dareUtil.debug('not implement now');
};
Dare.Main.prototype.getFileType = function(filename){
switch(filename){
case "视频" : return 0;
case "音频" : return 1;
case "图片" : return 2;
default : return 0;
}
}
Dare.Main.prototype.keyenterHandler = function(){
//dareUtil.debug(window.console);
//dareUtil.debug(this.filearray.join(","));
var filename = $("filereal3").innerText;
//dareUtil.debug(filename);
switch (this.columnFocus) {
case FocusMode.USB_FILE:
if("backparent" == $('real2').innerText){
this.currentPath = dareUtil.getUpperPath(this.currentPath);
this.getUsbFileList(true);
return;
}
this.currentPath = $('real2').innerText;
//dareUtil.debug(this.currentPath);
if (dareUtil.isDirectory(this.currentPath)) {//dir目录
this.usbFileIndex = 0 ;
this.getUsbFileList(true);
return;
}else{//文件
var usbfilename = $("real2").innerText;
this.currentPath = dareUtil.getFilePath(usbfilename);
dareUtil.setGlobalVar("currentUsbPath",this.currentPath);
//dareUtil.debug("this.usbFileIndex:"+this.usbFileIndex);
dareUtil.setGlobalVar("currentUsbFileIndex",this.usbFileIndex);
dareUtil.setGlobalVar("currentfileType",this.fileType);
//dareUtil.debug("currentfileType"+this.fileType);
switch(this.fileType){
case 0 : this.playMedia(usbfilename);break;
case 1 : this.playMusic(usbfilename);break;//play music
case 2 : this.playPic(usbfilename); break;
}
}
break;
case FocusMode.MENU:
//播放
//alert("957:"+parseInt(this.menuArray[this.menuIndex]));
if(parseInt(this.menuArray[this.menuIndex])== MOVING_INFO_MENU){//移动
this.secondLevelMenu = false;
this.getFileList();
}
else if(parseInt(this.menuArray[this.menuIndex]) == HELP_INFO_MENU){//帮助
this.getFileList();
}
else if (filename) {//记忆点 默认第一条
this.playMedia(filename);
}
break;
case FocusMode.FILE:
var str = "{menuIndex:" + this.menuIndex + ",fileIndex:" + this.fileIndex + "}";
dareUtil.setGlobalVar("global_memu_file_index",str);
//dareUtil.debug("this.menuIndex:"+this.menuIndex +" value;"+this.menuArray[this.menuIndex]);
//播放
if(this.menuArray[this.menuIndex]=="9"){//动听世界
this.playMusic(filename);
}
else if (filename && filename.indexOf('/mnt/') != -1) {
this.playMedia(filename);
}
if(filename == "下载状态"){
var current = this.command.GetCurrentDownFile();
var html = "<div class='download'>"+current.status+"<br><br>";
html += "文件名称:"+current.name +"<br><br>文件大小:"+current.size+"<br><br>"+
"下载速度:"+current.speed + "<br><br>下载百分比:"+current.percent +"<br><br>"+
"文件已下载:"+current.downedsize+"</div>";
divmove.innerHTML = html;
divmove.style.display = "block";
dareUtil.hideDomObj($('picadv'));
}
else if(filename == "设置"){
var str = "{menuIndex:" + this.menuIndex + ",fileIndex:" + this.fileIndex + "}";
dareUtil.setGlobalVar("global_memu_file_index",str);
window.location.href = "../setting/audiosetting.html"
}
else if(filename == "外置文件"){
this.filearray = MoveFileInfo;//global
this.secondLevelMenu = true;
this.getFileList();
}
else if(filename === "外置节目"){
var str = "{menuIndex:2,fileIndex:0}";
dareUtil.setGlobalVar("global_memu_file_index",str);
this.showUsbProgram = true;
var menus = this.command.getMenuItems();//this.menuArray new Dare.JSObject.Array
//dareUtil.debug(menus.join(",")); 删除移动信息菜单 MOVING_INFO_MENU
for (var i in menus) {
if (menus[i] == MOVING_INFO_MENU) {
menus.splice(i, 1);
break;
}
}
this.menuArray = menus;
this.initMenu();
this.showUsbProgram = true;//默认显示内置硬盘节目
}
else if (filename == "音频" || filename == "视频" || filename == "图片") {
this.columnFocus = FocusMode.USB_FILE;
this.fileType = this.getFileType(filename); //不显示磁盘,只认一个
this.currentPath = "/";
this.getUsbFileList(true);
this.showUsbFileArrow();
}
break;
case FocusMode.OPER:
//播放
//dareUtil.debug("this.menuIndex:"+this.menuIndex +" value;"+this.menuArray[this.menuIndex]);
if(this.operationIndex > this.imgbtns.length-1)this.operationIndex = this.imgbtns.length-1;
//dareUtil.debug(this.operationIndex +" this.currentFocus:"+ this.currentFocus );
//动听世界
if(this.imgbtns[this.operationIndex].name =="play" && this.menuArray[this.menuIndex]=="9"){
var str = "{menuIndex:" + this.menuIndex + ",fileIndex:" + this.fileIndex + "}";
dareUtil.setGlobalVar("global_memu_file_index",str);
dareUtil.setGlobalVar('musicBookList',filename);
window.location.href = "musicplay.html?name="+filename;
}
else if(this.imgbtns[this.operationIndex].name =="play" && (this.currentFocus =="btnpic0" || this.currentFocus =="btnpic1")){
this.playMedia(filename);
break;
}
//删除确认
if(this.imgbtns[this.imgbtns.length -1].name =="delete" && this.currentFocus =="btnpic2"){
deletefrm.style.display ="block";
this.focusOk();
break;
}
//选集
if (this.imgbtns[this.operationIndex].name == "subitems" ) {
var str = "{menuIndex:" + this.menuIndex + ",fileIndex:" + this.fileIndex + "}";
dareUtil.setGlobalVar("global_memu_file_index",str);
iframe.src = "drama.html?name="+filename+"&menu_file_index=" + str;
iframesubitems.className ="iframe";
$('iframe').focus();
break;
}
//我的专区选集
if (this.imgbtns[this.operationIndex].name == "mysubitems" ) {
var str = "{menuIndex:" + this.menuIndex + ",fileIndex:" + this.fileIndex + "}";
dareUtil.setGlobalVar("global_memu_file_index",str);
iframe.src = "myspecial.html?name="+filename+"&menu_file_index=" + escape(str);
iframesubitems.className ="iframe";
$('iframe').focus();
break;
}
//订购
if(this.imgbtns[this.operationIndex].name == "order" )
{
dareUtil.iFrameResize("iframe",689,413);
//window.open("order.html", 'height=100,width=400,top=0,left=0,toolbar=no') ;
iframe.src = "order.html?name="+filename;
iframesubitems.className ="iframe";
$('iframe').focus();
break;
}
//选择浏览
if (this.imgbtns[this.operationIndex].name == "choosebrower" ) {
var str = "{menuIndex:" + this.menuIndex + ",fileIndex:" + this.fileIndex + "}";
iframe.src = "infospace.html?name="+filename+"&menu_file_index=" + str;
iframesubitems.className ="iframe";
$('iframe').focus();
break;
}
//浏览
if (this.imgbtns[this.operationIndex].name == "brower" ) {
var ispic = this.command.isPicMedia(this.name);
if(ispic){
this.command.openMedia(this.name);//终端播放图片
}else{
//html 播放
//TERMINAL_LOCALPATH_RELATIVE
//window.open(this.name);
//window.open("testspace.html");
}
break;
}
//片花
if (this.imgbtns[this.operationIndex].name == "slice") {
this.command.openMedia(this.name);//终端播放片花
break;
}
else {
if (this.currentFocus == "imgcancel") {//取消删除
deletefrm.style.display = "none";
this.currentFocus = "btnpic2";
}
else if (this.currentFocus == "imgok")
{//删除
deletefrm.style.display = "none";
this.currentFocus = "btnpic2";
//删除节目,
this.command.deleteFile(filename);
var length = this.command.getFileItemsLength(this.menuIndex,this.showUsbProgram);
if (length == 0) {//删除后节目列表为空时
this.columnFocus = FocusMode.MENU;
this.showMenuArrow();
}
else {//刷新节目列表,光标定位在被删除节目的下一个节目上
this.filelistdown();
}
// 远程删除节目的光标定位?使用模拟按键
}
}
break;
}
}
/**
* 显示文件箭头
*/
Dare.Main.prototype.showFileArrow = function()
{
this.hideMenuArrow();
//this.hideArrow(ArrowType.RIGHT);
//if($('file3')) $('file3').className = 'filenameHover';
$('arrowleftOper').style.display = 'none';
$('arrowrightOper').style.display = 'block';
dareUtil.showDomObj($('divarrowdown'));
dareUtil.showDomObj($('divarrowup'));
dareUtil.showDomObj($('divarrowleft'));
dareUtil.hideDomObj($('divarrowright'));
}
/**
* 显示菜单箭头
*/
Dare.Main.prototype.showMenuArrow = function(){
this.showFocusMenuArrow();
this.showArrow(ArrowType.RIGHT);
//if($('file3')) $('file3').className = '';
$('diviframe').style.display = 'none';
$('arrowleftOper').style.display = 'none';
$('arrowrightOper').style.display = 'none';
dareUtil.hideDomObj($('divarrowdown'));
dareUtil.hideDomObj($('divarrowup'));
dareUtil.hideDomObj($('divarrowleft'));
dareUtil.showDomObj($('divarrowright'));
}
/**
* 显示操作箭头
*/
Dare.Main.prototype.showOperationArrow = function(){
if (this.filearray.length == 0) {
$('diviframe').style.display = 'none';
return;
}
this.imgbtns = Operations[this.menuArray[this.menuIndex]];
//var json = new Dare.JSObject.JSON();
//alert("1156:"+this.menuIndex);
if(!this.imgbtns){
this.imgbtns = this.command.getUserDefineOperations(this.menuArray[this.menuIndex]);
}
var statusconfig = this.command.getNetworkStatus();
var json = new Dare.JSObject.JSON();
var statusobj = json.toObject(statusconfig);
if(statusobj && statusobj.status != "3" && statusobj.status != "7"){//没有连接
for(var m in this.imgbtns){
if(this.imgbtns[m].name == "order"){
this.imgbtns.splice(m, 1);
}
}
}
//dareUtil.debug(this.imgbtns.length);
$('diviframe').style.display = 'block';
if (!this.imgbtns || this.imgbtns.length == 0){
$('diviframe').style.display = 'none';
this.columnFocus = FocusMode.FILE;
return;
}
else if (this.imgbtns.length == 3) {
dareUtil.showDomObj($('dmenu1'));
dareUtil.showDomObj($('dmenu2'));
if (btnpic0)
btnpic0.innerText = this.imgbtns[0].text;
if (btnpic1)
btnpic1.innerText = this.imgbtns[1].text;
if (btnpic2)
btnpic2.innerText = this.imgbtns[2].text;
}else if(this.imgbtns.length == 2){
if (btnpic0)
btnpic0.innerText = this.imgbtns[0].text;
dareUtil.hideDomObj($('dmenu1'));
dareUtil.showDomObj($('dmenu2'));
if (btnpic2)
btnpic2.innerText = this.imgbtns[1].text;
}
else if(this.imgbtns.length == 1){
if (btnpic0)
btnpic0.innerText = this.imgbtns[0].text;
dareUtil.hideDomObj($('dmenu1'));
dareUtil.hideDomObj($('dmenu2'));
dareUtil.hideDomObj($('btnarrowdown0'));
}
///////
dareUtil.hideDomObj($('divarrowdown'));
dareUtil.hideDomObj($('divarrowup'));
dareUtil.hideDomObj($('divarrowleft'));
$('arrowrightOper').style.display = 'none';
$('arrowleftOper').style.display = 'block';
this.operationIndex = 0;
this.operationShow();
this.currentFocus = "btnpic0";
}
Dare.Main.prototype.showUsbFileArrow = function(){
//this.hideMenuArrow();
var paddingleft = 200;
divarrowup.className = "usbarrowup";
divarrowdown.className = "usbarrowdown";
divarrowleft.className = "usbarrowleft";
//if($('usbfile0')) $('usbfile0').className = 'filenameHover';
$('arrowleftOper').style.display = 'none';
$('arrowrightOper').style.display = 'none';
dareUtil.showDomObj($('divarrowdown'));
dareUtil.showDomObj($('divarrowup'));
dareUtil.showDomObj($('divarrowleft'));
dareUtil.hideDomObj($('divarrowright'));
}
Dare.Main.prototype.keyleftHandler = function(){
switch (this.columnFocus) {
case FocusMode.FILE:
this.columnFocus = FocusMode.MENU;
this.showMenuArrow();
break;
case FocusMode.OPER:
if(this.currentFocus == "imgcancel"){
this.focusOk();
}else if(this.currentFocus.substr(0,6) == "btnpic"){
$('diviframe').style.display = 'none';
this.columnFocus = FocusMode.FILE;
this.showFileArrow();
}
break;
case FocusMode.USB_FILE:
$('diviframe').style.display = 'none';
this.columnFocus = FocusMode.FILE;
var paddingleft = 200;
divarrowup.className = "arrowup";
divarrowdown.className = "arrowdown";
divarrowleft.className = "arrowleft";
this.showFileArrow();
break;
}
}
/**
* 按右键
*/
Dare.Main.prototype.keyrightHandler = function(){
switch (this.columnFocus) {
case FocusMode.MENU:
if(this.filearray && this.filearray.length > 0){
this.columnFocus = FocusMode.FILE;
this.showFileArrow();
}
if($("filereal3")){
var name = $("filereal3").innerText;
if(name == "外置节目" ||
name == "外置文件" ||
name == "设置" ||
name == "下载状态" ||
name == "帮助"){
$('arrowrightOper').style.display = 'none';
}
}
break;
case FocusMode.FILE:
if (this.menuArray[this.menuIndex] != MOVING_INFO_MENU
&& this.menuArray[this.menuIndex] != HELP_INFO_MENU) {
$('diviframe').style.display = 'block';
this.columnFocus = FocusMode.OPER;
this.showOperationArrow();
} else {//usb 移动信息
var name = $("filereal3").innerText;
//dareUtil.debug(name);
if (name == "音频" || name == "视频" || name == "图片") {
//dareUtil.debug("this.usbFileCount"+this.usbFileCount);
if (this.usbFileCount != 0 ) {
this.columnFocus = FocusMode.USB_FILE;
this.showUsbFileArrow();
}
}
}
break;
case FocusMode.OPER:
if (this.currentFocus == "imgok") {
this.focusCancel();
}
}
}
/**
* hide文件箭头
* @param {Object} type
*/
Dare.Main.prototype.hideArrow = function(type)
{
switch(type){
case ArrowType.UP : dareUtil.hideDomObj($('divarrowup'));break;
case ArrowType.DOWN : dareUtil.hideDomObj($('divarrowdown')); break;
case ArrowType.RIGHT : dareUtil.hideDomObj($('divarrowright')); break;
case ArrowType.LEFT : dareUtil.hideDomObj($('divarrowleft'));break;
}
}
/**
* show 文件箭头
* @param {Object} type
*/
Dare.Main.prototype.showArrow = function(type)
{
switch(type){
case ArrowType.UP : dareUtil.showDomObj($('divarrowup')); break;
case ArrowType.DOWN : dareUtil.showDomObj($('divarrowdown')); break;
case ArrowType.RIGHT : dareUtil.showDomObj($('divarrowright'));break;
case ArrowType.LEFT : dareUtil.showDomObj($('divarrowleft'));;break;
}
}
var daremain = new Dare.Main();
//daremain.setiPanel(1, '#111111');
document.onkeypress = function(event) {
daremain.keypressHandler(event);
}
邮箱:steven9801@163.com
QQ: 48039387