From f9cb39ea7eade663b3ee8982967810ba7dfdb948 Mon Sep 17 00:00:00 2001 From: BetaSteward Date: Wed, 31 Aug 2011 11:28:21 -0400 Subject: [PATCH] check for new card images when client starts --- .../src/main/java/mage/client/MageFrame.java | 12 ++++++++++++ .../java/mage/client/plugins/MagePlugins.java | 1 + .../mage/client/plugins/impl/Plugins.java | 7 +++++++ .../org/mage/plugins/card/CardPluginImpl.java | 5 +++++ .../plugins/card/images/DownloadPictures.java | 19 ++++++++++++++++++- .../mage/interfaces/plugin/CardPlugin.java | 8 ++++++++ 6 files changed, 51 insertions(+), 1 deletion(-) diff --git a/Mage.Client/src/main/java/mage/client/MageFrame.java b/Mage.Client/src/main/java/mage/client/MageFrame.java index 9584f69d4f4..19636fcb5b8 100644 --- a/Mage.Client/src/main/java/mage/client/MageFrame.java +++ b/Mage.Client/src/main/java/mage/client/MageFrame.java @@ -286,6 +286,7 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { SwingUtilities.invokeLater(new Runnable() { public void run() { disableButtons(); + checkForNewImages(); if (autoConnect()) enableButtons(); else { @@ -424,6 +425,17 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { menu.show(component, 0, component.getHeight()); } + private void checkForNewImages() { + HashSet cards = new HashSet(CardsStorage.getAllCards()); + List notImplemented = CardsStorage.getNotImplementedCards(); + cards.addAll(notImplemented); + if (Plugins.getInstance().newImage(cards)) { + if (JOptionPane.showConfirmDialog(null, "New cards are available. Do you want to download the images?") == JOptionPane.OK_OPTION) { + Plugins.getInstance().downloadImage(cards); + } + } + } + private void btnImagesActionPerformed(java.awt.event.ActionEvent evt) { HashSet cards = new HashSet(CardsStorage.getAllCards()); List notImplemented = CardsStorage.getNotImplementedCards(); diff --git a/Mage.Client/src/main/java/mage/client/plugins/MagePlugins.java b/Mage.Client/src/main/java/mage/client/plugins/MagePlugins.java index b2e2ebfc78e..ab51d9aa5fd 100644 --- a/Mage.Client/src/main/java/mage/client/plugins/MagePlugins.java +++ b/Mage.Client/src/main/java/mage/client/plugins/MagePlugins.java @@ -29,6 +29,7 @@ public interface MagePlugins { boolean isCardPluginLoaded(); boolean isCounterPluginLoaded(); void sortPermanents(Map ui, Collection permanents); + boolean newImage(Set allCards); void downloadImage(Set allCards); void downloadSymbols(); int getGamesPlayed(); diff --git a/Mage.Client/src/main/java/mage/client/plugins/impl/Plugins.java b/Mage.Client/src/main/java/mage/client/plugins/impl/Plugins.java index 085887e5fe0..73de6afcfaa 100644 --- a/Mage.Client/src/main/java/mage/client/plugins/impl/Plugins.java +++ b/Mage.Client/src/main/java/mage/client/plugins/impl/Plugins.java @@ -110,6 +110,13 @@ public class Plugins implements MagePlugins { if (this.cardPlugin != null) this.cardPlugin.sortPermanents(ui, permanents, sortingOptions); } + @Override + public boolean newImage(Set allCards) { + String useDefault = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_CARD_IMAGES_USE_DEFAULT, "true"); + String path = useDefault.equals("true") ? null : PreferencesDialog.getCachedValue(PreferencesDialog.KEY_CARD_IMAGES_PATH, null); + return this.cardPlugin.newImages(allCards, path); + } + @Override public void downloadImage(Set allCards) { String useDefault = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_CARD_IMAGES_USE_DEFAULT, "true"); diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/CardPluginImpl.java b/Mage.Client/src/main/java/org/mage/plugins/card/CardPluginImpl.java index 44963cf794e..e0299eaa07f 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/CardPluginImpl.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/CardPluginImpl.java @@ -420,6 +420,11 @@ public class CardPluginImpl implements CardPlugin { } } + @Override + public boolean newImages(Set allCards, String imagesPath) { + return DownloadPictures.checkForNewCards(allCards, imagesPath); + } + /** * Download images. * 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 b6089be5747..fefa3f59c23 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 @@ -232,7 +232,24 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab Object[] options = { startDownloadButton, closeButton = new JButton("Cancel") }; dlg = new JOptionPane(p0, JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, null, options, options[1]); } - + + public static boolean checkForNewCards(Set allCards, String imagesPath) { + File file; + for (Card card : allCards) { + if (card.getCardNumber() > 0 && !card.getExpansionSetCode().isEmpty()) { + CardInfo url = new CardInfo(card.getName(), card.getExpansionSetCode(), card.getCardNumber(), false); + boolean withCollectorId = false; + if (card.getName().equals("Forest") || card.getName().equals("Mountain") || card.getName().equals("Swamp") || card.getName().equals("Island") || card.getName().equals("Plains")) { + withCollectorId = true; + } + file = new File(CardImageUtils.getImagePath(url, withCollectorId, imagesPath)); + if (!file.exists()) + return true; + } + } + return false; + } + private static ArrayList getNeededCards(Set allCards, String imagesPath) { ArrayList cardsToDownload = new ArrayList(); diff --git a/Mage.Common/src/mage/interfaces/plugin/CardPlugin.java b/Mage.Common/src/mage/interfaces/plugin/CardPlugin.java index 0c122b61cc8..5e1a2aed795 100644 --- a/Mage.Common/src/mage/interfaces/plugin/CardPlugin.java +++ b/Mage.Common/src/mage/interfaces/plugin/CardPlugin.java @@ -31,6 +31,14 @@ public interface CardPlugin extends Plugin { MagePermanent getMageCard(CardView permanent, Dimension dimension, UUID gameId, ActionCallback callback, boolean canBeFoil, boolean loadImage); void sortPermanents(Map ui, Collection cards, Map options); + /** + * Check for new images. + * + * @param allCards Set of cards to check images for. + * @param imagesPath Path to check in. Can be null, in such case default path should be used. + */ + public boolean newImages(Set allCards, String imagesPath); + /** * Download images. *