📄 freenav.jsp
字号:
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<%@page import="org.homeplayer.util.*"%>
<%@page import="org.homeplayer.web.*"%>
<%@page import="java.io.*"%>
<%@page import="java.util.*"%>
<%@page import="java.net.URL"%>
<%@page import="javax.swing.filechooser.FileSystemView"%>
<jsp:useBean id="hppc" class="org.homeplayer.web.HPPageContext"
scope="request">
<jsp:setProperty name="hppc" property="request" value="<%=request%>" />
<jsp:setProperty name="hppc" property="serviceName" value="FreeNav" />
</jsp:useBean>
<%!
/**
@param o must be a File or a Shotcut
*/
public String getShortName(Object o, int nbChars) {
String name;
if (o instanceof File) {
name = ((File) o).getName();
} else if (o instanceof URL) {
String fullName= ((URL) o).getFile() ;
int index = fullName.lastIndexOf("/") ;
name = fullName.substring(index+1,fullName.length());
} else if( o instanceof Favorite ) {
name = ((Favorite)o).getName() ;
} else {
name = ((Shortcut) o).getName();
}
int idx = name.lastIndexOf('.');
if (idx >= 1) {
name = name.substring(0, idx);
}
return StringUtil.cut(name, nbChars, ".");
}
%>
<%
FreeNavService service = new FreeNavService() ;
//-------------------------------------------------------------------------------------------
// List subdirectories
// -------------------------------------------------------------------------------------------
int maxFoldersInPage = hppc.isPocketIE() || hppc.isPSP()?10:15 ;
int start = WebUtil.getParam(request, "start", 0) ;
String folder = WebUtil.getParam(request, "folder", null);
Object folderFile = (folder != null) ? (folder.startsWith("ftp") ? (Object)new URL(folder) : (Object)new File(folder)) : null;
boolean isRoot = (folder == null);
hppc.setNavLevel(service.getDeep(folder) + 1);
List folders = service.getDirectory(folder) ;
if( isRoot && HPConf.getBool(HPConf.FTP_ACTIVATED)) {
try {
Vector ftproots = FTPBrowser.getFBFTPBrowser().listDirectories( "" ) ;
for( int i=0 ; i<ftproots.size() ; i++ ) {
folders.add( new URL( FTPBrowser.getFBFTPBrowser().getServerPath()+"/"+ftproots.get(i) )) ;
}
} catch ( Exception e ) {
System.out.println( "Unable to connect to FBHD." ) ;
System.out.println( "Error: "+e.getMessage() ) ;
}
}
if( isRoot ) {
FavoriteManager favman = FavoriteManager.getInstance();
for (Iterator it2 = favman.getFavorites("FreeNav").iterator(); it2.hasNext();) {
Favorite fav = (Favorite) it2.next();
folders.add( fav ) ;
}
}
if (start > 0) {
String url = "/freenav/freenav.jsp?start="+(start-maxFoldersInPage);
if (! isRoot) {
url+= "&folder=" + WebUtil.urlEncode(folder);
}
hppc.addMenuItem(new HPMenuPrevious(url));
}
if (! isRoot) {
// add the parent directory link
String dirPath = service.getParentPath(folder) ;
FavoriteManager favman = FavoriteManager.getInstance();
for (Iterator it2 = favman.getFavorites("FreeNav").iterator(); it2.hasNext();) {
Favorite fav = (Favorite) it2.next();
String favDir = WebUtil.getParam(fav.getUrl(), "folder","") ;
if( WebUtil.urlDecode(favDir).equals(folder) ) {
dirPath = null ;
break ;
}
}
String url = "/freenav/freenav.jsp";
if (dirPath != null) {
url += "?folder=" + WebUtil.urlEncode(dirPath);
}
hppc.addMenuItem(new HPMenuLink("Dossier Parent", url, "<img src=\"/images/novaweb/parent.gif\" alt=\"..\" class=\"img-parentdir\" /> "));
}
int folderWidth = hppc.getSkin().getMenuWidth();
for (int i=start; i<folders.size() && (i-start)<maxFoldersInPage; i++) {
Object dirObj = folders.get(i) ;
String name;
String url;
String icon = "" ;
if (dirObj instanceof File) {
File dir = (File) dirObj;
if( isRoot ) {
if (FileSystemView.getFileSystemView().isFloppyDrive(dir) == true) {
name = dir.getAbsolutePath() ;
} else {
name = service.getDisplayString(dir) ;
name = name.equals("")||name.startsWith("Disque local") ? dir.getAbsolutePath() : name ;
}
} else {
name = dir.getName().equals( "" ) ? dir.getAbsolutePath() : dir.getName() ;
if (name.equals("VIDEO_TS")) {
request.setAttribute("isDvdDirectory", Boolean.TRUE);
}
}
url = "/freenav/freenav.jsp?folder="+WebUtil.urlEncode(dir.getAbsolutePath());
icon = isRoot ? service.getIcon( dir ) : "" ;
name = StringUtil.cutpx(name, folderWidth - (icon.equals("") ? 0 : 30));
} else if( dirObj instanceof URL ) {
URL dir = (URL) dirObj;
if( isRoot ) {
name = dir.getFile().substring(1) + " (FB HD)";
} else {
name = new File(dir.getFile()).getName() ;
}
url = "/freenav/freenav.jsp?folder="+WebUtil.urlEncode(dir.toExternalForm());
icon = isRoot && IOUtil.isWin() ? service.getIcon( new File("c:\\") ) : "" ;
name = StringUtil.cutpx(name, folderWidth - (icon.equals("") ? 0 : 30));
} else if( dirObj instanceof Favorite ) {
Favorite fav = (Favorite) dirObj;
url = fav.getUrl();
icon = MMPConfig.shareInstance().get( "FreeNav", "FavImage", "" ) ;
name = fav.getName() ;
name = StringUtil.cutpx(name, folderWidth - (icon.equals("") ? 0 : 30));
} else {
Shortcut shortcut = (Shortcut) dirObj;
url = "/freenav/freenav.jsp?folder="+WebUtil.urlEncode(shortcut.getFile().getAbsolutePath());
icon = isRoot ? service.getIcon( shortcut ) : "" ;
name = shortcut.getName();
name = StringUtil.cutpx(name, folderWidth - (icon.equals("") ? 0 : 30));
name = "-<em>" + name + "</em>-";
}
if( icon.equals("") == false ) {
icon = "<img src=\""+icon+"\" alt=\"icon\" class=\"img-dir\" /> " ;
}
hppc.addMenuItem( icon.equals("") ? new HPMenuLink(name, url) : new HPMenuLink(name, url, icon) );
}
if (start + maxFoldersInPage < folders.size()) {
String url = "/freenav/freenav.jsp?start="+(start+maxFoldersInPage);
if (! isRoot) {
url+= "&folder=" + WebUtil.urlEncode(folder);
}
hppc.addMenuItem(new HPMenuNext(url));
}
//-------------------------------------------------------------------------------------------
//List files
// -------------------------------------------------------------------------------------------
List files = (isRoot) ? Collections.EMPTY_LIST : service.getMediaFile(folder ) ;
hppc.setHeaderTitle((isRoot) ? "Ordinateur" : ( IOUtil.getSmartPath(folder) + " (" +files.size()+")" ));
hppc.setChannelPage("/freenav/freenav.jsp?folder=" + WebUtil.urlEncode(folder)+"&start="+start+"&page=%d" ) ;
int maxFilesInPage = 15 ;
int pos = WebUtil.getParam(request, "pos", -1) ;
int pageNo = WebUtil.getParam(request, "page", -1) ;
if( pos == -1 ) {
if( pageNo == -1 ) {
pos = 0 ;
} else {
pos = maxFilesInPage*(pageNo-1) ;
if( pos >= files.size() ) {
pos = (files.size()/maxFilesInPage)*maxFilesInPage ;
}
}
}
pos = Math.max(0,pos) ;
for (int i=0; i < Math.ceil((double) files.size() / maxFilesInPage); i++) {
String shortName = getShortName(files.get(i*maxFilesInPage), 100);
hppc.addPage(i+1, shortName, WebUtil.setParam(hppc.getLocalURL(), "pos=" + (i*maxFilesInPage)));
Object obj = files.get(i);
if (obj instanceof File) {
String name = ((File) obj).getName();
if (name.equals("VIDEO_TS.VOB")) {
request.setAttribute("isDvdDirectory", Boolean.TRUE);
}
}
}
hppc.setCurrentPage((pos / maxFilesInPage) + 1);
if (! isRoot) {
String favoriteTitle = folderFile instanceof File ? (((File)folderFile).getName().equals("")? ((File)folderFile).getAbsolutePath() : ((File)folderFile).getName()) : ((URL)folderFile).getFile();
hppc.setFavorite(hppc.getServiceName(), favoriteTitle, StringUtil.gsub(hppc.getLocalURL(),"pos=","dummy="));
}
//-------------------------------------------------------------------------------------------
// create the top command
//-------------------------------------------------------------------------------------------
if (folder != null) {
request.setAttribute("freenav.folder", folder);
request.setAttribute("freenav.folders", folders);
request.setAttribute("freenav.files", files);
request.setAttribute("freenav.service", service);
if( folderFile instanceof File ) {
hppc.setTopCommandPage(hppc.getSkin().getPath()+"/freenav/topCommand.jsp");
}
}else{
hppc.topCommandAppend("<li><img src=\"/images/novaweb/folder.png\" alt=\"stop\" class=\"img-fav\" /></li>");
}
%>
<jsp:include page="<%= hppc.getSkin().getHeader() %>"/>
<jsp:include page="../body.jsp"/>
<ul class="fav-list">
<%
int fileWidth = hppc.getSkin().getContentWidth() - 30;
int j=0;
for (int i = pos; i < files.size() && ((i - pos) < maxFilesInPage); i++) {
Object obj = files.get(i);
String desc;
String icon;
String url;
if (obj instanceof Shortcut) {
Shortcut shortcut = (Shortcut) obj;
desc = IOUtil.getSmartFileNamePx(shortcut.getName(), fileWidth);
icon = service.getIcon(shortcut);
url = shortcut.getFile().getAbsolutePath();
} else if (obj instanceof URL) {
URL item = (URL) obj;
String fullName = item.getFile();
int index = fullName.lastIndexOf("/");
desc = IOUtil.getSmartFileNamePx(fullName.substring(index + 1, fullName.length()), fileWidth);
icon = service.getIcon(item.getFile());
url = item.toString();
} else {
File item = (File) obj;
desc = IOUtil.getSmartFileNamePx(item.getName(), fileWidth);
icon = service.getIcon(item);
url = item.getAbsolutePath();
}
String playurl = "play"
+ (service.isImageFile(url) ? "Images" : "")
+ ".jsp?level=" + (hppc.getNavLevel() + 1) + "&File="
+ WebUtil.urlEncode(url);
%>
<%= hppc.displayMediaItemList(icon, desc, playurl,j++)%>
<% } %>
</ul>
<jsp:include page="<%= hppc.getSkin().getFooter() %>"/>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -