/**
* Copyright (C) Azureus Software, Inc, All Rights Reserved.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
*/
package org.gudy.azureus2.core3.torrent.impl;
import java.io.File;
import org.gudy.azureus2.core3.torrent.TOTorrentFile;
/**
* Class to store the file list of a Torrent. Used to populate table and
* store user's choices
* <P>
* This was copied out of the UI code, and still contains some crap code
*/
public class TorrentOpenFileOptions
{
/** relative path + full file name as specified by the torrent */
/** @todo: getter/setters */
public final String orgFullName;
/** @todo: getter/setters */
public final String orgFileName;
/** @todo: getter/setters */
public long lSize;
/** Whether to download this file. Probably should be switched to the DND state variable */
private boolean toDownload;
private int priority;
private String destFileName;
private String destPathName;
/** @todo: getter/setters */
private final int iIndex;
/** @todo: getter/setters */
public boolean isValid;
/** @todo: getter/setters */
public final TorrentOpenOptions parent;
/**
* Init
*
* @param parent
* @param torrentFile
* @param iIndex
*/
public TorrentOpenFileOptions(TorrentOpenOptions parent, TOTorrentFile torrentFile,
int iIndex) {
this.parent = parent;
lSize = torrentFile.getLength();
this.iIndex = iIndex;
setToDownload(true);
isValid = true;
orgFullName = torrentFile.getRelativePath(); // translated to locale
orgFileName = new File(orgFullName).getName();
}
public int
getIndex()
{
return( iIndex );
}
public void setFullDestName(String newFullName)
{
if(newFullName == null)
{
setDestPathName(null);
setDestFileName(null);
return;
}
File newPath = new File(newFullName);
setDestPathName(newPath.getParent());
setDestFileName(newPath.getName());
}
public void setDestPathName(String newPath)
{
if(parent.getTorrent().isSimpleTorrent())
parent.setParentDir(newPath);
else
destPathName = newPath;
}
public void setDestFileName (String newFileName)
{
if(orgFileName.equals(newFileName))
destFileName = null;
else
destFileName = newFileName;
}
public String getDestPathName() {
if (destPathName != null)
return destPathName;
if (parent.getTorrent().isSimpleTorrent())
return parent.getParentDir();
return new File(parent.getDataDir(), orgFullName).getParent();
}
public String getDestFileName() {
return destFileName == null ? orgFileName : destFileName;
}
public File getDestFileFullName() {
String path = getDestPathName();
String file = getDestFileName();
return new File(path,file);
}
public boolean okToDisable() {
return /* lSize >= MIN_NODOWNLOAD_SIZE || */parent.okToDisableAll();
}
public File
getInitialLink()
{
return( parent.getInitialLinkage( iIndex ));
}
public boolean isLinked()
{
return destFileName != null || destPathName != null;
}
public boolean isToDownload() {
return toDownload;
}
public void setToDownload(boolean toDownload) {
this.toDownload = toDownload;
parent.fileDownloadStateChanged(this, toDownload);
}
public int
getPriority()
{
return( priority );
}
public void
setPriority(
int _priority )
{
priority = _priority;
parent.filePriorityStateChanged(this, _priority);
}
}