From e20ddea9c9112d44ffa8f1fb7b385137afacc31e Mon Sep 17 00:00:00 2001 From: drdev Date: Fri, 8 Apr 2016 15:42:13 +0000 Subject: [PATCH] Support canceling out of multi-select mode if no items are checked --- .../src/forge/itemmanager/ItemManager.java | 4 +- .../ConquestCollectionScreen.java | 38 ++++++++++++------- .../screens/quest/QuestSpellShopScreen.java | 27 ++++++++----- 3 files changed, 45 insertions(+), 24 deletions(-) diff --git a/forge-gui-mobile/src/forge/itemmanager/ItemManager.java b/forge-gui-mobile/src/forge/itemmanager/ItemManager.java index 16ea73cab99..a445035e684 100644 --- a/forge-gui-mobile/src/forge/itemmanager/ItemManager.java +++ b/forge-gui-mobile/src/forge/itemmanager/ItemManager.java @@ -827,7 +827,9 @@ public abstract class ItemManager extends FContainer im if (isContextMenuOpen()) { contextMenu.hide(); //ensure context menu hidden } - setSelectedIndex(indexToSelect); + if (indexToSelect != -1) { + setSelectedIndex(indexToSelect); + } } //whether item manager's pool of items is in infinite supply diff --git a/forge-gui-mobile/src/forge/screens/planarconquest/ConquestCollectionScreen.java b/forge-gui-mobile/src/forge/screens/planarconquest/ConquestCollectionScreen.java index e8adca319a7..0977479a978 100644 --- a/forge-gui-mobile/src/forge/screens/planarconquest/ConquestCollectionScreen.java +++ b/forge-gui-mobile/src/forge/screens/planarconquest/ConquestCollectionScreen.java @@ -47,18 +47,24 @@ public class ConquestCollectionScreen extends TabPageScreen cards = list.getSelectedItems(); + + if (cards.isEmpty()) { + //toggle off multi-select mode if no items selected + list.toggleMultiSelectMode(-1); + return; + } FThreads.invokeInBackgroundThread(new Runnable() { @Override public void run() { if (getSelectedPage() == tabPages[0]) { int value = 0; - final Collection cards = getCollectionTab().list.getSelectedItems(); for (PaperCard card : cards) { value += ConquestUtil.getShardValue(card, CQPref.AETHER_BASE_EXILE_VALUE); } - if (model.exileCards(cards, value)) { + if (FModel.getConquest().getModel().exileCards(cards, value)) { FThreads.invokeInEdtLater(new Runnable() { @Override public void run() { @@ -72,11 +78,10 @@ public class ConquestCollectionScreen extends TabPageScreen cards = getExileTab().list.getSelectedItems(); for (PaperCard card : cards) { cost += ConquestUtil.getShardValue(card, CQPref.AETHER_BASE_RETRIEVE_COST); } - if (model.retrieveCardsFromExile(cards, cost)) { + if (FModel.getConquest().getModel().retrieveCardsFromExile(cards, cost)) { FThreads.invokeInEdtLater(new Runnable() { @Override public void run() { @@ -136,23 +141,25 @@ public class ConquestCollectionScreen extends TabPageScreen cards; if (getSelectedPage() == tabPages[0]) { - action = "Exile"; + caption = "Exile"; baseValuePref = CQPref.AETHER_BASE_EXILE_VALUE; cards = getCollectionTab().list.getSelectedItems(); } else { - action = "Retrieve"; + caption = "Retrieve"; baseValuePref = CQPref.AETHER_BASE_RETRIEVE_COST; cards = getExileTab().list.getSelectedItems(); } int count = cards.size(); - String caption = action; - if (count > 0) { + if (count == 0) { + caption = "Cancel"; + } + else { if (count > 1) { caption += " " + count + " cards"; } @@ -162,9 +169,7 @@ public class ConquestCollectionScreen extends TabPageScreen 0); } private CollectionTab getCollectionTab() { @@ -300,8 +305,8 @@ public class ConquestCollectionScreen extends TabPageScreen value, float x, float y) { - toggleMultiSelectMode(index); + public void toggleMultiSelectMode(int indexToSelect) { + super.toggleMultiSelectMode(indexToSelect); //hide tabs and show Exile/Retrieve button while in multi-select mode boolean multiSelectMode = getMultiSelectMode(); @@ -311,6 +316,11 @@ public class ConquestCollectionScreen extends TabPageScreen value, float x, float y) { + toggleMultiSelectMode(index); + } } private static class CardOriginFilter extends ComboBoxFilter { diff --git a/forge-gui-mobile/src/forge/screens/quest/QuestSpellShopScreen.java b/forge-gui-mobile/src/forge/screens/quest/QuestSpellShopScreen.java index 73fe3779f08..b349e94c33a 100644 --- a/forge-gui-mobile/src/forge/screens/quest/QuestSpellShopScreen.java +++ b/forge-gui-mobile/src/forge/screens/quest/QuestSpellShopScreen.java @@ -50,14 +50,23 @@ public class QuestSpellShopScreen extends TabPageScreen { btnBuySellMultiple.setCommand(new FEventHandler() { @Override public void handleEvent(FEvent e) { + final SpellShopManager itemManager = ((SpellShopBasePage)getSelectedPage()).itemManager; + final ItemPool items = itemManager.getSelectedItemPool(); + + if (items.isEmpty()) { + //toggle off multi-select mode if no items selected + itemManager.toggleMultiSelectMode(-1); + return; + } + FThreads.invokeInBackgroundThread(new Runnable() { @Override public void run() { if (getSelectedPage() == spellShopPage) { - spellShopPage.activateItems(spellShopPage.itemManager.getSelectedItemPool()); + spellShopPage.activateItems(items); } else { - inventoryPage.activateItems(inventoryPage.itemManager.getSelectedItemPool()); + inventoryPage.activateItems(items); } FThreads.invokeInEdtLater(new Runnable() { @Override @@ -116,23 +125,25 @@ public class QuestSpellShopScreen extends TabPageScreen { } private void updateBuySellButtonCaption() { - String action; + String caption; ItemPool items; long total; if (getSelectedPage() == spellShopPage) { - action = "Buy"; + caption = "Buy"; items = spellShopPage.itemManager.getSelectedItemPool(); total = QuestSpellShop.getTotalBuyCost(items); } else { - action = "Sell"; + caption = "Sell"; items = inventoryPage.itemManager.getSelectedItemPool(); total = QuestSpellShop.getTotalSellValue(items); } int count = items.countAll(); - String caption = action; - if (count > 0) { + if (count == 0) { + caption = "Cancel"; + } + else { if (count > 1) { String itemType = "card"; for (Entry item : items) { @@ -145,9 +156,7 @@ public class QuestSpellShopScreen extends TabPageScreen { } caption += " for {CR} " + total; } - btnBuySellMultiple.setText(caption); - btnBuySellMultiple.setEnabled(count > 0); } @Override