diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/images/CardDownloadData.java b/Mage.Client/src/main/java/org/mage/plugins/card/images/CardDownloadData.java index 9bfb9ada0b3..7dc0cf7048f 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/images/CardDownloadData.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/images/CardDownloadData.java @@ -18,6 +18,7 @@ public class CardDownloadData { private boolean flippedSide; private boolean splitCard; private boolean usesVariousArt; + private boolean isType2; public CardDownloadData(String name, String set, Integer collectorId, boolean usesVariousArt, Integer type) { this(name, set, collectorId, usesVariousArt, type, false); @@ -76,6 +77,9 @@ public class CardDownloadData { if (this.secondSide != other.secondSide) { return false; } + if (this.isType2 != other.isType2) { + return false; + } return true; } @@ -89,6 +93,7 @@ public class CardDownloadData { hash = 47 * hash + (this.token ? 1 : 0); hash = 47 * hash + (this.twoFacedCard ? 1 : 0); hash = 47 * hash + (this.secondSide ? 1 : 0); + hash = 47 * hash + (this.isType2 ? 1 : 0); return hash; } @@ -167,4 +172,12 @@ public class CardDownloadData { public void setFlippedSide(boolean flippedSide) { this.flippedSide = flippedSide; } + + public boolean isType2() { + return isType2; + } + + public void setType2(boolean type2) { + isType2 = type2; + } } diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/images/DownloadPictures.java b/Mage.Client/src/main/java/org/mage/plugins/card/images/DownloadPictures.java index 156cfe17ad0..ade674de088 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/images/DownloadPictures.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/images/DownloadPictures.java @@ -6,6 +6,7 @@ import de.schlichtherle.truezip.file.TVFS; import de.schlichtherle.truezip.fs.FsSyncException; import mage.cards.repository.CardInfo; import mage.client.dialog.PreferencesDialog; +import mage.client.util.sets.ConstructedFormats; import mage.remote.Connection; import org.apache.log4j.Logger; import org.mage.plugins.card.constants.Constants; @@ -31,10 +32,7 @@ import java.io.*; import java.net.InetSocketAddress; import java.net.Proxy; import java.net.URL; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; +import java.util.*; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -47,6 +45,7 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab private JButton startDownloadButton; private int cardIndex; private ArrayList cards; + private ArrayList type2cards; private JComboBox jComboBox1; private JLabel jLabel1; private static boolean offlineMode = false; @@ -164,15 +163,24 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab bar.setPreferredSize(d); p0.add(Box.createVerticalStrut(5)); - checkBox = new JCheckBox("Download for current game only."); + checkBox = new JCheckBox("Download images for Standard (Type2) only"); p0.add(checkBox); p0.add(Box.createVerticalStrut(5)); - checkBox.setEnabled(!offlineMode); checkBox.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - int count = DownloadPictures.this.cards.size(); + ArrayList cardsToDownload = DownloadPictures.this.cards; + if (checkBox.isSelected()) { + DownloadPictures.this.type2cards = new ArrayList(); + for (CardDownloadData data : DownloadPictures.this.cards) { + if (data.isType2()) { + DownloadPictures.this.type2cards.add(data); + } + } + cardsToDownload = DownloadPictures.this.type2cards; + } + int count = cardsToDownload.size(); float mb = (count * cardImageSource.getAverageSize()) / 1024; bar.setString(String.format(cardIndex == count ? "%d of %d cards finished! Please close!" : "%d of %d cards finished! Please wait! [%.1f Mb]", 0, count, mb)); @@ -213,6 +221,12 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab ArrayList allCardsUrls = new ArrayList(); HashSet ignoreUrls = SettingsManager.getIntance().getIgnoreUrls(); + /** + * get filter for Standard Type 2 cards + */ + Set type2SetsFilter = new HashSet(); + type2SetsFilter.addAll(ConstructedFormats.getSetsByFormat(ConstructedFormats.STANDARD)); + try { offlineMode = true; @@ -228,6 +242,10 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab url.setFlipCard(card.isFlipCard()); url.setSplitCard(card.isSplitCard()); + if (type2SetsFilter.contains(card.getSetCode())) { + url.setType2(true); + } + allCardsUrls.add(url); if (card.isDoubleFaced()) { if (card.getSecondSideName() == null || card.getSecondSideName().trim().isEmpty()) { @@ -355,6 +373,7 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab @Override public void run() { + this.cardIndex = 0; File base = new File(Constants.IO.imageBaseDir); if (!base.exists()) { @@ -384,11 +403,14 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab if (p != null) { HashSet ignoreUrls = SettingsManager.getIntance().getIgnoreUrls(); - update(0); - for (int i = 0; i < cards.size() && !cancel; i++) { + ArrayList cardsToDownload = this.checkBox.isSelected() ? type2cards : cards; + + update(0, cardsToDownload.size()); + + for (int i = 0; i < cardsToDownload.size() && !cancel; i++) { try { - CardDownloadData card = cards.get(i); + CardDownloadData card = cardsToDownload.get(i); log.info("Downloading card: " + card.getName() + " (" + card.getSet() + ")"); @@ -403,11 +425,11 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab } if (url != null) { - Runnable task = new DownloadTask(card, new URL(url)); + Runnable task = new DownloadTask(card, new URL(url), cardsToDownload.size()); executor.execute(task); } else { synchronized (sync) { - update(cardIndex + 1); + update(cardIndex + 1, cardsToDownload.size()); } } @@ -438,10 +460,12 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab private CardDownloadData card; private URL url; + private int count; - public DownloadTask(CardDownloadData card, URL url) { + public DownloadTask(CardDownloadData card, URL url, int count) { this.card = card; this.url = url; + this.count = count; } @Override @@ -460,7 +484,7 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab if (existingFile.exists()) { new TFile(existingFile).cp_rp(outputFile); synchronized (sync) { - update(cardIndex + 1); + update(cardIndex + 1, count); } existingFile.delete(); File parent = existingFile.getParentFile(); @@ -518,7 +542,7 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab } synchronized (sync) { - update(cardIndex + 1); + update(cardIndex + 1, count); } } @@ -543,9 +567,8 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab } } - private void update(int card) { + private void update(int card, int count) { this.cardIndex = card; - int count = DownloadPictures.this.cards.size(); if (cardIndex < count) { float mb = ((count - card) * cardImageSource.getAverageSize()) / 1024;