From 6c9f90ffc3dca71cc631d0b2d7d8e14b029d2dcf Mon Sep 17 00:00:00 2001 From: jafea7 Date: Thu, 10 Apr 2025 21:39:49 +1000 Subject: [PATCH] F4F optional tabs --- .../sites/flirt4free/Flirt4FreeConfigUI.java | 54 +++++++++++++++++++ .../flirt4free/Flirt4FreeTabProvider.java | 43 +++++++++++++-- 2 files changed, 92 insertions(+), 5 deletions(-) diff --git a/client/src/main/java/ctbrec/ui/sites/flirt4free/Flirt4FreeConfigUI.java b/client/src/main/java/ctbrec/ui/sites/flirt4free/Flirt4FreeConfigUI.java index 3d146668..36a517cd 100644 --- a/client/src/main/java/ctbrec/ui/sites/flirt4free/Flirt4FreeConfigUI.java +++ b/client/src/main/java/ctbrec/ui/sites/flirt4free/Flirt4FreeConfigUI.java @@ -1,5 +1,8 @@ package ctbrec.ui.sites.flirt4free; +import java.util.ArrayList; +import java.util.List; + import ctbrec.Config; import ctbrec.sites.flirt4free.Flirt4Free; import ctbrec.ui.DesktopIntegration; @@ -72,6 +75,43 @@ public class Flirt4FreeConfigUI 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("Female"); + female.setSelected(tabs.contains("female")); + female.setOnAction(e -> toggleTab("female", female.isSelected())); + checkboxGrid.add(female, 0, 0); + + CheckBox newModels = new CheckBox("Girls New"); + newModels.setSelected(tabs.contains("hd")); + newModels.setOnAction(e -> toggleTab("hd", newModels.isSelected())); + checkboxGrid.add(newModels, 1, 0); + + CheckBox male = new CheckBox("Male"); + male.setSelected(tabs.contains("male")); + male.setOnAction(e -> toggleTab("male", male.isSelected())); + checkboxGrid.add(male, 2, 0); + + CheckBox couples = new CheckBox("Couples"); + couples.setSelected(tabs.contains("couples")); + couples.setOnAction(e -> toggleTab("couples", couples.isSelected())); + checkboxGrid.add(couples, 0, 1); + + CheckBox trans = new CheckBox("Trans"); + trans.setSelected(tabs.contains("trans")); + trans.setOnAction(e -> toggleTab("trans", trans.isSelected())); + checkboxGrid.add(trans, 1, 1); + + layout.add(checkboxGrid, 1, row, 3, 2); + row += 2; + var createAccount = new Button("Create new Account"); createAccount.setOnAction(e -> DesktopIntegration.open(flirt4free.getAffiliateLink())); layout.add(createAccount, 1, row++); @@ -89,4 +129,18 @@ public class Flirt4FreeConfigUI extends AbstractConfigUI { return layout; } + private void toggleTab(String tab, boolean selected) { + var settings = Config.getInstance().getSettings(); + if (selected) { + settings.cam4Tabs.add(tab); + } else { + settings.cam4Tabs.remove(tab); + } + save(); + } + + private List getEnabledTabs() { + return new ArrayList<>(Config.getInstance().getSettings().cam4Tabs); + } + } diff --git a/client/src/main/java/ctbrec/ui/sites/flirt4free/Flirt4FreeTabProvider.java b/client/src/main/java/ctbrec/ui/sites/flirt4free/Flirt4FreeTabProvider.java index 56b2536b..3b378720 100644 --- a/client/src/main/java/ctbrec/ui/sites/flirt4free/Flirt4FreeTabProvider.java +++ b/client/src/main/java/ctbrec/ui/sites/flirt4free/Flirt4FreeTabProvider.java @@ -1,5 +1,6 @@ package ctbrec.ui.sites.flirt4free; +import ctbrec.Config; import ctbrec.sites.flirt4free.Flirt4Free; import ctbrec.sites.flirt4free.Flirt4FreeModel; import ctbrec.ui.sites.AbstractTabProvider; @@ -9,7 +10,9 @@ import javafx.scene.control.Tab; import javafx.util.Duration; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.function.Predicate; public class Flirt4FreeTabProvider extends AbstractTabProvider { @@ -25,11 +28,36 @@ public class Flirt4FreeTabProvider extends AbstractTabProvider { @Override protected List getSiteTabs(Scene scene) { List tabs = new ArrayList<>(); - tabs.add(createTab("Girls", site.getBaseUrl() + "/live/girls/?tpl=index2&model=json", m -> true)); - tabs.add(createTab("New Girls", site.getBaseUrl() + "/live/girls/?tpl=index2&model=json", Flirt4FreeModel::isNew)); - tabs.add(createTab("Boys", site.getBaseUrl() + "/live/guys/?tpl=index2&model=json", m -> true)); - tabs.add(createTab("Couples", site.getBaseUrl() + "/live/couples/?tpl=index2&model=json", m -> m.getCategories().contains("2"))); - tabs.add(createTab("Trans", site.getBaseUrl() + "/live/trans/?tpl=index2&model=json", m -> true)); + + Map tabMap = new HashMap<>(); + tabMap.put("female", "Girls"); + tabMap.put("new", "New Girls"); + tabMap.put("male", "Male"); + tabMap.put("couples", "Couples"); + tabMap.put("trans", "Trans"); + List enabledTabs = getEnabledTabs(); + for (String tab : enabledTabs) { + String title = tabMap.getOrDefault(tab, tab); + switch (tab) { + case "female": + tabs.add(createTab(title, site.getBaseUrl() + "/live/girls/?tpl=index2&model=json", m -> true)); + break; + case "new": + tabs.add(createTab(title, site.getBaseUrl() + "/live/girls/?tpl=index2&model=json", Flirt4FreeModel::isNew)); + break; + case "male": + tabs.add(createTab(title, site.getBaseUrl() + "/live/guys/?tpl=index2&model=json", m -> true)); + break; + case "couples": + tabs.add(createTab(title, site.getBaseUrl() + "/live/couples/?tpl=index2&model=json", m -> m.getCategories().contains("2"))); + break; + case "trans": + tabs.add(createTab(title, site.getBaseUrl() + "/live/trans/?tpl=index2&model=json", m -> true)); + break; + default: + } + } + tabs.add(followedTab); return tabs; } @@ -46,4 +74,9 @@ public class Flirt4FreeTabProvider extends AbstractTabProvider { s.setPeriod(Duration.seconds(60)); return tab; } + + private List getEnabledTabs() { + return new ArrayList<>(Config.getInstance().getSettings().flirt4freeTabs); + } + }