List<?> downloads = gm.getDownloadManagers();
for (int i = 0; i < downloads.size(); i++) {
DownloadManager download = (DownloadManager) downloads.get(i);
if (download.getState() == DownloadManager.STATE_ERROR) {
if (download.getAssumedComplete()) {
if (comp_error == null) {
comp_error = download.getDisplayName() + ": "
+ download.getErrorDetails();
} else {
comp_error += "...";
}
} else {
if (incomp_error == null) {
incomp_error = download.getDisplayName() + ": "
+ download.getErrorDetails();
} else {
incomp_error += "...";
}
}
}
}
stats.errorCompleteTooltip = comp_error;
stats.errorInCompleteTooltip = incomp_error;
}
}
};
gm.addListener(new GlobalManagerAdapter() {
public void downloadManagerRemoved(DownloadManager dm) {
downloadManagerRemoved(dm, statsNoLowNoise);
downloadManagerRemoved(dm, statsWithLowNoise);
}
public void downloadManagerRemoved(DownloadManager dm, stats stats) {
if (!stats.includeLowNoise
&& PlatformTorrentUtils.isAdvancedViewOnly(dm)) {
return;
}
recountUnopened();
if (dm.getAssumedComplete()) {
stats.numComplete--;
Boolean wasDownloadingB = (Boolean) dm.getUserData("wasDownloading");
if (wasDownloadingB != null && wasDownloadingB.booleanValue()) {
stats.numDownloading--;
}
} else {
stats.numIncomplete--;
Boolean wasSeedingB = (Boolean) dm.getUserData("wasSeeding");
if (wasSeedingB != null && wasSeedingB.booleanValue()) {
stats.numSeeding--;
}
}
Boolean wasStoppedB = (Boolean) dm.getUserData("wasStopped");
boolean wasStopped = wasStoppedB == null ? false
: wasStoppedB.booleanValue();
if (wasStopped) {
stats.numStoppedAll--;
if (!dm.getAssumedComplete()) {
stats.numStoppedIncomplete--;
}
}
refreshAllLibraries();
dm.removeListener(dmListener);
}
public void downloadManagerAdded(DownloadManager dm) {
dm.addListener(dmListener, false);
recountUnopened();
downloadManagerAdded(dm, statsNoLowNoise);
downloadManagerAdded(dm, statsWithLowNoise);
refreshAllLibraries();
}
public void downloadManagerAdded(DownloadManager dm, stats stats) {
if (!stats.includeLowNoise
&& PlatformTorrentUtils.isAdvancedViewOnly(dm)) {
return;
}
if (dm.getAssumedComplete()) {
stats.numComplete++;
if (dm.getState() == DownloadManager.STATE_SEEDING) {
stats.numSeeding++;
}
} else {
stats.numIncomplete++;
if (dm.getState() == DownloadManager.STATE_DOWNLOADING) {
dm.setUserData("wasDownloading", Boolean.TRUE);
stats.numDownloading++;
} else {
dm.setUserData("wasDownloading", Boolean.FALSE);
}
}
}
}, false);
List<?> downloadManagers = gm.getDownloadManagers();
for (Iterator<?> iter = downloadManagers.iterator(); iter.hasNext();) {
DownloadManager dm = (DownloadManager) iter.next();
boolean lowNoise = PlatformTorrentUtils.isAdvancedViewOnly(dm);
dm.addListener(dmListener, false);
int state = dm.getState();
if (state == DownloadManager.STATE_STOPPED) {
dm.setUserData("wasStopped", Boolean.TRUE);
statsWithLowNoise.numStoppedAll++;
if (!dm.getAssumedComplete()) {
statsWithLowNoise.numStoppedIncomplete++;
}
if (!lowNoise) {
statsNoLowNoise.numStoppedAll++;
if (!dm.getAssumedComplete()) {
statsNoLowNoise.numStoppedIncomplete++;
}
}
} else {
dm.setUserData("wasStopped", Boolean.FALSE);
}
if (dm.getAssumedComplete()) {
statsWithLowNoise.numComplete++;
if (!lowNoise) {
statsNoLowNoise.numComplete++;
}
if (state == DownloadManager.STATE_SEEDING) {
dm.setUserData("wasSeeding", Boolean.TRUE);
statsWithLowNoise.numSeeding++;
if (!lowNoise) {
statsNoLowNoise.numSeeding++;
}
} else {
dm.setUserData("wasSeeding", Boolean.FALSE);
}
} else {
statsWithLowNoise.numIncomplete++;
if (!lowNoise) {
statsNoLowNoise.numIncomplete++;