mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 11:18:01 +00:00
update Itemmanager portrait layout, update Sentry scope
This commit is contained in:
@@ -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()));
|
||||
|
||||
@@ -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<T extends InventoryItem> extends FContainer im
|
||||
helper.fillLine(advancedSearchFilter.getWidget(), fieldHeight);
|
||||
}
|
||||
if (!hideFilters) {
|
||||
List<ItemFilter<? extends T>> filters = this.filters.get();
|
||||
if(!tryConsolidateButtonFilters(filters, helper, fieldHeight)) {
|
||||
for (ItemFilter<? extends T> 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<ItemFilter<? extends T>> filters, LayoutHelper helper, float fieldHeight) {
|
||||
if(filters.size() < 2 || !filters.stream().allMatch(o -> o instanceof ToggleButtonsFilter<? extends T>))
|
||||
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<? extends T> filter : filters) {
|
||||
double percent = filter.getPreferredWidth(width, fieldHeight) / total;
|
||||
helper.include(filter.getWidget(), percent, fieldHeight);
|
||||
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) {
|
||||
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<ItemFilter<? extends T>> 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<? extends T> 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<T> getGenericType() {
|
||||
|
||||
@@ -413,8 +413,10 @@ public class ImageView<T extends InventoryItem> extends ItemView<T> {
|
||||
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;
|
||||
|
||||
@@ -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) {
|
||||
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) {
|
||||
super(Forge.getLocalizer().getMessage("lblAllPlanes"), FModel.getPlanes(), itemManager0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user