diff --git a/client/src/main/java/ctbrec/ui/sites/streamate/StreamateConfigUI.java b/client/src/main/java/ctbrec/ui/sites/streamate/StreamateConfigUI.java index 5de1c327..0a05410c 100644 --- a/client/src/main/java/ctbrec/ui/sites/streamate/StreamateConfigUI.java +++ b/client/src/main/java/ctbrec/ui/sites/streamate/StreamateConfigUI.java @@ -1,5 +1,8 @@ package ctbrec.ui.sites.streamate; +import java.util.ArrayList; +import java.util.List; + import ctbrec.Config; import ctbrec.sites.streamate.Streamate; import ctbrec.ui.DesktopIntegration; @@ -13,6 +16,7 @@ import javafx.scene.control.Label; import javafx.scene.control.PasswordField; import javafx.scene.control.TextField; import javafx.scene.layout.GridPane; +// import javafx.scene.layout.HBox; import javafx.scene.layout.Priority; public class StreamateConfigUI extends AbstractConfigUI { @@ -72,6 +76,48 @@ public class StreamateConfigUI extends AbstractConfigUI { GridPane.setColumnSpan(password, 2); layout.add(password, 1, row++); + Label tabsLabel = new Label("Tabs"); + layout.add(tabsLabel, 0, row); + List tabs = getEnabledTabs(); + + GridPane checkboxGrid = new GridPane(); + checkboxGrid.setHgap(10); + checkboxGrid.setVgap(5); + checkboxGrid.setPadding(new Insets(0, 0, 0, 7)); + + CheckBox female = new CheckBox("Girls"); + female.setSelected(tabs.contains("f,ff")); + female.setOnAction(e -> toggleTab("f,ff", female.isSelected())); + checkboxGrid.add(female, 0, 0); + + CheckBox male = new CheckBox("Guys"); + male.setSelected(tabs.contains("m")); + male.setOnAction(e -> toggleTab("m", male.isSelected())); + checkboxGrid.add(male, 1, 0); + + CheckBox couples = new CheckBox("Couples"); + couples.setSelected(tabs.contains("mf,mm")); + couples.setOnAction(e -> toggleTab("mf,mm", couples.isSelected())); + checkboxGrid.add(couples, 2, 0); + + CheckBox trans = new CheckBox("Trans"); + trans.setSelected(tabs.contains("tm2f,tf2m")); + trans.setOnAction(e -> toggleTab("tm2f,tf2m", trans.isSelected())); + checkboxGrid.add(trans, 0, 1); + + CheckBox newGirls = new CheckBox("Girls New"); + newGirls.setSelected(tabs.contains("fn")); + newGirls.setOnAction(e -> toggleTab("fn", newGirls.isSelected())); + checkboxGrid.add(newGirls, 1, 1); + + CheckBox newModels = new CheckBox("New"); + newModels.setSelected(tabs.contains("new")); + newModels.setOnAction(e -> toggleTab("new", newModels.isSelected())); + checkboxGrid.add(newModels, 2, 1); + + layout.add(checkboxGrid, 1, row, 3, 2); + row += 2; + var createAccount = new Button("Create new Account"); createAccount.setOnAction(e -> DesktopIntegration.open(streamate.getAffiliateLink())); layout.add(createAccount, 1, row++); @@ -89,4 +135,18 @@ public class StreamateConfigUI extends AbstractConfigUI { return layout; } + private void toggleTab(String tab, boolean selected) { + var settings = Config.getInstance().getSettings(); + if (selected) { + settings.streamateTabs.add(tab); + } else { + settings.streamateTabs.remove(tab); + } + save(); + } + + private List getEnabledTabs() { + return new ArrayList<>(Config.getInstance().getSettings().streamateTabs); + } + } diff --git a/client/src/main/java/ctbrec/ui/sites/streamate/StreamateTabProvider.java b/client/src/main/java/ctbrec/ui/sites/streamate/StreamateTabProvider.java index d48348d6..8af9bcda 100644 --- a/client/src/main/java/ctbrec/ui/sites/streamate/StreamateTabProvider.java +++ b/client/src/main/java/ctbrec/ui/sites/streamate/StreamateTabProvider.java @@ -1,5 +1,6 @@ package ctbrec.ui.sites.streamate; +import ctbrec.Config; import ctbrec.sites.streamate.Streamate; import ctbrec.ui.sites.AbstractTabProvider; import ctbrec.ui.tabs.ThumbOverviewTab; @@ -7,7 +8,9 @@ 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; public class StreamateTabProvider extends AbstractTabProvider { private ThumbOverviewTab followedTab; @@ -19,12 +22,35 @@ public class StreamateTabProvider extends AbstractTabProvider { @Override protected List getSiteTabs(Scene scene) { List tabs = new ArrayList<>(); - tabs.add(createTab("Girls", Streamate.NAIAD_URL + "/performers?domain=streamate.com&loggedInRec=1&boostedFilters=&country=US&language=en&index=default&filters=gender:f,ff%3Bonline:true")); - tabs.add(createTab("Girls New", Streamate.NAIAD_URL + "/performers?domain=streamate.com&loggedInRec=1&boostedFilters=&country=US&language=en&index=default&filters=gender:f,ff%3Bnew:true%3Bonline:true")); - tabs.add(createTab("Guys", Streamate.NAIAD_URL + "/performers?domain=streamate.com&loggedInRec=1&boostedFilters=&country=US&language=en&index=default&filters=gender:m%3Bonline:true")); - tabs.add(createTab("Couples", Streamate.NAIAD_URL + "/performers?domain=streamate.com&loggedInRec=1&boostedFilters=&country=US&language=en&index=default&filters=gender:mf,mm,g%3Bonline:true")); - tabs.add(createTab("Trans", Streamate.NAIAD_URL + "/performers?domain=streamate.com&loggedInRec=1&boostedFilters=&country=US&language=en&index=default&filters=gender:tm2f,tf2m%3Bonline:true")); - tabs.add(createTab("New", Streamate.NAIAD_URL + "/performers?domain=streamate.com&loggedInRec=1&boostedFilters=&country=US&language=en&index=default&filters=new:true%3Bonline:true")); + + + Map tabMap = new HashMap<>(); + tabMap.put("f,ff", "Girls"); + tabMap.put("m", "Guys"); + tabMap.put("mf,mm", "Couples"); + tabMap.put("tm2f,tf2m", "Trans"); + tabMap.put("fn", "Girls New"); + tabMap.put("new", "New"); + List enabledTabs = getEnabledTabs(); + for (String tab : enabledTabs) { + String title = tabMap.getOrDefault(tab, tab); + switch (tab) { + case "f,ff": + case "m": + case "mf,mm": + case "tm2f,tf2m": + tabs.add(createTab(title, Streamate.NAIAD_URL + "/performers?domain=streamate.com&loggedInRec=1&boostedFilters=&country=US&language=en&index=default&filters=gender:" + tab + "%3Bonline:true")); + break; + case "fn": + tabs.add(createTab("Girls New", Streamate.NAIAD_URL + "/performers?domain=streamate.com&loggedInRec=1&boostedFilters=&country=US&language=en&index=default&filters=gender:f,ff%3Bonline:true%3Bnew:true")); + break; + case "new": + tabs.add(createTab("New", Streamate.NAIAD_URL + "/performers?domain=streamate.com&loggedInRec=1&boostedFilters=&country=US&language=en&index=default&filters=new:true%3Bonline:true")); + break; + default: + } + + } followedTab = new StreamateFollowedTab((Streamate) site); followedTab.setRecorder(recorder); @@ -44,4 +70,9 @@ public class StreamateTabProvider extends AbstractTabProvider { tab.setRecorder(recorder); return tab; } + + private List getEnabledTabs() { + return new ArrayList<>(Config.getInstance().getSettings().streamateTabs); + } + }