diff --git a/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaConfigUI.java b/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaConfigUI.java index eea13b4d..c41eadb3 100644 --- a/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaConfigUI.java +++ b/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaConfigUI.java @@ -1,5 +1,8 @@ package ctbrec.ui.sites.camsoda; +import java.util.ArrayList; +import java.util.List; + import ctbrec.Config; import ctbrec.sites.camsoda.Camsoda; 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 CamsodaConfigUI extends AbstractConfigUI { @@ -72,6 +76,36 @@ public class CamsodaConfigUI extends AbstractConfigUI { GridPane.setColumnSpan(password, 2); layout.add(password, 1, row++); + Label tabsLabel = new Label("Tabs"); + layout.add(tabsLabel, 0, row); + List tabs = getCamsodaTabs(); + + HBox checkboxContainer = new HBox(10); + + CheckBox male = new CheckBox("Male"); + male.setSelected(tabs.contains("m")); + male.setOnAction(e -> toggleTab("m", male.isSelected())); + HBox.setMargin(male, new Insets(0, 0, 0, 7)); + checkboxContainer.getChildren().add(male); + + CheckBox female = new CheckBox("Female"); + female.setSelected(tabs.contains("f")); + female.setOnAction(e -> toggleTab("f", female.isSelected())); + checkboxContainer.getChildren().add(female); + + CheckBox trans = new CheckBox("Trans"); + trans.setSelected(tabs.contains("t")); + trans.setOnAction(e -> toggleTab("t", trans.isSelected())); + checkboxContainer.getChildren().add(trans); + + CheckBox couples = new CheckBox("Couples"); + couples.setSelected(tabs.contains("c")); + couples.setOnAction(e -> toggleTab("c", couples.isSelected())); + checkboxContainer.getChildren().add(couples); + + layout.add(checkboxContainer, 1, row, 4, 1); + row++; + var createAccount = new Button("Create new Account"); createAccount.setOnAction(e -> DesktopIntegration.open(camsoda.getAffiliateLink())); layout.add(createAccount, 1, row++); @@ -89,4 +123,18 @@ public class CamsodaConfigUI extends AbstractConfigUI { return layout; } + private void toggleTab(String tab, boolean selected) { + var settings = Config.getInstance().getSettings(); + if (selected) { + settings.camsodaTabs.add(tab); + } else { + settings.camsodaTabs.remove(tab); + } + save(); + } + + private List getCamsodaTabs() { + return new ArrayList<>(Config.getInstance().getSettings().camsodaTabs); + } + } diff --git a/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaTabProvider.java b/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaTabProvider.java index 3fad516b..adf3684d 100644 --- a/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaTabProvider.java +++ b/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaTabProvider.java @@ -1,5 +1,6 @@ package ctbrec.ui.sites.camsoda; +import ctbrec.Config; import ctbrec.sites.camsoda.Camsoda; import ctbrec.sites.camsoda.CamsodaModel; import ctbrec.ui.sites.AbstractTabProvider; @@ -8,7 +9,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; import java.util.Objects; import java.util.function.Predicate; @@ -27,12 +30,20 @@ public class CamsodaTabProvider extends AbstractTabProvider { @Override protected List getSiteTabs(Scene scene) { List tabs = new ArrayList<>(); + + Map tabMap = new HashMap<>(); + tabMap.put("m", "Male"); + tabMap.put("f", "Female"); + tabMap.put("c", "Couples"); + tabMap.put("t", "Trans"); + List enabledTabs = getCamsodaTabs(); + for (String tab : enabledTabs) { + String title = tabMap.getOrDefault(tab, tab); + tabs.add(createTab(title, API_URL, m -> Objects.equals(tab, m.getGender()))); + } + tabs.add(createTab("All", API_URL, m -> true)); tabs.add(createTab("New", API_URL, CamsodaModel::isNew)); - tabs.add(createTab("Female", API_URL, m -> Objects.equals("f", m.getGender()))); - tabs.add(createTab("Male", API_URL, m -> Objects.equals("m", m.getGender()))); - tabs.add(createTab("Couples", API_URL, m -> Objects.equals("c", m.getGender()))); - tabs.add(createTab("Trans", API_URL, m -> Objects.equals("t", m.getGender()))); tabs.add(createTab("Voyeur", API_URL, CamsodaModel::isVoyeur)); followedTab.setRecorder(recorder); followedTab.setScene(scene); @@ -52,4 +63,8 @@ public class CamsodaTabProvider extends AbstractTabProvider { return tab; } + private List getCamsodaTabs() { + return new ArrayList<>(Config.getInstance().getSettings().camsodaTabs); + } + } diff --git a/client/src/main/java/ctbrec/ui/sites/dreamcam/DreamcamConfigUI.java b/client/src/main/java/ctbrec/ui/sites/dreamcam/DreamcamConfigUI.java index 44fcf407..5e8f738c 100644 --- a/client/src/main/java/ctbrec/ui/sites/dreamcam/DreamcamConfigUI.java +++ b/client/src/main/java/ctbrec/ui/sites/dreamcam/DreamcamConfigUI.java @@ -1,15 +1,18 @@ package ctbrec.ui.sites.dreamcam; +import java.util.ArrayList; +import java.util.List; + import ctbrec.Config; import ctbrec.sites.dreamcam.Dreamcam; import ctbrec.ui.settings.SettingsTab; import ctbrec.ui.sites.AbstractConfigUI; import javafx.geometry.Insets; import javafx.scene.Parent; -import javafx.scene.control.ToggleGroup; +// import javafx.scene.control.ToggleGroup; import javafx.scene.control.Button; import javafx.scene.control.CheckBox; -import javafx.scene.control.RadioButton; +// import javafx.scene.control.RadioButton; import javafx.scene.control.Label; import javafx.scene.layout.GridPane; import javafx.scene.layout.HBox; @@ -54,6 +57,36 @@ public class DreamcamConfigUI extends AbstractConfigUI { GridPane.setMargin(vr, new Insets(0, 0, 0, SettingsTab.CHECKBOX_MARGIN)); layout.add(vr, 1, row++); + Label tabsLabel = new Label("Tabs"); + layout.add(tabsLabel, 0, row); + List tabs = getDreamcamTabs(); + + HBox checkboxContainer = new HBox(10); + + CheckBox male = new CheckBox("Boys"); + male.setSelected(tabs.contains("men")); + male.setOnAction(e -> toggleTab("men", male.isSelected())); + HBox.setMargin(male, new Insets(0, 0, 0, 7)); + checkboxContainer.getChildren().add(male); + + CheckBox female = new CheckBox("Girls"); + female.setSelected(tabs.contains("girls")); + female.setOnAction(e -> toggleTab("girls", female.isSelected())); + checkboxContainer.getChildren().add(female); + + CheckBox couples = new CheckBox("Couples"); + couples.setSelected(tabs.contains("couples")); + couples.setOnAction(e -> toggleTab("couples", couples.isSelected())); + checkboxContainer.getChildren().add(couples); + + CheckBox trans = new CheckBox("Trans"); + trans.setSelected(tabs.contains("trans")); + trans.setOnAction(e -> toggleTab("trans", trans.isSelected())); + checkboxContainer.getChildren().add(trans); + + layout.add(checkboxContainer, 1, row, 4, 1); + row++; + var deleteCookies = new Button("Delete Cookies"); deleteCookies.setOnAction(e -> site.getHttpClient().clearCookies()); layout.add(deleteCookies, 1, row); @@ -63,4 +96,18 @@ public class DreamcamConfigUI extends AbstractConfigUI { return layout; } + private void toggleTab(String tab, boolean selected) { + var settings = Config.getInstance().getSettings(); + if (selected) { + settings.dreamcamTabs.add(tab); + } else { + settings.dreamcamTabs.remove(tab); + } + save(); + } + + private List getDreamcamTabs() { + return new ArrayList<>(Config.getInstance().getSettings().dreamcamTabs); + } + } diff --git a/client/src/main/java/ctbrec/ui/sites/dreamcam/DreamcamTabProvider.java b/client/src/main/java/ctbrec/ui/sites/dreamcam/DreamcamTabProvider.java index 17226cc0..9f51b3fe 100644 --- a/client/src/main/java/ctbrec/ui/sites/dreamcam/DreamcamTabProvider.java +++ b/client/src/main/java/ctbrec/ui/sites/dreamcam/DreamcamTabProvider.java @@ -1,11 +1,16 @@ package ctbrec.ui.sites.dreamcam; +import ctbrec.Config; import ctbrec.sites.dreamcam.Dreamcam; -import ctbrec.sites.dreamcam.DreamcamModel; +// import ctbrec.sites.dreamcam.DreamcamModel; import ctbrec.ui.sites.AbstractTabProvider; import ctbrec.ui.tabs.ThumbOverviewTab; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; +// import java.util.Objects; + import javafx.scene.Scene; import javafx.scene.control.Tab; @@ -19,10 +24,22 @@ public class DreamcamTabProvider extends AbstractTabProvider { @Override protected List getSiteTabs(Scene scene) { List tabs = new ArrayList<>(); - tabs.add(createTab("Girls", API_URL + "&tag-categories=girls")); - tabs.add(createTab("Boys", API_URL + "&tag-categories=men")); - tabs.add(createTab("Couples", API_URL + "&tag-categories=couples")); - tabs.add(createTab("Trans", API_URL + "&tag-categories=trans")); + + Map tabMap = new HashMap<>(); + tabMap.put("girls", "Girls"); + tabMap.put("men", "Boys"); + tabMap.put("couples", "Couples"); + tabMap.put("trans", "Trans"); + List enabledTabs = getDreamcamTabs(); + for (String tab : enabledTabs) { + String title = tabMap.getOrDefault(tab, tab); + tabs.add(createTab(title, API_URL + "&tag-categories=" + tab)); + } + + // tabs.add(createTab("Girls", API_URL + "&tag-categories=girls")); + // tabs.add(createTab("Boys", API_URL + "&tag-categories=men")); + // tabs.add(createTab("Couples", API_URL + "&tag-categories=couples")); + // tabs.add(createTab("Trans", API_URL + "&tag-categories=trans")); return tabs; } @@ -34,4 +51,8 @@ public class DreamcamTabProvider extends AbstractTabProvider { return tab; } + private List getDreamcamTabs() { + return new ArrayList<>(Config.getInstance().getSettings().dreamcamTabs); + } + }