package ctbrec.ui.sites.camsoda; import ctbrec.Config; import ctbrec.sites.camsoda.Camsoda; import ctbrec.sites.camsoda.CamsodaModel; import ctbrec.ui.sites.AbstractTabProvider; import ctbrec.ui.tabs.ThumbOverviewTab; import javafx.scene.Scene; import javafx.scene.control.Tab; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.function.Predicate; import static ctbrec.sites.camsoda.Camsoda.BASE_URI; public class CamsodaTabProvider extends AbstractTabProvider { private static final String API_URL = BASE_URI + "/api/v1/browse/online"; CamsodaFollowedTab followedTab; public CamsodaTabProvider(Camsoda camsoda) { super(camsoda); followedTab = new CamsodaFollowedTab("Followed", camsoda); } @Override protected List getSiteTabs(Scene scene) { List tabs = new ArrayList<>(); Map> methodMap = new HashMap<>(); methodMap.put("isNew", CamsodaModel::isNew); methodMap.put("isVoyeur", CamsodaModel::isVoyeur); Map tabMap = new HashMap<>(); tabMap.put("a", "All"); tabMap.put("m", "Male"); tabMap.put("f", "Female"); tabMap.put("c", "Couples"); tabMap.put("t", "Trans"); tabMap.put("isNew", "New"); tabMap.put("isVoyeur", "Voyeur"); List enabledTabs = getEnabledTabs(); for (String tab : enabledTabs) { String title = tabMap.getOrDefault(tab, tab); switch (tab) { case "a": tabs.add(createTab("All", API_URL, m -> true)); break; case "m": case "f": case "c": case "t": tabs.add(createTab(title, API_URL, m -> Objects.equals(tab, m.getGender()))); break; default: if (tab.contains("is")) { tabs.add(createTab(title, API_URL, methodMap.get(tab))); } break; } } followedTab.setRecorder(recorder); followedTab.setScene(scene); tabs.add(followedTab); return tabs; } @Override public Tab getFollowedTab() { return followedTab; } private Tab createTab(String title, String url, Predicate filter) { var updateService = new CamsodaUpdateService(url, false, (Camsoda) site, filter); var tab = new ThumbOverviewTab(title, updateService, site); tab.setRecorder(recorder); return tab; } private List getEnabledTabs() { return new ArrayList<>(Config.getInstance().getSettings().camsodaTabs); } }