update Itemmanager portrait layout, update Sentry scope

This commit is contained in:
Anthony Calosa
2025-08-19 06:19:44 +08:00
parent 70df1ff0aa
commit d3e0696ecc
4 changed files with 104 additions and 35 deletions

View File

@@ -65,6 +65,7 @@ import forge.util.FileUtil;
import forge.util.ThreadUtil; import forge.util.ThreadUtil;
import io.sentry.Sentry; import io.sentry.Sentry;
import io.sentry.protocol.Device; import io.sentry.protocol.Device;
import io.sentry.protocol.OperatingSystem;
import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Pair;
import org.jupnp.DefaultUpnpServiceConfiguration; import org.jupnp.DefaultUpnpServiceConfiguration;
import org.jupnp.android.AndroidUpnpServiceConfiguration; import org.jupnp.android.AndroidUpnpServiceConfiguration;
@@ -194,13 +195,25 @@ public class Main extends AndroidApplication {
boolean permissiongranted = checkPermission(); boolean permissiongranted = checkPermission();
Gadapter = new AndroidAdapter(getContext()); Gadapter = new AndroidAdapter(getContext());
// Get Basic Device and OS info for scope
Sentry.configureScope(scope -> { Sentry.configureScope(scope -> {
// Device Info
Device device = new Device(); Device device = new Device();
device.setId(Build.ID); device.setId(Build.ID);
device.setName(getDeviceName()); device.setName(getDeviceName());
device.setModel(Build.MODEL);
device.setBrand(Build.BRAND); device.setBrand(Build.BRAND);
device.setManufacturer(Build.MANUFACTURER);
device.setMemorySize(memInfo.totalMem);
device.setChipset(Build.SOC_MANUFACTURER + " " + Build.SOC_MODEL); 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().setDevice(device);
scope.getContexts().setOperatingSystem(os);
}); });
initForge(Gadapter, permissiongranted, totalMemory, isTabletDevice(getContext())); initForge(Gadapter, permissiongranted, totalMemory, isTabletDevice(getContext()));

View File

@@ -45,6 +45,7 @@ import forge.menu.FDropDownMenu;
import forge.menu.FMenuItem; import forge.menu.FMenuItem;
import forge.menu.FPopupMenu; import forge.menu.FPopupMenu;
import forge.screens.FScreen; import forge.screens.FScreen;
import forge.screens.planarconquest.ConquestCommandersScreen;
import forge.toolbox.*; import forge.toolbox.*;
import forge.toolbox.FEvent.FEventHandler; import forge.toolbox.FEvent.FEventHandler;
import forge.toolbox.FEvent.FEventType; import forge.toolbox.FEvent.FEventType;
@@ -367,12 +368,19 @@ public abstract class ItemManager<T extends InventoryItem> extends FContainer im
helper.fillLine(advancedSearchFilter.getWidget(), fieldHeight); helper.fillLine(advancedSearchFilter.getWidget(), fieldHeight);
} }
if (!hideFilters) { if (!hideFilters) {
List<ItemFilter<? extends T>> filters = this.filters.get(); if (Forge.isLandscapeMode())
if(!tryConsolidateButtonFilters(filters, helper, fieldHeight)) { drawLandscape(this.filters.get(), helper, fieldHeight);
else
drawPortrait(this.filters.get(), helper, width, fieldHeight);
}
helper.fill(currentView.getScroller());
}
private void drawLandscape(List<ItemFilter<? extends T>> filters, LayoutHelper helper, float fieldHeight) {
// TODO reduce landscape mode combobox buttons for the filters
for (ItemFilter<? extends T> filter : filters) { for (ItemFilter<? extends T> filter : filters) {
helper.include(filter.getWidget(), filter.getPreferredWidth(helper.getRemainingLineWidth(), fieldHeight), fieldHeight); helper.include(filter.getWidget(), filter.getPreferredWidth(helper.getRemainingLineWidth(), fieldHeight), fieldHeight);
} }
}
if (allowSortChange()) { if (allowSortChange()) {
helper.fillLine(cbxSortOptions, fieldHeight); helper.fillLine(cbxSortOptions, fieldHeight);
} }
@@ -383,26 +391,72 @@ public abstract class ItemManager<T extends InventoryItem> extends FContainer im
helper.offset(0, -fieldHeight); //prevent showing whitespace for empty view options panel helper.offset(0, -fieldHeight); //prevent showing whitespace for empty view options panel
} }
} }
helper.fill(currentView.getScroller());
}
/** private void drawPortrait(List<ItemFilter<? extends T>> filters, LayoutHelper helper, float width, float fieldHeight) {
* If the only available filters are button filters, try and put them both on one line. CardTypeFilter cardTypeFilter = null;
* And if we can, stretch them across the line and squish them all proportionally rather than only the last item. CardColorFilter colorFilter = null;
*/ CardFormatFilter cardFormatFilter = null;
private boolean tryConsolidateButtonFilters(List<ItemFilter<? extends T>> filters, LayoutHelper helper, float fieldHeight) { DeckColorFilter deckColorFilter = null;
if(filters.size() < 2 || !filters.stream().allMatch(o -> o instanceof ToggleButtonsFilter<? extends T>)) DeckFormatFilter deckFormatFilter = null;
return false; ConquestCommandersScreen.CommanderColorFilter commanderColorFilter = null;
float width = helper.getParentWidth(); ConquestCommandersScreen.CommanderOriginFilter commanderOriginFilter = null;
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<? extends T> filter : filters) { for (ItemFilter<? extends T> filter : filters) {
double percent = filter.getPreferredWidth(width, fieldHeight) / total; if (filter instanceof CardTypeFilter ct) {
helper.include(filter.getWidget(), percent, fieldHeight); 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<T> getGenericType() { public Class<T> getGenericType() {

View File

@@ -413,8 +413,10 @@ public class ImageView<T extends InventoryItem> extends ItemView<T> {
btnExpandCollapseAll.setBounds(x, y, h, h); btnExpandCollapseAll.setBounds(x, y, h, h);
x += h + padding; x += h + padding;
float pileByWidth = Math.min(itemManager.getPileByWidth(), (width - x - padding) / 2.0f); // hide piles only for deckmanager since its unusable unlike group
float groupByWidth = width - x - padding - pileByWidth; float newWidth = itemManager instanceof DeckManager ? 0f : width / 2f;
float pileByWidth = newWidth - padding;
float groupByWidth = width - x - newWidth;
cbGroupByOptions.setBounds(x, y, groupByWidth, h); cbGroupByOptions.setBounds(x, y, groupByWidth, h);
x += groupByWidth + padding; x += groupByWidth + padding;

View File

@@ -239,7 +239,7 @@ public class ConquestCommandersScreen extends FScreen {
} }
} }
private static class CommanderColorFilter extends StatTypeFilter<ConquestCommander> { public static class CommanderColorFilter extends StatTypeFilter<ConquestCommander> {
public CommanderColorFilter(ItemManager<? super ConquestCommander> itemManager0) { public CommanderColorFilter(ItemManager<? super ConquestCommander> itemManager0) {
super(itemManager0); super(itemManager0);
} }
@@ -273,7 +273,7 @@ public class ConquestCommandersScreen extends FScreen {
} }
} }
private static class CommanderOriginFilter extends ComboBoxFilter<ConquestCommander, ConquestPlane> { public static class CommanderOriginFilter extends ComboBoxFilter<ConquestCommander, ConquestPlane> {
public CommanderOriginFilter(ItemManager<? super ConquestCommander> itemManager0) { public CommanderOriginFilter(ItemManager<? super ConquestCommander> itemManager0) {
super(Forge.getLocalizer().getMessage("lblAllPlanes"), FModel.getPlanes(), itemManager0); super(Forge.getLocalizer().getMessage("lblAllPlanes"), FModel.getPlanes(), itemManager0);
} }