Fixed a bug with building filenames with picture counts.

Added time remaining estimation to progress bar.
Pause is now random from .5 seconds to 1.5 seconds.
This commit is contained in:
jendave
2011-08-06 20:16:33 +00:00
parent bc12448e07
commit b9fbefebae

View File

@@ -20,6 +20,7 @@ import java.net.MalformedURLException;
import java.net.Proxy; import java.net.Proxy;
import java.net.URL; import java.net.URL;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Random;
import java.util.StringTokenizer; import java.util.StringTokenizer;
import javax.swing.AbstractButton; import javax.swing.AbstractButton;
@@ -69,6 +70,33 @@ public class Gui_DownloadSetPictures_LQ extends DefaultBoundedRangeModel impleme
private JOptionPane dlg; private JOptionPane dlg;
private JButton close; private JButton close;
private long times[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
private int tptr = 0;
private long lTime = System.currentTimeMillis();
private int getAverageTimePerCard() {
int aTime = 0;
int nz = 10;
if (tptr > 9)
tptr = 0;
times[tptr] = System.currentTimeMillis() - lTime;
lTime = System.currentTimeMillis();
int tTime = 0;
for (int i=0; i<10; i++) {
tTime += times[i];
if (times[i] == 0)
nz--;
}
aTime = tTime / nz;
tptr++;
return aTime;
}
private Gui_DownloadSetPictures_LQ(mCard[] c) { private Gui_DownloadSetPictures_LQ(mCard[] c) {
this.cards = c; this.cards = c;
addr = new JTextField(ForgeProps.getLocalized(PROXY_ADDRESS)); addr = new JTextField(ForgeProps.getLocalized(PROXY_ADDRESS));
@@ -120,7 +148,8 @@ public class Gui_DownloadSetPictures_LQ extends DefaultBoundedRangeModel impleme
p0.add(bar); p0.add(bar);
bar.setStringPainted(true); bar.setStringPainted(true);
//bar.setString(ForgeProps.getLocalized(BAR_BEFORE_START)); //bar.setString(ForgeProps.getLocalized(BAR_BEFORE_START));
bar.setString(String.format(ForgeProps.getLocalized(card == cards.length? BAR_CLOSE:BAR_WAIT), this.card, cards.length)); bar.setString(card + "/" + cards.length);
//bar.setString(String.format(ForgeProps.getLocalized(card == cards.length? BAR_CLOSE:BAR_WAIT), this.card, cards.length));
Dimension d = bar.getPreferredSize(); Dimension d = bar.getPreferredSize();
d.width = 300; d.width = 300;
bar.setPreferredSize(d); bar.setPreferredSize(d);
@@ -152,6 +181,7 @@ public class Gui_DownloadSetPictures_LQ extends DefaultBoundedRangeModel impleme
private void update(int card) { private void update(int card) {
this.card = card; this.card = card;
final class Worker implements Runnable{ final class Worker implements Runnable{
private int card; private int card;
Worker(int card){ Worker(int card){
@@ -160,9 +190,39 @@ public class Gui_DownloadSetPictures_LQ extends DefaultBoundedRangeModel impleme
public void run() { public void run() {
fireStateChanged(); fireStateChanged();
bar.setString(String.format(ForgeProps.getLocalized(card == cards.length? BAR_CLOSE:BAR_WAIT), card,
cards.length)); StringBuilder sb = new StringBuilder();
System.out.println(card + "/" + cards.length);
int a = getAverageTimePerCard();
if (card != cards.length) {
sb.append(card + "/" + cards.length + " - ");
long t2Go = (cards.length - card) * a;
boolean secOnly = true;
if (t2Go > 3600000) {
sb.append(String.format("%02d:", t2Go / 3600000));
t2Go = t2Go % 3600000;
secOnly = false;
}
if (t2Go > 60000) {
sb.append(String.format("%02d:", t2Go / 60000));
t2Go = t2Go % 60000;
secOnly = false;
}
if (!secOnly)
sb.append(String.format("%02d remaining.", t2Go / 1000));
else
sb.append(String.format("0:%02d remaining.", t2Go / 1000));
}
else
sb.append(String.format(ForgeProps.getLocalized(BAR_CLOSE), card, cards.length));
bar.setString(sb.toString());
//bar.setString(String.format(ForgeProps.getLocalized(card == cards.length? BAR_CLOSE:BAR_WAIT), card,
// cards.length));
System.out.println(card + "/" + cards.length + " - " + a);
} }
}; };
EventQueue.invokeLater(new Worker(card)); EventQueue.invokeLater(new Worker(card));
@@ -189,6 +249,8 @@ public class Gui_DownloadSetPictures_LQ extends DefaultBoundedRangeModel impleme
File base = ForgeProps.getFile(IMAGE_BASE); File base = ForgeProps.getFile(IMAGE_BASE);
Random r = new Random();
Proxy p = null; Proxy p = null;
if(type == 0) p = Proxy.NO_PROXY; if(type == 0) p = Proxy.NO_PROXY;
else try { else try {
@@ -264,9 +326,10 @@ public class Gui_DownloadSetPictures_LQ extends DefaultBoundedRangeModel impleme
} }
// pause // pause
try try
{ {
Thread.sleep(2442); Thread.sleep(r.nextInt(1000) + 420);
} }
catch (InterruptedException e) catch (InterruptedException e)
{ {
@@ -332,7 +395,7 @@ public class Gui_DownloadSetPictures_LQ extends DefaultBoundedRangeModel impleme
imgFN = CardUtil.buildFilename(c); imgFN = CardUtil.buildFilename(c);
if (imgFN.equals("none") || (!imgFN.contains(SC3) && !imgFN.contains(SC2))) if (imgFN.equals("none") || (!imgFN.contains(SC3) && !imgFN.contains(SC2)))
{ {
String fn = GuiDisplayUtil.cleanStringMWS(c.getName()) + n + ".full.jpg"; String fn = GuiDisplayUtil.cleanStringMWS(c.getName()) + k + ".full.jpg";
CList.add(new mCard(SC3 + "/" + fn, URLBase + SC2 + "/" + Base64Coder.encodeString(fn, true), SC3)); CList.add(new mCard(SC3 + "/" + fn, URLBase + SC2 + "/" + Base64Coder.encodeString(fn, true), SC3));
} }
} }