use of com.biglybt.core.torrent.impl.TorrentOpenFileOptions in project BiglyBT by BiglySoftware.
the class TableColumnOTOF_Path method refresh.
@Override
public void refresh(TableCell cell) {
Object ds = cell.getDataSource();
if (!(ds instanceof TorrentOpenFileOptions)) {
return;
}
TorrentOpenFileOptions tfi = (TorrentOpenFileOptions) ds;
String s = tfi.getDestPathName();
String parentDir = tfi.parent.getParentDir();
if (s.startsWith(parentDir + File.separator) && // could be C:\
!parentDir.endsWith(File.separator) && s.length() > parentDir.length()) {
s = s.substring(parentDir.length() + 1);
}
cell.setText(s);
}
use of com.biglybt.core.torrent.impl.TorrentOpenFileOptions in project BiglyBT by BiglySoftware.
the class TableColumnOTOF_Position method refresh.
@Override
public void refresh(TableCell cell) {
Object ds = cell.getDataSource();
if (!(ds instanceof TorrentOpenFileOptions)) {
return;
}
TorrentOpenFileOptions tfi = (TorrentOpenFileOptions) ds;
int index = tfi.getIndex();
cell.setSortValue(index);
cell.setText("" + index);
}
use of com.biglybt.core.torrent.impl.TorrentOpenFileOptions in project BiglyBT by BiglySoftware.
the class TableColumnOTOF_Size method cellPaint.
@Override
public void cellPaint(GC gc, TableCellSWT cell) {
Object ds = cell.getDataSource();
if (!(ds instanceof TorrentOpenFileOptions)) {
return;
}
TorrentOpenFileOptions tfi = (TorrentOpenFileOptions) ds;
float pct = tfi.lSize / (float) tfi.parent.getTorrent().getSize();
Rectangle bounds = cell.getBounds();
bounds.width = (int) (bounds.width * pct);
if (bounds.width > 2) {
bounds.x++;
bounds.y++;
bounds.height -= 2;
bounds.width -= 2;
gc.setBackground(gc.getForeground());
int alpha = gc.getAlpha();
gc.setAlpha(10);
gc.fillRectangle(bounds);
gc.setAlpha(alpha);
}
}
use of com.biglybt.core.torrent.impl.TorrentOpenFileOptions in project BiglyBT by BiglySoftware.
the class TorrentOpener method addTorrent.
/**
* @param torrentOptions
* @return
* @since 5.0.0.1
*
* @TODO: Remove SWT UI parts (use UIFunctions) and move out of SWT tree
*/
public static final boolean addTorrent(final TorrentOpenOptions torrentOptions) {
try {
if (torrentOptions.getTorrent() == null) {
return false;
}
final DownloadManagerInitialisationAdapter dmia = new DownloadManagerInitialisationAdapter() {
@Override
public int getActions() {
return (ACT_ASSIGNS_TAGS);
}
@Override
public void initialised(DownloadManager dm, boolean for_seeding) {
DiskManagerFileInfoSet file_info_set = dm.getDiskManagerFileInfoSet();
DiskManagerFileInfo[] fileInfos = file_info_set.getFiles();
boolean reorder_mode = COConfigurationManager.getBooleanParameter("Enable reorder storage mode");
int reorder_mode_min_mb = COConfigurationManager.getIntParameter("Reorder storage mode min MB");
try {
dm.getDownloadState().suppressStateSave(true);
boolean[] toSkip = new boolean[fileInfos.length];
boolean[] toCompact = new boolean[fileInfos.length];
boolean[] toReorderCompact = new boolean[fileInfos.length];
int[] priorities = null;
int comp_num = 0;
int reorder_comp_num = 0;
final TorrentOpenFileOptions[] files = torrentOptions.getFiles();
for (int iIndex = 0; iIndex < fileInfos.length; iIndex++) {
DiskManagerFileInfo fileInfo = fileInfos[iIndex];
if (iIndex >= 0 && iIndex < files.length && files[iIndex].lSize == fileInfo.getLength()) {
// Always pull destination file from fileInfo and not from
// TorrentFileInfo because the destination may have changed
// by magic code elsewhere
File fDest = fileInfo.getFile(true);
if (files[iIndex].isLinked()) {
fDest = files[iIndex].getDestFileFullName();
// Can't use fileInfo.setLink(fDest) as it renames
// the existing file if there is one
dm.getDownloadState().setFileLink(iIndex, fileInfo.getFile(false), fDest);
}
if (files[iIndex].isToDownload()) {
int priority = files[iIndex].getPriority();
if (priority != 0) {
if (priorities == null) {
priorities = new int[fileInfos.length];
}
priorities[iIndex] = priority;
}
} else {
toSkip[iIndex] = true;
if (!fDest.exists()) {
if (reorder_mode && (fileInfo.getLength() / (1024 * 1024)) >= reorder_mode_min_mb) {
toReorderCompact[iIndex] = true;
reorder_comp_num++;
} else {
toCompact[iIndex] = true;
comp_num++;
}
}
}
}
}
if (files.length == 1) {
TorrentOpenFileOptions file = files[0];
if (file.isManualRename()) {
String fileRename = file.getDestFileName();
if (fileRename != null && fileRename.length() > 0) {
dm.getDownloadState().setDisplayName(fileRename);
}
}
} else {
String folderRename = torrentOptions.getManualRename();
if (folderRename != null && folderRename.length() > 0) {
dm.getDownloadState().setDisplayName(folderRename);
}
}
if (comp_num > 0) {
file_info_set.setStorageTypes(toCompact, DiskManagerFileInfo.ST_COMPACT);
}
if (reorder_comp_num > 0) {
file_info_set.setStorageTypes(toReorderCompact, DiskManagerFileInfo.ST_REORDER_COMPACT);
}
file_info_set.setSkipped(toSkip, true);
if (priorities != null) {
file_info_set.setPriority(priorities);
}
int maxUp = torrentOptions.getMaxUploadSpeed();
int kInB = DisplayFormatters.getKinB();
if (maxUp > 0) {
dm.getStats().setUploadRateLimitBytesPerSecond(maxUp * kInB);
}
int maxDown = torrentOptions.getMaxDownloadSpeed();
if (maxDown > 0) {
dm.getStats().setDownloadRateLimitBytesPerSecond(maxDown * kInB);
}
DownloadManagerState dm_state = dm.getDownloadState();
if (torrentOptions.disableIPFilter) {
dm_state.setFlag(DownloadManagerState.FLAG_DISABLE_IP_FILTER, true);
}
if (torrentOptions.peerSource != null) {
for (String peerSource : torrentOptions.peerSource.keySet()) {
boolean enable = torrentOptions.peerSource.get(peerSource);
dm_state.setPeerSourceEnabled(peerSource, enable);
}
}
Map<String, Boolean> enabledNetworks = torrentOptions.getEnabledNetworks();
if (enabledNetworks != null) {
if (!dm_state.getFlag(DownloadManagerState.FLAG_INITIAL_NETWORKS_SET)) {
for (String net : enabledNetworks.keySet()) {
boolean enable = enabledNetworks.get(net);
dm_state.setNetworkEnabled(net, enable);
}
}
}
List<Tag> initialTags = torrentOptions.getInitialTags();
for (Tag t : initialTags) {
t.addTaggable(dm);
}
List<List<String>> trackers = torrentOptions.getTrackers(true);
if (trackers != null) {
TOTorrent torrent = dm.getTorrent();
TorrentUtils.listToAnnounceGroups(trackers, torrent);
try {
TorrentUtils.writeToFile(torrent);
} catch (Throwable e2) {
Debug.printStackTrace(e2);
}
}
if (torrentOptions.bSequentialDownload) {
dm_state.setFlag(DownloadManagerState.FLAG_SEQUENTIAL_DOWNLOAD, true);
}
File moc = torrentOptions.getMoveOnComplete();
if (moc != null) {
dm_state.setAttribute(DownloadManagerState.AT_MOVE_ON_COMPLETE_DIR, moc.getAbsolutePath());
}
} finally {
dm.getDownloadState().suppressStateSave(false);
}
}
};
CoreFactory.addCoreRunningListener(new CoreRunningListener() {
@Override
public void coreRunning(Core core) {
TOTorrent torrent = torrentOptions.getTorrent();
byte[] hash = null;
try {
hash = torrent.getHash();
} catch (TOTorrentException e1) {
}
int iStartState = (torrentOptions.getStartMode() == TorrentOpenOptions.STARTMODE_STOPPED) ? DownloadManager.STATE_STOPPED : DownloadManager.STATE_QUEUED;
GlobalManager gm = core.getGlobalManager();
DownloadManager dm = gm.addDownloadManager(torrentOptions.sFileName, hash, torrentOptions.getParentDir(), torrentOptions.getSubDir(), iStartState, true, torrentOptions.getStartMode() == TorrentOpenOptions.STARTMODE_SEEDING, dmia);
// since gm.addDown.. will handle it.
if (dm == null) {
return;
}
if (torrentOptions.iQueueLocation == TorrentOpenOptions.QUEUELOCATION_TOP) {
gm.moveTop(new DownloadManager[] { dm });
}
if (torrentOptions.getStartMode() == TorrentOpenOptions.STARTMODE_FORCESTARTED) {
dm.setForceStart(true);
}
}
});
} catch (Exception e) {
UIFunctions uif = UIFunctionsManager.getUIFunctions();
if (uif != null) {
uif.showErrorMessage("OpenTorrentWindow.mb.openError", Debug.getStackTrace(e), new String[] { torrentOptions.sOriginatingLocation, e.getMessage() });
}
return false;
}
return true;
}
use of com.biglybt.core.torrent.impl.TorrentOpenFileOptions in project BiglyBT by BiglySoftware.
the class TableColumnOTOF_Ext method refresh.
@Override
public void refresh(TableCell cell) {
Object ds = cell.getDataSource();
if (!(ds instanceof TorrentOpenFileOptions)) {
return;
}
TorrentOpenFileOptions tfi = (TorrentOpenFileOptions) ds;
String s = FileUtil.getExtension(tfi.orgFileName);
cell.setText(s);
}
Aggregations