📄 torrentutil.java
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space
// Source File Name: TorrentUtil.java
package org.gudy.azureus2.ui.swt;
import com.aelitis.azureus.core.AzureusCore;
import com.aelitis.azureus.core.AzureusCoreFactory;
import com.aelitis.azureus.core.instancemanager.AZInstance;
import com.aelitis.azureus.core.instancemanager.AZInstanceManager;
import com.aelitis.azureus.ui.UIFunctions;
import com.aelitis.azureus.ui.UIFunctionsManager;
import com.aelitis.azureus.ui.common.table.TableColumnCore;
import com.aelitis.azureus.ui.common.table.TableView;
import java.io.File;
import java.io.IOException;
import java.net.InetAddress;
import java.net.URLEncoder;
import java.util.*;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.*;
import org.gudy.azureus2.core3.category.Category;
import org.gudy.azureus2.core3.category.CategoryManager;
import org.gudy.azureus2.core3.config.COConfigurationManager;
import org.gudy.azureus2.core3.download.*;
import org.gudy.azureus2.core3.global.GlobalManager;
import org.gudy.azureus2.core3.internat.MessageText;
import org.gudy.azureus2.core3.logging.LogAlert;
import org.gudy.azureus2.core3.logging.Logger;
import org.gudy.azureus2.core3.peer.PEPeerManager;
import org.gudy.azureus2.core3.peer.PEPeerSource;
import org.gudy.azureus2.core3.torrent.TOTorrent;
import org.gudy.azureus2.core3.torrent.TOTorrentFactory;
import org.gudy.azureus2.core3.tracker.client.TRTrackerAnnouncer;
import org.gudy.azureus2.core3.tracker.util.TRTrackerUtils;
import org.gudy.azureus2.core3.util.*;
import org.gudy.azureus2.ui.swt.exporttorrent.wizard.ExportTorrentWizard;
import org.gudy.azureus2.ui.swt.mainwindow.ClipboardCopy;
import org.gudy.azureus2.ui.swt.mainwindow.TorrentOpener;
import org.gudy.azureus2.ui.swt.maketorrent.MultiTrackerEditor;
import org.gudy.azureus2.ui.swt.maketorrent.TrackerEditorListener;
import org.gudy.azureus2.ui.swt.minibar.DownloadBar;
import org.gudy.azureus2.ui.swt.minibar.MiniBarManager;
import org.gudy.azureus2.ui.swt.shells.InputShell;
import org.gudy.azureus2.ui.swt.shells.MessageBoxShell;
import org.gudy.azureus2.ui.swt.views.ViewUtils;
import org.gudy.azureus2.ui.swt.views.utils.ManagerUtils;
// Referenced classes of package org.gudy.azureus2.ui.swt:
// Messages, SimpleTextEntryWindow, Utils, CategoryAdderWindow,
// TrackerChangerWindow
public class TorrentUtil
{
private static abstract class DMTask
implements Listener
{
private DownloadManager dms[];
private boolean ascending;
private boolean async;
public void run(DownloadManager downloadmanager)
{
}
public void run(DownloadManager adownloadmanager[])
{
}
public void handleEvent(Event event)
{
if (async)
(new AEThread2("DMTask:async", true) {
final DMTask this$0;
public void run()
{
go();
}
{
this$0 = DMTask.this;
super(x0, x1);
}
}).start();
else
go();
}
public void go()
{
try
{
DownloadManager dm = null;
for (int i = 0; i < dms.length; i++)
{
dm = dms[ascending ? i : dms.length - 1 - i];
if (dm != null)
run(dm);
}
run(dms);
}
catch (Exception e)
{
Debug.printStackTrace(e);
}
}
public DMTask(DownloadManager dms[])
{
this(dms, true);
}
public DMTask(DownloadManager dms[], boolean ascending)
{
this.dms = dms;
this.ascending = ascending;
}
public DMTask(DownloadManager dms[], boolean ascending, boolean async)
{
this.dms = dms;
this.ascending = ascending;
this.async = async;
}
}
public TorrentUtil()
{
}
public static void fillTorrentMenu(Menu menu, DownloadManager dms[], AzureusCore azureus_core, Composite composite, boolean include_show_details, int selected_dl_types, TableView tv)
{
boolean isSeedingView;
switch (selected_dl_types)
{
case 1: // '\001'
isSeedingView = false;
break;
case 2: // '\002'
isSeedingView = true;
break;
case 0: // '\0'
if (dms.length == 1)
{
isSeedingView = dms[0].isDownloadComplete(false);
break;
}
// fall through
default:
isSeedingView = false;
break;
}
boolean hasSelection = dms.length > 0;
boolean isTrackerOn = TRTrackerUtils.isTrackerEnabled();
int userMode = COConfigurationManager.getIntParameter("User Mode");
boolean bChangeDir = hasSelection;
boolean barsOpened;
boolean manualUpdate;
boolean fileMove;
boolean fileRescan;
boolean changeUrl = barsOpened = manualUpdate = fileMove = fileRescan = true;
boolean start;
boolean stop;
boolean forceStartEnabled;
boolean recheck;
boolean forceStart = forceStartEnabled = recheck = start = stop = false;
boolean canSetSuperSeed = false;
boolean superSeedAllYes = true;
boolean superSeedAllNo = true;
boolean upSpeedDisabled = false;
long totalUpSpeed = 0L;
boolean upSpeedUnlimited = false;
long upSpeedSetMax = 0L;
boolean downSpeedDisabled = false;
long totalDownSpeed = 0L;
boolean downSpeedUnlimited = false;
long downSpeedSetMax = 0L;
boolean allScanSelected = true;
boolean allScanNotSelected = true;
boolean allStopped = true;
if (hasSelection)
{
for (int i = 0; i < dms.length; i++)
{
DownloadManager dm = dms[i];
try
{
int maxul = dm.getStats().getUploadRateLimitBytesPerSecond();
if (maxul == 0)
upSpeedUnlimited = true;
else
if ((long)maxul > upSpeedSetMax)
upSpeedSetMax = maxul;
if (maxul == -1)
{
maxul = 0;
upSpeedDisabled = true;
}
totalUpSpeed += maxul;
int maxdl = dm.getStats().getDownloadRateLimitBytesPerSecond();
if (maxdl == 0)
downSpeedUnlimited = true;
else
if ((long)maxdl > downSpeedSetMax)
downSpeedSetMax = maxdl;
if (maxdl == -1)
{
maxdl = 0;
downSpeedDisabled = true;
}
totalDownSpeed += maxdl;
}
catch (Exception ex)
{
Debug.printStackTrace(ex);
}
if (barsOpened && !DownloadBar.getManager().isOpen(dm))
barsOpened = false;
stop = stop || ManagerUtils.isStopable(dm);
start = start || ManagerUtils.isStartable(dm);
recheck = recheck || dm.canForceRecheck();
forceStartEnabled = forceStartEnabled || ManagerUtils.isForceStartable(dm);
forceStart = forceStart || dm.isForceStart();
boolean stopped = ManagerUtils.isStopped(dm);
allStopped &= stopped;
fileMove = fileMove && dm.canMoveDataFiles();
if (userMode < 2)
{
TRTrackerAnnouncer trackerClient = dm.getTrackerClient();
if (trackerClient != null)
{
boolean update_state = SystemTime.getCurrentTime() / 1000L - (long)trackerClient.getLastUpdateTime() >= 60L;
manualUpdate &= update_state;
}
}
int state = dm.getState();
bChangeDir &= state == 100 || state == 70 || state == 75;
if (bChangeDir && dms.length == 1)
bChangeDir = dm.isDataAlreadyAllocated() && !dm.filesExist(true);
boolean scan = dm.getDownloadState().getFlag(2L);
boolean incomplete = !dm.isDownloadComplete(true);
allScanSelected = incomplete && allScanSelected && scan;
allScanNotSelected = incomplete && allScanNotSelected && !scan;
PEPeerManager pm = dm.getPeerManager();
if (pm != null)
{
if (pm.canToggleSuperSeedMode())
canSetSuperSeed = true;
if (pm.isSuperSeedMode())
superSeedAllYes = false;
else
superSeedAllNo = false;
} else
{
superSeedAllYes = false;
superSeedAllNo = false;
}
}
fileRescan = allScanSelected || allScanNotSelected;
} else
{
barsOpened = false;
forceStart = false;
forceStartEnabled = false;
start = false;
stop = false;
fileMove = false;
fileRescan = false;
upSpeedDisabled = true;
downSpeedDisabled = true;
changeUrl = false;
recheck = false;
manualUpdate = false;
}
if (bChangeDir)
{
MenuItem menuItemChangeDir = new MenuItem(menu, 8);
Messages.setLanguageText(menuItemChangeDir, "MyTorrentsView.menu.changeDirectory");
menuItemChangeDir.addListener(13, new Listener(dms, composite) {
final DownloadManager val$dms[];
final Composite val$composite;
public void handleEvent(Event e)
{
TorrentUtil.changeDirSelectedTorrents(dms, composite.getShell());
}
{
dms = adownloadmanager;
composite = composite1;
super();
}
});
}
if (include_show_details)
{
MenuItem itemDetails = new MenuItem(menu, 8);
Messages.setLanguageText(itemDetails, "MyTorrentsView.menu.showdetails");
menu.setDefaultItem(itemDetails);
Utils.setMenuItemImage(itemDetails, "details");
itemDetails.addListener(13, new DMTask(dms) {
public void run(DownloadManager dm)
{
UIFunctions uiFunctions = UIFunctionsManager.getUIFunctions();
if (uiFunctions != null)
uiFunctions.openView(5, dm);
}
});
itemDetails.setEnabled(hasSelection);
}
MenuItem itemBar = new MenuItem(menu, 32);
Messages.setLanguageText(itemBar, "MyTorrentsView.menu.showdownloadbar");
Utils.setMenuItemImage(itemBar, "downloadBar");
itemBar.addListener(13, new DMTask(dms, menu) {
final Menu val$menu;
public void run(DownloadManager dm)
{
if (DownloadBar.getManager().isOpen(dm))
DownloadBar.close(dm);
else
DownloadBar.open(dm, menu.getShell());
}
{
menu = menu1;
super(x0);
}
});
itemBar.setEnabled(hasSelection);
itemBar.setSelection(barsOpened);
new MenuItem(menu, 2);
MenuItem itemOpen = new MenuItem(menu, 8);
Messages.setLanguageText(itemOpen, "MyTorrentsView.menu.open");
Utils.setMenuItemImage(itemOpen, "run");
itemOpen.addListener(13, new DMTask(dms) {
public void run(DownloadManager dms[])
{
TorrentUtil.runTorrents(dms);
}
});
itemOpen.setEnabled(hasSelection);
boolean use_open_containing_folder = COConfigurationManager.getBooleanParameter("MyTorrentsView.menu.show_parent_folder_enabled");
MenuItem itemExplore = new MenuItem(menu, 8);
Messages.setLanguageText(itemExplore, (new StringBuilder()).append("MyTorrentsView.menu.").append(use_open_containing_folder ? "open_parent_folder" : "explore").toString());
itemExplore.addListener(13, new DMTask(dms, false, use_open_containing_folder) {
final boolean val$use_open_containing_folder;
public void run(DownloadManager dm)
{
ManagerUtils.open(dm, use_open_containing_folder);
}
{
use_open_containing_folder = flag;
super(x0, x1);
}
});
itemExplore.setEnabled(hasSelection);
MenuItem itemAdvanced = new MenuItem(menu, 64);
Messages.setLanguageText(itemAdvanced, "MyTorrentsView.menu.advancedmenu");
itemAdvanced.setEnabled(hasSelection);
Menu menuAdvanced = new Menu(menu.getShell(), 4);
itemAdvanced.setMenu(menuAdvanced);
long maxDownload = COConfigurationManager.getIntParameter("Max Download Speed KBs", 0) * 1024;
long maxUpload = COConfigurationManager.getIntParameter("Max Upload Speed KBs", 0) * 1024;
ViewUtils.addSpeedMenu(menu.getShell(), menuAdvanced, true, hasSelection, downSpeedDisabled, downSpeedUnlimited, totalDownSpeed, downSpeedSetMax, maxDownload, upSpeedDisabled, upSpeedUnlimited, totalUpSpeed, upSpeedSetMax, maxUpload, dms.length, new org.gudy.azureus2.ui.swt.views.ViewUtils.SpeedAdapter(dms) {
final DownloadManager val$dms[];
public void setDownSpeed(int speed)
{
DMTask task = new DMTask(speed) {
final int val$speed;
final 6 this$0;
public void run(DownloadManager dm)
{
dm.getStats().setDownloadRateLimitBytesPerSecond(speed);
}
{
this$0 = 6.this;
speed = i;
super(x0);
}
};
task.go();
}
public void setUpSpeed(int speed)
{
DMTask task = new DMTask(speed) {
final int val$speed;
final 6 this$0;
public void run(DownloadManager dm)
{
dm.getStats().setUploadRateLimitBytesPerSecond(speed);
}
{
this$0 = 6.this;
speed = i;
super(x0);
}
};
task.go();
}
{
dms = adownloadmanager;
super();
}
});
Menu menuTracker = new Menu(menu.getShell(), 4);
MenuItem itemTracker = new MenuItem(menuAdvanced, 64);
Messages.setLanguageText(itemTracker, "MyTorrentsView.menu.tracker");
itemTracker.setMenu(menuTracker);
MenuItem itemChangeTracker = new MenuItem(menuTracker, 8);
Messages.setLanguageText(itemChangeTracker, "MyTorrentsView.menu.changeTracker");
Utils.setMenuItemImage(itemChangeTracker, "add_tracker");
itemChangeTracker.addListener(13, new DMTask(dms, composite) {
final Composite val$composite;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -