diff --git a/forge-gui-android/src/forge/app/Main.java b/forge-gui-android/src/forge/app/Main.java index ea9e99b458f..31a772f6700 100644 --- a/forge-gui-android/src/forge/app/Main.java +++ b/forge-gui-android/src/forge/app/Main.java @@ -65,6 +65,7 @@ import forge.util.FileUtil; import forge.util.ThreadUtil; import io.sentry.Sentry; import io.sentry.protocol.Device; +import io.sentry.protocol.OperatingSystem; import org.apache.commons.lang3.tuple.Pair; import org.jupnp.DefaultUpnpServiceConfiguration; import org.jupnp.android.AndroidUpnpServiceConfiguration; @@ -194,13 +195,25 @@ public class Main extends AndroidApplication { boolean permissiongranted = checkPermission(); Gadapter = new AndroidAdapter(getContext()); + // Get Basic Device and OS info for scope Sentry.configureScope(scope -> { + // Device Info Device device = new Device(); device.setId(Build.ID); device.setName(getDeviceName()); + device.setModel(Build.MODEL); device.setBrand(Build.BRAND); + device.setManufacturer(Build.MANUFACTURER); + device.setMemorySize(memInfo.totalMem); device.setChipset(Build.SOC_MANUFACTURER + " " + Build.SOC_MODEL); + // OS Info + OperatingSystem os = new OperatingSystem(); + os.setName("Android"); + os.setVersion(Build.VERSION.RELEASE); + os.setBuild(Build.DISPLAY); + // Set Contexts scope.getContexts().setDevice(device); + scope.getContexts().setOperatingSystem(os); }); initForge(Gadapter, permissiongranted, totalMemory, isTabletDevice(getContext())); diff --git a/forge-gui-mobile/src/forge/itemmanager/ItemManager.java b/forge-gui-mobile/src/forge/itemmanager/ItemManager.java index 75d39654404..4cc6b63ae7b 100644 --- a/forge-gui-mobile/src/forge/itemmanager/ItemManager.java +++ b/forge-gui-mobile/src/forge/itemmanager/ItemManager.java @@ -45,6 +45,7 @@ import forge.menu.FDropDownMenu; import forge.menu.FMenuItem; import forge.menu.FPopupMenu; import forge.screens.FScreen; +import forge.screens.planarconquest.ConquestCommandersScreen; import forge.toolbox.*; import forge.toolbox.FEvent.FEventHandler; import forge.toolbox.FEvent.FEventType; @@ -367,42 +368,95 @@ public abstract class ItemManager extends FContainer im helper.fillLine(advancedSearchFilter.getWidget(), fieldHeight); } if (!hideFilters) { - List> filters = this.filters.get(); - if(!tryConsolidateButtonFilters(filters, helper, fieldHeight)) { - for (ItemFilter filter : filters) { - helper.include(filter.getWidget(), filter.getPreferredWidth(helper.getRemainingLineWidth(), fieldHeight), fieldHeight); - } - } - if (allowSortChange()) { - helper.fillLine(cbxSortOptions, fieldHeight); - } - helper.newLine(-ItemFilter.PADDING); - if (currentView.getPnlOptions().getChildCount() > 0) { - helper.fillLine(currentView.getPnlOptions(), fieldHeight + ItemFilter.PADDING); - } else { - helper.offset(0, -fieldHeight); //prevent showing whitespace for empty view options panel - } + if (Forge.isLandscapeMode()) + drawLandscape(this.filters.get(), helper, fieldHeight); + else + drawPortrait(this.filters.get(), helper, width, fieldHeight); } helper.fill(currentView.getScroller()); } - /** - * If the only available filters are button filters, try and put them both on one line. - * And if we can, stretch them across the line and squish them all proportionally rather than only the last item. - */ - private boolean tryConsolidateButtonFilters(List> filters, LayoutHelper helper, float fieldHeight) { - if(filters.size() < 2 || !filters.stream().allMatch(o -> o instanceof ToggleButtonsFilter)) - return false; - float width = helper.getParentWidth(); - double total = filters.stream().mapToDouble(i -> i.getPreferredWidth(width, fieldHeight)).sum(); - total += helper.getGapX() * (filters.size() - 1); - if(total > width * 1.2 || total < width * 0.6) - return false; - for(ItemFilter filter : filters) { - double percent = filter.getPreferredWidth(width, fieldHeight) / total; - helper.include(filter.getWidget(), percent, fieldHeight); + private void drawLandscape(List> filters, LayoutHelper helper, float fieldHeight) { + // TODO reduce landscape mode combobox buttons for the filters + for (ItemFilter filter : filters) { + helper.include(filter.getWidget(), filter.getPreferredWidth(helper.getRemainingLineWidth(), fieldHeight), fieldHeight); + } + if (allowSortChange()) { + helper.fillLine(cbxSortOptions, fieldHeight); + } + helper.newLine(-ItemFilter.PADDING); + if (currentView.getPnlOptions().getChildCount() > 0) { + helper.fillLine(currentView.getPnlOptions(), fieldHeight + ItemFilter.PADDING); + } else { + helper.offset(0, -fieldHeight); //prevent showing whitespace for empty view options panel + } + } + + private void drawPortrait(List> filters, LayoutHelper helper, float width, float fieldHeight) { + CardTypeFilter cardTypeFilter = null; + CardColorFilter colorFilter = null; + CardFormatFilter cardFormatFilter = null; + DeckColorFilter deckColorFilter = null; + DeckFormatFilter deckFormatFilter = null; + ConquestCommandersScreen.CommanderColorFilter commanderColorFilter = null; + ConquestCommandersScreen.CommanderOriginFilter commanderOriginFilter = null; + for (ItemFilter filter : filters) { + if (filter instanceof CardTypeFilter ct) { + cardTypeFilter = ct; + continue; + } + if (filter instanceof CardColorFilter cr) { + colorFilter = cr; + continue; + } + if (filter instanceof CardFormatFilter cf) { + cardFormatFilter = cf; + continue; + } + if (filter instanceof DeckColorFilter dc) { + deckColorFilter = dc; + continue; + } + if (filter instanceof DeckFormatFilter df) { + deckFormatFilter = df; + continue; + } + if (filter instanceof ConquestCommandersScreen.CommanderColorFilter ccf) { + commanderColorFilter = ccf; + continue; + } + if (filter instanceof ConquestCommandersScreen.CommanderOriginFilter cof) { + commanderOriginFilter = cof; + continue; + } + helper.include(filter.getWidget(), filter.getPreferredWidth(helper.getRemainingLineWidth(), fieldHeight), fieldHeight); + } + if (deckColorFilter != null) { + helper.fillLine(deckColorFilter.getWidget(), fieldHeight); + } + if (deckFormatFilter != null) { + helper.fillLine(deckFormatFilter.getWidget(), fieldHeight); + } + if (colorFilter != null) + helper.fillLine(colorFilter.getWidget(), fieldHeight); + if (cardTypeFilter != null) + helper.fillLine(cardTypeFilter.getWidget(), fieldHeight); + if (commanderColorFilter != null) + helper.fillLine(commanderColorFilter.getWidget(), fieldHeight); + if (commanderOriginFilter != null) + helper.fillLine(commanderOriginFilter.getWidget(), fieldHeight); + helper.newLine(); + if (cardFormatFilter != null) + helper.include(cardFormatFilter.getWidget(), width / 2f, fieldHeight); + if (allowSortChange()) { + helper.fillLine(cbxSortOptions, fieldHeight); + } + helper.newLine(-ItemFilter.PADDING); + if (currentView.getPnlOptions().getChildCount() > 0) { + helper.fillLine(currentView.getPnlOptions(), fieldHeight + ItemFilter.PADDING); + } else { + helper.offset(0, -fieldHeight); //prevent showing whitespace for empty view options panel } - return true; } public Class getGenericType() { diff --git a/forge-gui-mobile/src/forge/itemmanager/views/ImageView.java b/forge-gui-mobile/src/forge/itemmanager/views/ImageView.java index cf383a0b3fc..4e74e9fabf5 100644 --- a/forge-gui-mobile/src/forge/itemmanager/views/ImageView.java +++ b/forge-gui-mobile/src/forge/itemmanager/views/ImageView.java @@ -413,8 +413,10 @@ public class ImageView extends ItemView { btnExpandCollapseAll.setBounds(x, y, h, h); x += h + padding; - float pileByWidth = Math.min(itemManager.getPileByWidth(), (width - x - padding) / 2.0f); - float groupByWidth = width - x - padding - pileByWidth; + // hide piles only for deckmanager since its unusable unlike group + float newWidth = itemManager instanceof DeckManager ? 0f : width / 2f; + float pileByWidth = newWidth - padding; + float groupByWidth = width - x - newWidth; cbGroupByOptions.setBounds(x, y, groupByWidth, h); x += groupByWidth + padding; diff --git a/forge-gui-mobile/src/forge/screens/planarconquest/ConquestCommandersScreen.java b/forge-gui-mobile/src/forge/screens/planarconquest/ConquestCommandersScreen.java index 9d3bcdf2566..429f9c56ca9 100644 --- a/forge-gui-mobile/src/forge/screens/planarconquest/ConquestCommandersScreen.java +++ b/forge-gui-mobile/src/forge/screens/planarconquest/ConquestCommandersScreen.java @@ -239,7 +239,7 @@ public class ConquestCommandersScreen extends FScreen { } } - private static class CommanderColorFilter extends StatTypeFilter { + public static class CommanderColorFilter extends StatTypeFilter { public CommanderColorFilter(ItemManager itemManager0) { super(itemManager0); } @@ -273,7 +273,7 @@ public class ConquestCommandersScreen extends FScreen { } } - private static class CommanderOriginFilter extends ComboBoxFilter { + public static class CommanderOriginFilter extends ComboBoxFilter { public CommanderOriginFilter(ItemManager itemManager0) { super(Forge.getLocalizer().getMessage("lblAllPlanes"), FModel.getPlanes(), itemManager0); }