diff --git a/forge-gui-mobile/src/forge/screens/planarconquest/ConquestCommandersScreen.java b/forge-gui-mobile/src/forge/screens/planarconquest/ConquestCommandersScreen.java index 51f3690f6b4..4e2e70538bd 100644 --- a/forge-gui-mobile/src/forge/screens/planarconquest/ConquestCommandersScreen.java +++ b/forge-gui-mobile/src/forge/screens/planarconquest/ConquestCommandersScreen.java @@ -27,21 +27,37 @@ import forge.itemmanager.filters.StatTypeFilter; import forge.itemmanager.filters.TextSearchFilter; import forge.model.FModel; import forge.planarconquest.ConquestCommander; +import forge.planarconquest.ConquestData; import forge.planarconquest.ConquestPlane; import forge.planarconquest.ConquestRecord; import forge.screens.FScreen; +import forge.toolbox.FButton; import forge.toolbox.FEvent; -import forge.toolbox.FLabel; import forge.toolbox.FList; +import forge.toolbox.FTextField; import forge.toolbox.FEvent.FEventHandler; import forge.toolbox.FList.CompactModeHandler; public class ConquestCommandersScreen extends FScreen { + private static final float PADDING = FDeckChooser.PADDING; + private final CommanderManager lstCommanders = add(new CommanderManager()); - private final FLabel lblTip = add(new FLabel.Builder() - .text("Double-tap to edit deck (Long-press to view)") - .textColor(FLabel.INLINE_LABEL_COLOR) - .align(HAlignment.CENTER).font(FSkinFont.get(12)).build()); + private final FButton btnViewDeck = add(new FButton("View Deck")); + private final FButton btnEditDeck = add(new FButton("Edit Deck")); + + private final FEventHandler onCommanderSelectionChanged = new FEventHandler() { + @Override + public void handleEvent(FEvent e) { + final ConquestCommander commander = lstCommanders.getSelectedItem(); + if (commander != null) { + ConquestData model = FModel.getConquest().getModel(); + if (model.getSelectedCommander() != commander) { + model.setSelectedCommander(commander); + model.saveData(); + } + } + } + }; public ConquestCommandersScreen() { super("", ConquestMenu.getMenu()); @@ -50,7 +66,25 @@ public class ConquestCommandersScreen extends FScreen { lstCommanders.setItemActivateHandler(new FEventHandler() { @Override public void handleEvent(FEvent e) { - editSelectedDeck(); + Forge.back(); + } + }); + btnViewDeck.setCommand(new FEventHandler() { + @Override + public void handleEvent(FEvent e) { + final ConquestCommander commander = lstCommanders.getSelectedItem(); + if (commander != null) { + FDeckViewer.show(commander.getDeck()); + } + } + }); + btnEditDeck.setCommand(new FEventHandler() { + @Override + public void handleEvent(FEvent e) { + final ConquestCommander commander = lstCommanders.getSelectedItem(); + if (commander != null) { + Forge.openScreen(new ConquestDeckEditor(commander)); + } } }); } @@ -62,28 +96,38 @@ public class ConquestCommandersScreen extends FScreen { } public void refreshCommanders() { - lstCommanders.setPool(FModel.getConquest().getModel().getCommanders()); + lstCommanders.setSelectionChangedHandler(null); //set to null temporarily + + ConquestData model = FModel.getConquest().getModel(); + lstCommanders.setPool(model.getCommanders()); lstCommanders.setup(ItemManagerConfig.CONQUEST_COMMANDERS); - } - private void editSelectedDeck() { - final ConquestCommander commander = lstCommanders.getSelectedItem(); - if (commander == null) { return; } + ConquestCommander commander = model.getSelectedCommander(); + if (commander != null) { + lstCommanders.setSelectedItem(commander); + } + else { + lstCommanders.setSelectedIndex(0); + onCommanderSelectionChanged.handleEvent(null); //update selected command + } - Forge.openScreen(new ConquestDeckEditor(commander)); + lstCommanders.setSelectionChangedHandler(onCommanderSelectionChanged); } @Override protected void doLayout(float startY, float width, float height) { - float x = ItemFilter.PADDING; + float x = PADDING; float y = startY; - float w = width - 2 * x; - float labelHeight = lblTip.getAutoSizeBounds().height; - float listHeight = height - labelHeight - y - 2 * FDeckChooser.PADDING; + float w = width - 2 * PADDING; + + float buttonWidth = (w - PADDING) / 2; + float buttonHeight = FTextField.getDefaultHeight(); + float listHeight = height - buttonHeight - y - 2 * PADDING; lstCommanders.setBounds(x, y, w, listHeight); - y += listHeight + FDeckChooser.PADDING; - lblTip.setBounds(x, y, w, labelHeight); + y += listHeight + PADDING; + btnViewDeck.setBounds(x, y, buttonWidth, buttonHeight); + btnEditDeck.setBounds(x + buttonWidth + PADDING, y, buttonWidth, buttonHeight); } private static class CommanderManager extends ItemManager { diff --git a/forge-gui-mobile/src/forge/screens/planarconquest/ConquestMenu.java b/forge-gui-mobile/src/forge/screens/planarconquest/ConquestMenu.java index c5557f4667e..a1558939ea2 100644 --- a/forge-gui-mobile/src/forge/screens/planarconquest/ConquestMenu.java +++ b/forge-gui-mobile/src/forge/screens/planarconquest/ConquestMenu.java @@ -108,6 +108,10 @@ public class ConquestMenu extends FPopupMenu { } } + public static void selectCommander() { + Forge.openScreen(commandersScreen); + } + @Override protected void buildMenu() { FScreen currentScreen = Forge.getCurrentScreen(); diff --git a/forge-gui-mobile/src/forge/screens/planarconquest/ConquestMultiverseScreen.java b/forge-gui-mobile/src/forge/screens/planarconquest/ConquestMultiverseScreen.java index 8de99f9a396..634ee9823a1 100644 --- a/forge-gui-mobile/src/forge/screens/planarconquest/ConquestMultiverseScreen.java +++ b/forge-gui-mobile/src/forge/screens/planarconquest/ConquestMultiverseScreen.java @@ -723,7 +723,7 @@ public class ConquestMultiverseScreen extends FScreen { CardZoom.show(card); } else { - //TODO: Allow picking a different commander + ConquestMenu.selectCommander(); } } return true; diff --git a/forge-gui-mobile/src/forge/screens/quest/QuestDecksScreen.java b/forge-gui-mobile/src/forge/screens/quest/QuestDecksScreen.java index 8b389e0241a..83bc3429552 100644 --- a/forge-gui-mobile/src/forge/screens/quest/QuestDecksScreen.java +++ b/forge-gui-mobile/src/forge/screens/quest/QuestDecksScreen.java @@ -164,16 +164,16 @@ public class QuestDecksScreen extends FScreen { lblInfo.setBounds(x, y, w, lblInfo.getAutoSizeBounds().height); y += lblInfo.getHeight(); - float buttonWidth = (w - FDeckChooser.PADDING) / 2; + float buttonWidth = (w - PADDING) / 2; float buttonHeight = FTextField.getDefaultHeight(); float listHeight = height - 2 * buttonHeight - y - 3 * PADDING; lstDecks.setBounds(x, y, w, listHeight); y += listHeight + PADDING; btnNewDeck.setBounds(x, y, buttonWidth, buttonHeight); - btnEditDeck.setBounds(x + buttonWidth + FDeckChooser.PADDING, y, buttonWidth, buttonHeight); + btnEditDeck.setBounds(x + buttonWidth + PADDING, y, buttonWidth, buttonHeight); y += buttonHeight + PADDING; btnViewDeck.setBounds(x, y, buttonWidth, buttonHeight); - btnRandom.setBounds(x + buttonWidth + FDeckChooser.PADDING, y, buttonWidth, buttonHeight); + btnRandom.setBounds(x + buttonWidth + PADDING, y, buttonWidth, buttonHeight); } } diff --git a/forge-gui/src/main/java/forge/planarconquest/ConquestData.java b/forge-gui/src/main/java/forge/planarconquest/ConquestData.java index 3218700eaad..b4f7972fb9e 100644 --- a/forge-gui/src/main/java/forge/planarconquest/ConquestData.java +++ b/forge-gui/src/main/java/forge/planarconquest/ConquestData.java @@ -159,8 +159,8 @@ public final class ConquestData { public ConquestCommander getSelectedCommander() { return commanders.get(selectedCommanderIndex); } - public void setSelectedCommanderIndex(int index0) { - selectedCommanderIndex = index0; + public void setSelectedCommander(ConquestCommander commander) { + selectedCommanderIndex = commanders.indexOf(commander); } public Iterable getUnlockedCards() {